diff --git a/pom.example b/pom.example
new file mode 100644
index 000000000..8da2d3c0d
--- /dev/null
+++ b/pom.example
@@ -0,0 +1,142 @@
+//
+ 4.0.0
+
+ mod-group-name
+ EvilWithin
+ EvilWithin
+ 0.1.0
+
+
+ Downfall is a full-featured Expansion for Slay the Spire, including a new campaign, four new heroes to play, new relics, new cards, new potions, and more. \n \n The Heart demands that this endless cycle of slaughter be finished. Answer the call as a Villain, and see to the defense of the Spire. \n \n This mod is a combination modpack which includes the former mods known as Slimebound Mod, Guardian Mod, and Playable Snecko, along with a ton of new content, a new character, and much more.
+
+
+
+
+ //Change below line to your Steam installation directory
+ D:/SteamLibrary/
+
+ ${steamFolder}steamapps/workshop/content/646570/
+ ${steamFolder}steamapps/common/SlayTheSpire/
+ 2.0
+ 3.8.0
+ UTF-8
+
+
+
+
+ com.megacrit.cardcrawl
+ SlayTheSpire
+ ${SlayTheSpire.version}
+ system
+ ${stsPath}desktop-1.0.jar
+
+
+ com.evacipated.cardcrawl
+ ModTheSpire
+ ${ModTheSpire.version}
+ system
+ ${workshopFolder}1605060445/ModTheSpire.jar
+
+
+ basemod
+ basemod
+ 5.17.0
+ system
+ ${workshopFolder}1605833019/BaseMod.jar
+
+
+ come.evacipated.cardcrawl
+ stslib
+ 1.17.2
+ system
+ ${workshopFolder}1609158507/StSLib.jar
+
+
+ actlikeit
+ actlikeit
+ 1.0.0
+ system
+ ${workshopFolder}1934902042/actlikeit.jar
+
+
+ com.megacrit.cardcrawl.mod
+ WidePotions
+ 0.4
+ system
+ ${workshopFolder}2368513093/WidePotions.jar
+
+
+ quickRestart
+ quickRestart
+ 2.0.5
+ system
+ ${workshopFolder}1805046408/quickRestart.jar
+
+
+ chronoMods
+ TogetherManager
+ 2.2
+ system
+ ${workshopFolder}2395241968/Spire with Friends.jar
+
+
+
+
+ ${project.artifactId}
+
+
+ src/main/resources
+ false
+
+ ModTheSpire.json
+
+
+
+ src/main/resources
+ true
+
+ ModTheSpire.json
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.3.0
+
+
+ **/*.psd
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+ package
+
+
+
+
+
+
+ run
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml.example b/pom.xml.example
deleted file mode 100644
index caa26f6ff..000000000
--- a/pom.xml.example
+++ /dev/null
@@ -1,142 +0,0 @@
-
- 4.0.0
-
- mod-group-name
- EvilWithin
- EvilWithin
- 0.1.0
-
-
- Downfall is a full-featured Expansion for Slay the Spire, including a new campaign, four new heroes to play, new relics, new cards, new potions, and more. \n \n The Heart demands that this endless cycle of slaughter be finished. Answer the call as a Villain, and see to the defense of the Spire. \n \n This mod is a combination modpack which includes the former mods known as Slimebound Mod, Guardian Mod, and Playable Snecko, along with a ton of new content, a new character, and much more.
-
-
-
-
- //Change below line to your Steam installation directory
- D:/SteamLibrary/
-
- ${steamFolder}steamapps/workshop/content/646570/
- ${steamFolder}steamapps/common/SlayTheSpire/
- 2.0
- 3.8.0
- UTF-8
-
-
-
-
- com.megacrit.cardcrawl
- SlayTheSpire
- ${SlayTheSpire.version}
- system
- ${stsPath}desktop-1.0.jar
-
-
- com.evacipated.cardcrawl
- ModTheSpire
- ${ModTheSpire.version}
- system
- ${workshopFolder}1605060445/ModTheSpire.jar
-
-
- basemod
- basemod
- 5.17.0
- system
- ${workshopFolder}1605833019/BaseMod.jar
-
-
- come.evacipated.cardcrawl
- stslib
- 1.17.2
- system
- ${workshopFolder}1609158507/StSLib.jar
-
-
- actlikeit
- actlikeit
- 1.0.0
- system
- ${workshopFolder}1934902042/actlikeit.jar
-
-
- com.megacrit.cardcrawl.mod
- WidePotions
- 0.4
- system
- ${workshopFolder}2368513093/WidePotions.jar
-
-
- quickRestart
- quickRestart
- 2.0.5
- system
- ${workshopFolder}1805046408/quickRestart.jar
-
-
- chronoMods
- TogetherManager
- 2.2
- system
- ${workshopFolder}2395241968/Spire with Friends.jar
-
-
-
-
- ${project.artifactId}
-
-
- src/main/resources
- false
-
- ModTheSpire.json
-
-
-
- src/main/resources
- true
-
- ModTheSpire.json
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.3.0
-
-
- **/*.psd
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.7.0
-
- 1.8
- 1.8
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- 1.8
-
-
- package
-
-
-
-
-
-
- run
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/automaton/AutomatonMod.java b/src/main/java/automaton/AutomatonMod.java
index 84689b733..202317fde 100644
--- a/src/main/java/automaton/AutomatonMod.java
+++ b/src/main/java/automaton/AutomatonMod.java
@@ -139,7 +139,6 @@ public static void loadJokeCardImage(AbstractCard card, String img) {
ReflectionHacks.setPrivate(card, AbstractCard.class, "jokePortrait", cardImg);
}
-
public static String makeCardPath(String resourcePath) {
return getModID() + "Resources/images/cards/" + resourcePath;
}
@@ -226,12 +225,13 @@ public void receiveEditRelics() {
BaseMod.addRelicToCustomPool(new BronzeCore(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new CableSpool(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelic(new DecasWashers(), RelicType.SHARED);
- BaseMod.addRelic(new DonusWashers(), RelicType.SHARED);
+ // BaseMod.addRelic(new DonusWashers(), RelicType.SHARED);
+ BaseMod.addRelicToCustomPool(new DonusWashers(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new ElectromagneticCoil(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new ProtectiveGoggles(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new Mallet(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new PlatinumCore(), AutomatonChar.Enums.BRONZE_AUTOMATON);
- BaseMod.addRelic(new MakeshiftBattery(), RelicType.SHARED);
+ BaseMod.addRelicToCustomPool(new MakeshiftBattery(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelic(new BronzeIdol(), RelicType.SHARED);
BaseMod.addRelicToCustomPool(new SilverBullet(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new BottledCode(), AutomatonChar.Enums.BRONZE_AUTOMATON);
diff --git a/src/main/java/automaton/actions/ChosenAction.java b/src/main/java/automaton/actions/ChosenAction.java
index 5d35a064c..3a62f6b56 100644
--- a/src/main/java/automaton/actions/ChosenAction.java
+++ b/src/main/java/automaton/actions/ChosenAction.java
@@ -5,12 +5,8 @@
package automaton.actions;
-import automaton.FunctionHelper;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.GetAllInBattleInstances;
-import java.util.Iterator;
+
import java.util.UUID;
public class ChosenAction extends AbstractGameAction {
diff --git a/src/main/java/automaton/actions/ScryBlockStatusAction.java b/src/main/java/automaton/actions/ScryBlockStatusAction.java
index 98dccdb7d..dc19568d2 100644
--- a/src/main/java/automaton/actions/ScryBlockStatusAction.java
+++ b/src/main/java/automaton/actions/ScryBlockStatusAction.java
@@ -73,8 +73,8 @@ public void update() {
AbstractDungeon.player.drawPile.moveToDiscardPile(c);
if (c.type == AbstractCard.CardType.STATUS) {
addToBot(new GainBlockAction(AbstractDungeon.player, blockPerCard));
+ addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile));
}
- addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile));
}
}
AbstractDungeon.gridSelectScreen.selectedCards.clear();
diff --git a/src/main/java/automaton/cards/AlphaBuild.java b/src/main/java/automaton/cards/AlphaBuild.java
index 205131d38..5d82eaf26 100644
--- a/src/main/java/automaton/cards/AlphaBuild.java
+++ b/src/main/java/automaton/cards/AlphaBuild.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/BetaBuild.java b/src/main/java/automaton/cards/BetaBuild.java
index 6de4a8f73..e462f0d3b 100644
--- a/src/main/java/automaton/cards/BetaBuild.java
+++ b/src/main/java/automaton/cards/BetaBuild.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/BitShift.java b/src/main/java/automaton/cards/BitShift.java
index a4806361b..0c864b6f6 100644
--- a/src/main/java/automaton/cards/BitShift.java
+++ b/src/main/java/automaton/cards/BitShift.java
@@ -11,6 +11,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import expansioncontent.cardmods.PropertiesMod;
import expansioncontent.cardmods.RetainCardMod;
+import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -23,6 +24,7 @@ public BitShift() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
exhaust = true;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("BitShift.png"));
}
diff --git a/src/main/java/automaton/cards/Break.java b/src/main/java/automaton/cards/Break.java
index 44e6a7079..8e8490eed 100644
--- a/src/main/java/automaton/cards/Break.java
+++ b/src/main/java/automaton/cards/Break.java
@@ -2,10 +2,9 @@
import automaton.AutomatonMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.status.Burn;
-import com.megacrit.cardcrawl.cards.status.Slimed;
-import com.megacrit.cardcrawl.cards.status.Wound;
+import com.megacrit.cardcrawl.cards.status.*;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -38,10 +37,11 @@ public void use(AbstractPlayer p, AbstractMonster m) {
@Override
public void onCompile(AbstractCard function, boolean forGameplay) {
if (forGameplay) {
-
- shuffleIn(new Burn());
- shuffleIn(new Wound());
- shuffleIn(new Slimed());
+ addToBot(new MakeTempCardInHandAction(new Dazed(), 1));
+ addToBot(new MakeTempCardInHandAction(new Slimed(), 1));
+ addToBot(new MakeTempCardInHandAction(new Wound(), 1));
+ addToBot(new MakeTempCardInHandAction(new Burn(), 1));
+ addToBot(new MakeTempCardInHandAction(new VoidCard(), 1));
}
}
diff --git a/src/main/java/automaton/cards/BugBarrage.java b/src/main/java/automaton/cards/BugBarrage.java
index ac5abdc85..fe89a4b7b 100644
--- a/src/main/java/automaton/cards/BugBarrage.java
+++ b/src/main/java/automaton/cards/BugBarrage.java
@@ -21,14 +21,14 @@ public class BugBarrage extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 7;
- private static final int UPG_DAMAGE = 3;
+ private static final int DAMAGE = 5;
+ private static final int UPG_DAMAGE = 2;
public BugBarrage() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
// exhaust = true;
- magicNumber = baseMagicNumber = 1;
+ magicNumber = baseMagicNumber = 2;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("BugBarrage.png"));
}
diff --git a/src/main/java/automaton/cards/ChildClass.java b/src/main/java/automaton/cards/ChildClass.java
index b42e788b4..df1e4556f 100644
--- a/src/main/java/automaton/cards/ChildClass.java
+++ b/src/main/java/automaton/cards/ChildClass.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
diff --git a/src/main/java/automaton/cards/ChosenStrike.java b/src/main/java/automaton/cards/ChosenStrike.java
index 0449fc1c5..9c2bd8c72 100644
--- a/src/main/java/automaton/cards/ChosenStrike.java
+++ b/src/main/java/automaton/cards/ChosenStrike.java
@@ -20,7 +20,7 @@ public class ChosenStrike extends AbstractBronzeCard {
private static final int UPG_DAMAGE = 3;
public ChosenStrike() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE + misc;
baseMagicNumber = magicNumber = 1;
this.tags.add(CardTags.STRIKE);
@@ -32,7 +32,7 @@ public ChosenStrike() {
public void applyPowers() {
super.applyPowers();
baseDamage = DAMAGE + misc;
- if (upgraded) baseDamage += UPG_DAMAGE;
+ // if (upgraded) baseDamage += UPG_DAMAGE;
}
@Override
@@ -62,8 +62,9 @@ public void onCompilePreCardEffectEmbed(boolean forGameplay) {
}
public void upp() {
- misc += 3;
- upgradedDamage = true;
- baseDamage = DAMAGE + misc;
+ // misc += 3;
+ // upgradedDamage = true;
+ // baseDamage = DAMAGE + misc;
+ upgradeBaseCost(1);
}
}
diff --git a/src/main/java/automaton/cards/CleanCode.java b/src/main/java/automaton/cards/CleanCode.java
index a0bbaaf81..de496a0b5 100644
--- a/src/main/java/automaton/cards/CleanCode.java
+++ b/src/main/java/automaton/cards/CleanCode.java
@@ -17,7 +17,7 @@ public class CleanCode extends AbstractBronzeCard {
private static final int UPG_MAGIC = 1;
public CleanCode() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("CleanCode.png"));
diff --git a/src/main/java/automaton/cards/CopyPaste.java b/src/main/java/automaton/cards/CopyPaste.java
index 27cd1a810..88005efe3 100644
--- a/src/main/java/automaton/cards/CopyPaste.java
+++ b/src/main/java/automaton/cards/CopyPaste.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.powers.CopyPastePower;
diff --git a/src/main/java/automaton/cards/DarkDash.java b/src/main/java/automaton/cards/DarkDash.java
index 88afab87b..527e8f016 100644
--- a/src/main/java/automaton/cards/DarkDash.java
+++ b/src/main/java/automaton/cards/DarkDash.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/DigitalCarnage.java b/src/main/java/automaton/cards/DigitalCarnage.java
index 358ef0986..83acd3c1e 100644
--- a/src/main/java/automaton/cards/DigitalCarnage.java
+++ b/src/main/java/automaton/cards/DigitalCarnage.java
@@ -23,7 +23,7 @@ public class DigitalCarnage extends AbstractBronzeCard {
private static final int UPG_DAMAGE = 5;
public DigitalCarnage() {
- super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
// isEthereal = true;
baseDamage = DAMAGE;
thisEncodes();
diff --git a/src/main/java/automaton/cards/Explode.java b/src/main/java/automaton/cards/Explode.java
index 59c19db0b..685eb5439 100644
--- a/src/main/java/automaton/cards/Explode.java
+++ b/src/main/java/automaton/cards/Explode.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.ExplosionSmallEffect;
import theHexaghost.powers.BurnPower;
+import theHexaghost.relics.CandleOfCauterizing;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -27,6 +28,14 @@ public Explode() {
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Explode.png"));
}
+ @Override
+ public void applyPowers() {
+ if(AbstractDungeon.player.hasRelic(CandleOfCauterizing.ID)){
+ this.magicNumber = this.baseMagicNumber + CandleOfCauterizing.SOULBURN_BONUS_AMOUNT;
+ }
+ this.isMagicNumberModified = this.magicNumber != this.baseMagicNumber;
+ }
+
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
for (AbstractMonster q : AbstractDungeon.getCurrRoom().monsters.monsters) {
diff --git a/src/main/java/automaton/cards/FineTuning.java b/src/main/java/automaton/cards/FineTuning.java
index 4bad8e3db..220a407d0 100644
--- a/src/main/java/automaton/cards/FineTuning.java
+++ b/src/main/java/automaton/cards/FineTuning.java
@@ -21,7 +21,7 @@ public FineTuning() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
exhaust = true;
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("FineTuning.png"));
}
diff --git a/src/main/java/automaton/cards/ForLoop.java b/src/main/java/automaton/cards/ForLoop.java
index ecf17a327..e0f4f35af 100644
--- a/src/main/java/automaton/cards/ForLoop.java
+++ b/src/main/java/automaton/cards/ForLoop.java
@@ -5,6 +5,7 @@
import automaton.powers.CloningPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
public class ForLoop extends AbstractBronzeCard {
@@ -14,7 +15,7 @@ public class ForLoop extends AbstractBronzeCard {
public ForLoop() {
super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
exhaust = true;
baseMagicNumber = magicNumber = 0;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("ForLoop.png"));
diff --git a/src/main/java/automaton/cards/ForceShield.java b/src/main/java/automaton/cards/ForceShield.java
index dd77d9c78..daa414d39 100644
--- a/src/main/java/automaton/cards/ForceShield.java
+++ b/src/main/java/automaton/cards/ForceShield.java
@@ -20,7 +20,7 @@ public class ForceShield extends AbstractBronzeCard {
private static final int UPG_BLOCK = 4;
public ForceShield() {
- super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 4, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = BLOCK;
if (CardCrawlGame.dungeon != null && AbstractDungeon.currMapNode != null) {
this.configureCostsOnNewCard();
diff --git a/src/main/java/automaton/cards/FullRelease.java b/src/main/java/automaton/cards/FullRelease.java
index 9b2765f4c..74617a8ee 100644
--- a/src/main/java/automaton/cards/FullRelease.java
+++ b/src/main/java/automaton/cards/FullRelease.java
@@ -19,7 +19,7 @@ public class FullRelease extends AbstractBronzeCard {
public FullRelease() {
- super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
thisEncodes();
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("FullRelease.png"));
}
@@ -53,6 +53,6 @@ public String getBonusChar() {
}
public void upp() {
- upgradeBaseCost(1);
+ upgradeBaseCost(0);
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/Hardcode.java b/src/main/java/automaton/cards/Hardcode.java
index 07be5379e..1dbb46ac0 100644
--- a/src/main/java/automaton/cards/Hardcode.java
+++ b/src/main/java/automaton/cards/Hardcode.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/HardenedForm.java b/src/main/java/automaton/cards/HardenedForm.java
index 91558ffd8..d2e2cf6a5 100644
--- a/src/main/java/automaton/cards/HardenedForm.java
+++ b/src/main/java/automaton/cards/HardenedForm.java
@@ -13,8 +13,8 @@ public class HardenedForm extends AbstractBronzeCard {
//stupid intellij stuff power, self, rare
- private static final int MAGIC = 4;
- private static final int UPG_MAGIC = 2;
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
public HardenedForm() {
super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
diff --git a/src/main/java/automaton/cards/InfiniteLoop.java b/src/main/java/automaton/cards/InfiniteLoop.java
index d748c2479..e71267932 100644
--- a/src/main/java/automaton/cards/InfiniteLoop.java
+++ b/src/main/java/automaton/cards/InfiniteLoop.java
@@ -18,7 +18,7 @@ public class InfiniteLoop extends AbstractBronzeCard {
private boolean showCard;
public InfiniteLoop(boolean showCard) {
- super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
baseMagicNumber = magicNumber = 2;
thisEncodes();
diff --git a/src/main/java/automaton/cards/ItsAFeature.java b/src/main/java/automaton/cards/ItsAFeature.java
index 58d06ebdf..08b5349c1 100644
--- a/src/main/java/automaton/cards/ItsAFeature.java
+++ b/src/main/java/automaton/cards/ItsAFeature.java
@@ -15,16 +15,15 @@ public class ItsAFeature extends AbstractBronzeCard {
public ItsAFeature() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = this.magicNumber = 3;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("ItsAFeature.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new FeaturePower(1));
+ applyToSelf(new FeaturePower(magicNumber));
}
public void upp() {
- isInnate = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/MinorBeam.java b/src/main/java/automaton/cards/MinorBeam.java
index 902a5cc40..4bd39ea14 100644
--- a/src/main/java/automaton/cards/MinorBeam.java
+++ b/src/main/java/automaton/cards/MinorBeam.java
@@ -16,7 +16,7 @@ public class MinorBeam extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, special
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
private static final int UPG_DAMAGE = 2;
public MinorBeam() {
diff --git a/src/main/java/automaton/cards/Mutator.java b/src/main/java/automaton/cards/Mutator.java
index e66aaf0af..4bd874cc4 100644
--- a/src/main/java/automaton/cards/Mutator.java
+++ b/src/main/java/automaton/cards/Mutator.java
@@ -20,10 +20,11 @@ public class Mutator extends AbstractBronzeCard {
public Mutator() {
super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Mutator.png"));
+ baseMagicNumber = magicNumber = 2;
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new StrengthPower(p, 1));
+ applyToSelf(new StrengthPower(p, magicNumber));
AbstractCard q = this;
atb(new SelectCardsInHandAction(1, masterUI.TEXT[6], c -> c.type == CardType.STATUS, (cards) -> {
att(new MakeTempCardInHandAction(q.makeStatEquivalentCopy(), true));
diff --git a/src/main/java/automaton/cards/Overheat.java b/src/main/java/automaton/cards/Overheat.java
index 3d396eabb..e94b9414a 100644
--- a/src/main/java/automaton/cards/Overheat.java
+++ b/src/main/java/automaton/cards/Overheat.java
@@ -13,7 +13,7 @@ public class Overheat extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 6;
+ private static final int UPG_DAMAGE = 4;
public Overheat() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
diff --git a/src/main/java/automaton/cards/Safeguard.java b/src/main/java/automaton/cards/Safeguard.java
index 5d8c20bb7..38ef802d2 100644
--- a/src/main/java/automaton/cards/Safeguard.java
+++ b/src/main/java/automaton/cards/Safeguard.java
@@ -17,12 +17,12 @@ public class Safeguard extends AbstractBronzeCard {
//stupid intellij stuff skill, self, uncommon
- private static final int BLOCK = 7;
+ private static final int BLOCK = 4;
private static final int MAGIC = 2;
private static final int UPG_MAGIC = -1;
public Safeguard() {
- super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = BLOCK;
baseMagicNumber = magicNumber = MAGIC;
thisEncodes();
diff --git a/src/main/java/automaton/cards/Shell.java b/src/main/java/automaton/cards/Shell.java
index f213a5c02..86d421a8f 100644
--- a/src/main/java/automaton/cards/Shell.java
+++ b/src/main/java/automaton/cards/Shell.java
@@ -29,15 +29,16 @@ public void use(AbstractPlayer p, AbstractMonster m) {
applyToSelf(new BlurPower(p, magicNumber));
}
- @Override
- public void onCompile(AbstractCard function, boolean forGameplay) {
- if (forGameplay && upgraded) {
- applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
- }
+ @Override
+ public void onCompile(AbstractCard function, boolean forGameplay) {
+ if (forGameplay && upgraded) {
+ applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
+ }
}
public void upp() {
+ // upgradeBaseCost(1);
rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ initializeDescription();
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/Shield.java b/src/main/java/automaton/cards/Shield.java
index 9d410c2c4..d95b813cc 100644
--- a/src/main/java/automaton/cards/Shield.java
+++ b/src/main/java/automaton/cards/Shield.java
@@ -19,6 +19,7 @@ public class Shield extends AbstractBronzeCard {
public Shield() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = BLOCK;
+ selfRetain = true;
cardsToPreview = new Slimed();
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Shield.png"));
}
diff --git a/src/main/java/automaton/cards/ShipIt.java b/src/main/java/automaton/cards/ShipIt.java
index 00c6a0d95..739687809 100644
--- a/src/main/java/automaton/cards/ShipIt.java
+++ b/src/main/java/automaton/cards/ShipIt.java
@@ -7,89 +7,60 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import java.util.Iterator;
-
public class ShipIt extends AbstractBronzeCard {
public final static String ID = makeID("ShipIt");
- //stupid intellij stuff attack, enemy, rare
-
+ // Attack card constants
private static final int DAMAGE = 5;
- private static final int MAGIC = 2;
- private static final int UPG_MAGIC = 1;
+ private static final int UPGRADE_DAMAGE = 2;
public ShipIt() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("ShipIt.png"));
}
public static int countCards() {
- int count = 0;
- Iterator var1 = AbstractDungeon.player.hand.group.iterator();
-
- AbstractCard c;
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
+ int statusCount = 0;
+ for (AbstractCard c : AbstractDungeon.player.exhaustPile.group) {
if (c.type == CardType.STATUS) {
- ++count;
+ statusCount++;
}
}
+ return statusCount;
+ }
- var1 = AbstractDungeon.player.drawPile.group.iterator();
-
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
- }
- }
+ public void applyPowers() {
+ super.applyPowers();
- var1 = AbstractDungeon.player.discardPile.group.iterator();
+ if (AbstractDungeon.player != null) {
+ this.rawDescription = cardStrings.DESCRIPTION;
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
+ int statusCount = 0;
+ for (AbstractCard c : AbstractDungeon.player.exhaustPile.group) {
+ if (c.type == CardType.STATUS) {
+ statusCount++;
+ }
}
- }
- var1 = AbstractDungeon.player.exhaustPile.group.iterator();
+ this.rawDescription = cardStrings.EXTENDED_DESCRIPTION[0] + statusCount + cardStrings.EXTENDED_DESCRIPTION[1];
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
- }
+ this.initializeDescription();
}
-
- return count;
}
- public void calculateCardDamage(AbstractMonster mo) {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += this.magicNumber * countCards();
- super.calculateCardDamage(mo);
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- }
-
- public void applyPowers() {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += this.magicNumber * countCards();
- super.applyPowers();
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- }
-
-
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ int count = countCards();
+ for (int i = 0; i < count; i++) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ }
}
+ @Override
public void upp() {
- upgradeMagicNumber(UPG_MAGIC);
+ upgradeDamage(UPGRADE_DAMAGE);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/automaton/cards/ThunderWave.java b/src/main/java/automaton/cards/ThunderWave.java
index 9a9fc5816..4c00029b1 100644
--- a/src/main/java/automaton/cards/ThunderWave.java
+++ b/src/main/java/automaton/cards/ThunderWave.java
@@ -21,11 +21,11 @@ public class ThunderWave extends AbstractBronzeCard {
//stupid intellij stuff attack, all_enemy, rare
- private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 6;
+ private static final int DAMAGE = 12;
+ private static final int UPG_DAMAGE = 4;
public ThunderWave() {
- super(ID, 3, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
isMultiDamage = true;
exhaust = true;
diff --git a/src/main/java/automaton/cards/TinkerersToolbox.java b/src/main/java/automaton/cards/TinkerersToolbox.java
index 655b3edb2..4a54aaf99 100644
--- a/src/main/java/automaton/cards/TinkerersToolbox.java
+++ b/src/main/java/automaton/cards/TinkerersToolbox.java
@@ -1,16 +1,19 @@
package automaton.cards;
import automaton.AutomatonMod;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
+import gremlin.cards.Ward;
import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -28,7 +31,7 @@ public class TinkerersToolbox extends AbstractBronzeCard {
private ArrayList cardsList = new ArrayList<>();
public TinkerersToolbox() {
- super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
selfRetain = true;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
@@ -36,6 +39,7 @@ public TinkerersToolbox() {
cardsList.add(new Batch());
cardsList.add(new Decompile());
cardsList.add(new ByteShift());
+ MultiCardPreview.add(this, new Debug(), new Batch(), new Decompile(), new ByteShift());
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("TinkerersToolbox.png"));
}
@@ -44,31 +48,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- exhaust = false;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeBaseCost(0);
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
-}
\ No newline at end of file
+
+ }
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/Verify.java b/src/main/java/automaton/cards/Verify.java
index a3944a401..5706cabfe 100644
--- a/src/main/java/automaton/cards/Verify.java
+++ b/src/main/java/automaton/cards/Verify.java
@@ -17,7 +17,7 @@ public class Verify extends AbstractBronzeCard {
public Verify() {
super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
tags.add(BaseModCardTags.FORM);
isEthereal = true;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Verify.png"));
diff --git a/src/main/java/automaton/cards/Virus.java b/src/main/java/automaton/cards/Virus.java
index d3dab71d9..50f326315 100644
--- a/src/main/java/automaton/cards/Virus.java
+++ b/src/main/java/automaton/cards/Virus.java
@@ -1,14 +1,15 @@
package automaton.cards;
import automaton.AutomatonMod;
-import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
import com.megacrit.cardcrawl.powers.FrailPower;
+import gremlin.cards.Ward;
import static com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.FIRE;
import static com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.LIGHTNING;
@@ -19,33 +20,38 @@ public class Virus extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, uncommon
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
public Virus() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
cardsToPreview = new MinorBeam();
- selfRetain = true;
exhaust = true;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("Virus.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, LIGHTNING);
- for (AbstractCard c:AbstractDungeon.player.hand.group){
- if (c != this) {
- atb(new ExhaustSpecificCardAction(c, AbstractDungeon.player.hand));
- AbstractCard c2 = new MinorBeam();
- if (upgraded) c2.upgrade();
- atb(new MakeTempCardInHandAction(c2));
+ int theSize = AbstractDungeon.player.hand.size();
+ if (upgraded) {
+ AbstractCard s = (new MinorBeam()).makeCopy();
+ s.upgrade();
+ if (theSize>0) {
+ this.addToTop(new MakeTempCardInHandAction(s, theSize-1));
+ }
+ } else {
+ if (theSize>0) {
+ this.addToTop(new MakeTempCardInHandAction(new MinorBeam(), theSize - 1));
}
}
- }
+ this.addToTop(new DiscardAction(AbstractDungeon.player, AbstractDungeon.player, theSize-1, false));
- public void upp() {
- cardsToPreview.upgrade();
- upgradeDamage(2);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
}
-}
\ No newline at end of file
+
+ public void upp () {
+ cardsToPreview.upgrade();
+ upgradeDamage(2);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/WildBeam.java b/src/main/java/automaton/cards/WildBeam.java
index c4e845646..9c542db0f 100644
--- a/src/main/java/automaton/cards/WildBeam.java
+++ b/src/main/java/automaton/cards/WildBeam.java
@@ -21,8 +21,8 @@ public class WildBeam extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 9;
- private static final int UPG_DAMAGE = 3;
+ private static final int DAMAGE = 10;
+ private static final int UPG_DAMAGE = 4;
public WildBeam() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
diff --git a/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java b/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
index d0062097c..260bfbfe5 100644
--- a/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
+++ b/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
@@ -102,8 +102,8 @@ public void update()
c.upgrade();
logMetricCardUpgrade(ID, "Forge", c);
AbstractDungeon.player.bottledCardUpgradeCheck(AbstractDungeon.gridSelectScreen.selectedCards.get(0));
- AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect(c.makeStatEquivalentCopy()));
- AbstractDungeon.topLevelEffects.add(new com.megacrit.cardcrawl.vfx.UpgradeShineEffect(Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
+ AbstractDungeon.effectsQueue.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy()));
+ AbstractDungeon.topLevelEffects.add(new UpgradeShineEffect(Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
AbstractDungeon.gridSelectScreen.selectedCards.clear();
this.pickCard = false;
}
diff --git a/src/main/java/automaton/events/AncientFactory.java b/src/main/java/automaton/events/AncientFactory.java
index 791264f93..55c7a7480 100644
--- a/src/main/java/automaton/events/AncientFactory.java
+++ b/src/main/java/automaton/events/AncientFactory.java
@@ -10,10 +10,18 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
+import com.megacrit.cardcrawl.helpers.MonsterHelper;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
+import com.megacrit.cardcrawl.monsters.beyond.Deca;
+import com.megacrit.cardcrawl.monsters.beyond.Donu;
+import com.megacrit.cardcrawl.monsters.beyond.Spiker;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.relics.ChampionsBelt;
+import com.megacrit.cardcrawl.relics.CloakClasp;
+import com.megacrit.cardcrawl.relics.WristBlade;
+import slimebound.SlimeboundMod;
public class AncientFactory extends AbstractImageEvent {
public static final String ID = "bronze:AncientFactory";
@@ -51,6 +59,7 @@ protected void buttonEffect(int buttonPressed) {
case 0:
logMetric(ID, "Fought Donu");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDonu();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
@@ -67,6 +76,7 @@ protected void buttonEffect(int buttonPressed) {
case 1:
logMetric(ID, "Fought Deca");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDeca();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
@@ -82,6 +92,7 @@ protected void buttonEffect(int buttonPressed) {
case 2:
logMetric(ID, "Fought Donu and Deca");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDonu();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
diff --git a/src/main/java/automaton/events/BackToBasicsAutomaton.java b/src/main/java/automaton/events/BackToBasicsAutomaton.java
index 72264c57b..8493a4b00 100644
--- a/src/main/java/automaton/events/BackToBasicsAutomaton.java
+++ b/src/main/java/automaton/events/BackToBasicsAutomaton.java
@@ -42,13 +42,13 @@ public class BackToBasicsAutomaton extends AbstractImageEvent {
OPTIONSGUARDIAN = eventStringsGuardian.OPTIONS;
}
- private BackToBasicsAutomaton.CUR_SCREEN screen;
+ private CUR_SCREEN screen;
private List cardsUpgraded;
private ArrayList cardsToRemove;
public BackToBasicsAutomaton() {
super(NAME, DIALOG_1, "images/events/backToBasics.jpg");
- this.screen = BackToBasicsAutomaton.CUR_SCREEN.INTRO;
+ this.screen = CUR_SCREEN.INTRO;
this.cardsUpgraded = new ArrayList();
for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
@@ -130,7 +130,7 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.clearRemainingOptions();
}
- this.screen = BackToBasicsAutomaton.CUR_SCREEN.COMPLETE;
+ this.screen = CUR_SCREEN.COMPLETE;
break;
case COMPLETE:
this.openMap();
diff --git a/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java b/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
index b7d7c3015..01d9e82a8 100644
--- a/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
+++ b/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
@@ -1,4 +1,4 @@
-/*package automaton.patches;
+package automaton.patches;/*package automaton.patches;
import automaton.cards.FunctionCard;
import basemod.patches.com.megacrit.cardcrawl.screens.compendium.CardLibraryScreen.EverythingFix;
diff --git a/src/main/java/automaton/patches/StatusReplacePatch.java b/src/main/java/automaton/patches/StatusReplacePatch.java
index fecaac1c4..af76067bb 100644
--- a/src/main/java/automaton/patches/StatusReplacePatch.java
+++ b/src/main/java/automaton/patches/StatusReplacePatch.java
@@ -35,8 +35,8 @@ public static SpireReturn Prefix(AbstractCard abstractCard) {
AbstractCard newStatus = AutomatonMod.getGoodStatus(abstractCard);
if(AbstractDungeon.player.hasRelic(MedicalKit.ID)&&!(newStatus instanceof UsefulSlime)){
- newStatus.cost=-2;
- newStatus.costForTurn=-2;
+ newStatus.cost=0;
+ newStatus.costForTurn=0;
newStatus.isCostModified=true;
newStatus.isCostModifiedForTurn=true;
}
diff --git a/src/main/java/automaton/powers/FeaturePower.java b/src/main/java/automaton/powers/FeaturePower.java
index 0522838b2..a7514e15b 100644
--- a/src/main/java/automaton/powers/FeaturePower.java
+++ b/src/main/java/automaton/powers/FeaturePower.java
@@ -1,5 +1,6 @@
package automaton.powers;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -20,12 +21,9 @@ public FeaturePower(int amount) {
@Override
public void onCardDraw(AbstractCard card) {
- if (card.type == AbstractCard.CardType.STATUS || card.type == AbstractCard.CardType.CURSE) {
+ if (card.type == AbstractCard.CardType.STATUS) {
flash();
- applyToSelf(new StrengthPower(owner, amount));
- applyToSelf(new LoseStrengthPower(owner, amount));
- applyToSelf(new DexterityPower(owner, amount));
- applyToSelf(new LoseDexterityPower(owner, amount));
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, amount));
//Imagine how much time could be saved with some kind of function that could be used to make any power temporary.
//IE: applyTempPower(new StrengthPower(owner, amount)):
//Function applies the power, then uses some abstract Java trickery to make another power, called Lose [powername]
@@ -39,8 +37,15 @@ public void onCardDraw(AbstractCard card) {
}
}
+ public void onExhaust(AbstractCard card){
+ if (card.type == AbstractCard.CardType.STATUS) {
+ flash();
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, amount));
+ }
+ }
+
@Override
public void updateDescription() {
- description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1] + amount + DESCRIPTIONS[2];
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/automaton/powers/HardenedFormPower.java b/src/main/java/automaton/powers/HardenedFormPower.java
index 791b15f0d..4dcf8b3bd 100644
--- a/src/main/java/automaton/powers/HardenedFormPower.java
+++ b/src/main/java/automaton/powers/HardenedFormPower.java
@@ -45,7 +45,7 @@ public void update() {
AbstractMonster m = AbstractDungeon.getMonsters().getRandomMonster(true);
if (m != null) {
addToTop(new GainBlockAction(owner, x));
- addToTop(new PseudoDamageRandomEnemyAction(m, new DamageInfo(owner, x, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.NONE));
+ addToTop(new PseudoDamageRandomEnemyAction(m, new DamageInfo(owner, x, DamageInfo.DamageType.THORNS), AttackEffect.NONE));
AbstractDungeon.actionManager.addToTop(new VFXAction(new com.megacrit.cardcrawl.vfx.combat.SmallLaserEffect(orbVFX.currentX + (50F * Settings.scale), orbVFX.currentY + (85F * Settings.scale), m.hb.cX, m.hb.cY), 0.1F));
AbstractDungeon.actionManager.addToTop(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
}
diff --git a/src/main/java/automaton/relics/BottledCode.java b/src/main/java/automaton/relics/BottledCode.java
index cd88d4a7c..51ece75fd 100644
--- a/src/main/java/automaton/relics/BottledCode.java
+++ b/src/main/java/automaton/relics/BottledCode.java
@@ -26,7 +26,7 @@ public class BottledCode extends CustomRelic implements CustomBottleRelic, Custo
public BottledCode() {
super(ID, new Texture(AutomatonMod.makeRelicPath(IMG_PATH)), new Texture(AutomatonMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)),
- RelicTier.SPECIAL, LandingSound.FLAT);
+ RelicTier.SPECIAL, LandingSound.CLINK);
}
@Override
diff --git a/src/main/java/automaton/relics/BronzeIdol.java b/src/main/java/automaton/relics/BronzeIdol.java
index c6bd06f19..f5e8237a3 100644
--- a/src/main/java/automaton/relics/BronzeIdol.java
+++ b/src/main/java/automaton/relics/BronzeIdol.java
@@ -25,7 +25,7 @@ public class BronzeIdol extends CustomRelic {
private CardPowerTip card_tip = new CardPowerTip(null);
public BronzeIdol() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
card_list.add(new Daze());
card_list.add(new UsefulSlime());
card_list.add(new Ignite());
diff --git a/src/main/java/champ/ChampChar.java b/src/main/java/champ/ChampChar.java
index fa76cb8d1..5a01b9829 100644
--- a/src/main/java/champ/ChampChar.java
+++ b/src/main/java/champ/ChampChar.java
@@ -1,5 +1,6 @@
package champ;
+import automaton.vfx.CompileVictoryEffect;
import basemod.abstracts.CustomPlayer;
import champ.cards.*;
import champ.relics.ChampionCrown;
@@ -18,16 +19,23 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.EnergyManager;
import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.*;
import com.megacrit.cardcrawl.localization.CharacterStrings;
import com.megacrit.cardcrawl.screens.CharSelectInfo;
import com.megacrit.cardcrawl.stances.NeutralStance;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.PetalEffect;
+import com.megacrit.cardcrawl.vfx.combat.GiantFireEffect;
+import com.megacrit.cardcrawl.vfx.scene.DefectVictoryNumberEffect;
import downfall.util.TextureLoader;
+import hermit.vfx.GreenFireEffect;
import reskinContent.patches.CharacterSelectScreenPatches;
import java.util.ArrayList;
import static champ.ChampMod.*;
+import static hermit.characters.hermit.update_timer;
public class ChampChar extends CustomPlayer {
public static final String ID = makeID("theChamp");
@@ -244,6 +252,28 @@ public String getCustomModeCharacterButtonSoundKey() {
}
}
+
+ @Override
+ //wow look victory effect cool
+ public void updateVictoryVfx(ArrayList effects) {
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+
+ update_timer += Gdx.graphics.getDeltaTime();
+
+ update_timer += Gdx.graphics.getDeltaTime();
+
+ for (float i = 0; i + (1.0 / 120.0) <= update_timer; update_timer -= (1.0 / 120.0)) {
+ float spawn = (float) MathUtils.random(0, 10);
+ if (spawn == 1) {
+ effects.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ }
+ }
+ }
+
+
@Override
public int getAscensionMaxHPLoss() {
return 5;
diff --git a/src/main/java/champ/ChampMod.java b/src/main/java/champ/ChampMod.java
index c24a3fb80..dcf171eee 100644
--- a/src/main/java/champ/ChampMod.java
+++ b/src/main/java/champ/ChampMod.java
@@ -32,6 +32,7 @@
import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.actions.watcher.PressEndTurnButtonAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -44,11 +45,13 @@
import com.megacrit.cardcrawl.monsters.MonsterGroup;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Calipers;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.stances.NeutralStance;
import downfall.downfallMod;
import downfall.util.CardIgnore;
import downfall.util.TextureLoader;
+import guardian.relics.ObsidianScales;
import guardian.stances.DefensiveMode;
import javassist.CtClass;
import javassist.Modifier;
@@ -263,6 +266,7 @@ public void receiveEditRelics() {
BaseMod.addRelicToCustomPool(new GladiatorsBookOfMartialProwess(), ChampChar.Enums.CHAMP_GRAY);
BaseMod.addRelicToCustomPool(new SignatureFinisher(), ChampChar.Enums.CHAMP_GRAY);
BaseMod.addRelicToCustomPool(new PowerArmor(), ChampChar.Enums.CHAMP_GRAY);
+ BaseMod.addRelicToCustomPool(new RageAmulet(), ChampChar.Enums.CHAMP_GRAY);
BaseMod.addRelicToCustomPool(new SpectersHand(), ChampChar.Enums.CHAMP_GRAY);
BaseMod.addRelicToCustomPool(new LiftRelic(), ChampChar.Enums.CHAMP_GRAY);
@@ -526,11 +530,22 @@ public static void triggerOpenerRelics(boolean fromNeutral) {
@Override
public int receiveOnPlayerLoseBlock(int i) {
+
+ //This only seems to create a bug with Deflecting Bracers?
+ //Replaced i with 0 here.
if(AbstractDungeon.player.stance instanceof DefensiveMode){
- return i;
+ return 0;
}
+
if (AbstractDungeon.player.hasRelic(DeflectingBracers.ID)) {
+
int counter = Math.min(i, AbstractDungeon.player.currentBlock / 2);
+
+ //Calipers would be good here.
+ if (AbstractDungeon.player.hasRelic(Calipers.ID)) {
+ counter = Math.min(7, AbstractDungeon.player.currentBlock / 2);
+ }
+
if (counter > 0) {
AbstractDungeon.player.getRelic(DeflectingBracers.ID).flash();
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new CounterPower(counter), counter));
@@ -559,6 +574,9 @@ public void update() {
int x = begone;
if (AbstractDungeon.player.hasRelic(PowerArmor.ID) && AbstractDungeon.player.hasPower(VigorPower.POWER_ID)) {
if (x + AbstractDungeon.player.getPower(VigorPower.POWER_ID).amount > PowerArmor.CAP_RESOLVE_ETC) {
+ PowerArmor PowerArmorInstance = new PowerArmor();
+ PowerArmorInstance.flash();
+ addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, PowerArmorInstance));
x = PowerArmor.CAP_RESOLVE_ETC - AbstractDungeon.player.getPower(VigorPower.POWER_ID).amount;
}
}
diff --git a/src/main/java/champ/actions/DiscoverOpenerAction.java b/src/main/java/champ/actions/DiscoverOpenerAction.java
index c9011fd09..11e33eca5 100644
--- a/src/main/java/champ/actions/DiscoverOpenerAction.java
+++ b/src/main/java/champ/actions/DiscoverOpenerAction.java
@@ -1,5 +1,6 @@
package champ.actions;
+import basemod.BaseMod;
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
@@ -44,15 +45,15 @@ public void update() {
disCard.current_x = -1000.0F * Settings.scale;// 70
disCard2.current_x = -1000.0F * Settings.scale + AbstractCard.IMG_HEIGHT_S;// 71
if (this.amount == 1) {// 73
- if (AbstractDungeon.player.hand.size() < 10) {// 74
+ if (AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {// 74
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 75
} else {
AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 78
}
- } else if (AbstractDungeon.player.hand.size() + this.amount <= 10) {// 83
+ } else if (AbstractDungeon.player.hand.size() + this.amount <= BaseMod.MAX_HAND_SIZE) {// 83
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F - AbstractCard.IMG_WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 84
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard2, (float) Settings.WIDTH / 2.0F + AbstractCard.IMG_WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 89
- } else if (AbstractDungeon.player.hand.size() == 9) {// 95
+ } else if (AbstractDungeon.player.hand.size() == BaseMod.MAX_HAND_SIZE-1) {// 95
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F - AbstractCard.IMG_WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 96
AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard2, (float) Settings.WIDTH / 2.0F + AbstractCard.IMG_WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 101
} else {
diff --git a/src/main/java/champ/actions/VigorWallopAction.java b/src/main/java/champ/actions/VigorWallopAction.java
new file mode 100644
index 000000000..81fd900a2
--- /dev/null
+++ b/src/main/java/champ/actions/VigorWallopAction.java
@@ -0,0 +1,56 @@
+package champ.actions;
+
+import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import com.megacrit.cardcrawl.vfx.combat.FlameBarrierEffect;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import downfall.powers.NextTurnPowerPower;
+import hermit.util.Wiz;
+
+public class VigorWallopAction extends AbstractGameAction {
+ private int damage;
+
+ public VigorWallopAction(AbstractCreature target, AbstractCreature source, int amount, DamageInfo.DamageType type, AbstractGameAction.AttackEffect effect) {
+ setValues(target, source, amount);
+ this.damage = amount;
+ this.actionType = AbstractGameAction.ActionType.DAMAGE;
+ this.damageType = type;
+ this.attackEffect = effect;
+ }
+
+ public void update() {
+ if (this.duration == 0.5F)
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, this.attackEffect));
+ tickDuration();
+ if (this.isDone) {
+ vigorattack();
+ this.target.damage(new DamageInfo(this.source, this.damage, this.damageType));
+ if (AbstractDungeon.getMonsters().areMonstersBasicallyDead())
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ AbstractDungeon.actionManager.addToTop((AbstractGameAction) new WaitAction(0.1F));
+ }
+ }
+
+ private void vigorattack() {
+ int tmp = this.damage;
+ tmp -= this.target.currentBlock;
+ if (tmp > this.target.currentHealth)
+ tmp = this.target.currentHealth;
+ if (tmp > 0) {
+ Wiz.atb(new ApplyPowerAction(this.source, this.source, new NextTurnPowerPower(this.source, new VigorPower(this.source,tmp)), tmp));
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(this.source, new FlameBarrierEffect(this.source.hb.cX, this.source.hb.cY), 0.1F));
+ } else {
+ this.addToBot(new VFXAction(this.source, new FlameBarrierEffect(this.source.hb.cX, this.source.hb.cY), 0.5F));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Backstep.java b/src/main/java/champ/cards/Backstep.java
index d66dd2e13..ef6c2738b 100644
--- a/src/main/java/champ/cards/Backstep.java
+++ b/src/main/java/champ/cards/Backstep.java
@@ -13,11 +13,11 @@ public class Backstep extends AbstractChampCard {
public final static String ID = makeID("Backstep");
public Backstep() {
- super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- tags.add(ChampMod.OPENER);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ // tags.add(ChampMod.OPENER);
- baseBlock = 6;
- this.tags.add(ChampMod.OPENERDEFENSIVE);
+ baseBlock = 7;
+ //this.tags.add(ChampMod.OPENERDEFENSIVE);
//tags.add(ChampMod.COMBO);
//tags.add(ChampMod.COMBOBERSERKER);
postInit();
@@ -25,7 +25,7 @@ public Backstep() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- defenseOpen();
+ // defenseOpen();
blck();
}
diff --git a/src/main/java/champ/cards/BerserkerStyle.java b/src/main/java/champ/cards/BerserkerStyle.java
index 42ed18723..50962371c 100644
--- a/src/main/java/champ/cards/BerserkerStyle.java
+++ b/src/main/java/champ/cards/BerserkerStyle.java
@@ -2,6 +2,7 @@
import champ.ChampMod;
import champ.powers.BerserkerStylePower;
+import champ.powers.HonePower;
import champ.powers.ResolvePower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -18,23 +19,17 @@ public class BerserkerStyle extends AbstractChampCard {
public BerserkerStyle() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- this.tags.add(ChampMod.OPENER);
- this.tags.add(ChampMod.OPENERBERSERKER);
- baseMagicNumber = magicNumber = 1;
+ baseMagicNumber = magicNumber = 3;
// myHpLossCost = 5;
postInit();
loadJokeCardImage(this, "BerserkerStyle.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- berserkOpen();
- // fatigue(5);
- applyToSelf(new BerserkerStylePower(magicNumber));
+ applyToSelf(new HonePower(p, magicNumber));
}
public void upp() {
- isInnate = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/BladeFlurry.java b/src/main/java/champ/cards/BladeFlurry.java
index 1a9cc4c95..854fe84a4 100644
--- a/src/main/java/champ/cards/BladeFlurry.java
+++ b/src/main/java/champ/cards/BladeFlurry.java
@@ -24,7 +24,7 @@ public class BladeFlurry extends AbstractChampCard {
private static final int DAMAGE = 6;
public BladeFlurry() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
tags.add(CardTags.STRIKE);
loadJokeCardImage(this, "BladeFlurry.png");
diff --git a/src/main/java/champ/cards/BringItOn.java b/src/main/java/champ/cards/BringItOn.java
index e9b542f8b..2159ebc1d 100644
--- a/src/main/java/champ/cards/BringItOn.java
+++ b/src/main/java/champ/cards/BringItOn.java
@@ -12,8 +12,8 @@ public class BringItOn extends AbstractChampCard {
public BringItOn() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = 8;
- baseMagicNumber = magicNumber = 8;
+ baseBlock = 7;
+ baseMagicNumber = magicNumber = 7;
tags.add(ChampMod.FINISHER);
postInit();
loadJokeCardImage(this, "BringItOn.png");
diff --git a/src/main/java/champ/cards/CheapShot.java b/src/main/java/champ/cards/CheapShot.java
index 65548f8fe..326b54413 100644
--- a/src/main/java/champ/cards/CheapShot.java
+++ b/src/main/java/champ/cards/CheapShot.java
@@ -31,7 +31,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
atb(new VFXAction(new WallopEffect(30, m.hb.cX, m.hb.cY)));
dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
- if (m.type != AbstractMonster.EnemyType.BOSS || m instanceof CharBossMerchant) {
+ if (m.type != AbstractMonster.EnemyType.BOSS && !(m instanceof CharBossMerchant)) {
atb(new StunMonsterAction(m, p));
} else {
dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
diff --git a/src/main/java/champ/cards/Circumvent.java b/src/main/java/champ/cards/Circumvent.java
index e5def7e19..7ac1c8e2b 100644
--- a/src/main/java/champ/cards/Circumvent.java
+++ b/src/main/java/champ/cards/Circumvent.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import com.megacrit.cardcrawl.actions.common.DiscardAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -14,6 +15,8 @@ public Circumvent() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 7;
baseMagicNumber = magicNumber = 2;
+ tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(ChampMod.COMBO);
postInit();
loadJokeCardImage(this, "Circumvent.png");
}
@@ -21,7 +24,12 @@ public Circumvent() {
public void use(AbstractPlayer p, AbstractMonster m) {
blck();
atb(new DrawCardAction(magicNumber));
- atb(new DiscardAction(p, p, magicNumber, false));
+ if (!dcombo()) atb(new DiscardAction(p, p, magicNumber, false));
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
public void upp() {
diff --git a/src/main/java/champ/cards/CrownThrow.java b/src/main/java/champ/cards/CrownThrow.java
index 5e0395e19..3e5b367a9 100644
--- a/src/main/java/champ/cards/CrownThrow.java
+++ b/src/main/java/champ/cards/CrownThrow.java
@@ -52,7 +52,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
.rotate(-300F)
.build());
- if (bcombo()) atb(new DrawPileToHandAction(this.magicNumber, CardType.ATTACK));
+ if (bcombo()) atb(new DrawCardAction(magicNumber));
}
@Override
diff --git a/src/main/java/champ/cards/DefensiveShout.java b/src/main/java/champ/cards/DefensiveShout.java
index d7c492c17..67cfee8c2 100644
--- a/src/main/java/champ/cards/DefensiveShout.java
+++ b/src/main/java/champ/cards/DefensiveShout.java
@@ -2,6 +2,7 @@
import champ.ChampMod;
import champ.powers.CounterPower;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
diff --git a/src/main/java/champ/cards/DefensiveStyle.java b/src/main/java/champ/cards/DefensiveStyle.java
index f58c918ce..de4527076 100644
--- a/src/main/java/champ/cards/DefensiveStyle.java
+++ b/src/main/java/champ/cards/DefensiveStyle.java
@@ -1,6 +1,7 @@
package champ.cards;
import champ.ChampMod;
+import champ.powers.BerserkerStylePower;
import champ.powers.DefensiveStylePower;
import champ.powers.FocusedDefPower;
import champ.powers.ResolvePower;
@@ -18,24 +19,20 @@ public class DefensiveStyle extends AbstractChampCard {
//stupid intellij stuff power, self, uncommon
public DefensiveStyle() {
- super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- this.tags.add(ChampMod.OPENER);
- this.tags.add(ChampMod.OPENERDEFENSIVE);
- baseMagicNumber = magicNumber = 1;
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
//myHpLossCost = 5;
postInit();
loadJokeCardImage(this, "DefensiveStyle.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- defenseOpen();
- // fatigue(5);
+ applyToSelf(new BerserkerStylePower(magicNumber));
applyToSelf(new DefensiveStylePower(magicNumber));
}
public void upp() {
- isInnate = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ //upgradeMagicNumber(1);
+ upgradeBaseCost(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Encircle.java b/src/main/java/champ/cards/Encircle.java
index 85db1fa48..b04daa29c 100644
--- a/src/main/java/champ/cards/Encircle.java
+++ b/src/main/java/champ/cards/Encircle.java
@@ -3,6 +3,7 @@
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -16,7 +17,7 @@ public class Encircle extends AbstractChampCard {
//stupid intellij stuff attack, all_enemy, uncommon
- private static final int DAMAGE = 7;
+ private static final int DAMAGE = 5;
public Encircle() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
@@ -24,6 +25,7 @@ public Encircle() {
isMultiDamage = true;
// tags.add(ChampMod.COMBO);
// tags.add(ChampMod.COMBOBERSERKER);
+ baseMagicNumber = magicNumber = 1;
postInit();
loadJokeCardImage(this, "Encircle.png");
}
@@ -36,7 +38,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
allDmg(AbstractGameAction.AttackEffect.NONE);
for (AbstractMonster q : monsterList()) {
- techique();
+ atb(new DrawCardAction(magicNumber));
}
}
diff --git a/src/main/java/champ/cards/Endure.java b/src/main/java/champ/cards/Endure.java
index 451351018..8e60b4af9 100644
--- a/src/main/java/champ/cards/Endure.java
+++ b/src/main/java/champ/cards/Endure.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -12,13 +13,19 @@ public class Endure extends AbstractChampCard {
public final static String ID = makeID("Endure");
public Endure() {
- super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = block = 8;
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ tags.add(ChampMod.OPENER);
+
+ this.tags.add(ChampMod.OPENERDEFENSIVE);
+ baseBlock = block = 7;
postInit();
+
loadJokeCardImage(this, "Endure.png");
+
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ defenseOpen();
blck();
}
@@ -27,17 +34,12 @@ public void applyPowersToBlock() {
if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
baseBlock += AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount;
}
- if (!upgraded && AbstractDungeon.player.hasPower(DexterityPower.POWER_ID)) {
- baseBlock -= AbstractDungeon.player.getPower(DexterityPower.POWER_ID).amount;
- }
super.applyPowersToBlock();
baseBlock = realBaseBlock;
isBlockModified = block != baseBlock;
}
public void upp() {
- upgradeBlock(2);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeBlock(3);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/FanOfKnives.java b/src/main/java/champ/cards/FanOfKnives.java
index 3c2fb1425..c0b9fdbf0 100644
--- a/src/main/java/champ/cards/FanOfKnives.java
+++ b/src/main/java/champ/cards/FanOfKnives.java
@@ -17,11 +17,11 @@ public class FanOfKnives extends AbstractChampCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
private static final int UPG_DAMAGE = 2;
public FanOfKnives() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
isMultiDamage = true;
// tags.add(ChampMod.OPENER);
diff --git a/src/main/java/champ/cards/FlashCut.java b/src/main/java/champ/cards/FlashCut.java
index b3b42e903..236349070 100644
--- a/src/main/java/champ/cards/FlashCut.java
+++ b/src/main/java/champ/cards/FlashCut.java
@@ -15,12 +15,12 @@ public class FlashCut extends AbstractChampCard {
//stupid intellij stuff attack, enemy, common
private static final int DAMAGE = 6;
- private static final int UPG_DAMAGE = 2;
+ private static final int UPG_DAMAGE = 3;
- private static final int BLOCK = 4;
+ private static final int BLOCK = 5;
private static final int UPG_BLOCK = 2;
- private static final int MAGIC = 4;
+ private static final int MAGIC = 5;
private static final int UPG_MAGIC = 2;
public FlashCut() {
diff --git a/src/main/java/champ/cards/GladiatorStyle.java b/src/main/java/champ/cards/GladiatorStyle.java
index d6ab08ef0..1cbdcbc3d 100644
--- a/src/main/java/champ/cards/GladiatorStyle.java
+++ b/src/main/java/champ/cards/GladiatorStyle.java
@@ -1,5 +1,7 @@
package champ.cards;
+import champ.ChampMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
@@ -12,17 +14,29 @@ public class GladiatorStyle extends AbstractChampCard {
public GladiatorStyle() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 1;
+ baseMagicNumber = magicNumber = 2;
+ tags.add(ChampMod.COMBO);
+ tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(ChampMod.COMBOBERSERKER);
postInit();
loadJokeCardImage(this, "GladiatorStyle.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new StrengthPower(p, magicNumber));
- applyToSelf(new DexterityPower(p, magicNumber));
+ if (dcombo()) {
+ applyToSelf(new DexterityPower(p, magicNumber));
+ }
+ if (bcombo()){
+ applyToSelf(new StrengthPower(p, magicNumber));
+ }
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = (bcombo() || dcombo()) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/GutPunch.java b/src/main/java/champ/cards/GutPunch.java
index 309507a38..dddb0298e 100644
--- a/src/main/java/champ/cards/GutPunch.java
+++ b/src/main/java/champ/cards/GutPunch.java
@@ -29,7 +29,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
//berserkOpen();
dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
// fatigue(2);
- if (bcombo() || dcombo()) {
+ if (bcombo() || dcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
triggerOpenerRelics(AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID));
ultimateStance();
applyToSelf(new UltimateFormPower(1));
@@ -43,6 +43,6 @@ public void upp() {
@Override
public void triggerOnGlowCheck() {
- glowColor = dcombo() || bcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ glowColor = dcombo() || bcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/HeavySlash.java b/src/main/java/champ/cards/HeavySlash.java
index 19f4f9bad..181f8d1cf 100644
--- a/src/main/java/champ/cards/HeavySlash.java
+++ b/src/main/java/champ/cards/HeavySlash.java
@@ -1,11 +1,21 @@
package champ.cards;
+import champ.actions.VigorWallopAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import com.megacrit.cardcrawl.vfx.combat.FlameBarrierEffect;
+import downfall.powers.NextTurnPowerPower;
+import guardian.actions.BraceWallopAction;
+import hermit.util.Wiz;
import static champ.ChampMod.loadJokeCardImage;
@@ -14,25 +24,16 @@ public class HeavySlash extends AbstractChampCard {
public HeavySlash() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 10;
+ baseDamage = 9;
postInit();
loadJokeCardImage(this, "HeavySlash.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
- AbstractCard c = AbstractDungeon.returnTrulyRandomCardInCombat(CardType.SKILL).makeCopy();
- c.isSeen = true;
- UnlockTracker.markCardAsSeen(c.cardID);
- c.modifyCostForCombat(-99);
- if (upgraded) c.upgrade();
- makeInHand(c);
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new VigorWallopAction((AbstractCreature)m, (AbstractCreature)p, this.damage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_HEAVY));
}
-
public void upp() {
upgradeDamage(3);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/IgnorePain.java b/src/main/java/champ/cards/IgnorePain.java
index 91a82ac49..1f4c865e6 100644
--- a/src/main/java/champ/cards/IgnorePain.java
+++ b/src/main/java/champ/cards/IgnorePain.java
@@ -5,6 +5,7 @@
import champ.powers.ResolvePower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static champ.ChampMod.fatigue;
@@ -19,8 +20,10 @@ public class IgnorePain extends AbstractChampCard {
public IgnorePain() {
super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
+ tags.add(ChampMod.FINISHER);
// tags.add(ChampMod.TECHNIQUE);
// myHpLossCost = 5;
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
postInit();
loadJokeCardImage(this, "IgnorePain.png");
@@ -30,6 +33,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
// techique();
// fatigue(5);
applyToSelf(new PushThroughPower(1));
+ finisher();
}
public void upp() {
diff --git a/src/main/java/champ/cards/Improvising.java b/src/main/java/champ/cards/Improvising.java
index de2817eba..6e81bd499 100644
--- a/src/main/java/champ/cards/Improvising.java
+++ b/src/main/java/champ/cards/Improvising.java
@@ -11,16 +11,17 @@ public class Improvising extends AbstractChampCard {
public final static String ID = makeID("Improvising");
public Improvising() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
postInit();
+ baseMagicNumber = magicNumber = 2;
loadJokeCardImage(this, "Improvising.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new ImprovisingPower());
+ applyToSelf(new ImprovisingPower(magicNumber));
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeBaseCost(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Lariat.java b/src/main/java/champ/cards/Lariat.java
index c5a9234b5..09fc441a7 100644
--- a/src/main/java/champ/cards/Lariat.java
+++ b/src/main/java/champ/cards/Lariat.java
@@ -1,17 +1,25 @@
package champ.cards;
+import automaton.actions.AddToFuncAction;
+import automaton.actions.EasyXCostAction;
+import automaton.cards.FormatEncoded;
+import collector.powers.NextTurnReservePower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.ui.panels.EnergyPanel;
+import downfall.downfallMod;
import static champ.ChampMod.loadJokeCardImage;
+import static collector.util.Wiz.applyToSelf;
+import static collector.util.Wiz.atb;
public class Lariat extends AbstractChampCard {
public final static String ID = makeID("Lariat");
public Lariat() {
super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 7;
+ baseBlock = 5;
postInit();
loadJokeCardImage(this, "Lariat.png");
}
@@ -22,6 +30,13 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
addToBot(new com.megacrit.cardcrawl.actions.defect.ReinforcedBodyAction(p, this.block, this.freeToPlayOnce, this.energyOnUse));
+ atb(new EasyXCostAction(this, (effect, params) -> {
+ for (int i = 0; i < effect + params[0]; i++) {
+ techique();
+ }
+ return true;
+ }, 0));
+
}
public void upp() {
diff --git a/src/main/java/champ/cards/LastStand.java b/src/main/java/champ/cards/LastStand.java
index c771aad22..4843c543d 100644
--- a/src/main/java/champ/cards/LastStand.java
+++ b/src/main/java/champ/cards/LastStand.java
@@ -61,6 +61,7 @@ public String getLimitBreak() {
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeMagicNumber(3);
+ //upgradeBaseCost(0);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/MurderStrike.java b/src/main/java/champ/cards/MurderStrike.java
index 04890aee7..3452db76f 100644
--- a/src/main/java/champ/cards/MurderStrike.java
+++ b/src/main/java/champ/cards/MurderStrike.java
@@ -16,7 +16,7 @@ public class MurderStrike extends AbstractChampCard {
//stupid intellij stuff attack, enemy, rare
- private static final int DAMAGE = 8;
+ private static final int DAMAGE = 6;
public MurderStrike() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
@@ -48,6 +48,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
+ upgradeDamage(3);
upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Parry.java b/src/main/java/champ/cards/Parry.java
index 8b49e4e17..f9386868c 100644
--- a/src/main/java/champ/cards/Parry.java
+++ b/src/main/java/champ/cards/Parry.java
@@ -14,8 +14,8 @@ public class Parry extends AbstractChampCard {
public Parry() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 6;
- baseMagicNumber = magicNumber = 10;
+ baseBlock = 8;
+ baseMagicNumber = magicNumber = 4;
AbstractCard c = new Riposte();
c.rawDescription = UPGRADE_DESCRIPTION;
c.initializeDescription();
@@ -31,6 +31,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeMagicNumber(6);
+ upgradeBlock(4);
+ upgradeMagicNumber(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/PreemptiveStrike.java b/src/main/java/champ/cards/PreemptiveStrike.java
index 8e7562e54..b6bc7b719 100644
--- a/src/main/java/champ/cards/PreemptiveStrike.java
+++ b/src/main/java/champ/cards/PreemptiveStrike.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import champ.powers.CounterPower;
import champ.stances.DefensiveStance;
import champ.stances.UltimateStance;
@@ -8,6 +9,8 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.FrailPower;
+import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -20,14 +23,17 @@ public PreemptiveStrike() {
baseDamage = 0;
isMultiDamage = true;
tags.add(CardTags.STRIKE);
+ tags.add(ChampMod.COMBO);
+ tags.add(ChampMod.COMBODEFENSIVE);
postInit();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
loadJokeCardImage(this, "PreemptiveStrike.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
allDmg(AbstractGameAction.AttackEffect.SLASH_VERTICAL);
if (p.hasPower(CounterPower.POWER_ID)) {
- addToTop(new ReducePowerAction(p, p, CounterPower.POWER_ID, p.getPower(CounterPower.POWER_ID).amount / 2));
+ if (!dcombo()) addToTop(new ReducePowerAction(p, p, CounterPower.POWER_ID, p.getPower(CounterPower.POWER_ID).amount / 2));
}
}
@@ -58,6 +64,11 @@ public void onMoveToDiscard() {
this.initializeDescription();
}
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
public void upp() {
upgradeBaseCost(0);
}
diff --git a/src/main/java/champ/cards/RageSigil.java b/src/main/java/champ/cards/RageSigil.java
index f759d0809..597a1b6c0 100644
--- a/src/main/java/champ/cards/RageSigil.java
+++ b/src/main/java/champ/cards/RageSigil.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import com.megacrit.cardcrawl.actions.utility.ScryAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -14,11 +15,14 @@ public RageSigil() {
super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = 2;
baseMagicNumber = magicNumber = 3;
+ tags.add(ChampMod.OPENER);
+ this.tags.add(ChampMod.OPENERDEFENSIVE);
postInit();
loadJokeCardImage(this, "RageSigil.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ defenseOpen();
blck();
atb(new ScryAction(magicNumber));
}
diff --git a/src/main/java/champ/cards/RapidStrikes.java b/src/main/java/champ/cards/RapidStrikes.java
index 1f5c3d0a0..bf01e39cc 100644
--- a/src/main/java/champ/cards/RapidStrikes.java
+++ b/src/main/java/champ/cards/RapidStrikes.java
@@ -18,7 +18,7 @@ public class RapidStrikes extends AbstractChampCard {
private static final int DAMAGE = 4;
public RapidStrikes() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
tags.add(CardTags.STRIKE);
baseMagicNumber = magicNumber = 2;
diff --git a/src/main/java/champ/cards/RecklessLeap.java b/src/main/java/champ/cards/RecklessLeap.java
index b1856e81d..565eb40a9 100644
--- a/src/main/java/champ/cards/RecklessLeap.java
+++ b/src/main/java/champ/cards/RecklessLeap.java
@@ -17,30 +17,33 @@ public class RecklessLeap extends AbstractChampCard {
//stupid intellij stuff attack, self_and_enemy, uncommon
- private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 2;
+ private static final int DAMAGE = 6;
+ private static final int UPG_DAMAGE = 3;
- private static final int MAGIC = 3;
+ private static final int MAGIC = 1;
private static final int UPG_MAGIC = 1;
public RecklessLeap() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
baseMagicNumber = magicNumber = MAGIC;
//myHpLossCost = MAGIC;
- tags.add(CardTags.STRIKE);
+ tags.add(ChampMod.OPENER);
+ this.tags.add(ChampMod.OPENERBERSERKER);
exhaust = true;
+ tags.add(CardTags.STRIKE);
loadJokeCardImage(this, "RecklessLeap.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ berserkOpen();
dmg(m, AbstractGameAction.AttackEffect.SLASH_HEAVY);
- applyToSelf(new StrengthPower(p, 2));
- applyToSelf(new DexterityPower(p, -1));
+ applyToSelf(new StrengthPower(p, magicNumber));
}
public void upp() {
exhaust = false;
+ upgradeDamage(3);
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/champ/cards/Riposte.java b/src/main/java/champ/cards/Riposte.java
index 19ec9fb0b..fc23ccce2 100644
--- a/src/main/java/champ/cards/Riposte.java
+++ b/src/main/java/champ/cards/Riposte.java
@@ -13,9 +13,10 @@ public class Riposte extends AbstractChampCard {
public final static String ID = makeID("Riposte");
public Riposte() {
- super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
+ super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 0;
isEthereal = true;
+ tags.add(CardTags.STRIKE);
exhaust = true;
postInit();
loadJokeCardImage(this, "Riposte.png");
@@ -26,6 +27,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeDamage(3);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/RisingSlash.java b/src/main/java/champ/cards/RisingSlash.java
index d7d43ec4f..8fc561274 100644
--- a/src/main/java/champ/cards/RisingSlash.java
+++ b/src/main/java/champ/cards/RisingSlash.java
@@ -12,8 +12,9 @@
public class RisingSlash extends AbstractChampCard {
public final static String ID = makeID("RisingSlash");
+ //Todo: rework to be more consistent.
public RisingSlash() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 8;
tags.add(CardTags.STRIKE);
loadJokeCardImage(this, "RisingSlash.png");
diff --git a/src/main/java/champ/cards/Shatter.java b/src/main/java/champ/cards/Shatter.java
index a74d9a507..89adcee43 100644
--- a/src/main/java/champ/cards/Shatter.java
+++ b/src/main/java/champ/cards/Shatter.java
@@ -1,12 +1,20 @@
package champ.cards;
import champ.ChampMod;
+import champ.powers.UltimateFormPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ArtifactPower;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.stances.NeutralStance;
+import hermit.cards.AbstractDynamicCard;
+import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -17,24 +25,38 @@ public class Shatter extends AbstractChampCard {
//stupid intellij stuff skill, self, uncommon
public Shatter() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = 10;
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 14;
baseMagicNumber = magicNumber = 1;
postInit();
+ //tags.add(CardTags.STRIKE);
+ tags.add(ChampMod.COMBO);
+ tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(ChampMod.COMBOBERSERKER);
loadJokeCardImage(this, "Shatter.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- // techique();
- atb(new RemoveAllBlockAction(m, p));
- if (upgraded) atb(new RemoveSpecificPowerAction(m, p, ArtifactPower.POWER_ID));
dmg(m, AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ if (bcombo() || dcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
+ this.addToBot(new ApplyPowerAction(m, p, new WeakPower(m, this.magicNumber, false), this.magicNumber));
+ this.addToBot(new ApplyPowerAction(m, p, new VulnerablePower(m, this.magicNumber, false), this.magicNumber));
+ }
+ }
+ @Override
+ public void triggerOnGlowCheck() { // it glows now.
+ if (bcombo() || dcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
+ this.glowColor = AbstractDynamicCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ } else {
+ this.glowColor = AbstractDynamicCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
}
- public void upp() {
+
+ public void upgrade() {
+ upgradeName();
upgradeDamage(2);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/ShieldThrow.java b/src/main/java/champ/cards/ShieldThrow.java
index 491c1ae83..2cd2e1000 100644
--- a/src/main/java/champ/cards/ShieldThrow.java
+++ b/src/main/java/champ/cards/ShieldThrow.java
@@ -19,19 +19,16 @@ public class ShieldThrow extends AbstractChampCard {
//stupid intellij stuff attack, enemy, rare
public ShieldThrow() {
- super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- // tags.add(ChampMod.FINISHER);
- baseBlock = block = 0;
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ // baseBlock = block = 0;
baseMagicNumber = magicNumber = 2;
- tags.add(ChampMod.COMBODEFENSIVE);
- tags.add(ChampMod.COMBO);
+ // tags.add(ChampMod.FINISHER);
postInit();
loadJokeCardImage(this, "ShieldThrow.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- //finisher();
- blck();
+ // blck();
this.baseDamage = p.currentBlock;
this.calculateCardDamage(m);
dmg(m, AbstractGameAction.AttackEffect.SMASH);
@@ -39,14 +36,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
this.rawDescription = cardStrings.DESCRIPTION;
this.initializeDescription();
- if (!dcombo()) applyToSelf(new FrailPower(p,2, false));
+ // if (!dcombo()) applyToSelf(new FrailPower(p,2, false));
// if (bcombo()) atb(new ReducePowerAction(p,p,FrailPower.POWER_ID,2));
- // finisher();
- }
-
- @Override
- public void triggerOnGlowCheck() {
- glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ // finisher();
}
public void applyPowers() {
@@ -71,6 +63,6 @@ public void calculateCardDamage(AbstractMonster mo) {
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeBaseCost(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/StanceDance.java b/src/main/java/champ/cards/StanceDance.java
index 1bd9cbc81..481d51272 100644
--- a/src/main/java/champ/cards/StanceDance.java
+++ b/src/main/java/champ/cards/StanceDance.java
@@ -33,11 +33,8 @@ public StanceDance() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- //if (upgraded) techique();
atb(new OctoChoiceAction(m, this));
postInit();
-
}
public ArrayList choiceList() {
@@ -50,31 +47,16 @@ public ArrayList choiceList() {
public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
switch (card.cardID) {
case "octo:OctoBerserk":
- if (upgraded || AbstractDungeon.player.stance.ID.equals(BerserkerStance.STANCE_ID)|| AbstractDungeon.player.stance.ID.equals(champ.stances.UltimateStance.STANCE_ID)) {
- ArrayList rCardList = new ArrayList();
- for (AbstractCard t : CardLibrary.getAllCards()) {
- if (!UnlockTracker.isCardLocked(t.cardID) && t.hasTag(ChampMod.COMBOBERSERKER) &&!t.hasTag(CardTags.HEALING))
- rCardList.add(t);
- }
- AbstractCard r = rCardList.get(AbstractDungeon.cardRandomRng.random(rCardList.size() - 1));
- UnlockTracker.markCardAsSeen(r.cardID);
- makeInHand(r);
- }
ChampMod.berserkOpen();
-
+ BerserkerStance bs = new BerserkerStance();
+ bs.techique();
+ if (upgraded) bs.techique();
break;
case "octo:OctoDefense":
- if (upgraded || AbstractDungeon.player.stance.ID.equals(DefensiveStance.STANCE_ID) || AbstractDungeon.player.stance.ID.equals(UltimateStance.STANCE_ID)) {
- ArrayList rCardList = new ArrayList();
- for (AbstractCard t : CardLibrary.getAllCards()) {
- if (!UnlockTracker.isCardLocked(t.cardID) && t.hasTag(ChampMod.COMBODEFENSIVE) &&!t.hasTag(CardTags.HEALING))
- rCardList.add(t);
- }
- AbstractCard r = rCardList.get(AbstractDungeon.cardRandomRng.random(rCardList.size() - 1));
- UnlockTracker.markCardAsSeen(r.cardID);
- makeInHand(r);
- }
ChampMod.defenseOpen();
+ DefensiveStance ds = new DefensiveStance();
+ ds.techique();
+ if (upgraded) ds.techique();
break;
}
diff --git a/src/main/java/champ/cards/StanceDanceCrown.java b/src/main/java/champ/cards/StanceDanceCrown.java
new file mode 100644
index 000000000..c0e191c2d
--- /dev/null
+++ b/src/main/java/champ/cards/StanceDanceCrown.java
@@ -0,0 +1,73 @@
+package champ.cards;
+
+import basemod.patches.com.megacrit.cardcrawl.screens.compendium.CardLibraryScreen.NoCompendium;
+import champ.ChampMod;
+import champ.stances.BerserkerStance;
+import champ.stances.DefensiveStance;
+import champ.stances.UltimateStance;
+import champ.vfx.StanceDanceEffect;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.CardLibrary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import downfall.actions.OctoChoiceAction;
+import downfall.cards.OctoChoiceCard;
+import downfall.util.OctopusCard;
+
+import java.util.ArrayList;
+
+import static champ.ChampMod.loadJokeCardImage;
+@NoCompendium
+public class StanceDanceCrown extends AbstractChampCard implements OctopusCard {
+
+ public final static String ID = makeID("StanceDanceCrown");
+
+ //stupid intellij stuff SKILL, SELF, UNCOMMON
+
+ public StanceDanceCrown() {
+ super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
+ tags.add(ChampMod.OPENER);
+ loadJokeCardImage(this, "StanceDance.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new OctoChoiceAction(m, this));
+ postInit();
+ }
+
+ public ArrayList choiceList() {
+ ArrayList cardList = new ArrayList<>();
+ cardList.add(new OctoChoiceCard("octo:OctoBerserk", this.name, ChampMod.makeCardPath("OctoStanceBerserker.png"), this.EXTENDED_DESCRIPTION[0]));
+ cardList.add(new OctoChoiceCard("octo:OctoDefense", this.name, ChampMod.makeCardPath("OctoStanceDefensive.png"), this.EXTENDED_DESCRIPTION[1]));
+ return cardList;
+ }
+
+ public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
+ switch (card.cardID) {
+ case "octo:OctoBerserk":
+ ChampMod.berserkOpen();
+ BerserkerStance bs = new BerserkerStance();
+ // bs.techique();
+ // if (upgraded) bs.techique();
+ break;
+ case "octo:OctoDefense":
+ ChampMod.defenseOpen();
+ DefensiveStance ds = new DefensiveStance();
+ // ds.techique();
+ // if (upgraded) ds.techique();
+ break;
+ }
+
+ // AbstractDungeon.player.useJumpAnimation();
+ // atb(new VFXAction(new StanceDanceEffect(AbstractDungeon.player, false, true, false), 0.7F));
+
+ }
+
+ public void upp() {
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/SteelEdge.java b/src/main/java/champ/cards/SteelEdge.java
index f7d79830a..397181c29 100644
--- a/src/main/java/champ/cards/SteelEdge.java
+++ b/src/main/java/champ/cards/SteelEdge.java
@@ -3,8 +3,12 @@
import automaton.actions.EasyXCostAction;
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.GoldenSlashEffect;
import static champ.ChampMod.loadJokeCardImage;
@@ -13,17 +17,22 @@ public class SteelEdge extends AbstractChampCard {
public SteelEdge() {
super(ID, -1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 8;
+ baseDamage = 6;
this.tags.add(ChampMod.FINISHER);
postInit();
loadJokeCardImage(this, "SteelEdge.png");
}
-
public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.player.useJumpAnimation();
+
atb(new EasyXCostAction(this, (effect, params) -> {
for (int i = 0; i < effect; i++) {
- dmg(m, AbstractGameAction.AttackEffect.SLASH_VERTICAL);
+ atb(new VFXAction(new GoldenSlashEffect(m.hb.cX + 30.0F * Settings.scale, m.hb.cY, true), 0.1F));
+ dmg(m, AbstractGameAction.AttackEffect.NONE);
+ if ((i < effect-1) && (effect !=0)){
+ finisher(true);
+ }
}
return true;
}));
diff --git a/src/main/java/champ/cards/SwordSigil.java b/src/main/java/champ/cards/SwordSigil.java
index 9acaaa876..ca36f6223 100644
--- a/src/main/java/champ/cards/SwordSigil.java
+++ b/src/main/java/champ/cards/SwordSigil.java
@@ -3,6 +3,7 @@
import champ.ChampMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -11,9 +12,9 @@ public class SwordSigil extends AbstractChampCard {
public final static String ID = makeID("SwordSigil");
public SwordSigil() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 4;
- this.exhaust = true;
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 3;
+ // this.exhaust = true;
loadJokeCardImage(this, "SwordSigil.png");
}
@@ -24,7 +25,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeMagicNumber(2);
+ upgradeMagicNumber(1);
// upgradeCool(2);
}
+
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/TripleStrike.java b/src/main/java/champ/cards/TripleStrike.java
index 4023d4cd3..6417f65b3 100644
--- a/src/main/java/champ/cards/TripleStrike.java
+++ b/src/main/java/champ/cards/TripleStrike.java
@@ -6,6 +6,11 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.actions.EchoACardAction;
+import expansioncontent.cardmods.EtherealMod;
+import expansioncontent.cardmods.ExhaustMod;
+import expansioncontent.cardmods.PropertiesMod;
+import expansioncontent.expansionContentMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -21,9 +26,13 @@ public class TripleStrike extends AbstractChampCard {
public TripleStrike() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
- exhaust = true;
+ // exhaust = true;
AbstractCard r = new Strike();
r.updateCost(-999);
+ PropertiesMod mod = new PropertiesMod(PropertiesMod.supportedProperties.ECHO, false);
+ CardModifierManager.addModifier(r, mod);
+ CardModifierManager.addModifier(r, new EtherealMod());
+ CardModifierManager.addModifier(r, new ExhaustMod());
CardModifierManager.addModifier(r, new TechniqueMod());
cardsToPreview = r;
// CardModifierManager.addModifier(this, new TechniqueMod());
@@ -42,7 +51,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
r.updateCost(-999);
CardModifierManager.addModifier(r, new TechniqueMod());
- makeInHand(r, 2);
+ addToBot(new EchoACardAction(r, true));
+ addToBot(new EchoACardAction(r, true));
}
public void upp() {
diff --git a/src/main/java/champ/cards/VampiricStrike.java b/src/main/java/champ/cards/VampiricStrike.java
index f2f14d10a..b63c8b3b2 100644
--- a/src/main/java/champ/cards/VampiricStrike.java
+++ b/src/main/java/champ/cards/VampiricStrike.java
@@ -23,6 +23,7 @@ public VampiricStrike() {
// tags.add(ChampMod.COMBO);
// tags.add(ChampMod.COMBOBERSERKER);
// tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(CardTags.STRIKE);
postInit();
loadJokeCardImage(this, "VampiricStrike.png");
}
diff --git a/src/main/java/champ/cards/ViciousMockery.java b/src/main/java/champ/cards/ViciousMockery.java
index 8e9bee053..66b1d7420 100644
--- a/src/main/java/champ/cards/ViciousMockery.java
+++ b/src/main/java/champ/cards/ViciousMockery.java
@@ -31,6 +31,7 @@ public ViciousMockery() {
public void use(AbstractPlayer p, AbstractMonster m) {
ChampMod.vigor(magicNumber);
applyToEnemy(m, autoWeak(m, downfallMagic));
+ techique();
atb(new SFXAction("VO_CHAMP_2A"));
atb(new TalkAction(true, getTaunt(), 2.0F, 2.0F));
}
diff --git a/src/main/java/champ/events/MinorLeagueArena.java b/src/main/java/champ/events/MinorLeagueArena.java
index b85c9876b..6ac6e9994 100644
--- a/src/main/java/champ/events/MinorLeagueArena.java
+++ b/src/main/java/champ/events/MinorLeagueArena.java
@@ -13,6 +13,8 @@
import com.megacrit.cardcrawl.relics.CloakClasp;
import com.megacrit.cardcrawl.relics.WristBlade;
import downfall.downfallMod;
+import hermit.relics.Horseshoe;
+import hermit.relics.StraightRazor;
import slimebound.SlimeboundMod;
public class MinorLeagueArena extends AbstractImageEvent {
@@ -38,7 +40,7 @@ public MinorLeagueArena() {
this.imageEventText.clearAllDialogs();
this.imageEventText.setDialogOption(OPTIONS[0], new CloakClasp());
this.imageEventText.setDialogOption(OPTIONS[1], new ChampionsBelt());
- this.imageEventText.setDialogOption(OPTIONS[2], new WristBlade());
+ this.imageEventText.setDialogOption(OPTIONS[2], new Horseshoe());
this.imageEventText.setDialogOption(OPTIONS[3]);
}
@@ -53,6 +55,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.getCurrRoom().monsters = MonsterHelper.getEncounter("Centurion and Healer");
AbstractDungeon.getCurrRoom().rewards.clear();
AbstractDungeon.getCurrRoom().addRelicToRewards(new CloakClasp());
+ downfallMod.removeAnyRelicFromPools("CloakClasp");
AbstractDungeon.getCurrRoom().addGoldToRewards(100);
AbstractDungeon.getCurrRoom().eliteTrigger = true;
AbstractDungeon.lastCombatMetricKey = "Centurion and Healer";
@@ -68,6 +71,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.getCurrRoom().monsters = MonsterHelper.getEncounter("Gremlin Nob");
AbstractDungeon.getCurrRoom().rewards.clear();
AbstractDungeon.getCurrRoom().addRelicToRewards(new ChampionsBelt());
+ downfallMod.removeAnyRelicFromPools("Champion Belt");
AbstractDungeon.getCurrRoom().addGoldToRewards(100);
AbstractDungeon.getCurrRoom().eliteTrigger = true;
AbstractDungeon.lastCombatMetricKey = "Gremlin Nob";
@@ -80,7 +84,8 @@ protected void buttonEffect(int buttonPressed) {
//SlimeboundMod.logger.info("fight");
AbstractDungeon.getCurrRoom().monsters = MonsterHelper.getEncounter("Colosseum Slavers");
AbstractDungeon.getCurrRoom().rewards.clear();
- AbstractDungeon.getCurrRoom().addRelicToRewards(new WristBlade());
+ AbstractDungeon.getCurrRoom().addRelicToRewards(new Horseshoe());
+ downfallMod.removeAnyRelicFromPools(Horseshoe.ID);
AbstractDungeon.getCurrRoom().addGoldToRewards(100);
AbstractDungeon.getCurrRoom().eliteTrigger = true;
AbstractDungeon.lastCombatMetricKey = "Colosseum Slavers";
diff --git a/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java b/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
index 4bfdf6106..2697864ea 100644
--- a/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
+++ b/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
@@ -5,6 +5,8 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.city.Ghosts;
import com.megacrit.cardcrawl.random.Random;
+import downfall.events.CouncilOfGhosts_Evil;
+import gremlin.characters.GremlinCharacter;
import javassist.CtBehavior;
import java.util.ArrayList;
@@ -22,8 +24,12 @@ public static class EventSpawn {
localvars = {"tmp"}
)
public static void Insert(Random rng, ArrayList tmp) {
- if (AbstractDungeon.player instanceof ChampChar) {
+ if (AbstractDungeon.player instanceof ChampChar || AbstractDungeon.player instanceof GremlinCharacter) {
+ //(AbstractDungeon.player instanceof ChampChar || AbstractDungeon.player instanceof GremlinCharacter) {
+ //to-do: figure out why this is here
+ //I've decided this is actually really funny so I'm keeping it lol, also Gremlins but because of the 50% hp thing not working
tmp.remove(Ghosts.ID);
+ tmp.remove(CouncilOfGhosts_Evil.ID);
}
}
diff --git a/src/main/java/champ/powers/CounterPower.java b/src/main/java/champ/powers/CounterPower.java
index e896037f5..e03cfa101 100644
--- a/src/main/java/champ/powers/CounterPower.java
+++ b/src/main/java/champ/powers/CounterPower.java
@@ -66,20 +66,28 @@ public int onAttacked(DamageInfo info, int damageAmount) {
AbstractDungeon.player.getPower(ParryPower.POWER_ID).onSpecificTrigger();
}
}
- this.addToTop(new DamageAction(info.owner, new DamageInfo(this.owner, this.amount, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL, true));
+ //this.addToTop(new DamageAction(info.owner, new DamageInfo(this.owner, this.amount, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL, true));
if (owner.hasPower(GladiatorFormPower.POWER_ID)) {
owner.getPower(GladiatorFormPower.POWER_ID).onSpecificTrigger();
}
+ AbstractCard c = new Riposte();
+ c.baseDamage = amount;
+ addToBot(new MakeTempCardInHandAction(c));
}
+
return damageAmount;
}
@Override
public void stackPower(int stackAmount) {
if (AbstractDungeon.player.hasRelic(PowerArmor.ID))
- if (amount + stackAmount > PowerArmor.CAP_RESOLVE_ETC)
+ if (amount + stackAmount > PowerArmor.CAP_RESOLVE_ETC) {
+ PowerArmor PowerArmorInstance = new PowerArmor();
+ PowerArmorInstance.flash();
+ addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, PowerArmorInstance));
stackAmount = (PowerArmor.CAP_RESOLVE_ETC - amount);
+ }
super.stackPower(stackAmount);
}
diff --git a/src/main/java/champ/powers/DoubleStyleThisTurnPower.java b/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
index 8089a6699..9a6fc12a5 100644
--- a/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
+++ b/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
@@ -15,7 +15,7 @@ public class DoubleStyleThisTurnPower extends AbstractPower implements Cloneable
public static final String POWER_ID = ChampMod.makeID("DoubleStyleThisTurnPower");
- private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash84.png"); //TODO: Icon Art
+ private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash84.png");
private static final Texture tex32 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash32.png");
private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
public static final String NAME = powerStrings.NAME;
diff --git a/src/main/java/champ/powers/FocusedBerPower.java b/src/main/java/champ/powers/FocusedBerPower.java
index 0063fada7..530b1812a 100644
--- a/src/main/java/champ/powers/FocusedBerPower.java
+++ b/src/main/java/champ/powers/FocusedBerPower.java
@@ -16,6 +16,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.monsters.NeowBoss;
import downfall.util.TextureLoader;
public class FocusedBerPower extends AbstractPower implements CloneablePowerInterface {
@@ -52,7 +53,9 @@ public void onAfterCardPlayed(AbstractCard card) {
if (card.hasTag(ChampMod.FINISHER)) {
flash();
for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
- addToBot(new DamageAction(m, new DamageInfo(owner, amount, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ if (!m.isDead && !m.isDying && !(m instanceof NeowBoss)) {
+ addToBot(new DamageAction(m, new DamageInfo(owner, amount, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ }
}
addToBot(new RemoveSpecificPowerAction(owner, owner, this));
}
diff --git a/src/main/java/champ/powers/GladiatorFormPower.java b/src/main/java/champ/powers/GladiatorFormPower.java
index f45436e61..dadc7b05c 100644
--- a/src/main/java/champ/powers/GladiatorFormPower.java
+++ b/src/main/java/champ/powers/GladiatorFormPower.java
@@ -2,6 +2,7 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
+import champ.cards.CrookedStrike;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
@@ -46,10 +47,11 @@ public GladiatorFormPower(final int amount) {
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
- if (card.type == AbstractCard.CardType.ATTACK && owner.hasPower(VigorPower.POWER_ID))
- addNextTurnPower(AbstractDungeon.player.getPower(VigorPower.POWER_ID));
+ if (!(card instanceof CrookedStrike)) {
+ if (card.type == AbstractCard.CardType.ATTACK && owner.hasPower(VigorPower.POWER_ID))
+ addNextTurnPower(AbstractDungeon.player.getPower(VigorPower.POWER_ID));
+ }
}
-
@Override
public void onSpecificTrigger() {
if (owner.hasPower(CounterPower.POWER_ID))
diff --git a/src/main/java/champ/powers/HonePower.java b/src/main/java/champ/powers/HonePower.java
new file mode 100644
index 000000000..eafbe47cd
--- /dev/null
+++ b/src/main/java/champ/powers/HonePower.java
@@ -0,0 +1,65 @@
+package champ.powers;
+
+import basemod.interfaces.CloneablePowerInterface;
+import champ.ChampMod;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import downfall.util.TextureLoader;
+import hermit.HermitMod;
+import hermit.powers.MaintenanceStrikePower;
+
+import static hermit.HermitMod.makePowerPath;
+
+public class HonePower extends AbstractPower implements CloneablePowerInterface {
+ public AbstractCreature source;
+
+ public static final String POWER_ID = ChampMod.makeID("HonePower");
+
+ private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/FalseCounter84.png");
+ private static final Texture tex32 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/FalseCounter32.png");
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+
+
+ public HonePower(final AbstractCreature owner, final int amount) {
+ name = NAME;
+ ID = POWER_ID;
+
+ this.owner = owner;
+ this.amount = amount;
+
+ type = PowerType.BUFF;
+
+ if (this.amount <= 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, this.POWER_ID));
+ }
+
+ this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
+ this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
+
+ updateDescription();
+ }
+
+ @Override
+ public float atDamageGive(float damage, DamageInfo.DamageType type, AbstractCard card) {
+ return super.atDamageGive(card.hasTag(AbstractCard.CardTags.STRIKE) ? damage + this.amount : damage, type, card);
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+ @Override
+ public AbstractPower makeCopy() {
+ return new HonePower(owner, amount);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/powers/ImprovisingPower.java b/src/main/java/champ/powers/ImprovisingPower.java
index 0270ef599..c7dfcda3a 100644
--- a/src/main/java/champ/powers/ImprovisingPower.java
+++ b/src/main/java/champ/powers/ImprovisingPower.java
@@ -2,6 +2,7 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
+import champ.stances.AbstractChampStance;
import champ.stances.BerserkerStance;
import champ.stances.DefensiveStance;
import com.badlogic.gdx.graphics.Texture;
@@ -11,6 +12,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.stances.AbstractStance;
import com.megacrit.cardcrawl.stances.NeutralStance;
import downfall.util.TextureLoader;
@@ -21,11 +23,13 @@ public class ImprovisingPower extends AbstractPower implements CloneablePowerInt
private static final Texture tex32 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/Improvising32.png");
private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
- public ImprovisingPower() {
+ public ImprovisingPower(final int amount) {
this.name = powerStrings.NAME;
this.ID = POWER_ID;
+ this.amount = amount;
this.owner = AbstractDungeon.player;
this.type = PowerType.BUFF;
+ this.isTurnBased = true;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
@@ -33,24 +37,34 @@ public ImprovisingPower() {
this.updateDescription();
}
+ @Override
+ public void onChangeStance(AbstractStance oldStance, AbstractStance newStance) {
+ if (!newStance.ID.equals(NeutralStance.STANCE_ID) && !(oldStance.ID.equals(newStance.ID))) {
+ if (newStance instanceof AbstractChampStance)
+ for (int x = 0; x < this.amount; x++) {
+ ((AbstractChampStance) newStance).technique();
+ }
+ }
+ }
+
@Override
public void atStartOfTurn() {
- if (AbstractDungeon.player.stance instanceof NeutralStance) {
- if (AbstractDungeon.cardRandomRng.randomBoolean()) {
- addToBot(new ChangeStanceAction(new BerserkerStance()));
- } else {
- addToBot(new ChangeStanceAction(new DefensiveStance()));
+ if (AbstractDungeon.player.stance instanceof NeutralStance) {
+ if (AbstractDungeon.cardRandomRng.randomBoolean()) {
+ addToBot(new ChangeStanceAction(new BerserkerStance()));
+ } else {
+ addToBot(new ChangeStanceAction(new DefensiveStance()));
+ }
}
}
- }
@Override
public void updateDescription() {
- description = powerStrings.DESCRIPTIONS[0];
+ description = powerStrings.DESCRIPTIONS[0] + this.amount + powerStrings.DESCRIPTIONS[1];
}
- @Override
- public AbstractPower makeCopy() {
- return new ImprovisingPower();
- }
-}
\ No newline at end of file
+ @Override
+ public AbstractPower makeCopy () {
+ return new ImprovisingPower(amount);
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/champ/powers/StrikeOfGeniusPower.java b/src/main/java/champ/powers/StrikeOfGeniusPower.java
index edefa83da..83a53dd67 100644
--- a/src/main/java/champ/powers/StrikeOfGeniusPower.java
+++ b/src/main/java/champ/powers/StrikeOfGeniusPower.java
@@ -13,6 +13,7 @@
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import expansioncontent.actions.EchoACardAction;
import expansioncontent.cardmods.PropertiesMod;
import sneckomod.cards.unknowns.AbstractUnknownCard;
import downfall.util.TextureLoader;
@@ -49,9 +50,7 @@ public void atStartOfTurn() {
for (AbstractCard r : CardLibrary.getAllCards())
if (r.color == AbstractDungeon.player.getCardColor() && !UnlockTracker.isCardLocked(r.cardID)&& !r.hasTag(AbstractCard.CardTags.HEALING) && r.hasTag(AbstractCard.CardTags.STRIKE) && r.type == AbstractCard.CardType.ATTACK && !(r instanceof AbstractUnknownCard)) qCardList.add(r);
AbstractCard l = qCardList.get(AbstractDungeon.cardRandomRng.random(qCardList.size() - 1)).makeStatEquivalentCopy();
- l.freeToPlayOnce = true;
- if (!l.exhaust) CardModifierManager.addModifier(l, new PropertiesMod(PropertiesMod.supportedProperties.EXHAUST, false));
- this.addToBot(new MakeTempCardInHandAction(l));
+ addToBot(new EchoACardAction(l, true));
}
}
diff --git a/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java b/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
index 4b4bb3a53..defaaa54b 100644
--- a/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
+++ b/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import downfall.util.TextureLoader;
+import expansioncontent.actions.EchoACardAction;
import expansioncontent.cardmods.PropertiesMod;
import java.util.ArrayList;
@@ -49,9 +50,7 @@ public void atStartOfTurn() {
if (r.color == AbstractDungeon.player.getCardColor() && !UnlockTracker.isCardLocked(r.cardID) && !r.hasTag(AbstractCard.CardTags.HEALING) && r.hasTag(AbstractCard.CardTags.STRIKE) && r.type == AbstractCard.CardType.ATTACK) qCardList.add(r);
AbstractCard l = qCardList.get(AbstractDungeon.cardRandomRng.random(qCardList.size() - 1)).makeStatEquivalentCopy();
l.upgrade();
- if (!l.exhaust) CardModifierManager.addModifier(l, new PropertiesMod(PropertiesMod.supportedProperties.EXHAUST, false));
- l.freeToPlayOnce = true;
- this.addToBot(new MakeTempCardInHandAction(l));
+ addToBot(new EchoACardAction(l, true));
}
}
diff --git a/src/main/java/champ/powers/UltimateFormPower.java b/src/main/java/champ/powers/UltimateFormPower.java
index f19700d4c..ee4b95d17 100644
--- a/src/main/java/champ/powers/UltimateFormPower.java
+++ b/src/main/java/champ/powers/UltimateFormPower.java
@@ -2,6 +2,8 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
+import champ.stances.BerserkerStance;
+import champ.stances.DefensiveStance;
import champ.stances.UltimateStance;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -44,7 +46,6 @@ public UltimateFormPower(final int amount) {
@Override
public void onChangeStance(AbstractStance oldStance, AbstractStance newStance) {
if (!(newStance instanceof UltimateStance)) {
-
AbstractDungeon.actionManager.addToBottom(new ChangeStanceAction(UltimateStance.STANCE_ID));
}
}
@@ -54,6 +55,13 @@ public void atEndOfRound() {
if (amount == 1) {
flash();
AbstractDungeon.actionManager.addToBottom(new ChangeStanceAction(NeutralStance.STANCE_ID));
+ if (AbstractDungeon.player.hasPower(ImprovisingPower.POWER_ID)) {
+ if (AbstractDungeon.cardRandomRng.randomBoolean()) {
+ addToBot(new ChangeStanceAction(new BerserkerStance()));
+ } else {
+ addToBot(new ChangeStanceAction(new DefensiveStance()));
+ }
+ }
}
}
diff --git a/src/main/java/champ/relics/Barbells.java b/src/main/java/champ/relics/Barbells.java
index 51e527b5e..6414f7246 100644
--- a/src/main/java/champ/relics/Barbells.java
+++ b/src/main/java/champ/relics/Barbells.java
@@ -51,6 +51,11 @@ public void onEnterRoom(AbstractRoom room) {
}
}
+
+ public boolean canSpawn() {
+ return Settings.isEndless || (AbstractDungeon.floorNum <= 40); // cannot appear past early act 3
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/champ/relics/BerserkersGuideToSlaughter.java b/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
index 9a53285f8..13425f499 100644
--- a/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
+++ b/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
@@ -8,8 +8,7 @@
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import static champ.ChampMod.makeRelicOutlinePath;
-import static champ.ChampMod.makeRelicPath;
+import static champ.ChampMod.*;
public class BerserkersGuideToSlaughter extends CustomRelic {
@@ -18,14 +17,14 @@ public class BerserkersGuideToSlaughter extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("BerserkersGuide.png"));
public BerserkersGuideToSlaughter() {
- super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
}
@Override
public void atTurnStart() {
super.atTurnStart();
-
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
+ vigor(3);
+ //addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
}
@Override
diff --git a/src/main/java/champ/relics/ChampionCrown.java b/src/main/java/champ/relics/ChampionCrown.java
index 63cc7c0dc..84ff7f8e0 100644
--- a/src/main/java/champ/relics/ChampionCrown.java
+++ b/src/main/java/champ/relics/ChampionCrown.java
@@ -3,6 +3,8 @@
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
import champ.actions.OpenerReduceCostAction;
+import champ.cards.StanceDance;
+import champ.cards.StanceDanceCrown;
import champ.stances.BerserkerStance;
import champ.stances.DefensiveStance;
import champ.stances.UltimateStance;
@@ -16,8 +18,10 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.stances.AbstractStance;
import com.megacrit.cardcrawl.stances.NeutralStance;
+import downfall.actions.OctoChoiceAction;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
+import theHexaghost.cards.MatchstickFloat;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
@@ -45,20 +49,8 @@ public void onChangeStance(AbstractStance prevStance, AbstractStance newStance)
@Override
public void atBattleStart() {
super.atBattleStart();
- // AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
- if (AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
- int x = AbstractDungeon.cardRandomRng.random(1);
- switch (x) {
- case 0:
- //SlimeboundMod.logger.info("Switching to Berserker (Mod Relic)");
- addToBot(new ChangeStanceAction(BerserkerStance.STANCE_ID));
- break;
- case 1:
- //SlimeboundMod.logger.info("Switching to Defensive (Mod Relic)");
- addToBot(new ChangeStanceAction(DefensiveStance.STANCE_ID));
- break;
- }
- }
+ StanceDanceCrown stance = new StanceDanceCrown();
+ addToBot(new OctoChoiceAction(null, stance));
}
@Override
diff --git a/src/main/java/champ/relics/ChampionCrownUpgraded.java b/src/main/java/champ/relics/ChampionCrownUpgraded.java
index 02e96bc59..ee352c9f6 100644
--- a/src/main/java/champ/relics/ChampionCrownUpgraded.java
+++ b/src/main/java/champ/relics/ChampionCrownUpgraded.java
@@ -1,11 +1,14 @@
package champ.relics;
+import automaton.AutomatonMod;
+import automaton.relics.BronzeCore;
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
import champ.actions.OpenerReduceCostAction;
import champ.powers.UltimateFormPower;
import champ.stances.UltimateStance;
import champ.util.OnOpenerSubscriber;
+import com.megacrit.cardcrawl.core.Settings;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
@@ -31,7 +34,7 @@ public ChampionCrownUpgraded() {
@Override
public void atBattleStart() {
addToBot(new ChangeStanceAction(UltimateStance.STANCE_ID));
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new UltimateFormPower(1), 1));
+ addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new UltimateFormPower(3), 3));
}
@Override
@@ -54,7 +57,21 @@ public boolean canSpawn() {
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ // Colorize the starter relic's name
+ String name = new ChampionCrown().name;
+ StringBuilder sb = new StringBuilder();
+ if(Settings.language== Settings.GameLanguage.ZHS|| Settings.language== Settings.GameLanguage.ZHT){
+ sb.append("[#").append(ChampMod.placeholderColor.toString()).append("]").append(name).append("[]");
+
+ }else {
+ for (String word : name.split(" ")) {
+ sb.append("[#").append(ChampMod.placeholderColor.toString()).append("]").append(word).append("[] ");
+ }
+ sb.setLength(sb.length() - 1);
+ sb.append("[#").append(ChampMod.placeholderColor.toString()).append("]");
+ }
+
+ return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/champ/relics/DefensiveTrainingManual.java b/src/main/java/champ/relics/DefensiveTrainingManual.java
index 151395183..bdf84b65e 100644
--- a/src/main/java/champ/relics/DefensiveTrainingManual.java
+++ b/src/main/java/champ/relics/DefensiveTrainingManual.java
@@ -18,7 +18,7 @@ public class DefensiveTrainingManual extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("DefensiveManual.png"));
public DefensiveTrainingManual() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.MAGICAL);
}
@Override
diff --git a/src/main/java/champ/relics/FightingForDummies.java b/src/main/java/champ/relics/FightingForDummies.java
index ab6448e8e..9ffbd779e 100644
--- a/src/main/java/champ/relics/FightingForDummies.java
+++ b/src/main/java/champ/relics/FightingForDummies.java
@@ -22,7 +22,7 @@ public class FightingForDummies extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("FightingForDummies.png"));
public FightingForDummies() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
}
@Override
diff --git a/src/main/java/champ/relics/RageAmulet.java b/src/main/java/champ/relics/RageAmulet.java
new file mode 100644
index 000000000..7cc3ff598
--- /dev/null
+++ b/src/main/java/champ/relics/RageAmulet.java
@@ -0,0 +1,91 @@
+package champ.relics;
+
+import basemod.abstracts.CustomRelic;
+import champ.ChampMod;
+import champ.cards.CrookedStrike;
+import champ.powers.CounterPower;
+import collector.CollectorCollection;
+import collector.actions.DrawCardFromCollectionAction;
+import collector.relics.HolidayCoal;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.powers.NextTurnPowerPower;
+import downfall.util.TextureLoader;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import hermit.util.Wiz;
+
+import static champ.ChampMod.makeRelicOutlinePath;
+import static champ.ChampMod.makeRelicPath;
+import static collector.util.Wiz.atb;
+import static collector.util.Wiz.att;
+
+public class RageAmulet extends CustomRelic {
+
+ public static final String ID = ChampMod.makeID("RageAmulet");
+ private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("CrystallizedMud.png"));
+ private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("CrystallizedMud.png"));
+ private boolean triggeredThisTurn = false;
+ int remainingVigor = 0;
+ private static final int VIGREQ = 8;
+ public RageAmulet() {
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.HEAVY);
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.counter = 0;
+ }
+
+ @Override
+ public void onVictory() {
+ remainingVigor = 0;
+ this.counter = -1;
+ }
+
+ @Override
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (!(card instanceof CrookedStrike)) {
+ if (card.type == AbstractCard.CardType.ATTACK && AbstractDungeon.player.hasPower(VigorPower.POWER_ID))
+ addNextTurnPower(AbstractDungeon.player.getPower(VigorPower.POWER_ID));
+ }
+ }
+
+ public void addNextTurnPower(AbstractPower power) {
+ int found = power.amount;
+ int totaled = found / VIGREQ;
+ int finalized = totaled * 1;
+ boolean isVigor = (VigorPower.POWER_ID.equals(power.ID));
+
+ // Add remainder.
+ if (isVigor) {
+ remainingVigor += found % VIGREQ;
+ this.counter = remainingVigor;
+ }
+ // If remainder is beyond threshold, add to total and subtract.
+ if (remainingVigor >= VIGREQ) {
+ remainingVigor -= VIGREQ;
+ finalized += 1;
+ this.counter = remainingVigor;
+ }
+
+ // Only do anything if the amount is greater than 0.
+ if (finalized > 0) {
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ if (isVigor)
+ Wiz.atb(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, finalized), finalized));
+ }
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + VIGREQ + DESCRIPTIONS[1];
+ }
+}
diff --git a/src/main/java/champ/relics/SpectersHand.java b/src/main/java/champ/relics/SpectersHand.java
index cbece2c18..e0a5e40fd 100644
--- a/src/main/java/champ/relics/SpectersHand.java
+++ b/src/main/java/champ/relics/SpectersHand.java
@@ -13,6 +13,7 @@
import com.megacrit.cardcrawl.stances.AbstractStance;
import com.megacrit.cardcrawl.stances.NeutralStance;
import downfall.util.TextureLoader;
+import expansioncontent.actions.EchoACardAction;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
@@ -34,14 +35,10 @@ public void onChangeStance(AbstractStance oldStance, AbstractStance newStance) {
flash();
if (AbstractDungeon.cardRng.randomBoolean()) {
AbstractCard c2 = new Strike();
- CardModifierManager.addModifier(c2, new ExhaustMod());
- c2.freeToPlayOnce = true;
- addToBot(new MakeTempCardInHandAction(c2));
+ addToBot(new EchoACardAction(c2, true));
} else {
AbstractCard c2 = new Defend();
- CardModifierManager.addModifier(c2, new ExhaustMod());
- c2.freeToPlayOnce = true;
- addToBot(new MakeTempCardInHandAction(c2));
+ addToBot(new EchoACardAction(c2, true));
}
}
diff --git a/src/main/java/champ/stances/DefensiveStance.java b/src/main/java/champ/stances/DefensiveStance.java
index f14dbda52..85cb70734 100644
--- a/src/main/java/champ/stances/DefensiveStance.java
+++ b/src/main/java/champ/stances/DefensiveStance.java
@@ -81,7 +81,7 @@ public static int amount() {
public static int finisherAmount() {
int x = 8;
if (AbstractDungeon.player.hasRelic(DefensiveTrainingManual.ID)) {
- x += 5;
+ x += 3;
}
return x;
}
diff --git a/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java b/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java
new file mode 100644
index 000000000..d295b7fcf
--- /dev/null
+++ b/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java
@@ -0,0 +1,25 @@
+package charbosses.actions.orb;
+
+
+import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.core.Settings;
+
+public class EnemyDecreaseMaxOrbAction extends AbstractGameAction {
+ public EnemyDecreaseMaxOrbAction(int slotIncrease) {
+ this.duration = Settings.ACTION_DUR_FAST;
+ this.amount = slotIncrease;
+ this.actionType = ActionType.BLOCK;
+ }
+
+ public void update() {
+ if (this.duration == Settings.ACTION_DUR_FAST) {
+ for(int i = 0; i < this.amount; ++i) {
+ AbstractCharBoss.boss.decreaseMaxOrbSlots(1);
+ }
+ }
+
+ this.tickDuration();
+ }
+}
+
diff --git a/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java b/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
index 424128a0b..3ac723ed0 100644
--- a/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
+++ b/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
@@ -3,17 +3,13 @@
import charbosses.bosses.AbstractCharBoss;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-
public class EnemyIncreaseMaxOrbAction extends AbstractGameAction {
public EnemyIncreaseMaxOrbAction(int slotIncrease) {
this.duration = Settings.ACTION_DUR_FAST;
this.amount = slotIncrease;
this.actionType = ActionType.BLOCK;
}
-
public void update() {
if (this.duration == Settings.ACTION_DUR_FAST) {
for(int i = 0; i < this.amount; ++i) {
diff --git a/src/main/java/charbosses/bosses/AbstractCharBoss.java b/src/main/java/charbosses/bosses/AbstractCharBoss.java
index c6e4d0d42..99bc18ed1 100644
--- a/src/main/java/charbosses/bosses/AbstractCharBoss.java
+++ b/src/main/java/charbosses/bosses/AbstractCharBoss.java
@@ -32,6 +32,9 @@
import charbosses.ui.EnemyEnergyPanel;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.MathUtils;
+import com.evacipated.cardcrawl.mod.stslib.patches.BindingPatches;
+import com.evacipated.cardcrawl.mod.stslib.patches.BlockModifierPatches;
+import com.evacipated.cardcrawl.mod.stslib.patches.DamageModifierPatches;
import com.evacipated.cardcrawl.mod.stslib.powers.StunMonsterPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
@@ -41,6 +44,7 @@
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.characters.AbstractPlayer.PlayerClass;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -135,6 +139,7 @@ public AbstractCharBoss(String name, String id, int maxHealth, float hb_x, float
this.stance = new EnNeutralStance();
this.orbs = new ArrayList();
this.relics = new ArrayList();
+ type = EnemyType.BOSS;
}
@Override
@@ -146,6 +151,7 @@ public void init() {
super.init();
this.preBattlePrep();
AbstractCharBoss.finishedSetup = true;
+ this.type = EnemyType.BOSS;
}
@Override
@@ -1005,74 +1011,89 @@ public void combatUpdate() {
public void onPlayAttackCardSound() {
}
-
- @Override
- public void damage(final DamageInfo info) {
- int damageAmount = info.output;
- boolean hadBlock = true;
- if (this.currentBlock == 0) {
- hadBlock = false;
- }
- if (damageAmount < 0) {
- damageAmount = 0;
- }
- if (damageAmount > 1 && this.hasPower(IntangiblePower.POWER_ID)) {
- damageAmount = 1;
- }
- final boolean weakenedToZero = damageAmount == 0;
- damageAmount = this.decrementBlock(info, damageAmount);
- ////SlimeboundMod.logger.info(info.owner + " pre damage about to apply relics");
- if (info.owner == this) {
- for (final AbstractRelic r : this.relics) {
- ////SlimeboundMod.logger.info(r.name + " onAttackToChange firing");
- damageAmount = r.onAttackToChangeDamage(info, damageAmount);
+//start paste here
+@Override
+public void damage(final DamageInfo info) {
+ BindingPatches.DisableReactionaryActionBinding.disableBefore((AbstractCreature) this);
+ int damageAmount = info.output;
+ boolean hadBlock = true;
+ if (this.currentBlock == 0) {
+ hadBlock = false;
+ }
+ if (damageAmount < 0) {
+ damageAmount = 0;
+ }
+ if (damageAmount > 1 && this.hasPower(IntangiblePower.POWER_ID)) {
+ damageAmount = 1;
+ }
+ final boolean weakenedToZero = damageAmount == 0;
+ damageAmount = this.decrementBlock(info, damageAmount);
+ ////SlimeboundMod.logger.info(info.owner + " pre damage about to apply relics");
+ if (info.owner == this) {
+ for (final AbstractRelic r : this.relics) {
+ ////SlimeboundMod.logger.info(r.name + " onAttackToChange firing");
+ damageAmount = r.onAttackToChangeDamage(info, damageAmount);
- }
}
- if (info.owner == AbstractDungeon.player) {
- for (final AbstractRelic r : AbstractDungeon.player.relics) {
- damageAmount = r.onAttackToChangeDamage(info, damageAmount);
- }
+ }
+ if (info.owner == AbstractDungeon.player) {
+ for (final AbstractRelic r : AbstractDungeon.player.relics) {
+ damageAmount = r.onAttackToChangeDamage(info, damageAmount);
}
- if (info.owner != null) {
- for (final AbstractPower p : info.owner.powers) {
- damageAmount = p.onAttackToChangeDamage(info, damageAmount);
- }
+ }
+ if (info.owner != null) {
+ for (final AbstractPower p : info.owner.powers) {
+ damageAmount = p.onAttackToChangeDamage(info, damageAmount);
}
+ }
+
+ int[] arrayOfInt2 = new int[1];
+ arrayOfInt2[0] = damageAmount;
+ DamageModifierPatches.OnAttackMonster.toChangeDamage(this, info, arrayOfInt2);
+ damageAmount = arrayOfInt2[0];
+
+ for (final AbstractRelic r : this.relics) {
+ damageAmount = r.onAttackedToChangeDamage(info, damageAmount);
+ }
+ for (final AbstractPower p : this.powers) {
+ damageAmount = p.onAttackedToChangeDamage(info, damageAmount);
+ }
+ if (info.owner == this) {
for (final AbstractRelic r : this.relics) {
- damageAmount = r.onAttackedToChangeDamage(info, damageAmount);
- }
- for (final AbstractPower p : this.powers) {
- damageAmount = p.onAttackedToChangeDamage(info, damageAmount);
+ r.onAttack(info, damageAmount, this);
}
- if (info.owner == this) {
- for (final AbstractRelic r : this.relics) {
- r.onAttack(info, damageAmount, this);
- }
+ }
+
+ //paste section 2
+
+ if (info.owner == AbstractDungeon.player) {
+ for (final AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onAttack(info, damageAmount, this);
}
- if (info.owner == AbstractDungeon.player) {
- for (final AbstractRelic r : AbstractDungeon.player.relics) {
- r.onAttack(info, damageAmount, this);
- }
+ }
+ DamageModifierPatches.OnAttackMonster.onAttack(this, info, damageAmount);
+
+ if (info.owner != null) {
+ BlockModifierPatches.OnAttackMonster.onAttack(this, info, damageAmount);
+ for (final AbstractPower p : info.owner.powers) {
+ p.onAttack(info, damageAmount, this);
}
- if (info.owner != null) {
- for (final AbstractPower p : info.owner.powers) {
- p.onAttack(info, damageAmount, this);
- }
- for (final AbstractPower p : this.powers) {
- damageAmount = p.onAttacked(info, damageAmount);
- }
- for (final AbstractRelic r : this.relics) {
- damageAmount = r.onAttacked(info, damageAmount);
- }
+ for (final AbstractPower p : this.powers) {
+ damageAmount = p.onAttacked(info, damageAmount);
}
for (final AbstractRelic r : this.relics) {
- damageAmount = r.onLoseHpLast(damageAmount);
+ damageAmount = r.onAttacked(info, damageAmount);
}
- this.lastDamageTaken = Math.min(damageAmount, this.currentHealth);
- final boolean probablyInstantKill = this.currentHealth == 0;
- if (damageAmount > 0 || probablyInstantKill) {
+ }
+ for (final AbstractRelic r : this.relics) {
+ damageAmount = r.onLoseHpLast(damageAmount);
+ }
+ this.lastDamageTaken = Math.min(damageAmount, this.currentHealth);
+ DamageModifierPatches.OnAttackMonster.onLastDamageTakenUpdate(this, info, damageAmount);
+ final boolean probablyInstantKill = this.currentHealth == 0;
+ if (damageAmount > 0 || probablyInstantKill) { //here!
+
for (final AbstractPower p : this.powers) {
damageAmount = p.onLoseHp(damageAmount);
}
@@ -1134,6 +1155,7 @@ public void damage(final DamageInfo info) {
AbstractDungeon.overlayMenu.hideCombatPanels();
}
if (this.currentBlock > 0) {
+ BlockModifierPatches.ClearContainerOnDeath.byeByeContainers(this);
this.loseBlock();
AbstractDungeon.effectList.add(new HbBlockBrokenEffect(this.hb.cX - this.hb.width / 2.0f + AbstractMonster.BLOCK_ICON_X, this.hb.cY - this.hb.height / 2.0f + AbstractMonster.BLOCK_ICON_Y));
}
@@ -1156,6 +1178,8 @@ public void damage(final DamageInfo info) {
AbstractDungeon.effectList.add(new BlockedWordEffect(this, this.hb.cX, this.hb.cY, AbstractMonster.TEXT[30]));
}
}
+ BindingPatches.DisableReactionaryActionBinding.enableAfter((AbstractCreature)this);
+ DamageModifierPatches.OnAttackMonster.removeModsAfterUse(this, info);
}
@Override
@@ -1164,22 +1188,11 @@ public void die() {
BossMechanicDisplayPanel.resetBossPanel();
useFastShakeAnimation(5.0F);
CardCrawlGame.screenShake.rumble(4.0F);
- if (!(this instanceof CharBossMerchant)) {
- if (hasPower(MinionPower.POWER_ID)) {
- if (Settings.FAST_MODE) {
- this.deathTimer += 0.7F;
- } else {
- ++this.deathTimer;
- }
- } else {
- //SlimeboundMod.logger.info("Char boss On Boss Victory now playing");
- onBossVictoryLogic();
- }
- }
-
+ onBossVictoryLogic();
}
+
AbstractCharBoss.boss = null;
AbstractCharBoss.finishedSetup = false;
relics.clear();
diff --git a/src/main/java/charbosses/bosses/Defect/CharBossDefect.java b/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
index 28ed1dbaf..77b5c9dce 100644
--- a/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
+++ b/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
@@ -20,10 +20,11 @@
import com.megacrit.cardcrawl.core.Settings;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
public class CharBossDefect extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Defect");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Defect").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[3];
public int clawsPlayed = 0;
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
index b1dfe2738..9d7603489 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
@@ -5,6 +5,8 @@
import charbosses.bosses.Defect.ArchetypeBaseDefect;
import charbosses.cards.blue.*;
import charbosses.cards.curses.EnAged;
+import charbosses.cards.curses.EnClumsy;
+import charbosses.cards.curses.EnInjury;
import charbosses.cards.curses.EnShame;
import charbosses.orbs.AbstractEnemyOrb;
import charbosses.powers.bossmechanicpowers.DefectVoidPower;
@@ -78,14 +80,14 @@ public ArrayList getThisTurnCards() {
case 0:
addToList(cardsList, new EnBuffer(), false);
addToList(cardsList, new EnDoomAndGloom(), extraUpgrades);
- addToList(cardsList, new EnShame(), false);
+ addToList(cardsList, new EnInjury(), false);
turn++;
break;
case 1:
//Turn 2
addToList(cardsList, new EnSteamBarrier(), false);
addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnAged(), false);
+ addToList(cardsList, new EnClumsy(), false);
turn++;
steamBarrierCasts++;
break;
@@ -114,7 +116,7 @@ public ArrayList getThisTurnCards() {
((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
}
addToList(cardsList, new EnDefendBlue());
- addToList(cardsList, new EnShame(), false);
+ addToList(cardsList, new EnInjury(), false);
turn++;
break;
case 1:
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
index 0747a52a2..89eaf6609 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
@@ -21,11 +21,14 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.NoBlockPower;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import static charbosses.bosses.Defect.NewAge.ArchetypeAct3OrbsNewAge.increasePretendFocus;
+
public class ArchetypeAct2ClawNewAge extends ArchetypeBaseDefect {
private EnClaw c;
@@ -55,9 +58,10 @@ public void addedPreBattle() {
public void initialize() {
addRelic(new CBR_NeowsBlessing());
- addRelic(new CBR_Kunai());
- addRelic(new CBR_RedMask());
- addRelic(new CBR_Turnip());
+ addRelic(new CBR_IceCream());
+ addRelic(new CBR_BagOfPreparation());
+ addRelic(new CBR_NuclearBattery());
+
// animation
try {
@@ -84,104 +88,72 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- // NO Orbs
- addToList(cardsList, new EnBootSequence(), false); // removed
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
+ addToList(cardsList, new EnChill(), true);
+ frostOrbsChanneled += 1;
+ addToList(cardsList, new EnChill(), true);
+ frostOrbsChanneled += 1;
+ addToList(cardsList, new EnBootSequence(), true); // removed
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false); //1
addToList(cardsList, new EnMachineLearning(), true); // removed
turn++;
- // No Orbs
break;
case 1:
- //Turn 2
- // No Orbs
- addToList(cardsList, new EnLeap());
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- addToList(cardsList, new EnPanicButton()); // removed
- addToList(cardsList, new EnStrikeBlue(), true);
- // Frost
+ addToList(cardsList, new EnDefragment(), true);
+ increasePretendFocus(2);
+ addToList(cardsList, new EnChargeBattery());//2
+ addToList(cardsList, new EnDefendBlue(), false);//4
+ addToList(cardsList, new EnStrikeBlue(), true);//4
turn++;
break;
case 2:
//Turn 3
- // Frost
- addToList(cardsList, new EnReprogram(), false);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-1);
- addToList(cardsList, new EnSwiftStrike(), false);
- addToList(cardsList, new EnRebound(), false);
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2));
- // Frost
- //Kunai Proc
+ addToList(cardsList, new EnCoreSurge(), false);//5
+ addToList(cardsList, new EnReprogram(), extraUpgrades);//6
+ addToList(cardsList, new EnRebound(), false);//7
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//8
turn++;
break;
case 3:
- //Turn 4
- // Frost
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2));
- addToList(cardsList, new EnChargeBattery(), false);
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//8th
+ addToList(cardsList, new EnChargeBattery(), false);//9th
addToList(cardsList, new EnGeneticAlgorithm(14), true); //removed
- addToList(cardsList, new EnShame(), false);
- // Frost
+ addToList(cardsList, new EnClumsy(), true);//removed
turn++;
break;
case 4:
- //Turn 5
- // Frost
- addToList(cardsList, new EnHyperbeam(), extraUpgrades);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-3);
- addToList(cardsList, new EnMalfunctioning(), false);
- addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnClumsy(), false); //removed
- //Frost, but it's useless
+ addToList(cardsList, new EnCoreSurge(), false);//10
+ addToList(cardsList, new EnHyperbeam(), false);//11
+ addToList(cardsList, new EnClumsy(), false);
+ addToList(cardsList, new EnDefendBlue(), false);//12
turn = 0;
looped = true;
break;
}
} else {
+ //perfect 12 for a loop
switch (turn) {
case 0:
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
- //Play Leap if Block can be gained, otherwise play Stirike
- if (AbstractCharBoss.boss.hasPower(NoBlockPower.POWER_ID)){
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- if (frostOrbsChanneled > 3 && AbstractCharBoss.boss.orbs.get(0) instanceof AbstractEnemyOrb) {
- ((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
- }
- addToList(cardsList, new EnStrikeBlue(), true);
- addToList(cardsList, new EnLeap());
- } else {
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- if (frostOrbsChanneled > 3 && AbstractCharBoss.boss.orbs.get(0) instanceof AbstractEnemyOrb) {
- ((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
- }
- addToList(cardsList, new EnLeap());
- addToList(cardsList, new EnStrikeBlue(), true);
- }
- //Kunai Proc
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false); //1
+ addToList(cardsList, new EnChargeBattery(), false); //2
+ addToList(cardsList, new EnDefendBlue(), false);//4
+ addToList(cardsList, new EnStrikeBlue(), true);//4
turn++;
break;
case 1:
- //Turn 3
- addToList(cardsList, new EnHyperbeam(), extraUpgrades);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-3);
- addToList(cardsList, new EnChargeBattery(), false);
- addToList(cardsList, new EnShame(), false);
- addToList(cardsList, new EnRebound(), false);
+ addToList(cardsList, new EnCoreSurge(), false);//5
+ addToList(cardsList, new EnHyperbeam(), false);//6
+ addToList(cardsList, new EnChargeBattery(), false);//7
+ addToList(cardsList, new EnRebound(), false);//8
turn++;
break;
case 2:
- addToList(cardsList, new EnReprogram(), false);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-1);
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
- addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnSwiftStrike(), false);
- //Kunai Proc
+ addToList(cardsList, new EnCoreSurge(), false);//9
+ addToList(cardsList, new EnReprogram(), extraUpgrades);//10
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//11
+ addToList(cardsList, new EnDefendBlue(), false);//12
turn = 0;
break;
}
-
}
return cardsList;
@@ -189,6 +161,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_Vajra());
+ addRelic(new CBR_ClockworkSouvenir());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
index 28d46f473..f944bfbd9 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
@@ -6,15 +6,19 @@
import charbosses.cards.AbstractBossCard;
import charbosses.cards.blue.*;
import charbosses.cards.colorless.EnBlind;
+import charbosses.cards.colorless.EnGoodInstincts;
+import charbosses.cards.curses.EnInjury;
+import charbosses.cards.curses.EnShame;
import charbosses.orbs.AbstractEnemyOrb;
-import charbosses.powers.bossmechanicpowers.DefectAncientConstructPower;
-import charbosses.powers.bossmechanicpowers.DefectCuriosityPower;
+import charbosses.powers.bossmechanicpowers.DefectBiasCuriosityPower;
import charbosses.relics.*;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.HealAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.orbs.AbstractOrb;
+import com.megacrit.cardcrawl.powers.FocusPower;
import java.util.ArrayList;
@@ -29,25 +33,27 @@ public ArchetypeAct3OrbsNewAge() {
maxHPModifier += 350;
actNum = 3;
- bossMechanicName = DefectCuriosityPower.NAME;
- bossMechanicDesc = DefectCuriosityPower.DESCRIPTIONS[0] + 1 + DefectCuriosityPower.DESCRIPTIONS[1];
+ bossMechanicName = DefectBiasCuriosityPower.NAME;
+ bossMechanicDesc = DefectBiasCuriosityPower.DESCRIPTIONS[0];
}
@Override
public void addedPreBattle() {
super.addedPreBattle();
AbstractCreature p = AbstractCharBoss.boss;
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DefectCuriosityPower(p)));
-
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new FocusPower(p,4)));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DefectBiasCuriosityPower(p)));
+ if(AbstractDungeon.ascensionLevel >= 19)
+ AbstractDungeon.actionManager.addToBottom(new HealAction(p, p, 2));
}
public void initialize() {
addRelic(new CBR_NeowsBlessing());
- addRelic(new CBR_DataDisk());
+ addRelic(new CBR_ArtOfWar());
addRelic(new CBR_Lantern());
- addRelic(new CBR_FossilizedHelix());
- addRelic(new CBR_CoffeeDripper());
+ addRelic(new CBR_IceCream());
+ addRelic(new CBR_FusionHammer());
}
@@ -87,61 +93,60 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- // No Orbs
- addToList(cardsList, new EnRainbow());
- addToList(cardsList, new EnReinforcedBody());
+ // No Orbs 4e
+
+ addToList(cardsList, new EnMachineLearning(),true);
addToList(cardsList, new EnChargeBattery());
- // Lightning Frost Dark
+ addToList(cardsList, new EnRainbow());
+ // Lightning Frost Dark 0e
turn++;
break;
case 1:
//Turn 2
- // Lightning Frost Dark
- addToList(cardsList, new EnZap(), true);
- //Evokes Lightning
+ // Lightning Frost Dark 5e
+ addToList(cardsList, new EnDualcast());
+ // Evokes Lightning 4e
cB.orbsAsEn().get(0).evokeOverride = true;
- // Frost Dark Lightning
+ cB.orbsAsEn().get(0).evokeMult = 2;
+ addToList(cardsList, new EnHologram(), true);
+ // Frost Dark 3e
addToList(cardsList, new EnDualcast());
- // Evokes Frost
+ // Evokes Frost 2e
cB.orbsAsEn().get(1).evokeOverride = true;
cB.orbsAsEn().get(1).evokeMult = 2;
- // Dark Lightning
+ addToList(cardsList, new EnStorm());
+ AbstractBossCard.fakeStormPower = true;
+ // Dark 1e
// Evokes Dark
- if (!A19) {
- addToList(cardsList, new EnMulticast(2));
+ addToList(cardsList, new EnMulticast(1));
cB.orbsAsEn().get(2).evokeOverride = true;
- cB.orbsAsEn().get(2).evokeMult = 2;
- }
- else {
- addToList(cardsList, new EnMulticast(3));
- cB.orbsAsEn().get(2).evokeOverride = true;
- cB.orbsAsEn().get(2).evokeMult = 3;
- }
- // Lightning
+ cB.orbsAsEn().get(2).evokeMult = 1;
+ // No Orbs 0e
turn++;
break;
case 2:
//Turn 3
- //Lightning
- addToList(cardsList, new EnColdSnap());
- //Lightning Frost
- addToList(cardsList, new EnBarrage(2), true); // Bullseye was here, but Bullseye is a cursed thing
- addToList(cardsList, new EnLeap());
+ // No Orbs 4e
+ addToList(cardsList, new EnConsume());
+ increasePretendFocus(2);
+ addToList(cardsList, new EnCapacitor());
+ //Lightning 1e
+ addToList(cardsList, new EnColdSnap(),extraUpgrades);
+ //Lightning Frost 0e
+
+ addToList(cardsList, new EnInjury());
turn++;
break;
case 3:
//Turn 4
- //Lightning Frost
- addToList(cardsList, new EnStorm(), false);
- AbstractBossCard.fakeStormPower = true;
- addToList(cardsList, new EnDefragment(), extraUpgrades);
- if (extraUpgrades) {
- increasePretendFocus(2);
- }else {
- increasePretendFocus(1);
- }
- //Lightning Frost Lightning
- addToList(cardsList, new EnBlind(), false);
+ //Lightning Frost 3e
+ addToList(cardsList, new EnDoubleEnergy(),false);
+ // 4e
+ addToList(cardsList, new EnCreativeAI(),false);
+ //Lightning Frost Lightning 1e
+ addToList(cardsList, new EnFusion(true,false),true);
+ //Lightning Frost Lightning Plasma 0e
+ addToList(cardsList, new EnForceField());
turn = 0;
looped = true;
break;
@@ -149,37 +154,85 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- //Lightning Frost Lightning
- addToList(cardsList, new EnLeap());
+ //Lightning Frost Lightning Plasma 5e
+ addToList(cardsList, new EnBuffer(true), false);//AI
+ cB.orbsAsEn().get(0).evokeOverride = true;
+ cB.orbsAsEn().get(0).evokeMult = 1;
+ // Evokes Lightning
+ //Frost Lightning Plasma Lightning 3e
+ addToList(cardsList, new EnGoodInstincts());
+ addToList(cardsList, new EnBarrage(4));
+ addToList(cardsList, new EnColdSnap(),extraUpgrades);
+ cB.orbsAsEn().get(1).evokeOverride = true;
+ cB.orbsAsEn().get(1).evokeMult = 1;
+ //Lightning Plasma Lightning Frost 1e
addToList(cardsList, new EnChargeBattery());
- addToList(cardsList, new EnBarrage(3), true); //Vex replaced Bullseye with Barrage+ here.
+
+ //Lightning Plasma Lightning Frost 0e
turn++;
break;
case 1:
- //Lightning Frost Lightning
- addToList(cardsList, new EnBlind());
- addToList(cardsList, new EnDualcast());
- //Evokes Lightning
+ //Lightning Plasma Lightning Frost 5e
+ addToList(cardsList, new EnElectrodynamics(), false);//AI
cB.orbsAsEn().get(0).evokeOverride = true;
- cB.orbsAsEn().get(0).evokeMult = 2;
- //Lightning Frost
- addToList(cardsList, new EnMulticast(3));
- // Evokes Frost!
+ cB.orbsAsEn().get(0).evokeMult = 1;
cB.orbsAsEn().get(1).evokeOverride = true;
- cB.orbsAsEn().get(1).evokeMult = 3;
- // Lightning
+ cB.orbsAsEn().get(1).evokeMult = 1;
+ cB.orbsAsEn().get(2).evokeOverride = true;
+ cB.orbsAsEn().get(2).evokeMult = 1;
+ //Frost Lightning Lightning Lightning 5e
+ addToList(cardsList, new EnInjury());
+ addToList(cardsList, new EnDualcast());
+ //Evokes Frost 4e
+ cB.orbsAsEn().get(3).evokeOverride = true;
+ cB.orbsAsEn().get(3).evokeMult = 2;
+ //Lightning Lightning Lightning 4e
+ addToList(cardsList, new EnFusion(true,false),true);
+ addToList(cardsList, new EnForceField());
+ //Lightning Lightning Lightning Plasma 3e
turn++;
break;
case 2:
- // Lightning
+ //Lightning Lightning Lightning Plasma
+ addToList(cardsList, new EnDefragment(), false);//AI
+ increasePretendFocus(1);
+ cB.orbsAsEn().get(0).evokeOverride = true;
+ cB.orbsAsEn().get(0).evokeMult = 1;
+ //Lightning Lightning Plasma Lightning
addToList(cardsList, new EnColdSnap(), false);
- //Lightning Frost
- addToList(cardsList, new EnZap(), true);
- // Lightning Frost Lightning. Perfect loop! :D
- if (!A19)
- addToList(cardsList, new EnReinforcedBody());
- else
- addToList(cardsList, new EnReinforcedBody(3));
+ cB.orbsAsEn().get(1).evokeOverride = true;
+ cB.orbsAsEn().get(1).evokeMult = 1;
+ //Lightning Plasma Lightning Frost
+ addToList(cardsList, new EnHologram(), true);
+ addToList(cardsList, new EnDualcast());
+ cB.orbsAsEn().get(2).evokeOverride = true;
+ cB.orbsAsEn().get(2).evokeMult = 2;
+ //Plasma Lightning Frost
+ addToList(cardsList, new EnChargeBattery());
+ addToList(cardsList, new EnGoodInstincts());
+ cB.orbsAsEn().get(1).evokeOverride = true;
+ cB.orbsAsEn().get(1).evokeMult = 1;
+ //Plasma Lightning Frost
+ turn ++;
+ break;
+ case 3:
+ //Plasma Lightning Frost
+ addToList(cardsList, new EnCapacitor(), false);//AI
+ //Plasma Lightning Frost Lightning
+ addToList(cardsList, new EnMulticast(cB.energyPanel.getCurrentEnergy()-1),false,2*(cB.energyPanel.getCurrentEnergy()-1));
+ //Evokes Plasma
+ cB.orbsAsEn().get(0).evokeOverride = true;
+ cB.orbsAsEn().get(0).evokeMult = 4;
+ addToList(cardsList, new EnConsume());
+ increasePretendFocus(2);
+ //Lightning Frost Lightning
+ addToList(cardsList, new EnFusion(true,false),true);
+ //Lightning Frost Lightning Plasma
+
+ addToList(cardsList, new EnHologram(), true);
+ addToList(cardsList, new EnConsume());
+ increasePretendFocus(2);
+ //Lightning Frost Lightning Plasma. Perfect loop! :D
turn = 0;
looped = true;
break;
@@ -191,6 +244,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_ArtOfWar());
+ addRelic(new CBR_BirdFacedUrn());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java b/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
index bd5783da7..a0e03a9d6 100644
--- a/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
+++ b/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
@@ -20,6 +20,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.FontHelper;
import downfall.downfallMod;
+import downfall.util.LocalizeHelper;
import hermit.characters.hermit;
import hermit.effects.HermitEyeParticle;
@@ -32,7 +33,7 @@
public class CharBossHermit extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Hermit");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("hermit:hermit").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[6];
public Slot eye;
private float fireTimer = 0.0F;
diff --git a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java
index 35280de23..a7b9eb089 100644
--- a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java
+++ b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java
@@ -115,6 +115,9 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
+ if (AbstractCharBoss.boss.hasRelic(CBR_Abacus.ID)) {
+ AbstractCharBoss.boss.getRelic(CBR_Abacus.ID).onShuffle();
+ }
addToList(cardsList, new EnHeadshot());
addToList(cardsList, new EnDefendHermit());
addToList(cardsList, new EnInjury());
diff --git a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
index 0c488d00c..c7db0aa83 100644
--- a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
+++ b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
@@ -7,26 +7,32 @@
import charbosses.cards.hermit.*;
import charbosses.powers.bossmechanicpowers.HermitDoomsday;
import charbosses.relics.*;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.animations.ShoutAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.SpawnMonsterAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Byrd;
import com.megacrit.cardcrawl.powers.RitualPower;
import downfall.monsters.DoomedDagger;
+import downfall.vfx.PotionThrowEffect;
import java.util.ArrayList;
-public class ArchetypeAct3DoomsdayNewAge extends ArchetypeBaseIronclad {
+import static com.megacrit.cardcrawl.monsters.city.Byrd.DIALOG;
+public class ArchetypeAct3DoomsdayNewAge extends ArchetypeBaseIronclad {
+ public boolean froegg = false;
public ArchetypeAct3DoomsdayNewAge() {
super("HERMIT_DOOMSDAY_ARCHETYPE", "Doomsday");
- maxHPModifier += 315;
- if (AbstractDungeon.ascensionLevel >= 19) {
- maxHPModifier += 24;
- }
+ maxHPModifier += 363;
actNum = 3;
bossMechanicName = HermitDoomsday.NAME;
bossMechanicDesc = HermitDoomsday.DESC[0];
@@ -40,11 +46,24 @@ public static AbstractMonster getDoomedSnake(){ // called by EnPurgatory too
public void addedPreBattle() {
super.addedPreBattle();
AbstractCreature p = AbstractCharBoss.boss;
-
AbstractDungeon.actionManager.addToBottom(new SpawnMonsterAction(getDoomedSnake(), true));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new HermitDoomsday(p), 1));
-// AbstractDungeon.actionManager.addToBottom(new VFXAction(new PotionThrowEffect("downfallResources/images/vfx/CultistPotion.png", p.hb.cX, p.hb.cY, p.hb.cX, p.hb.cY, 2F, 0.6F, false, true), 0.6F));
+
+ //Cultist Potion!!!
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new PotionThrowEffect("downfallResources/images/vfx/CultistPotion.png", p.hb.cX-240, p.hb.cY-150, p.hb.cX-240, p.hb.cY-150, 2F, 0.6F, false, true), 0.6F));
+ int roll = MathUtils.random(2);
+ if (roll == 0) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1A"));
+ } else if (roll == 1) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1B"));
+ } else {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1C"));
+ }
+
+ AbstractDungeon.actionManager.addToBottom(new TalkAction(p, Byrd.DIALOG[0], 1.2F, 1.2F));
+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new RitualPower(p, 1, false), 1));
+
}
public void initialize() {
@@ -66,7 +85,12 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- addToList(cardsList, new EnShadowCloak());
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ addToList(cardsList, new EnShadowCloak(), extraUpgrades);
+ }
+ if (!(AbstractDungeon.ascensionLevel >= 19)) {
+ addToList(cardsList, new EnShadowCloak());
+ }
addToList(cardsList, new EnGrudge(15));
addToList(cardsList, new EnGlare());
turn++;
@@ -115,6 +139,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_DarkstonePeriapt());
+ addRelic(new CBR_FrozenEgg());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java b/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
index 2db4ba2b9..f1023735b 100644
--- a/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
+++ b/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
@@ -35,13 +35,14 @@
import com.megacrit.cardcrawl.ui.panels.energyorb.EnergyOrbRed;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
import guardian.powers.ConstructPower;
import hermit.util.TextureLoader;
import slimebound.SlimeboundMod;
public class CharBossIronclad extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Ironclad");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Ironclad").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[1];
private Texture fgImg = TextureLoader.getTexture("downfallResources/images/fgShrooms.png");
private Texture bgImg = TextureLoader.getTexture("downfallResources/images/bgShrooms.png");
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
index 3c7118057..3747b2168 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
@@ -32,7 +32,7 @@ public class ArchetypeAct1StatusesNewAge extends ArchetypeBaseIronclad {
public ArchetypeAct1StatusesNewAge() {
super("IC_STATUS_ARCHETYPE", "Status");
- maxHPModifier += 75;
+ maxHPModifier += 60;
actNum = 1;
bossMechanicName = IroncladStatusPower.NAME;
bossMechanicDesc = IroncladStatusPower.DESC[0];
@@ -76,13 +76,13 @@ public ArrayList getThisTurnCards() {
turn++;
break;
case 1:
+ addToList(cardsList, new EnWildStrike());
addToList(cardsList, new EnRecklessCharge());
- addToList(cardsList, new EnWildStrike(), extraUpgrades);
addToList(cardsList, new EnDefendRed());
turn++;
break;
case 2:
- addToList(cardsList, new EnPowerThrough(true));
+ addToList(cardsList, new EnPowerThrough(true), extraUpgrades);
addToList(cardsList, new EnSecondWind());
addToList(cardsList, new EnDefendRed());
theArtOfWar.beginPulse();
@@ -112,7 +112,7 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- addToList(cardsList, new EnPowerThrough(true));
+ addToList(cardsList, new EnPowerThrough(true), extraUpgrades);
addToList(cardsList, new EnTrueGrit(), true);
//IC will exhaust the Doubt the first time through the loop instead of a wound
//So the wound will appear the second time through the loop onward
@@ -121,7 +121,7 @@ public ArrayList getThisTurnCards() {
theArtOfWar.beginPulse();
break;
case 1:
- addToList(cardsList, new EnWildStrike(), extraUpgrades);
+ addToList(cardsList, new EnWildStrike());
addToList(cardsList, new EnRecklessCharge());
addToList(cardsList, new EnBash()); //unused
turn++;
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
index 0bc9bd3bd..bf3b69bea 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
@@ -97,7 +97,7 @@ public ArrayList getThisTurnCards() {
case 2:
addToList(cardsList, new EnReaper());
addToList(cardsList, new EnDefendRed());
- addToList(cardsList, new EnHaunted());
+ addToList(cardsList, new EnClumsy());
turn++;
break;
case 3:
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
index 720351103..0d40045f2 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
@@ -77,7 +77,7 @@ public ArrayList getThisTurnCards() {
case 0:
addToList(cardsList, new EnFeelNoPain());
addToList(cardsList, new EnImpervious());
- addToList(cardsList, new EnIntimidate());
+ addToList(cardsList, new EnIntimidate(), true);
turn++;
break;
case 1:
@@ -88,7 +88,7 @@ public ArrayList getThisTurnCards() {
break;
case 2:
addToList(cardsList, new EnImpervious());
- addToList(cardsList, new EnIntimidate());
+ addToList(cardsList, new EnIntimidate(), true);
addToList(cardsList, new EnEntrench());
turn++;
break;
diff --git a/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java b/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
index cbf1fb9af..41e2057b6 100644
--- a/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
+++ b/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
@@ -31,9 +31,14 @@ public void initialize() {
// addRelic(new CBR_Girya(3));
// addRelic(new CBR_Vajra());
// addRelic(new CBR_SmoothStone());
- addRelic(new CBR_FossilizedHelix());
+
+ // :)
+ addRelic(new CBR_SmilingMask());
+
//addRelic(new CBR_BagOfPreparation());
- addRelic(new CBR_ClockworkSouvenir());
+
+ addRelic(new CBR_Toolbox());
+
addRelic(new CBR_TungstenRod());
addRelic(new CBR_IceCream());
//addRelic(new CBR_FusionHammer());
@@ -57,35 +62,36 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
-
- addToList(cardsList, new EnPanicButton());
- addToList(cardsList, new EnDramaticEntrance());
- addToList(cardsList, new EnTheBomb(), extraUpgrades);
+ addToList(cardsList, new EnPanacea()); //Toolbox
+ addToList(cardsList, new EnPanicButton()); //exhausts
+ addToList(cardsList, new EnDramaticEntrance()); //exhausts
+ addToList(cardsList, new EnTheBomb(), extraUpgrades); //1 of 1 Bombs
turn++;
break;
case 1:
- addToList(cardsList, new EnApotheosis(), true);
- addToList(cardsList, new EnPanacea(), true);
- addToList(cardsList, new EnGoodInstincts(), true);
+ addToList(cardsList, new EnApotheosis(), true); //exhausts
+ addToList(cardsList, new EnPanacea(), true); // +2 artifact
+ addToList(cardsList, new EnGoodInstincts(), true); //1 of 2 Good Instincts
turn++;
break;
case 2:
//Bomb goes Boom.
- addToList(cardsList, new EnPanacea(), true);
+ addToList(cardsList, new EnPanacea(), true); // +2 artifact, +5 total??????? remove clockwork and replace with another relic (abacus?)
addToList(cardsList, new EnPanicButton(), true);
- addToList(cardsList, new EnBlind(), true);
+ addToList(cardsList, new EnSadisticNature(), true); // sadistic here fills up a slot because there was an extra unaccounted for bomb
turn++;
break;
case 3:
- addToList(cardsList, new EnTrip(), true);
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
+ addToList(cardsList, new EnSwiftStrike(), true); //1 of 2 Swift Strikes
+ addToList(cardsList, new EnTrip(), true); // moved the trip here
+ addToList(cardsList, new EnBlind(), true); //moved a blind here
+ // 1 of 1 Trips
turn++;
break;
case 4:
- addToList(cardsList, new EnGoodInstincts(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
- addToList(cardsList, new EnHandOfGreed(), true);
+ addToList(cardsList, new EnGoodInstincts(), true); //2 of 2 Good Instincts
+ addToList(cardsList, new EnSwiftStrike(), true); //2 of 2 Swift Strikes
+ addToList(cardsList, new EnHandOfGreed(), true); //1 of 1 Hand of Greed
turn=0;
looped = true;
break;
@@ -94,27 +100,28 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- //Bomb goes Boom.
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnTrip(), true);
- addToList(cardsList, new EnGoodInstincts(), true);
+ //no bomb this turn
+ addToList(cardsList, new EnTheBomb(), true); //1
+ addToList(cardsList, new EnSwiftStrike(), true); //2
+ addToList(cardsList, new EnTrip(), true); //3
turn++;
break;
case 1:
- addToList(cardsList, new EnHandOfGreed(), true);
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnBlind(), true);
+ addToList(cardsList, new EnHandOfGreed(), true); //4
+ addToList(cardsList, new EnTheBomb(), true); //5
+ addToList(cardsList, new EnBlind(), true); //6
turn++;
break;
case 2:
//Bomb goes Boom.
- addToList(cardsList, new EnGoodInstincts(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
+ addToList(cardsList, new EnGoodInstincts(), true); //7
+ addToList(cardsList, new EnSwiftStrike(), true); //8
+ addToList(cardsList, new EnGoodInstincts(), true); //9
+ //changing this turn because this is too harsh compared to normal act 3 bosses, and this number could be higher depending on # of shops visited
turn = 0;
break;
}
-
+// 1 Bomb. 2 Swift Strikes. 2 Good Instincts. 1 Trip. 1 Blind. 1 Hand of Greed. that's 9 cards total for a 3 turn loop
}
return cardsList;
}
diff --git a/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java b/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
index ed747cc5e..02cd4a490 100644
--- a/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
+++ b/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer.PlayerClass;
+import com.megacrit.cardcrawl.characters.AbstractPlayer.PlayerClass;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -28,6 +29,7 @@
import com.megacrit.cardcrawl.vfx.combat.IntenseZoomEffect;
import downfall.downfallMod;
import downfall.monsters.FleeingMerchant;
+import downfall.util.LocalizeHelper;
import downfall.vfx.NeowBossRezEffect;
public class CharBossMerchant extends AbstractCharBoss {
@@ -52,16 +54,16 @@ public class CharBossMerchant extends AbstractCharBoss {
private boolean neowSpoke = false;
public static final String ID = downfallMod.makeID("CharBossMerchant");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString(ID).NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[5];
public CharBossMerchant() {
super(NAME, ID, 300, 0f, -40f, 200.0f, 190.0f, null, 0.0f, 0.0f, PlayerClass.IRONCLAD);
- if (downfallMod.tempAscensionHack) {
- downfallMod.tempAscensionHack = false;
- AbstractDungeon.ascensionLevel = downfallMod.tempAscensionOriginalValue;
- downfallMod.tempAscensionOriginalValue = 0;
- }
+// if (downfallMod.tempAscensionHack) {
+// downfallMod.tempAscensionHack = false;
+// AbstractDungeon.ascensionLevel = downfallMod.tempAscensionOriginalValue;
+// downfallMod.tempAscensionOriginalValue = 0;
+// }
this.energyOrb = new EnergyOrbRed();
this.energy = new EnemyEnergyManager(3);
@@ -82,7 +84,7 @@ public CharBossMerchant() {
this.tint.color = new Color(.5F, .5F, 1F, 0F);
- this.type = EnemyType.BOSS;
+ type = EnemyType.BOSS;
}
@Override
@@ -97,6 +99,8 @@ public void usePreBattleAction() {
if (FleeingMerchant.CURRENT_STRENGTH > 0) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
}
super.usePreBattleAction();
@@ -111,13 +115,13 @@ public void initGlowMesh(float time) {
this.atlasGlow = new TextureAtlas(Gdx.files.internal(downfallMod.assetPath("images/monsters/merchant/noShadow/skeletonGlow.atlas")));
SkeletonJson json = new SkeletonJson(this.atlasGlow);
if (CardCrawlGame.dungeon != null && AbstractDungeon.player != null) {
- if (AbstractDungeon.player.hasRelic("PreservedInsect") && !this.isPlayer && AbstractDungeon.getCurrRoom().eliteTrigger) {
- glowscale += 0.3F;
- }
-
- if (ModHelper.isModEnabled("MonsterHunter") && !this.isPlayer) {
- glowscale -= 0.3F;
- }
+ // if (AbstractDungeon.player.hasRelic("PreservedInsect") && !this.isPlayer && AbstractDungeon.getCurrRoom().eliteTrigger) {
+ // glowscale += 0.3F;
+ // }
+ //
+ // if (ModHelper.isModEnabled("MonsterHunter") && !this.isPlayer) {
+ // glowscale -= 0.3F;
+ // }
}
json.setScale(Settings.scale / glowscale);
diff --git a/src/main/java/charbosses/bosses/Silent/CharBossSilent.java b/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
index d2d8c0a87..c649a772a 100644
--- a/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
+++ b/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
@@ -30,10 +30,11 @@
import com.megacrit.cardcrawl.vfx.combat.SmokeBombEffect;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
public class CharBossSilent extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Silent");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Silent").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[2];
public static boolean posStorage = false;
diff --git a/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java b/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java
index fc014f72c..e3f502f56 100644
--- a/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java
+++ b/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java
@@ -3,6 +3,7 @@
import charbosses.bosses.AbstractCharBoss;
import charbosses.bosses.Silent.ArchetypeBaseSilent;
import charbosses.cards.AbstractBossCard;
+import charbosses.cards.colorless.EnShiv;
import charbosses.cards.green.*;
import charbosses.cards.other.Antidote;
import charbosses.powers.bossmechanicpowers.SilentPoisonPower;
@@ -44,7 +45,7 @@ public void initialize() {
addRelic(new CBR_NeowsBlessing());
addRelic(new CBR_TwistedFunnel());
- addRelic(new CBR_HornCleat());
+ addRelic(new CBR_Anchor());
addRelic(new CBR_Lantern());
// animation
@@ -63,6 +64,7 @@ public void initialize() {
public ArrayList getThisTurnCards() {
ArrayList cardsList = new ArrayList<>();
boolean extraUpgrades = AbstractDungeon.ascensionLevel >= 4;
+ //boolean WhetstoneUpgrades = AbstractDungeon.ascensionLevel >= 19;
if (!looped) {
switch (turn) {
case 0: //Turn 1
@@ -80,7 +82,7 @@ public ArrayList getThisTurnCards() {
case 1: //Turn 2
- addToList(cardsList, new EnPoisonedStab());
+ addToList(cardsList, new EnPoisonedStab(), true);
addToList(cardsList, new EnDodgeAndRoll());
addToList(cardsList, new EnStrikeGreen());
turn++;
@@ -90,7 +92,7 @@ public ArrayList getThisTurnCards() {
addToList(cardsList, new EnFootwork(),extraUpgrades);
addToList(cardsList, new EnNoxiousFumes());
- addToList(cardsList, new EnDeadlyPoison());
+ addToList(cardsList, new EnPoisonedStab());
turn++;
break;
@@ -116,7 +118,7 @@ public ArrayList getThisTurnCards() {
addToList(cardsList, new EnBurst());
addToList(cardsList, new EnDeflect());
addToList(cardsList, new EnDeflect());
- addToList(cardsList, new EnDeadlyPoison());
+ addToList(cardsList, new EnPoisonedStab(), true);
// c.cost = 0;
// c.freeToPlayOnce = true;
// c.modifyCostForCombat(-1);
@@ -125,7 +127,7 @@ public ArrayList getThisTurnCards() {
turn++;
break;
case 2: // Turn 7 + 3n
- addToList(cardsList, new EnPoisonedStab());
+ addToList(cardsList, new EnBane());
addToList(cardsList, new EnStrikeGreen());
addToList(cardsList, new EnDefendGreen());
turn = 0;
diff --git a/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java b/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
index 6558ccd97..a54bedf96 100644
--- a/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
+++ b/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
@@ -21,10 +21,11 @@
import com.megacrit.cardcrawl.ui.panels.energyorb.EnergyOrbPurple;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
public class CharBossWatcher extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Watcher");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Watcher").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[4];
private Bone eyeBone;
protected TextureAtlas eyeAtlas = null;
diff --git a/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
index 59976623d..46e3a3618 100644
--- a/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
+++ b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
@@ -5,10 +5,10 @@
import charbosses.cards.AbstractBossCard;
import charbosses.cards.colorless.EnBlind;
import charbosses.cards.colorless.EnGoodInstincts;
+import charbosses.cards.colorless.EnSwiftStrike;
+import charbosses.cards.curses.EnInjury;
import charbosses.cards.curses.EnNormality;
-import charbosses.cards.curses.EnShame;
import charbosses.cards.purple.*;
-import charbosses.powers.bossmechanicpowers.SilentPoisonPower;
import charbosses.powers.bossmechanicpowers.WatcherDivinityPower;
import charbosses.relics.*;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
@@ -44,7 +44,7 @@ public void initialize() {
addRelic(new CBR_NeowsBlessing());
addRelic(new CBR_ThreadAndNeedle());
- addRelic(new CBR_CaptainsWheel());
+ addRelic(new CBR_DuvuDoll(2));
addRelic(new CBR_Torii());
addRelic(new CBR_VelvetChoker());
}
@@ -56,37 +56,42 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- //Turn 2
- addToList(cardsList, new EnWishPlated());
+ //turn 1
+ //nothing
+ addToList(cardsList, new EnWishPlated(), true);
addToList(cardsList, new EnGoodInstincts());
- addToList(cardsList, new EnShame());
+ addToList(cardsList, new EnInjury());
turn++;
break;
case 1:
- //Turn 2
+ //turn 2
+ //25~ damage
addToList(cardsList, new EnWaveOfTheHand());
- addToList(cardsList, new EnBlind());
+ addToList(cardsList, new EnBrilliance(), extraUpgrades); // This is probably a terrible idea. This is where the Blind was, which was moved to where the Strike was.
addToList(cardsList, new EnSwivel());
turn++;
break;
case 2:
- //Turn 3
- AbstractBossCard c = new EnSignatureMove(); //Big attack
- c.freeToPlayOnce = true;
- addToList(cardsList, c, extraUpgrades, 2);
- addToList(cardsList, new EnConjurBlade());
+ //turn 3
+ //off turn
+ addToList(cardsList, new EnSwiftStrike());
+ addToList(cardsList, new EnConjurBlade(), false);
addToList(cardsList, new EnSanctity()); //Not played
turn++;
break;
case 3:
+ //turn 4
+ //off turn / mercy
addToList(cardsList, new EnProtect(), true);
addToList(cardsList, new EnEmptyFist(), true); //Exit Divinity
addToList(cardsList, new EnNormality());
turn++;
break;
case 4:
- addToList(cardsList, new EnExpunger()); //Big Attack
- addToList(cardsList, new EnStrikePurple());
+ //turn 5
+ //big attack
+ addToList(cardsList, new EnExpunger()); //Big Attack // I mean, not really that big compared to what time eater hits for.
+ addToList(cardsList, new EnBlind()); // blind moved here to replace the strike
addToList(cardsList, new EnDevotion());
turn = 0;
looped = true;
@@ -95,6 +100,8 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
+ //loop starts here
+ //mercy turn / strength scaling if so
addToList(cardsList, new EnWaveOfTheHand());
AbstractBossCard c = new EnSwivel();
c.energyGeneratedIfPlayed = 1;
@@ -105,19 +112,22 @@ public ArrayList getThisTurnCards() {
turn++;
break;
case 1:
+ //big attack turn
addToList(cardsList, new EnExpunger()); //Big Attack
addToList(cardsList, new EnSanctity()); //Exit Divinity
- addToList(cardsList, new EnShame());
+ addToList(cardsList, new EnInjury());
turn++;
break;
case 2:
+ //spam punish turn
addToList(cardsList, new EnProtect(), true);
- addToList(cardsList, new EnStrikePurple());
+ addToList(cardsList, new EnBrilliance(), true); // this might be too difficult to block for but uhhhhhhhhhh
addToList(cardsList, new EnBlind());
turn++;
break;
case 3:
- addToList(cardsList, new EnSignatureMove(), extraUpgrades); //Big Attack
+ //off turn
+ addToList(cardsList, new EnSwiftStrike(), false); // signature move replaced with wallop
addToList(cardsList, new EnGoodInstincts());
addToList(cardsList, new EnNormality());
turn = 0;
diff --git a/src/main/java/charbosses/cards/blue/EnBuffer.java b/src/main/java/charbosses/cards/blue/EnBuffer.java
index 578801605..468fd4708 100644
--- a/src/main/java/charbosses/cards/blue/EnBuffer.java
+++ b/src/main/java/charbosses/cards/blue/EnBuffer.java
@@ -20,9 +20,14 @@ public EnBuffer() {
super(ID, cardStrings.NAME, "blue/power/buffer", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
- // alwaysDisplayText = true;
- }
+ }
+ public EnBuffer(boolean text) {
+ super(ID, cardStrings.NAME, "blue/power/buffer", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = text;
+ }
public void use(AbstractPlayer p, AbstractMonster m) {
this.addToBot(new ApplyPowerAction(m, m, new BufferPower(m, this.magicNumber), this.magicNumber));
diff --git a/src/main/java/charbosses/cards/blue/EnConsume.java b/src/main/java/charbosses/cards/blue/EnConsume.java
new file mode 100644
index 000000000..0d12768fc
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnConsume.java
@@ -0,0 +1,57 @@
+package charbosses.cards.blue;
+
+import charbosses.actions.orb.EnemyDecreaseMaxOrbAction;
+import charbosses.actions.orb.EnemyIncreaseMaxOrbAction;
+import charbosses.bosses.Defect.NewAge.ArchetypeAct3OrbsNewAge;
+import charbosses.cards.AbstractBossCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.FocusPower;
+
+import java.util.ArrayList;
+
+public class EnConsume extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Consume";
+ private static final CardStrings cardStrings;
+
+ public EnConsume() {
+ super(ID, cardStrings.NAME, "blue/skill/consume", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ focusGeneratedIfPlayed = magicNumber;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ ArchetypeAct3OrbsNewAge.resetPretendFocus();
+ this.addToBot(new ApplyPowerAction(m, m, new FocusPower(m, this.magicNumber), this.magicNumber));
+ this.addToBot(new EnemyDecreaseMaxOrbAction(1));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(1);
+ focusGeneratedIfPlayed = magicNumber;
+ }
+
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 50;
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnConsume();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Consume");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnCoreSurge.java b/src/main/java/charbosses/cards/blue/EnCoreSurge.java
index 8f4a0980f..471fd6142 100644
--- a/src/main/java/charbosses/cards/blue/EnCoreSurge.java
+++ b/src/main/java/charbosses/cards/blue/EnCoreSurge.java
@@ -10,6 +10,8 @@
import com.megacrit.cardcrawl.cards.blue.CoreSurge;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ArtifactPower;
@@ -23,7 +25,12 @@ public class EnCoreSurge extends AbstractBossCard {
public EnCoreSurge() {
super(ID, cardStrings.NAME, "blue/attack/core_surge", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.BLUE, CardRarity.RARE, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
- this.exhaust = true;
+ if (AbstractDungeon.floorNum < 25) {
+ this.exhaust = true;
+ }
+ if (AbstractDungeon.floorNum > 25) {
+ this.exhaust = false;
+ }
this.baseDamage = 11;
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
diff --git a/src/main/java/charbosses/cards/blue/EnCreativeAI.java b/src/main/java/charbosses/cards/blue/EnCreativeAI.java
new file mode 100644
index 000000000..254088b25
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnCreativeAI.java
@@ -0,0 +1,55 @@
+
+package charbosses.cards.blue;
+
+import charbosses.cards.AbstractBossCard;
+import charbosses.powers.cardpowers.EnemyCreativeAIPower;
+import charbosses.powers.general.EnemyDrawPower;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.MachineLearning;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawPower;
+
+import java.util.ArrayList;
+
+public class EnCreativeAI extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:CreativeAI";
+ private static final CardStrings cardStrings;
+
+ public EnCreativeAI() {
+ super(ID, cardStrings.NAME, "blue/power/creative_ai", 3, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ alwaysDisplayText = true;
+ this.baseMagicNumber = 1;
+ this.magicNumber = 1;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(m, m, new EnemyCreativeAIPower(m, this.magicNumber), this.magicNumber));
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 50;
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeBaseCost(2);
+ this.initializeDescription();
+ }
+
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnMachineLearning();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Creative AI");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java b/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
index 254e93b4e..a56a489e8 100644
--- a/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
+++ b/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
@@ -22,7 +22,7 @@ public EnDoubleEnergy() {
}
public EnDoubleEnergy(int eGain) {
- super(ID, cardStrings.NAME, "blue/skill/double_energy", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.COMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ super(ID, cardStrings.NAME, "blue/skill/double_energy", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.baseMagicNumber = eGain;
this.magicNumber = this.baseMagicNumber;
diff --git a/src/main/java/charbosses/cards/blue/EnElectrodynamics.java b/src/main/java/charbosses/cards/blue/EnElectrodynamics.java
new file mode 100644
index 000000000..88595c48a
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnElectrodynamics.java
@@ -0,0 +1,83 @@
+package charbosses.cards.blue;
+
+import charbosses.actions.orb.EnemyChannelAction;
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.orbs.AbstractEnemyOrb;
+import charbosses.orbs.EnemyLightning;
+import charbosses.powers.cardpowers.EnemyCreativeAIPower;
+import charbosses.powers.cardpowers.EnemyElectroPower;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.Storm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ElectroPower;
+import com.megacrit.cardcrawl.powers.FocusPower;
+import com.megacrit.cardcrawl.powers.StormPower;
+
+import java.util.ArrayList;
+
+public class EnElectrodynamics extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Electrodynamics";
+ private static final CardStrings cardStrings;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Electrodynamics");
+ }
+
+ public EnElectrodynamics() {
+ super(ID, cardStrings.NAME, "blue/power/electrodynamics", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.showEvokeValue = true;
+ this.showEvokeOrbCount = 2;
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = true;
+ }
+
+ public static int getFocusAmountSafe() {
+ if (AbstractCharBoss.boss.hasPower(FocusPower.POWER_ID)) {
+ return AbstractCharBoss.boss.getPower(FocusPower.POWER_ID).amount;
+ }
+ return 0;
+ }
+
+ @Override
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(EnemyStormPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(EnemyStormPower.POWER_ID).amount;
+ return "(" + ( 3 + AbstractEnemyOrb.masterPretendFocus + getFocusAmountSafe()) +"×"+count+ ")";
+ }else
+ return "(" + ( 3 + AbstractEnemyOrb.masterPretendFocus + getFocusAmountSafe()) +"×"+this.magicNumber+ ")";
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!p.hasPower(EnemyElectroPower.POWER_ID)) {
+ this.addToBot(new ApplyPowerAction(m, m, new EnemyElectroPower(m)));
+ }
+ for (int i = 0; i < this.magicNumber; ++i) {
+ this.addToBot(new EnemyChannelAction(new EnemyLightning()));
+ }
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 10;
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(1);
+ }
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnElectrodynamics();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/cards/blue/EnForceField.java b/src/main/java/charbosses/cards/blue/EnForceField.java
index ebc592014..76c580a4a 100644
--- a/src/main/java/charbosses/cards/blue/EnForceField.java
+++ b/src/main/java/charbosses/cards/blue/EnForceField.java
@@ -25,7 +25,7 @@ public class EnForceField extends AbstractBossCard {
private static final CardStrings cardStrings;
public EnForceField() {
- super("Force Field", cardStrings.NAME, "blue/skill/forcefield", 4, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND);
+ super("Force Field", cardStrings.NAME, "blue/skill/forcefield", 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND);
this.baseBlock = 12;
}
diff --git a/src/main/java/charbosses/cards/blue/EnFusion.java b/src/main/java/charbosses/cards/blue/EnFusion.java
index b828a4d27..524eabc8a 100644
--- a/src/main/java/charbosses/cards/blue/EnFusion.java
+++ b/src/main/java/charbosses/cards/blue/EnFusion.java
@@ -29,14 +29,23 @@ public EnFusion(boolean upgraded) {
}
public EnFusion() {
- super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.BASIC, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.showEvokeValue = true;
this.showEvokeOrbCount = 1;
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
alwaysDisplayText = true;
}
-
+ public EnFusion(boolean upgraded,boolean text) {
+ super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.showEvokeValue = true;
+ this.showEvokeOrbCount = 1;
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = text;
+ if (upgraded)
+ upgrade();
+ }
public void use(AbstractPlayer p, AbstractMonster m) {
for (int i = 0; i < this.magicNumber; ++i) {
this.addToBot(new EnemyChannelAction(new EnemyPlasma()));
diff --git a/src/main/java/charbosses/cards/blue/EnHologram.java b/src/main/java/charbosses/cards/blue/EnHologram.java
new file mode 100644
index 000000000..fe1924576
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnHologram.java
@@ -0,0 +1,45 @@
+package charbosses.cards.blue;
+
+import charbosses.cards.AbstractBossCard;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.Leap;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+public class EnHologram extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Hologram";
+ private static final CardStrings cardStrings;
+
+ public EnHologram() {
+ super(ID, cardStrings.NAME, "blue/skill/hologram", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.COMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND_BUFF);
+ this.baseBlock = 3;
+ this.exhaust=true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+
+ this.addToBot(new GainBlockAction(m, m, this.block));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.exhaust=false;
+ this.upgradeBlock(2);
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnHologram();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Hologram");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnHyperbeam.java b/src/main/java/charbosses/cards/blue/EnHyperbeam.java
index 12e432cf8..e9045d5d3 100644
--- a/src/main/java/charbosses/cards/blue/EnHyperbeam.java
+++ b/src/main/java/charbosses/cards/blue/EnHyperbeam.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.FocusPower;
import com.megacrit.cardcrawl.powers.LockOnPower;
import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
@@ -38,6 +39,7 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
addToBot(new AbstractGameAction() {
@Override
public void update() {
+
ArchetypeAct3OrbsNewAge.resetPretendFocus();
isDone = true;
}
diff --git a/src/main/java/charbosses/cards/blue/EnReprogram.java b/src/main/java/charbosses/cards/blue/EnReprogram.java
index 30a631feb..111161efb 100644
--- a/src/main/java/charbosses/cards/blue/EnReprogram.java
+++ b/src/main/java/charbosses/cards/blue/EnReprogram.java
@@ -11,8 +11,10 @@
import com.megacrit.cardcrawl.cards.blue.Reprogram;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.FocusPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
@@ -28,6 +30,9 @@ public EnReprogram() {
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
strengthGeneratedIfPlayed = 1;
+ if (AbstractDungeon.ascensionLevel >= 4) {
+ strengthGeneratedIfPlayed = 2;
+ }
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -39,8 +44,8 @@ public void update() {
}
});
this.addToBot(new ApplyPowerAction(m, m, new FocusPower(m, -this.magicNumber), -this.magicNumber));
- this.addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, this.magicNumber), 1));
- this.addToBot(new ApplyPowerAction(m, m, new DexterityPower(m, this.magicNumber), 1));
+ this.addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, this.magicNumber), this.magicNumber));
+ this.addToBot(new ApplyPowerAction(m, m, new DexterityPower(m, this.magicNumber), this.magicNumber));
}
public AbstractCard makeCopy() {
diff --git a/src/main/java/charbosses/cards/blue/EnTurbo.java b/src/main/java/charbosses/cards/blue/EnTurbo.java
index c5d1117d2..89cf0968d 100644
--- a/src/main/java/charbosses/cards/blue/EnTurbo.java
+++ b/src/main/java/charbosses/cards/blue/EnTurbo.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -33,7 +34,7 @@ public EnTurbo() {
public void use(AbstractPlayer p, AbstractMonster m) {
addToBot(new EnemyGainEnergyAction(this.magicNumber));
- addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
+ addToBot(new MakeTempCardInDiscardAction(new VoidCard(),1));
}
public void upgrade() {
diff --git a/src/main/java/charbosses/cards/colorless/EnBlind.java b/src/main/java/charbosses/cards/colorless/EnBlind.java
index 3b5417299..722e75b22 100644
--- a/src/main/java/charbosses/cards/colorless/EnBlind.java
+++ b/src/main/java/charbosses/cards/colorless/EnBlind.java
@@ -1,6 +1,10 @@
package charbosses.cards.colorless;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
+import charbosses.orbs.AbstractEnemyOrb;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import charbosses.powers.general.EnemyPoisonPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -11,6 +15,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePower;
+import com.megacrit.cardcrawl.powers.SadisticPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
import com.megacrit.cardcrawl.powers.WeakPower;
@@ -42,6 +47,14 @@ public void upgrade() {
}
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(SadisticPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(SadisticPower.POWER_ID).amount;
+ return "(" +count+ ")";
+ }
+ return super.overrideIntentText();
+ }
+
@Override
public int getPriority(ArrayList hand) {
return 10;
diff --git a/src/main/java/charbosses/cards/colorless/EnTrip.java b/src/main/java/charbosses/cards/colorless/EnTrip.java
index 8a2788465..da00338a2 100644
--- a/src/main/java/charbosses/cards/colorless/EnTrip.java
+++ b/src/main/java/charbosses/cards/colorless/EnTrip.java
@@ -1,6 +1,9 @@
package charbosses.cards.colorless;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import charbosses.powers.general.EnemyPoisonPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -11,6 +14,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePower;
+import com.megacrit.cardcrawl.powers.SadisticPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
@@ -46,9 +50,17 @@ public void upgrade() {
this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
this.initializeDescription();
}
+ }
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(SadisticPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(SadisticPower.POWER_ID).amount;
+ return "(" +count+ ")";
+ }
+ return super.overrideIntentText();
}
+
@Override
public int getPriority(ArrayList hand) {
return 10;
diff --git a/src/main/java/charbosses/cards/curses/EnAged.java b/src/main/java/charbosses/cards/curses/EnAged.java
index 043367b03..863372d03 100644
--- a/src/main/java/charbosses/cards/curses/EnAged.java
+++ b/src/main/java/charbosses/cards/curses/EnAged.java
@@ -40,7 +40,7 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
@Override
public void triggerWhenDrawn() {
- addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
+ addToBot(new MakeTempCardInDiscardAction(new VoidCard(), 1));
}
@Override
diff --git a/src/main/java/charbosses/cards/other/Antidote.java b/src/main/java/charbosses/cards/other/Antidote.java
index f4fe6eb6a..418a84b06 100644
--- a/src/main/java/charbosses/cards/other/Antidote.java
+++ b/src/main/java/charbosses/cards/other/Antidote.java
@@ -35,8 +35,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp () {
- upgradeMagicNumber(3);
-// upgradeBaseCost(0);
+ //upgradeMagicNumber(3);
+ upgradeBaseCost(0);
}
static {
diff --git a/src/main/java/charbosses/cards/purple/EnBrilliance.java b/src/main/java/charbosses/cards/purple/EnBrilliance.java
index 4fa37a18f..934eaf0c0 100644
--- a/src/main/java/charbosses/cards/purple/EnBrilliance.java
+++ b/src/main/java/charbosses/cards/purple/EnBrilliance.java
@@ -31,6 +31,7 @@ public EnBrilliance() {
this.magicNumber = this.baseMagicNumber;
}
+
public void applyPowers() {
int realBaseDamage = this.baseDamage;
this.baseMagicNumber = AbstractCharBoss.boss.mantraGained;
@@ -38,6 +39,7 @@ public void applyPowers() {
super.applyPowers();
this.baseDamage = realBaseDamage;
this.isDamageModified = this.damage != this.baseDamage;
+ super.applyPowers();
}
public void calculateCardDamage(AbstractMonster mo) {
diff --git a/src/main/java/charbosses/cards/purple/EnPressurePoints.java b/src/main/java/charbosses/cards/purple/EnPressurePoints.java
index a2a0d5ab1..ca3ea5548 100644
--- a/src/main/java/charbosses/cards/purple/EnPressurePoints.java
+++ b/src/main/java/charbosses/cards/purple/EnPressurePoints.java
@@ -42,9 +42,10 @@ public String overrideIntentText() {
@Override
public void use(final AbstractPlayer p, final AbstractMonster m) {
//TODO: add vfx, this below wont work, still strikes the player from left to right like you use on a monster
-// AbstractGameEffect pressure_vfx = new PressurePointEffect(p.hb.cX, p.hb.cY);
-// pressure_vfx.renderBehind = true;
-// addToBot(new VFXAction( pressure_vfx ));
+ //still probably worth using imo.
+ AbstractGameEffect pressure_vfx = new PressurePointEffect(p.hb.cX, p.hb.cY);
+ pressure_vfx.renderBehind = true;
+ addToBot(new VFXAction( pressure_vfx ));
addToBot(new ApplyPowerAction(p, m, new EnemyMarkPower(p, m, magicNumber), magicNumber));
if(countMarks()>0) {
this.addToBot(new DamageAction(p, new DamageInfo(m, countMarks(), DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.FIRE));
diff --git a/src/main/java/charbosses/cards/purple/EnTantrum.java b/src/main/java/charbosses/cards/purple/EnTantrum.java
index dd53fd391..a9a0de968 100644
--- a/src/main/java/charbosses/cards/purple/EnTantrum.java
+++ b/src/main/java/charbosses/cards/purple/EnTantrum.java
@@ -24,7 +24,7 @@ public class EnTantrum extends AbstractStanceChangeCard {
boolean realWrath = false;
public EnTantrum() {
- super(ID, cardStrings.NAME, "purple/attack/tantrum", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.PURPLE, CardRarity.COMMON, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
+ super(ID, cardStrings.NAME, "purple/attack/tantrum", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.PURPLE, CardRarity.UNCOMMON, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
this.baseDamage = 3;
this.baseMagicNumber = 3;
this.magicNumber = 3;
diff --git a/src/main/java/charbosses/cards/red/EnIntimidate.java b/src/main/java/charbosses/cards/red/EnIntimidate.java
index 861666211..a85859f4f 100644
--- a/src/main/java/charbosses/cards/red/EnIntimidate.java
+++ b/src/main/java/charbosses/cards/red/EnIntimidate.java
@@ -33,7 +33,7 @@ public class EnIntimidate extends AbstractBossCard {
public EnIntimidate() {
super(ID, cardStrings.NAME, "red/skill/intimidate", 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.RED, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY, AbstractMonster.Intent.DEBUFF);
this.exhaust = true;
- this.baseMagicNumber = 2;
+ this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
artifactConsumedIfPlayed = 1;
}
@@ -42,7 +42,7 @@ public EnIntimidate() {
public void use(final AbstractPlayer p, final AbstractMonster m) {
this.addToBot(new SFXAction("INTIMIDATE"));
this.addToBot(new VFXAction(p, new IntimidateEffect(m.hb.cX, m.hb.cY), 1.0F));
- this.addToBot(new ApplyPowerAction(p, m, new WeakPower(p, this.magicNumber + 1, false), this.magicNumber + 1, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(p, m, new WeakPower(p, this.magicNumber, true), this.magicNumber));
}
@Override
diff --git a/src/main/java/charbosses/cards/red/EnReaper.java b/src/main/java/charbosses/cards/red/EnReaper.java
index cffd46023..614bcf5da 100644
--- a/src/main/java/charbosses/cards/red/EnReaper.java
+++ b/src/main/java/charbosses/cards/red/EnReaper.java
@@ -46,6 +46,9 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
calculateCardDamage(q);
addToBot(new VampireDamageAction(q, new DamageInfo(m, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
//TODO - Technically this won't work if a modded effect has given the mushrooms Block or Buffer or something. If that ends up being a problem, we'll need a custom action here.
+
+ //todo: well Collector has a card that does this, VoidArmor iirc so maybe this is a problem and no one has noticed yet?
+ // Is it actually a problem atm? Will check later.
if (q.currentHealth <= damage){
addToBot(new WaitAction(0.1F));
addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, 1),1));
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
index 38e582d3c..ae9097ff8 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
@@ -35,10 +35,10 @@ public void updateDescription() {
@Override
public void atEndOfTurn(boolean isPlayer) {
- if (!this.owner.hasPower(ArtifactPower.POWER_ID)) {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new ArtifactPower(this.owner, this.amount), this.amount));
+ // if (!this.owner.hasPower(ArtifactPower.POWER_ID)) {
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new ArtifactPower(this.owner, this.amount), this.amount));
// AbstractDungeon.actionManager.addToBottom(new LoseEnergyAction(this.amount));
- }
+ // }
}
static {
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java
new file mode 100644
index 000000000..84c122724
--- /dev/null
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java
@@ -0,0 +1,61 @@
+package charbosses.powers.bossmechanicpowers;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.AbstractCard.CardType;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.FocusPower;
+
+
+public class DefectBiasCuriosityPower extends AbstractBossMechanicPower {
+ public static final String POWER_ID = "downfall:DefectBiasCuriosity";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ private boolean triggered = false;
+
+ public DefectBiasCuriosityPower(AbstractCreature owner) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = 1;
+ updateDescription();
+ loadRegion("bias");
+ this.type = AbstractPower.PowerType.BUFF;
+ }
+
+ public void updateDescription() {
+ if (triggered==false) {
+ this.name = (DESCRIPTIONS[3]);
+ this.description = (DESCRIPTIONS[1]);
+ }
+ else {
+ this.name = NAME;
+ this.description = (DESCRIPTIONS[2]);
+ }
+ }
+ @Override
+ public void atEndOfRound() {
+ super.atEndOfRound();
+ triggered=false;
+ updateDescription();
+ }
+ public void atEndOfTurn(boolean isPlayer) {
+ if(triggered==false)
+ addToBot(new ApplyPowerAction(this.owner, this.owner, new FocusPower(this.owner, -this.amount), -this.amount));
+ }
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.type == AbstractCard.CardType.POWER && !(card instanceof AbstractBossCard)) {
+ flash();
+ this.triggered=true;
+ updateDescription();
+ }
+ }
+}
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
index 3d7b6ba6c..d5cb20d62 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
@@ -97,7 +97,6 @@ public void stackPower(int stackAmount) {
@Override
public void atEndOfRound() {
super.atEndOfRound();
-
this.amount = 3 * LOSE_1_STRENGTH_PER_X_HP;
this.thirdused = false;
this.secondused = false;
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
index 49ce8fff6..ba09a2a72 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
@@ -5,9 +5,11 @@
package charbosses.powers.bossmechanicpowers;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
import charbosses.powers.cardpowers.EnemyAccuracyPower;
import charbosses.powers.cardpowers.EnemyMantraPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
@@ -35,11 +37,6 @@ public WatcherDivinityPower(AbstractCreature owner) {
this.type = PowerType.BUFF;
}
- @Override
- public void atStartOfTurn() {
- addToBot(new ReducePowerAction(this.owner, this.owner, EnemyMantraPower.POWER_ID, 5));
- }
-
public void updateDescription() {
this.description = DESC[0];
}
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java
new file mode 100644
index 000000000..71f2f3e24
--- /dev/null
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java
@@ -0,0 +1,47 @@
+package charbosses.powers.cardpowers;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.ui.EnemyEnergyPanel;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyCreativeAIPower extends AbstractPower {
+ public static final String POWER_ID = "Creative AI";
+ private static final PowerStrings powerStrings;
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+
+ public EnemyCreativeAIPower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = "Creative AI";
+ this.owner = owner;
+ this.amount = amount;
+ this.updateDescription();
+ this.loadRegion("ai");
+ }
+
+ public void updateDescription() {
+ if (this.amount > 1) {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[2];
+ } else {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+ }
+
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("Creative AI");
+ NAME = powerStrings.NAME;
+ DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ }
+}
+
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java
new file mode 100644
index 000000000..431a63541
--- /dev/null
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java
@@ -0,0 +1,42 @@
+package charbosses.powers.cardpowers;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.ui.EnemyEnergyPanel;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyElectroPower extends AbstractPower {
+ public static final String POWER_ID = "Electro";
+ private static final PowerStrings powerStrings;
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+
+ public EnemyElectroPower(AbstractCreature owner) {
+ this.name = NAME;
+ this.ID = "Electro";
+ this.owner = owner;
+ this.updateDescription();
+ this.loadRegion("mastery");
+ }
+
+ public void updateDescription() {
+ /* 23 */ this.description = DESCRIPTIONS[0];
+ /* */ }
+
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("Electro");
+ NAME = powerStrings.NAME;
+ DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ }
+}
+
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
index 38a4abd97..4dc1ec079 100644
--- a/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
@@ -34,7 +34,7 @@ public EnemyFearNoEvilPower(AbstractCreature owner) {
this.owner = owner;
isActive = false;
this.updateDescription();
-// this.loadRegion("curiosity"); // TODO: Region
+// this.loadRegion("curiosity"); //
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java
index 78cc56693..2ed5cc3c3 100644
--- a/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java
@@ -1,7 +1,10 @@
package charbosses.powers.cardpowers;
import charbosses.actions.unique.EnemyChangeStanceAction;
import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.GameActionManager;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
@@ -10,6 +13,7 @@
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.AbstractPower.PowerType;
+import com.megacrit.cardcrawl.powers.StrengthPower;
public class EnemyMantraPower extends AbstractPower {
public static final String POWER_ID = "Mantra";
@@ -30,6 +34,38 @@ public EnemyMantraPower(AbstractCreature owner, int amount) {
}
}
+ @Override
+ public void atStartOfTurn() {
+ System.out.println("atStartOfTurn started...");
+
+ this.flash();
+
+ int initialAmount = this.amount;
+
+ System.out.println("Initial amount of Mantra: " + initialAmount);
+
+ addToBot(new ReducePowerAction(this.owner, this.owner, EnemyMantraPower.POWER_ID, 4));
+ System.out.println("DEBUG: Reducing by 4...");
+
+ addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ System.out.println("Following up.");
+
+ int reducedAmount = Math.min(4, initialAmount);
+ System.out.println("Predicted amount removed: " + reducedAmount);
+
+ int previousMantraGained = AbstractCharBoss.boss.mantraGained;
+ AbstractCharBoss.boss.mantraGained -= reducedAmount;
+ System.out.println("MantraGained reduced from " + previousMantraGained + " to " + AbstractCharBoss.boss.mantraGained);
+
+ this.isDone = true;
+ System.out.println("atStartOfTurn completed.");
+ }
+ });
+ }
+
+
public void playApplyPowerSfx() {
CardCrawlGame.sound.play("POWER_MANTRA", 0.05F);
}
@@ -41,6 +77,7 @@ public void updateDescription() {
public void stackPower(int stackAmount) {
super.stackPower(stackAmount);
if (this.amount >= 10) {
+ this.addToBot(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, 3), 3));
this.addToTop(new EnemyChangeStanceAction("Divinity"));
this.amount -= 10;
if (this.amount <= 0) {
diff --git a/src/main/java/charbosses/powers/general/EnemyMarkPower.java b/src/main/java/charbosses/powers/general/EnemyMarkPower.java
index 20f5ed251..9e0a2a781 100644
--- a/src/main/java/charbosses/powers/general/EnemyMarkPower.java
+++ b/src/main/java/charbosses/powers/general/EnemyMarkPower.java
@@ -1,29 +1,29 @@
-package charbosses.powers.general;
-
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.localization.PowerStrings;
-import com.megacrit.cardcrawl.powers.AbstractPower;
-
-public class EnemyMarkPower extends AbstractPower {
- public static final String POWER_ID = "PathToVictoryPower";
- private static final PowerStrings powerStrings;
- private AbstractCreature source;
- public EnemyMarkPower(AbstractCreature owner, AbstractCreature source, int amt) {
- this.name = powerStrings.NAME;
- this.ID = "PathToVictoryPower";
- this.owner = owner;
- this.amount = amt;
- this.source = source;
- this.type = PowerType.DEBUFF;
- this.updateDescription();
- this.loadRegion("pressure_points");
- }
- public void updateDescription() {
- this.description = powerStrings.DESCRIPTIONS[0] + this.amount + powerStrings.DESCRIPTIONS[1];
- }
-
- static {
- powerStrings = CardCrawlGame.languagePack.getPowerStrings("PathToVictoryPower");
- }
+package charbosses.powers.general;
+
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyMarkPower extends AbstractPower {
+ public static final String POWER_ID = "PathToVictoryPower";
+ private static final PowerStrings powerStrings;
+ private AbstractCreature source;
+ public EnemyMarkPower(AbstractCreature owner, AbstractCreature source, int amt) {
+ this.name = powerStrings.NAME;
+ this.ID = "PathToVictoryPower";
+ this.owner = owner;
+ this.amount = amt;
+ this.source = source;
+ this.type = PowerType.DEBUFF;
+ this.updateDescription();
+ this.loadRegion("pressure_points");
+ }
+ public void updateDescription() {
+ this.description = powerStrings.DESCRIPTIONS[0] + this.amount + powerStrings.DESCRIPTIONS[1];
+ }
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("PathToVictoryPower");
+ }
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_BottledLightning.java b/src/main/java/charbosses/relics/CBR_BottledLightning.java
new file mode 100644
index 000000000..064a0d871
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_BottledLightning.java
@@ -0,0 +1,30 @@
+package charbosses.relics;
+
+import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.BottledLightning;
+import com.megacrit.cardcrawl.relics.SmilingMask;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Random;
+
+public class CBR_BottledLightning extends AbstractCharbossRelic {
+ public static final String ID = "Bottled Lightning";
+
+ public CBR_BottledLightning() {
+ super(new BottledLightning());
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_BottledLightning();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_NuclearBattery.java b/src/main/java/charbosses/relics/CBR_NuclearBattery.java
new file mode 100644
index 000000000..e73642c84
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_NuclearBattery.java
@@ -0,0 +1,32 @@
+package charbosses.relics;
+
+import charbosses.actions.orb.EnemyChannelAction;
+import charbosses.orbs.EnemyLightning;
+import charbosses.orbs.EnemyPlasma;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.CrackedCore;
+import com.megacrit.cardcrawl.relics.NuclearBattery;
+
+public class CBR_NuclearBattery extends AbstractCharbossRelic {
+ public static final String ID = "NuclearBattery";
+ public CBR_NuclearBattery() {
+ super(new NuclearBattery());
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.flash();
+ this.addToTop(new EnemyChannelAction(new EnemyPlasma()));
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_NuclearBattery();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_SmilingMask.java b/src/main/java/charbosses/relics/CBR_SmilingMask.java
index ad5140cce..06ec13cb8 100644
--- a/src/main/java/charbosses/relics/CBR_SmilingMask.java
+++ b/src/main/java/charbosses/relics/CBR_SmilingMask.java
@@ -19,7 +19,7 @@ public CBR_SmilingMask() {
@Override
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0] + 2 + this.DESCRIPTIONS[1];
+ return this.DESCRIPTIONS[0] + 50 + this.DESCRIPTIONS[1];
}
@Override
diff --git a/src/main/java/charbosses/relics/CBR_Toolbox.java b/src/main/java/charbosses/relics/CBR_Toolbox.java
new file mode 100644
index 000000000..8993a1b28
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_Toolbox.java
@@ -0,0 +1,22 @@
+package charbosses.relics;
+
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Orrery;
+import com.megacrit.cardcrawl.relics.Toolbox;
+
+public class CBR_Toolbox extends AbstractCharbossRelic {
+ public static final String ID = "Toolbox";
+
+ public CBR_Toolbox() {
+ super(new Toolbox());
+ }
+
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_Toolbox();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/collector/CollectorCollection.java b/src/main/java/collector/CollectorCollection.java
index f21033c12..05efc0336 100644
--- a/src/main/java/collector/CollectorCollection.java
+++ b/src/main/java/collector/CollectorCollection.java
@@ -140,7 +140,7 @@ public class CollectorCollection {
collectionPool.put(CorruptHeart.ID, FinalBossCard.ID);
collectionPool.put(TheCollector.ID, CollectorCard.ID);
- collectionPool.put(SlimeBoss.ID, PrepareCrush.ID);
+ collectionPool.put(SlimeBoss.ID, SuperPrepareCrush.ID);
collectionPool.put(TimeEater.ID, Chronoboost.ID);
collectionPool.put(AwakenedOne.ID, AwakenDeath.ID);
collectionPool.put(TheGuardian.ID, GuardianWhirl.ID);
diff --git a/src/main/java/collector/CollectorMod.java b/src/main/java/collector/CollectorMod.java
index ec818a647..05729c506 100644
--- a/src/main/java/collector/CollectorMod.java
+++ b/src/main/java/collector/CollectorMod.java
@@ -171,7 +171,7 @@ public void addPotions() {
BaseMod.addPotion(MiniCursePotion.class, Color.FIREBRICK, Color.GRAY, Color.TAN, MiniCursePotion.POTION_ID, CollectorChar.Enums.THE_COLLECTOR);
BaseMod.addPotion(ReservePotion.class, Color.RED, Color.GREEN, Color.CLEAR, ReservePotion.POTION_ID, CollectorChar.Enums.THE_COLLECTOR);
BaseMod.addPotion(DebuffDoublePotion.class, Color.CORAL, Color.PURPLE, Color.MAROON, DebuffDoublePotion.POTION_ID, CollectorChar.Enums.THE_COLLECTOR);
-
+ BaseMod.addPotion(TempHPPotion.class, Color.BLACK, Color.PURPLE, Color.GRAY, TempHPPotion.POTION_ID, CollectorChar.Enums.THE_COLLECTOR);
// BanSharedContentPatch.registerRunLockedPotion(CollectorChar.Enums.THE_COLLECTOR, TempHPPotion.POTION_ID);
if (Loader.isModLoaded("widepotions")) {
@@ -186,25 +186,25 @@ public void addPotions() {
public void receiveSetUnlocks() {
downfallMod.registerUnlockSuite(
- BrainDrain.ID,
+ Forgery.ID,
DarkApotheosis.ID,
- GreenpyreLocus.ID,
+ ShadowDaggers.ID,
- Omen.ID,
- RotwoodKindling.ID,
- BlackBindings.ID,
+ CursedWail.ID,
+ InflictAgony.ID,
+ Karma.ID,
- ReceiveTribute.ID,
+ GreenpyreLocus.ID,
+ Omen.ID,
DoubleTrouble.ID,
- Extricate.ID,
+ Suffering.ID,
JadeRing.ID,
- ThimbleHelm.ID,
- BlockedChakra.ID,
+ MiniCurse.ID,
+ StashAway.ID,
ForbiddenFruit.ID,
- Incense.ID,
- RoughDiamond.ID,
+ FingerOfDeath.ID,
CollectorChar.Enums.THE_COLLECTOR
);
diff --git a/src/main/java/collector/actions/DrawCardFromCollectionAction.java b/src/main/java/collector/actions/DrawCardFromCollectionAction.java
index fa4332578..551915d0f 100644
--- a/src/main/java/collector/actions/DrawCardFromCollectionAction.java
+++ b/src/main/java/collector/actions/DrawCardFromCollectionAction.java
@@ -4,11 +4,17 @@
import collector.CollectorCollection;
import collector.cardmods.CollectedCardMod;
import collector.cards.collectibles.LuckyWick;
+import collector.patches.CollectorBottleField;
+import collector.relics.BottledCollectible;
import collector.relics.HolidayCoal;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.FrozenEye;
+import guardian.relics.PickAxe;
+import hermit.relics.BartenderGlass;
+import theHexaghost.relics.CandleOfCauterizing;
import static collector.util.Wiz.att;
@@ -20,7 +26,18 @@ public DrawCardFromCollectionAction() {
@Override
public void update() {
if (!CollectorCollection.combatCollection.isEmpty()) {
- AbstractCard tar = CollectorCollection.combatCollection.getTopCard();
+ AbstractCard tar = CollectorCollection.combatCollection.getRandomCard(AbstractDungeon.cardRandomRng);
+ if(AbstractDungeon.player.hasRelic(FrozenEye.ID)) {
+ tar = CollectorCollection.combatCollection.getTopCard();
+ }
+
+ if(AbstractDungeon.player.hasRelic(BottledCollectible.ID)) {
+ if ((AbstractDungeon.player.getRelic(BottledCollectible.ID).counter == 0)) {
+ tar = CollectorCollection.combatCollection.getTopCard();
+ AbstractDungeon.player.getRelic(BottledCollectible.ID).onTrigger();
+ }
+ }
+
CollectorCollection.combatCollection.removeCard(tar);
AbstractDungeon.player.drawPile.addToTop(tar);
att(new DrawCardAction(1));
diff --git a/src/main/java/collector/actions/ScorchingRayAction.java b/src/main/java/collector/actions/ScorchingRayAction.java
index 41682923c..fd19b20d4 100644
--- a/src/main/java/collector/actions/ScorchingRayAction.java
+++ b/src/main/java/collector/actions/ScorchingRayAction.java
@@ -1,36 +1,65 @@
-package collector.actions;
-
-import collector.effects.ColoredVerticalAttackEffect;
-import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-
-import static collector.util.Wiz.att;
-
-public class ScorchingRayAction extends AbstractGameAction {
- private final AbstractCard card;
-
- public ScorchingRayAction(AbstractCard card) {
- this.card = card;
- this.actionType = ActionType.DAMAGE;
- this.startDuration = 0.1F;
- this.duration = this.startDuration;
- }
-
- public void update() {
- isDone = true;
- AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
- if (q != null) {
- card.applyPowers();
- card.calculateCardDamage(q);
- att(new DamageAction(q, new DamageInfo(AbstractDungeon.player, card.damage, card.damageTypeForTurn), AttackEffect.NONE));
- att(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
- }
- }
-}
+//package collector.actions;
+//
+//import champ.stances.BerserkerStance;
+//import collector.effects.ColoredVerticalAttackEffect;
+//import com.badlogic.gdx.graphics.Color;
+//import com.badlogic.gdx.math.MathUtils;
+//import com.megacrit.cardcrawl.actions.AbstractGameAction;
+//import com.megacrit.cardcrawl.actions.animations.VFXAction;
+//import com.megacrit.cardcrawl.actions.common.DamageAction;
+//import com.megacrit.cardcrawl.cards.AbstractCard;
+//import com.megacrit.cardcrawl.cards.DamageInfo;
+//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+//import com.megacrit.cardcrawl.monsters.AbstractMonster;
+//import com.megacrit.cardcrawl.powers.PenNibPower;
+//import com.megacrit.cardcrawl.powers.VulnerablePower;
+//import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+//import com.megacrit.cardcrawl.stances.DivinityStance;
+//import com.megacrit.cardcrawl.stances.WrathStance;
+//import gremlin.actions.PseudoDamageRandomEnemyAction;
+//import gremlin.relics.FragmentationGrenade;
+//
+//import static collector.util.Wiz.att;
+//
+//public class ScorchingRayAction extends AbstractGameAction {
+// private final AbstractCard card;
+// private static int stuff;
+//
+// public ScorchingRayAction(AbstractCard card, int cool) {
+// this.card = card;
+// this.actionType = ActionType.DAMAGE;
+// this.startDuration = 0.1F;
+// this.duration = this.startDuration;
+// stuff = cool;
+// }
+//
+// public void update() {
+// isDone = true;
+// AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+// if (q != null) {
+// card.applyPowers();
+// card.calculateCardDamage(q);
+// int storage = stuff;
+//
+// if (q.hasPower(VulnerablePower.POWER_ID)) {
+// stuff = (stuff + (stuff/2));
+// }
+//
+// if (AbstractDungeon.player.hasPower(PenNibPower.POWER_ID)) {
+// stuff = stuff * 2;
+// }
+//
+// if (AbstractDungeon.player.stance.ID.equals(WrathStance.STANCE_ID)) {
+// stuff = stuff * 2;
+// }
+//
+// if (AbstractDungeon.player.stance.ID.equals(DivinityStance.STANCE_ID)) {
+// stuff = stuff * 3;
+// }
+//
+// att(new PseudoDamageRandomEnemyAction(q, new DamageInfo(AbstractDungeon.player, card.damage + stuff, DamageInfo.DamageType.NORMAL), AttackEffect.FIRE));
+// att(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
+// stuff = storage;
+// }
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/collector/actions/SeekFromCollectionAction.java b/src/main/java/collector/actions/SeekFromCollectionAction.java
index fb618c953..6c1b60c0f 100644
--- a/src/main/java/collector/actions/SeekFromCollectionAction.java
+++ b/src/main/java/collector/actions/SeekFromCollectionAction.java
@@ -1,5 +1,6 @@
package collector.actions;
+import basemod.BaseMod;
import collector.CollectorCollection;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -38,7 +39,7 @@ public void update() {
this.isDone = true;
} else if (tmp.size() == 1) {
card = tmp.getTopCard();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -59,7 +60,7 @@ public void update() {
} else if (tmp.size() <= this.amount) {
for(int i = 0; i < tmp.size(); ++i) {
card = tmp.getNCardFromTop(i);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -93,7 +94,7 @@ public void update() {
for (AbstractCard abstractCard : AbstractDungeon.gridSelectScreen.selectedCards) {
card = abstractCard;
card.unhover();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
diff --git a/src/main/java/collector/cards/Arrogance.java b/src/main/java/collector/cards/Arrogance.java
index 017a8d536..f1e75be60 100644
--- a/src/main/java/collector/cards/Arrogance.java
+++ b/src/main/java/collector/cards/Arrogance.java
@@ -14,7 +14,7 @@ public class Arrogance extends AbstractCollectorCard {
public Arrogance() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 7;
- baseMagicNumber = magicNumber = 3;
+ baseMagicNumber = magicNumber = 4;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Billow.java b/src/main/java/collector/cards/Billow.java
index ac6d1316c..e2ab37974 100644
--- a/src/main/java/collector/cards/Billow.java
+++ b/src/main/java/collector/cards/Billow.java
@@ -13,7 +13,7 @@ public class Billow extends AbstractCollectorCard {
public Billow() {
super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 20;
+ baseBlock = 18;
cardsToPreview = new Bellow();
}
diff --git a/src/main/java/collector/cards/Blightning.java b/src/main/java/collector/cards/Blightning.java
index eb0984832..861b82a0b 100644
--- a/src/main/java/collector/cards/Blightning.java
+++ b/src/main/java/collector/cards/Blightning.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.LightningEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -22,6 +23,7 @@ public Blightning() {
baseDamage = 6;
baseMagicNumber = magicNumber = 6;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Bonfire.java b/src/main/java/collector/cards/Bonfire.java
index 9a408c707..fb219d826 100644
--- a/src/main/java/collector/cards/Bonfire.java
+++ b/src/main/java/collector/cards/Bonfire.java
@@ -16,7 +16,7 @@ public class Bonfire extends AbstractCollectorCard {
public Bonfire() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 16;
+ baseBlock = 12;
isPyre();
}
diff --git a/src/main/java/collector/cards/BrainDrain.java b/src/main/java/collector/cards/BrainDrain.java
index 8468e486d..a66674f85 100644
--- a/src/main/java/collector/cards/BrainDrain.java
+++ b/src/main/java/collector/cards/BrainDrain.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.LightBulbEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -21,6 +22,7 @@ public BrainDrain() {
super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
exhaust = true;
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/CantTouchThis.java b/src/main/java/collector/cards/CantTouchThis.java
index 154668feb..e2008c14c 100644
--- a/src/main/java/collector/cards/CantTouchThis.java
+++ b/src/main/java/collector/cards/CantTouchThis.java
@@ -13,8 +13,8 @@ public class CantTouchThis extends AbstractCollectorCard {
// intellij stuff power, self, uncommon, , , , , 1, 1
public CantTouchThis() {
- super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 1;
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
baseSecondMagic = secondMagic = 2;
}
diff --git a/src/main/java/collector/cards/Condemn.java b/src/main/java/collector/cards/Condemn.java
index 7cf05acb6..7ef5e5a26 100644
--- a/src/main/java/collector/cards/Condemn.java
+++ b/src/main/java/collector/cards/Condemn.java
@@ -18,7 +18,7 @@ public class Condemn extends AbstractCollectorCard {
public Condemn() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 1;
- baseSecondMagic = secondMagic = 4;
+ baseSecondMagic = secondMagic = 5;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/CursedWail.java b/src/main/java/collector/cards/CursedWail.java
index b99896da7..a3c8d87ec 100644
--- a/src/main/java/collector/cards/CursedWail.java
+++ b/src/main/java/collector/cards/CursedWail.java
@@ -18,7 +18,7 @@ public class CursedWail extends AbstractCollectorCard {
public CursedWail() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseMagicNumber = magicNumber = 8;
+ baseMagicNumber = magicNumber = 9;
baseSecondMagic = secondMagic = 1;
exhaust = true;
}
diff --git a/src/main/java/collector/cards/DarkApotheosis.java b/src/main/java/collector/cards/DarkApotheosis.java
index ceaf54584..4205502e2 100644
--- a/src/main/java/collector/cards/DarkApotheosis.java
+++ b/src/main/java/collector/cards/DarkApotheosis.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -25,6 +26,7 @@ public class DarkApotheosis extends AbstractCollectorCard {
public DarkApotheosis() {
super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DarkLordForm.java b/src/main/java/collector/cards/DarkLordForm.java
index f1782f87a..e77dfd319 100644
--- a/src/main/java/collector/cards/DarkLordForm.java
+++ b/src/main/java/collector/cards/DarkLordForm.java
@@ -1,5 +1,6 @@
package collector.cards;
+import basemod.helpers.BaseModCardTags;
import collector.effects.GreenThirdEyeEffect;
import collector.powers.DarkLordFormPower;
import collector.powers.DarkLordFormPowerPlus;
@@ -18,6 +19,7 @@ public class DarkLordForm extends AbstractCollectorCard {
public DarkLordForm() {
super(ID, 4, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
cardsToPreview = new YouAreMine();
+ tags.add(BaseModCardTags.FORM);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Darkstorm.java b/src/main/java/collector/cards/Darkstorm.java
index bdf358a5d..6542e440d 100644
--- a/src/main/java/collector/cards/Darkstorm.java
+++ b/src/main/java/collector/cards/Darkstorm.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -19,6 +20,7 @@ public Darkstorm() {
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Blightning();
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DoMayhem.java b/src/main/java/collector/cards/DoMayhem.java
index d99a8566f..120235cda 100644
--- a/src/main/java/collector/cards/DoMayhem.java
+++ b/src/main/java/collector/cards/DoMayhem.java
@@ -1,4 +1,4 @@
-/*
+package collector.cards;/*
package collector.cards;
import collector.powers.DoMayhemPower;
diff --git a/src/main/java/collector/cards/DoubleTrouble.java b/src/main/java/collector/cards/DoubleTrouble.java
index e4ff04c91..25accdc9d 100644
--- a/src/main/java/collector/cards/DoubleTrouble.java
+++ b/src/main/java/collector/cards/DoubleTrouble.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.animations.AnimateHopAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public class DoubleTrouble extends AbstractCollectorCard {
public DoubleTrouble() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DragonsTrove.java b/src/main/java/collector/cards/DragonsTrove.java
index 0d23b66e4..549ae4bd3 100644
--- a/src/main/java/collector/cards/DragonsTrove.java
+++ b/src/main/java/collector/cards/DragonsTrove.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,6 +19,7 @@ public DragonsTrove() {
baseMagicNumber = magicNumber = 1;
exhaust = true;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/FeelMyPain.java b/src/main/java/collector/cards/FeelMyPain.java
index df7cdbb44..4d6ffe521 100644
--- a/src/main/java/collector/cards/FeelMyPain.java
+++ b/src/main/java/collector/cards/FeelMyPain.java
@@ -13,7 +13,7 @@ public class FeelMyPain extends AbstractCollectorCard {
public FeelMyPain() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 3;
+ baseMagicNumber = magicNumber = 4;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/FingerOfDeath.java b/src/main/java/collector/cards/FingerOfDeath.java
index bade643e6..4ec49280e 100644
--- a/src/main/java/collector/cards/FingerOfDeath.java
+++ b/src/main/java/collector/cards/FingerOfDeath.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,7 +17,8 @@ public class FingerOfDeath extends AbstractCollectorCard {
public FingerOfDeath() {
super(ID, 4, CardType.SKILL, CardRarity.RARE, CardTarget.ENEMY);
- baseMagicNumber = magicNumber = 50;
+ baseMagicNumber = magicNumber = 60;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Forgery.java b/src/main/java/collector/cards/Forgery.java
index d3589333c..35c3e294b 100644
--- a/src/main/java/collector/cards/Forgery.java
+++ b/src/main/java/collector/cards/Forgery.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -19,9 +20,10 @@ public class Forgery extends AbstractCollectorCard {
// intellij stuff attack, enemy, common, 9, 3, , , ,
public Forgery() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 8;
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/GreenpyreLocus.java b/src/main/java/collector/cards/GreenpyreLocus.java
index bb9c7826f..c7d697a0a 100644
--- a/src/main/java/collector/cards/GreenpyreLocus.java
+++ b/src/main/java/collector/cards/GreenpyreLocus.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -21,8 +22,9 @@ public class GreenpyreLocus extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , , , 1, 1
public GreenpyreLocus() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Heatwave.java b/src/main/java/collector/cards/Heatwave.java
index d3b833d57..f055658e5 100644
--- a/src/main/java/collector/cards/Heatwave.java
+++ b/src/main/java/collector/cards/Heatwave.java
@@ -18,7 +18,7 @@ public class Heatwave extends AbstractCollectorCard {
public Heatwave() {
super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseDamage = 4;
+ baseDamage = 5;
cardsToPreview = new Ember();
isMultiDamage = true;
}
diff --git a/src/main/java/collector/cards/HoardersStrike.java b/src/main/java/collector/cards/HoardersStrike.java
index e9f35c68b..69718f6ce 100644
--- a/src/main/java/collector/cards/HoardersStrike.java
+++ b/src/main/java/collector/cards/HoardersStrike.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,8 +19,9 @@ public class HoardersStrike extends AbstractCollectorCard {
public HoardersStrike() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 15;
+ baseDamage = 16;
tags.add(CardTags.STRIKE);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -39,6 +41,6 @@ public void update() {
}
public void upp() {
- upgradeDamage(5);
+ upgradeDamage(4);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/IronbarkKindling.java b/src/main/java/collector/cards/IronbarkKindling.java
index 9b60124c7..a16426797 100644
--- a/src/main/java/collector/cards/IronbarkKindling.java
+++ b/src/main/java/collector/cards/IronbarkKindling.java
@@ -13,7 +13,7 @@ public class IronbarkKindling extends AbstractCollectorCard {
public IronbarkKindling() {
super(ID, -2, CardType.SKILL, CardRarity.COMMON, CardTarget.NONE);
- baseBlock = 8;
+ baseBlock = 9;
tags.add(expansionContentMod.UNPLAYABLE);
}
diff --git a/src/main/java/collector/cards/ItMattersNot.java b/src/main/java/collector/cards/ItMattersNot.java
index 7f17b0bab..40815c467 100644
--- a/src/main/java/collector/cards/ItMattersNot.java
+++ b/src/main/java/collector/cards/ItMattersNot.java
@@ -15,7 +15,7 @@ public class ItMattersNot extends AbstractCollectorCard {
public ItMattersNot() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = 12;
+ baseBlock = 13;
baseMagicNumber = magicNumber = 1;
}
diff --git a/src/main/java/collector/cards/JadedJabs.java b/src/main/java/collector/cards/JadedJabs.java
index d22ec8019..0e46a1f37 100644
--- a/src/main/java/collector/cards/JadedJabs.java
+++ b/src/main/java/collector/cards/JadedJabs.java
@@ -47,6 +47,7 @@ public void onPyred(AbstractCard card) {
}
public void upp() {
+ upgradeDamage(2);
upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/LanternFlare.java b/src/main/java/collector/cards/LanternFlare.java
index 197792caa..badf4b968 100644
--- a/src/main/java/collector/cards/LanternFlare.java
+++ b/src/main/java/collector/cards/LanternFlare.java
@@ -18,9 +18,9 @@ public class LanternFlare extends AbstractCollectorCard {
// intellij stuff attack, all_enemy, uncommon, 12, 3, , , 12, 3
public LanternFlare() {
- super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 12;
- baseSecondMagic = secondMagic = 4;
+ baseSecondMagic = secondMagic = 3;
isPyre();
}
diff --git a/src/main/java/collector/cards/Misdirect.java b/src/main/java/collector/cards/Misdirect.java
index 7e53c2323..881120ed0 100644
--- a/src/main/java/collector/cards/Misdirect.java
+++ b/src/main/java/collector/cards/Misdirect.java
@@ -25,6 +25,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeBlock(3);
+ upgradeBlock(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/MysteryWeaving.java b/src/main/java/collector/cards/MysteryWeaving.java
index 37c377b55..d7eb4e2d0 100644
--- a/src/main/java/collector/cards/MysteryWeaving.java
+++ b/src/main/java/collector/cards/MysteryWeaving.java
@@ -13,8 +13,8 @@ public class MysteryWeaving extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , 10, 3, ,
public MysteryWeaving() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 8;
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = 9;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Omen.java b/src/main/java/collector/cards/Omen.java
index 1e2b53a8c..acc0f334e 100644
--- a/src/main/java/collector/cards/Omen.java
+++ b/src/main/java/collector/cards/Omen.java
@@ -3,6 +3,7 @@
import collector.powers.OmenPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -12,8 +13,9 @@ public class Omen extends AbstractCollectorCard {
// intellij stuff power, self, rare, , , , , 20, 5
public Omen() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -21,7 +23,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- isInnate = true;
- uDesc();
+ upgradeBaseCost(1);
+ //isInnate = true;
+ //uDesc();
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/ReceiveTribute.java b/src/main/java/collector/cards/ReceiveTribute.java
index 64a584312..3ecc48c41 100644
--- a/src/main/java/collector/cards/ReceiveTribute.java
+++ b/src/main/java/collector/cards/ReceiveTribute.java
@@ -1,7 +1,10 @@
package collector.cards;
+import automaton.AutomatonChar;
import basemod.cardmods.RetainMod;
import basemod.helpers.CardModifierManager;
+import champ.ChampChar;
+import collector.CollectorChar;
import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsCenteredAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -9,7 +12,11 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.cardmods.PropertiesMod;
import expansioncontent.expansionContentMod;
+import guardian.characters.GuardianCharacter;
+import slimebound.characters.SlimeboundCharacter;
+import theHexaghost.TheHexaghost;
import java.util.ArrayList;
@@ -34,8 +41,24 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if (possibilities == null) {
possibilities = new ArrayList<>();
for (AbstractCard q : CardLibrary.getAllCards()) {
- if (q.rarity != CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
- possibilities.add(q.makeCopy());
+ if (q.rarity != AbstractCard.CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY) && !q.hasTag(AbstractCard.CardTags.HEALING)) {
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter) {
+ if (q.hasTag(expansionContentMod.STUDY_SLIMEBOSS)){continue;}
+ } else if (AbstractDungeon.player instanceof TheHexaghost) {
+ if(q.hasTag(expansionContentMod.STUDY_HEXAGHOST)){continue;}
+ } else if (AbstractDungeon.player instanceof GuardianCharacter) {
+ if(q.hasTag(expansionContentMod.STUDY_GUARDIAN)){continue;}
+ } else if (AbstractDungeon.player instanceof ChampChar) {
+ if(q.hasTag(expansionContentMod.STUDY_CHAMP)){continue;}
+ } else if (AbstractDungeon.player instanceof AutomatonChar) {
+ if(q.hasTag(expansionContentMod.STUDY_AUTOMATON)){continue;}
+ } else if (AbstractDungeon.player instanceof CollectorChar) {
+ if(q.hasTag(expansionContentMod.STUDY_COLLECTOR)){continue;}
+ }
+
+ AbstractCard r = q.makeCopy();
+ possibilities.add(r);
}
}
}
@@ -44,7 +67,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
ArrayList choices = new ArrayList<>();
for (int i = 0; i < magicNumber; i++) {
AbstractCard toAdd = remaining.remove(AbstractDungeon.cardRandomRng.random(remaining.size() - 1)).makeCopy();
- CardModifierManager.addModifier(toAdd, new RetainMod());
+ if (!toAdd.selfRetain) {
+ CardModifierManager.addModifier(toAdd, new PropertiesMod(PropertiesMod.supportedProperties.RETAIN, false));
+ }
choices.add(toAdd);
}
addToBot(new SelectCardsCenteredAction(choices, cardStrings.EXTENDED_DESCRIPTION[0], (cards) -> {
diff --git a/src/main/java/collector/cards/Roast.java b/src/main/java/collector/cards/Roast.java
index 1a3bad59b..ab81cc879 100644
--- a/src/main/java/collector/cards/Roast.java
+++ b/src/main/java/collector/cards/Roast.java
@@ -12,7 +12,7 @@ public class Roast extends AbstractCollectorCard {
public Roast() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseDamage = 6;
+ baseDamage = 4;
isPyre();
}
diff --git a/src/main/java/collector/cards/ScorchingRay.java b/src/main/java/collector/cards/ScorchingRay.java
index 01641844b..b58587209 100644
--- a/src/main/java/collector/cards/ScorchingRay.java
+++ b/src/main/java/collector/cards/ScorchingRay.java
@@ -1,27 +1,41 @@
package collector.cards;
import automaton.actions.EasyXCostAction;
-import collector.actions.ScorchingRayAction;
+import collector.effects.ColoredVerticalAttackEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import gremlin.actions.PseudoDamageRandomEnemyAction;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
+import static collector.util.Wiz.att;
public class ScorchingRay extends AbstractCollectorCard {
public final static String ID = makeID(ScorchingRay.class.getSimpleName());
- // intellij stuff attack, enemy, common, 4, 1, , , 4,
+ // intellij stuff attack, enemy, common, 4, 1, , , 4,
public ScorchingRay() {
super(ID, -1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
baseDamage = 8;
+
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new EasyXCostAction(this, (effect, params) -> {
+ att(new EasyXCostAction(this, (effect, params) -> {
for (int i = 0; i < effect; i++) {
- atb(new ScorchingRayAction(this));
+ //ScorchingRayAction couldn't cut it.
+ AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+ atb(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
+ this.addToBot(new AttackDamageRandomEnemyAction(this, AbstractGameAction.AttackEffect.FIRE));
}
return true;
}));
diff --git a/src/main/java/collector/cards/ShadowDaggers.java b/src/main/java/collector/cards/ShadowDaggers.java
index 48f72a56c..4dc0e2fe9 100644
--- a/src/main/java/collector/cards/ShadowDaggers.java
+++ b/src/main/java/collector/cards/ShadowDaggers.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -14,8 +15,9 @@ public class ShadowDaggers extends AbstractCollectorCard {
public ShadowDaggers() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = 4;
+ baseDamage = 3;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/ShootingStar.java b/src/main/java/collector/cards/ShootingStar.java
index a21d32438..69c18d8a9 100644
--- a/src/main/java/collector/cards/ShootingStar.java
+++ b/src/main/java/collector/cards/ShootingStar.java
@@ -4,6 +4,7 @@
import collector.powers.ShootingStarPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ShootingStar extends AbstractCollectorCard {
public ShootingStar() {
super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Soulforge.java b/src/main/java/collector/cards/Soulforge.java
index b53cd9dbe..3c2f76061 100644
--- a/src/main/java/collector/cards/Soulforge.java
+++ b/src/main/java/collector/cards/Soulforge.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,9 +21,10 @@ public class Soulforge extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , 8, 3, ,
public Soulforge() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/SpiritLeech.java b/src/main/java/collector/cards/SpiritLeech.java
index 69c2eb337..fc26524de 100644
--- a/src/main/java/collector/cards/SpiritLeech.java
+++ b/src/main/java/collector/cards/SpiritLeech.java
@@ -22,8 +22,8 @@ public class SpiritLeech extends AbstractCollectorCard {
public SpiritLeech() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseDamage = 12;
- baseBlock = 10;
+ baseDamage = 13;
+ baseBlock = 11;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/StashAway.java b/src/main/java/collector/cards/StashAway.java
index dbe775ae5..184724628 100644
--- a/src/main/java/collector/cards/StashAway.java
+++ b/src/main/java/collector/cards/StashAway.java
@@ -14,7 +14,7 @@ public class StashAway extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , , , ,
public StashAway() {
- super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, -1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
baseBlock = 4;
exhaust = true;
}
diff --git a/src/main/java/collector/cards/Torchbearer.java b/src/main/java/collector/cards/Torchbearer.java
index 6fff104e4..4a92c67f4 100644
--- a/src/main/java/collector/cards/Torchbearer.java
+++ b/src/main/java/collector/cards/Torchbearer.java
@@ -20,9 +20,6 @@ public Torchbearer() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- if (upgraded){
- this.exhaust = TempHPField.tempHp.get(p) > 0;
- }
atb(new AddTemporaryHPAction(p, p, magicNumber));
}
diff --git a/src/main/java/collector/cards/VoidArmor.java b/src/main/java/collector/cards/VoidArmor.java
index d961e798f..be2448eca 100644
--- a/src/main/java/collector/cards/VoidArmor.java
+++ b/src/main/java/collector/cards/VoidArmor.java
@@ -19,7 +19,7 @@ public class VoidArmor extends AbstractCollectorCard {
public VoidArmor() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL);
- baseBlock = 9;
+ baseBlock = 10;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/WhirlingFlame.java b/src/main/java/collector/cards/WhirlingFlame.java
index ac84ff89b..6d301e406 100644
--- a/src/main/java/collector/cards/WhirlingFlame.java
+++ b/src/main/java/collector/cards/WhirlingFlame.java
@@ -16,7 +16,7 @@ public class WhirlingFlame extends AbstractCollectorCard {
public WhirlingFlame() {
super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseDamage = 12;
+ baseDamage = 15;
isMultiDamage = true;
}
diff --git a/src/main/java/collector/cards/Wildfire.java b/src/main/java/collector/cards/Wildfire.java
index a98d5413d..b8d70e034 100644
--- a/src/main/java/collector/cards/Wildfire.java
+++ b/src/main/java/collector/cards/Wildfire.java
@@ -33,7 +33,7 @@ public void update() {
isDone = true;
for (AbstractPower q : m.powers) {
if (q.type == AbstractPower.PowerType.DEBUFF) {
- dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ dmg(m, AttackEffect.FIRE);
}
}
}
diff --git a/src/main/java/collector/cards/YouAreMine.java b/src/main/java/collector/cards/YouAreMine.java
index 2f395616e..db212a3ac 100644
--- a/src/main/java/collector/cards/YouAreMine.java
+++ b/src/main/java/collector/cards/YouAreMine.java
@@ -23,7 +23,7 @@ public class YouAreMine extends AbstractCollectorCard {
public YouAreMine() {
super(ID, 2, CardType.SKILL, CardRarity.BASIC, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 1;
- baseSecondMagic = secondMagic = 5;
+ baseSecondMagic = secondMagic = 6;
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -34,6 +34,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeSecondMagic(3);
+ upgradeSecondMagic(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java b/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
index d6292f174..473b48e11 100644
--- a/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
+++ b/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
@@ -2,10 +2,12 @@
import collector.cards.AbstractCollectorCard;
import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
+import sneckomod.SneckoMod;
public abstract class AbstractCollectibleCard extends AbstractCollectorCard {
public AbstractCollectibleCard(String cardID, int cost, CardType type, CardRarity rarity, CardTarget target) {
this(cardID, cost, type, rarity, target, CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
diff --git a/src/main/java/collector/cards/collectibles/AcidSlimeCard.java b/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
index 5bb8afc5e..b8cf071d1 100644
--- a/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
+++ b/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
import java.util.Arrays;
@@ -20,6 +21,7 @@ public class AcidSlimeCard extends AbstractCollectibleCard {
public AcidSlimeCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/AugmenterCard.java b/src/main/java/collector/cards/collectibles/AugmenterCard.java
index b02016809..931c549d3 100644
--- a/src/main/java/collector/cards/collectibles/AugmenterCard.java
+++ b/src/main/java/collector/cards/collectibles/AugmenterCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public class AugmenterCard extends AbstractCollectibleCard {
public AugmenterCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BearCard.java b/src/main/java/collector/cards/collectibles/BearCard.java
index fce9cfc4f..84bcad844 100644
--- a/src/main/java/collector/cards/collectibles/BearCard.java
+++ b/src/main/java/collector/cards/collectibles/BearCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -19,6 +20,7 @@ public BearCard() {
super(ID, 2, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 10;
baseBlock = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BlueSlaverCard.java b/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
index a3c6c1ffe..024f766af 100644
--- a/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
+++ b/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class BlueSlaverCard extends AbstractCollectibleCard {
public BlueSlaverCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java b/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
index d5ec5ff8e..9268a7741 100644
--- a/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
+++ b/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -21,6 +22,7 @@ public BonfireSpiritsCard() {
baseMagicNumber = magicNumber = 4;
isPyre();
tags.add(CardTags.HEALING);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
private boolean wasRare = false;
diff --git a/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java b/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
index b1f18d367..c55bfeb28 100644
--- a/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
+++ b/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class BookOfStabbingCard extends AbstractCollectibleCard {
public BookOfStabbingCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BronzeOrbCard.java b/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
index 0da4f443f..bf8efc906 100644
--- a/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
+++ b/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public BronzeOrbCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 5;
baseBlock = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ByrdCard.java b/src/main/java/collector/cards/collectibles/ByrdCard.java
index cc156d63d..bcf9a3733 100644
--- a/src/main/java/collector/cards/collectibles/ByrdCard.java
+++ b/src/main/java/collector/cards/collectibles/ByrdCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class ByrdCard extends AbstractCollectibleCard {
public ByrdCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CenturionCard.java b/src/main/java/collector/cards/collectibles/CenturionCard.java
index ed6d8a0e7..8eb017497 100644
--- a/src/main/java/collector/cards/collectibles/CenturionCard.java
+++ b/src/main/java/collector/cards/collectibles/CenturionCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public CenturionCard() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 10;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ChosenCard.java b/src/main/java/collector/cards/collectibles/ChosenCard.java
index 690eeea0f..9eb53cb1b 100644
--- a/src/main/java/collector/cards/collectibles/ChosenCard.java
+++ b/src/main/java/collector/cards/collectibles/ChosenCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -19,6 +20,7 @@ public ChosenCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 2;
baseSecondMagic = secondMagic = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ClericCard.java b/src/main/java/collector/cards/collectibles/ClericCard.java
index 4f726b319..5e3e9d53c 100644
--- a/src/main/java/collector/cards/collectibles/ClericCard.java
+++ b/src/main/java/collector/cards/collectibles/ClericCard.java
@@ -3,6 +3,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public ClericCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 10;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CollectorCard.java b/src/main/java/collector/cards/collectibles/CollectorCard.java
index e3a0e183e..66b391552 100644
--- a/src/main/java/collector/cards/collectibles/CollectorCard.java
+++ b/src/main/java/collector/cards/collectibles/CollectorCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -20,6 +21,7 @@ public CollectorCard() {
baseMagicNumber = magicNumber = 1;
baseSecondMagic = secondMagic = 3;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CultistCard.java b/src/main/java/collector/cards/collectibles/CultistCard.java
index ad00ccf1a..75fd42ba7 100644
--- a/src/main/java/collector/cards/collectibles/CultistCard.java
+++ b/src/main/java/collector/cards/collectibles/CultistCard.java
@@ -3,6 +3,7 @@
import collector.powers.StrengthOverTurnsPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class CultistCard extends AbstractCollectibleCard {
public CultistCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DaggerCard.java b/src/main/java/collector/cards/collectibles/DaggerCard.java
index 4e6638ba2..8a8b07225 100644
--- a/src/main/java/collector/cards/collectibles/DaggerCard.java
+++ b/src/main/java/collector/cards/collectibles/DaggerCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.LoseHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public DaggerCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 20;
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DarklingsCard.java b/src/main/java/collector/cards/collectibles/DarklingsCard.java
index d7cf21239..7063c36f3 100644
--- a/src/main/java/collector/cards/collectibles/DarklingsCard.java
+++ b/src/main/java/collector/cards/collectibles/DarklingsCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,6 +21,7 @@ public DarklingsCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
isPyre();
baseDamage = 8;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java b/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
index 432ce81db..627fe2141 100644
--- a/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
+++ b/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class DefaultCollectibleCard extends AbstractCollectibleCard {
public DefaultCollectibleCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java b/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
index d2fadf736..b1f6f043f 100644
--- a/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
+++ b/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
@@ -4,6 +4,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class DesignerInSpireCard extends AbstractCollectibleCard {
public DesignerInSpireCard() {
super(ID, 2, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FaceTraderCard.java b/src/main/java/collector/cards/collectibles/FaceTraderCard.java
index 12bd4a6fa..19cbf21e1 100644
--- a/src/main/java/collector/cards/collectibles/FaceTraderCard.java
+++ b/src/main/java/collector/cards/collectibles/FaceTraderCard.java
@@ -17,6 +17,7 @@ public class FaceTraderCard extends AbstractCollectibleCard {
public FaceTraderCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FatGremlinCard.java b/src/main/java/collector/cards/collectibles/FatGremlinCard.java
index 26613624c..f7ddb066c 100644
--- a/src/main/java/collector/cards/collectibles/FatGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/FatGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -16,6 +17,7 @@ public FatGremlinCard() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 4;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FinalBossCard.java b/src/main/java/collector/cards/collectibles/FinalBossCard.java
index ff3ae9043..575a33d06 100644
--- a/src/main/java/collector/cards/collectibles/FinalBossCard.java
+++ b/src/main/java/collector/cards/collectibles/FinalBossCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.InvinciblePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,6 +21,7 @@ public FinalBossCard() {
public void use(AbstractPlayer p, AbstractMonster m) {
atb(new RemoveSpecificPowerAction(m, p, InvinciblePower.POWER_ID));
atb(new StunMonsterAction(m, p));
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/FungiBeastCard.java b/src/main/java/collector/cards/collectibles/FungiBeastCard.java
index c1117caa9..b40ba5c01 100644
--- a/src/main/java/collector/cards/collectibles/FungiBeastCard.java
+++ b/src/main/java/collector/cards/collectibles/FungiBeastCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -15,6 +16,7 @@ public class FungiBeastCard extends AbstractCollectibleCard {
public FungiBeastCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
index af548bd1d..cf5d1953d 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
@@ -1,8 +1,12 @@
package collector.cards.collectibles;
+import basemod.helpers.CardModifierManager;
+import collector.cardmods.CollectedCardMod;
import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -13,11 +17,16 @@ public class GiantHeadCardStageOne extends AbstractCollectibleCard {
public GiantHeadCardStageOne() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- cardsToPreview = new GiantHeadCardStageTwo();
+ AbstractCard tar = new GiantHeadCardStageTwo();
+ CardModifierManager.addModifier(tar, new CollectedCardMod());
+ cardsToPreview = tar;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new AddCopyNextTurnPower(new GiantHeadCardStageTwo()));
+ AbstractCard tar = new GiantHeadCardStageTwo();
+ CardModifierManager.addModifier(tar, new CollectedCardMod());
+ applyToSelf(new AddCopyNextTurnPower(tar));
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
index d162966cd..517a59198 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class GiantHeadCardStageThree extends AbstractCollectibleCard {
public GiantHeadCardStageThree() {
super(ID, 3, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ALL_ENEMY, CardColor.COLORLESS);
baseDamage = 70;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
index 0a5c58401..e82d124bd 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
@@ -3,6 +3,7 @@
import collector.powers.AddCopyNextTurnPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class GiantHeadCardStageTwo extends AbstractCollectibleCard {
public GiantHeadCardStageTwo() {
super(ID, 2, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF, CardColor.COLORLESS);
cardsToPreview = new GiantHeadCardStageThree();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java b/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
index 64c76f91f..d2decc6c0 100644
--- a/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -21,6 +22,7 @@ public class GremlinLeaderCard extends AbstractCollectibleCard {
public GremlinLeaderCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinNobCard.java b/src/main/java/collector/cards/collectibles/GremlinNobCard.java
index 2a6593fad..eee05bb0e 100644
--- a/src/main/java/collector/cards/collectibles/GremlinNobCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinNobCard.java
@@ -3,6 +3,7 @@
import collector.powers.collectioncards.GremlinNobCardPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class GremlinNobCard extends AbstractCollectibleCard {
public GremlinNobCard() {
super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinWizardCard.java b/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
index 7ed96a205..0bb418dca 100644
--- a/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
@@ -4,6 +4,7 @@
import collector.powers.NextTurnVigorPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class GremlinWizardCard extends AbstractCollectibleCard {
public GremlinWizardCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/JawWormCard.java b/src/main/java/collector/cards/collectibles/JawWormCard.java
index 350f6e372..c88433c19 100644
--- a/src/main/java/collector/cards/collectibles/JawWormCard.java
+++ b/src/main/java/collector/cards/collectibles/JawWormCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public JawWormCard() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 12;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/JousterCard.java b/src/main/java/collector/cards/collectibles/JousterCard.java
index 80389c7f8..b82568947 100644
--- a/src/main/java/collector/cards/collectibles/JousterCard.java
+++ b/src/main/java/collector/cards/collectibles/JousterCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -15,6 +16,7 @@ public JousterCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 12;
baseBlock = 12;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LagavulinCard.java b/src/main/java/collector/cards/collectibles/LagavulinCard.java
index dc8d83ec3..24730eb10 100644
--- a/src/main/java/collector/cards/collectibles/LagavulinCard.java
+++ b/src/main/java/collector/cards/collectibles/LagavulinCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -15,6 +16,7 @@ public class LagavulinCard extends AbstractCollectibleCard {
public LagavulinCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LivingWallCard.java b/src/main/java/collector/cards/collectibles/LivingWallCard.java
index 947e70450..71aaf604d 100644
--- a/src/main/java/collector/cards/collectibles/LivingWallCard.java
+++ b/src/main/java/collector/cards/collectibles/LivingWallCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -15,6 +16,7 @@ public class LivingWallCard extends AbstractCollectibleCard {
public LivingWallCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LouseCard.java b/src/main/java/collector/cards/collectibles/LouseCard.java
index e178e664e..f86c600e6 100644
--- a/src/main/java/collector/cards/collectibles/LouseCard.java
+++ b/src/main/java/collector/cards/collectibles/LouseCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.BlurPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class LouseCard extends AbstractCollectibleCard {
public LouseCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 7;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LuckyWick.java b/src/main/java/collector/cards/collectibles/LuckyWick.java
index 2f6023fdb..2c6731842 100644
--- a/src/main/java/collector/cards/collectibles/LuckyWick.java
+++ b/src/main/java/collector/cards/collectibles/LuckyWick.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -14,6 +15,7 @@ public LuckyWick() {
super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY, CardColor.COLORLESS);
baseDamage = 3;
baseBlock = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MadGremlinCard.java b/src/main/java/collector/cards/collectibles/MadGremlinCard.java
index 7ae4ee387..56fd7f63f 100644
--- a/src/main/java/collector/cards/collectibles/MadGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/MadGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.LoseStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class MadGremlinCard extends AbstractCollectibleCard {
public MadGremlinCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MawCard.java b/src/main/java/collector/cards/collectibles/MawCard.java
index de146b43b..9aef93510 100644
--- a/src/main/java/collector/cards/collectibles/MawCard.java
+++ b/src/main/java/collector/cards/collectibles/MawCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class MawCard extends AbstractCollectibleCard {
public MawCard() {
super(ID, 3, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 32;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MerchantCard.java b/src/main/java/collector/cards/collectibles/MerchantCard.java
index efe680e03..d03a50a66 100644
--- a/src/main/java/collector/cards/collectibles/MerchantCard.java
+++ b/src/main/java/collector/cards/collectibles/MerchantCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -15,6 +16,7 @@ public class MerchantCard extends AbstractCollectibleCard {
public MerchantCard() {
super(ID, 2, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MushroomCard.java b/src/main/java/collector/cards/collectibles/MushroomCard.java
index 41f64a79e..c60464efd 100644
--- a/src/main/java/collector/cards/collectibles/MushroomCard.java
+++ b/src/main/java/collector/cards/collectibles/MushroomCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -18,6 +19,7 @@ public MushroomCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 5;
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MysticCard.java b/src/main/java/collector/cards/collectibles/MysticCard.java
index 72a58b1a4..cada35714 100644
--- a/src/main/java/collector/cards/collectibles/MysticCard.java
+++ b/src/main/java/collector/cards/collectibles/MysticCard.java
@@ -3,6 +3,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -14,6 +15,7 @@ public class MysticCard extends AbstractCollectibleCard {
public MysticCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/NemesisCard.java b/src/main/java/collector/cards/collectibles/NemesisCard.java
index 39bb24500..0887b04a5 100644
--- a/src/main/java/collector/cards/collectibles/NemesisCard.java
+++ b/src/main/java/collector/cards/collectibles/NemesisCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePlayerPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class NemesisCard extends AbstractCollectibleCard {
public NemesisCard() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/NlothCard.java b/src/main/java/collector/cards/collectibles/NlothCard.java
index 1455b2e4a..b9e2ed98a 100644
--- a/src/main/java/collector/cards/collectibles/NlothCard.java
+++ b/src/main/java/collector/cards/collectibles/NlothCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class NlothCard extends AbstractCollectibleCard {
public NlothCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/OrbWalkerCard.java b/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
index 36262eb48..3dab23375 100644
--- a/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
+++ b/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -17,6 +18,7 @@ public OrbWalkerCard() {
baseDamage = 14;
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Ember();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/PointyCard.java b/src/main/java/collector/cards/collectibles/PointyCard.java
index 38ef18955..d818b2118 100644
--- a/src/main/java/collector/cards/collectibles/PointyCard.java
+++ b/src/main/java/collector/cards/collectibles/PointyCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public class PointyCard extends AbstractCollectibleCard {
public PointyCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RanwidCard.java b/src/main/java/collector/cards/collectibles/RanwidCard.java
index c6bb0aa78..b6f9c59a2 100644
--- a/src/main/java/collector/cards/collectibles/RanwidCard.java
+++ b/src/main/java/collector/cards/collectibles/RanwidCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -14,6 +15,7 @@ public class RanwidCard extends AbstractCollectibleCard {
public RanwidCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RedSlaverCard.java b/src/main/java/collector/cards/collectibles/RedSlaverCard.java
index 8d687503b..32f10b43a 100644
--- a/src/main/java/collector/cards/collectibles/RedSlaverCard.java
+++ b/src/main/java/collector/cards/collectibles/RedSlaverCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.GainStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -16,6 +17,7 @@ public class RedSlaverCard extends AbstractCollectibleCard {
public RedSlaverCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 9;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ReptomancerCard.java b/src/main/java/collector/cards/collectibles/ReptomancerCard.java
index 60a25c04b..36f54e6cf 100644
--- a/src/main/java/collector/cards/collectibles/ReptomancerCard.java
+++ b/src/main/java/collector/cards/collectibles/ReptomancerCard.java
@@ -4,6 +4,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public ReptomancerCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
baseSecondMagic = secondMagic = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RepulsorCard.java b/src/main/java/collector/cards/collectibles/RepulsorCard.java
index 60c49a921..eab930ec7 100644
--- a/src/main/java/collector/cards/collectibles/RepulsorCard.java
+++ b/src/main/java/collector/cards/collectibles/RepulsorCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public RepulsorCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RomeoCard.java b/src/main/java/collector/cards/collectibles/RomeoCard.java
index d0a26e678..953739a50 100644
--- a/src/main/java/collector/cards/collectibles/RomeoCard.java
+++ b/src/main/java/collector/cards/collectibles/RomeoCard.java
@@ -4,7 +4,9 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.watcher.FreeAttackPower;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import sneckomod.SneckoMod;
+import static champ.ChampMod.vigor;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,11 +17,12 @@ public class RomeoCard extends AbstractCollectibleCard {
public RomeoCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
applyToSelf(new FreeAttackPower(p, 1));
- applyToSelf(new VigorPower(p, magicNumber));
+ vigor(magicNumber);
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/ScrapOozeCard.java b/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
index 5380b5bb6..2dd2767fe 100644
--- a/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
+++ b/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,6 +19,7 @@ public ScrapOozeCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SentryCard.java b/src/main/java/collector/cards/collectibles/SentryCard.java
index 9d7c6e32a..3a84d3cf6 100644
--- a/src/main/java/collector/cards/collectibles/SentryCard.java
+++ b/src/main/java/collector/cards/collectibles/SentryCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.vfx.combat.SmallLaserEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -21,6 +22,7 @@ public SentryCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 8;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java b/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
index d5ee2e615..c2a599fd8 100644
--- a/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
+++ b/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ShelledParasiteCard extends AbstractCollectibleCard {
public ShelledParasiteCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java b/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
index 2b5edd90d..38f859a42 100644
--- a/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -12,6 +13,7 @@ public class ShieldGremlinCard extends AbstractCollectibleCard {
public ShieldGremlinCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SnakePlantCard.java b/src/main/java/collector/cards/collectibles/SnakePlantCard.java
index 7e52acb05..c68c97359 100644
--- a/src/main/java/collector/cards/collectibles/SnakePlantCard.java
+++ b/src/main/java/collector/cards/collectibles/SnakePlantCard.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -16,9 +17,13 @@ public class SnakePlantCard extends AbstractCollectibleCard {
public final static String ID = makeID(SnakePlantCard.class.getSimpleName());
// intellij stuff attack, enemy, common, 7, 2, , , ,
+
+ //TODO: Rework into Skill: 1e, Apply 2 Weak and Vulnerable.
+
public SnakePlantCard() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 7;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java b/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
index 3532684d8..55457c7ff 100644
--- a/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public class SneakyGremlinCard extends AbstractCollectibleCard {
public SneakyGremlinCard() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SneckoCard.java b/src/main/java/collector/cards/collectibles/SneckoCard.java
index 5de15a25a..044f18707 100644
--- a/src/main/java/collector/cards/collectibles/SneckoCard.java
+++ b/src/main/java/collector/cards/collectibles/SneckoCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import sneckomod.actions.MuddleHandAction;
import static collector.CollectorMod.makeID;
@@ -15,6 +16,7 @@ public class SneckoCard extends AbstractCollectibleCard {
public SneckoCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SphericGuardianCard.java b/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
index cdd0e4f98..1d9265edc 100644
--- a/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
+++ b/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.BarricadePower;
import com.megacrit.cardcrawl.powers.BlurPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class SphericGuardianCard extends AbstractCollectibleCard {
public SphericGuardianCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
this.baseMagicNumber = this.magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java b/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
index a733879e1..30f521515 100644
--- a/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
+++ b/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.FlameBarrierPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public SpikeSlimeCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
baseBlock = 8;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpikerCard.java b/src/main/java/collector/cards/collectibles/SpikerCard.java
index e55835f5c..fe966784e 100644
--- a/src/main/java/collector/cards/collectibles/SpikerCard.java
+++ b/src/main/java/collector/cards/collectibles/SpikerCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ThornsPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpikerCard extends AbstractCollectibleCard {
public SpikerCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireGrowthCard.java b/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
index 40ac7b915..f3d2a9cbd 100644
--- a/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ConstrictedPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -14,6 +15,7 @@ public class SpireGrowthCard extends AbstractCollectibleCard {
public SpireGrowthCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireShieldCard.java b/src/main/java/collector/cards/collectibles/SpireShieldCard.java
index 6286f7d03..4f3a9be61 100644
--- a/src/main/java/collector/cards/collectibles/SpireShieldCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireShieldCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpireShieldCard extends AbstractCollectibleCard {
public SpireShieldCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireSpearCard.java b/src/main/java/collector/cards/collectibles/SpireSpearCard.java
index d51f8f3a6..5b50258c9 100644
--- a/src/main/java/collector/cards/collectibles/SpireSpearCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireSpearCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpireSpearCard extends AbstractCollectibleCard {
public SpireSpearCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SsserpentCard.java b/src/main/java/collector/cards/collectibles/SsserpentCard.java
index e86633584..3b0806ade 100644
--- a/src/main/java/collector/cards/collectibles/SsserpentCard.java
+++ b/src/main/java/collector/cards/collectibles/SsserpentCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.cards.curses.Doubt;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -16,6 +17,7 @@ public SsserpentCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 20;
cardsToPreview = new Doubt();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TaskmasterCard.java b/src/main/java/collector/cards/collectibles/TaskmasterCard.java
index dacb4f6bb..8a61128df 100644
--- a/src/main/java/collector/cards/collectibles/TaskmasterCard.java
+++ b/src/main/java/collector/cards/collectibles/TaskmasterCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -19,6 +20,7 @@ public TaskmasterCard() {
baseDamage = 10;
baseMagicNumber = magicNumber = 1;
baseSecondMagic = secondMagic = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ThievesCard.java b/src/main/java/collector/cards/collectibles/ThievesCard.java
index e20785719..0b1c6dbab 100644
--- a/src/main/java/collector/cards/collectibles/ThievesCard.java
+++ b/src/main/java/collector/cards/collectibles/ThievesCard.java
@@ -3,6 +3,7 @@
import collector.powers.collectioncards.ThievesCardPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ThievesCard extends AbstractCollectibleCard {
public ThievesCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TorchHeadCard.java b/src/main/java/collector/cards/collectibles/TorchHeadCard.java
index c861a723a..31d31f1e2 100644
--- a/src/main/java/collector/cards/collectibles/TorchHeadCard.java
+++ b/src/main/java/collector/cards/collectibles/TorchHeadCard.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -24,6 +25,7 @@ public class TorchHeadCard extends AbstractCollectibleCard {
public TorchHeadCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TransientCard.java b/src/main/java/collector/cards/collectibles/TransientCard.java
index d7c222143..3f7c48bd1 100644
--- a/src/main/java/collector/cards/collectibles/TransientCard.java
+++ b/src/main/java/collector/cards/collectibles/TransientCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class TransientCard extends AbstractCollectibleCard {
public TransientCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/VagrantCard.java b/src/main/java/collector/cards/collectibles/VagrantCard.java
index ebe529054..242d199c7 100644
--- a/src/main/java/collector/cards/collectibles/VagrantCard.java
+++ b/src/main/java/collector/cards/collectibles/VagrantCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.cards.curses.Shame;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,6 +17,7 @@ public VagrantCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Shame();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/WomanInBlueCard.java b/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
index 2ca39b368..1132e5be0 100644
--- a/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
+++ b/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,6 +17,7 @@ public class WomanInBlueCard extends AbstractCollectibleCard {
public WomanInBlueCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
tags.add(CardTags.HEALING);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/WrithingMassCard.java b/src/main/java/collector/cards/collectibles/WrithingMassCard.java
index a6154253d..3ed4ad812 100644
--- a/src/main/java/collector/cards/collectibles/WrithingMassCard.java
+++ b/src/main/java/collector/cards/collectibles/WrithingMassCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public class WrithingMassCard extends AbstractCollectibleCard {
public WrithingMassCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/patches/OnExhaustPatch.java b/src/main/java/collector/patches/OnExhaustPatch.java
index 92027b859..c3c4440fc 100644
--- a/src/main/java/collector/patches/OnExhaustPatch.java
+++ b/src/main/java/collector/patches/OnExhaustPatch.java
@@ -17,7 +17,7 @@
)
public class OnExhaustPatch {
- @SpireInsertPatch(locator = OnExhaustPatch.Locator.class)
+ @SpireInsertPatch(locator = Locator.class)
public static void TriggerOnExhaust(CardGroup instance, AbstractCard c) {
for (AbstractCard other : AbstractDungeon.player.hand.group) {
if (other instanceof OnOtherCardExhaustInHand) {
diff --git a/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java b/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
index ef987f58a..e7d01632c 100644
--- a/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
+++ b/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
@@ -1,4 +1,4 @@
-/*
+package collector.patches.PyrePatches;/*
package collector.patches.PyrePatches;
import basemod.BaseMod;
diff --git a/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java b/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
index ea3d4b0b3..0b823ff90 100644
--- a/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
+++ b/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
@@ -1,4 +1,4 @@
-/*
+package collector.patches.PyrePatches;/*
package collector.patches.PyrePatches;
import basemod.BaseMod;
diff --git a/src/main/java/collector/potions/DebuffDoublePotion.java b/src/main/java/collector/potions/DebuffDoublePotion.java
index 46cc0f04e..0d39447fc 100644
--- a/src/main/java/collector/potions/DebuffDoublePotion.java
+++ b/src/main/java/collector/potions/DebuffDoublePotion.java
@@ -4,14 +4,18 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.actions.GainReservesAction;
+import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.localization.PotionStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.vfx.combat.VerticalAuraEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -25,7 +29,7 @@ public class DebuffDoublePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public DebuffDoublePotion() {
- super(NAME, POTION_ID, PotionRarity.RARE, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.RARE, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = true;
this.targetRequired = true;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -46,9 +50,14 @@ public void use(AbstractCreature targetFoe) {
atb(new AbstractGameAction() {
@Override
public void update() {
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.BLACK, targetFoe.hb.cX, targetFoe.hb.cY), 0.1F));
+ this.addToBot(new SFXAction("ATTACK_FIRE"));
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.PURPLE, targetFoe.hb.cX, targetFoe.hb.cY), 0.1F));
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.CYAN, targetFoe.hb.cX, targetFoe.hb.cY), 0.0F));
isDone = true;
for (AbstractPower p : targetFoe.powers) {
if (p.type == AbstractPower.PowerType.DEBUFF) {
+
p.amount *= potency + 1;
}
}
diff --git a/src/main/java/collector/potions/MiniCursePotion.java b/src/main/java/collector/potions/MiniCursePotion.java
index 1443f299f..ea5d3730b 100644
--- a/src/main/java/collector/potions/MiniCursePotion.java
+++ b/src/main/java/collector/potions/MiniCursePotion.java
@@ -5,6 +5,7 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.powers.DoomPower;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -15,9 +16,11 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.CollectorCurseEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
+import static collector.util.Wiz.atb;
public class MiniCursePotion extends CustomPotion {
@@ -27,7 +30,7 @@ public class MiniCursePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public MiniCursePotion() {
- super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = true;
this.targetRequired = true;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -48,6 +51,7 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new CollectorCurseEffect(target.hb.cX, target.hb.cY), .2F));
applyToEnemy((AbstractMonster) target, new WeakPower(target, potency, false));
applyToEnemy((AbstractMonster) target, new VulnerablePower(target, potency, false));
applyToEnemy((AbstractMonster) target, new DoomPower((AbstractMonster) target, potency * 6));
diff --git a/src/main/java/collector/potions/ReservePotion.java b/src/main/java/collector/potions/ReservePotion.java
index 149cbc8a2..e442084ed 100644
--- a/src/main/java/collector/potions/ReservePotion.java
+++ b/src/main/java/collector/potions/ReservePotion.java
@@ -5,12 +5,18 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.actions.GainReservesAction;
+import collector.effects.ColoredSanctityEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
+import com.megacrit.cardcrawl.vfx.BorderFlashEffect;
+import com.megacrit.cardcrawl.vfx.combat.SanctityEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -23,7 +29,7 @@ public class ReservePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public ReservePotion() {
- super(NAME, POTION_ID, PotionRarity.UNCOMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.UNCOMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = false;
this.targetRequired = false;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -42,6 +48,9 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new ColoredSanctityEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, Color.CHARTREUSE.cpy())));
+ this.addToTop(new SFXAction("HEAL_1"));
+ this.addToTop(new VFXAction(new BorderFlashEffect(Color.CHARTREUSE, true), 0.1F));
atb(new GainReservesAction(potency));
}
diff --git a/src/main/java/collector/potions/TempHPPotion.java b/src/main/java/collector/potions/TempHPPotion.java
index 538989366..8038526be 100644
--- a/src/main/java/collector/potions/TempHPPotion.java
+++ b/src/main/java/collector/potions/TempHPPotion.java
@@ -3,13 +3,19 @@
import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
+import collector.effects.ColoredSanctityEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
+import com.megacrit.cardcrawl.vfx.combat.HealVerticalLineEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -22,7 +28,7 @@ public class TempHPPotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public TempHPPotion() {
- super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = false;
this.targetRequired = false;
}
@@ -40,6 +46,16 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new ColoredSanctityEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, Color.CHARTREUSE.cpy())));
+ int roll = MathUtils.random(0, 2);
+ if (roll == 0) {
+ CardCrawlGame.sound.play("HEAL_1");
+ } else if (roll == 1) {
+ CardCrawlGame.sound.play("HEAL_2");
+ } else {
+ CardCrawlGame.sound.play("HEAL_3");
+ }
+
atb(new AddTemporaryHPAction(AbstractDungeon.player, AbstractDungeon.player, potency));
}
diff --git a/src/main/java/collector/powers/DoomPower.java b/src/main/java/collector/powers/DoomPower.java
index c00242a6b..6d63a70f8 100644
--- a/src/main/java/collector/powers/DoomPower.java
+++ b/src/main/java/collector/powers/DoomPower.java
@@ -1,5 +1,6 @@
package collector.powers;
+import collector.relics.JadeRing;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.HealthBarRenderPower;
@@ -11,6 +12,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import theHexaghost.relics.CandleOfCauterizing;
import static collector.util.Wiz.atb;
import static collector.util.Wiz.isAfflicted;
@@ -30,7 +32,19 @@ public DoomPower(AbstractMonster target, int amount) {
@Override
public int getHealthBarAmount() {
- return amount;
+
+ int healthbar = 0;
+
+ if(AbstractDungeon.player.hasRelic(JadeRing.ID)){
+ healthbar = amount+6;
+ }
+
+ if(!(AbstractDungeon.player.hasRelic(JadeRing.ID))){
+ healthbar = amount;
+ }
+
+ return healthbar;
+
}
public void atStartOfTurn() {
@@ -41,23 +55,56 @@ public void atStartOfTurn() {
public void explode() {
this.flashWithoutSound();
- if (isAfflicted((AbstractMonster) this.owner)) {
+ System.out.println("DEBUG: Checking Affliction.");
+ if (isAfflicted((AbstractMonster) this.owner)) { System.out.println("DEBUG: Affliction confirmed.");
} else {
if (this.owner.hasPower(DemisePower.POWER_ID)) {
+ System.out.println("DEBUG: There is no Affliction. Reducing DemisePower by 1.");
atb(new ReducePowerAction(this.owner, this.owner, DemisePower.POWER_ID, 1));
} else {
+ System.out.println("DEBUG: There is no Affliction. Removing DoomPower");
this.addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
}
}
- if (amount >= owner.currentHealth) {
- CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+
+ if (AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ if (amount+6 >= owner.currentHealth) {
+ System.out.println("DEBUG: Kill SFX with Jade Ring.");
+ CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+ }
+ }
+
+ if (!(AbstractDungeon.player.hasRelic(JadeRing.ID))) {
+ if (amount >= owner.currentHealth) {
+ System.out.println("DEBUG: Kill SFX without Jade Ring.");
+ CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ System.out.println("DEBUG: Dealing damage with Jade Ring.");
+ this.addToBot(new LoseHPAction(owner, owner, amount+6, AbstractGameAction.AttackEffect.NONE));
+ }
+
+ if (!AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ System.out.println("DEBUG: Dealing damage without Jade Ring.");
+ this.addToBot(new LoseHPAction(owner, owner, amount, AbstractGameAction.AttackEffect.NONE));
}
- this.addToBot(new LoseHPAction(owner, owner, amount, AbstractGameAction.AttackEffect.NONE));
+
}
@Override
public void updateDescription() {
- description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+
+ if (!(AbstractDungeon.player.hasRelic(JadeRing.ID))){
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+ if(AbstractDungeon.player.hasRelic(JadeRing.ID)){
+ int display = (this.amount+6);
+ description = DESCRIPTIONS[0] + display + DESCRIPTIONS[1];
+ }
+
}
@Override
diff --git a/src/main/java/collector/powers/KarmaPower.java b/src/main/java/collector/powers/KarmaPower.java
index 2e3439da9..981277f0f 100644
--- a/src/main/java/collector/powers/KarmaPower.java
+++ b/src/main/java/collector/powers/KarmaPower.java
@@ -3,6 +3,8 @@
import collector.util.Wiz;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import gremlin.GremlinMod;
import static collector.util.Wiz.isAfflicted;
@@ -24,8 +26,17 @@ public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
}
return false;
})) {
+
flash();
- addToBot(new GainBlockAction(owner, amount));
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ if (isAfflicted(mo)) {
+ addToBot(new GainBlockAction(owner, amount));
+ }
+ }
+ }
+
+ //addToBot(new GainBlockAction(owner, amount));
}
}
diff --git a/src/main/java/collector/powers/TorchHeadPower.java b/src/main/java/collector/powers/TorchHeadPower.java
index 22a9f2997..9c6f2ffe1 100644
--- a/src/main/java/collector/powers/TorchHeadPower.java
+++ b/src/main/java/collector/powers/TorchHeadPower.java
@@ -101,31 +101,31 @@ public void updateDescription() {
StringBuilder sb = new StringBuilder();
sb.append(DESCRIPTIONS[0]);
if (onAttackRandomDoom > 0) {
- sb.append(DESCRIPTIONS[1]).append(onAttackRandomDoom).append(DESCRIPTIONS[2]);
- if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackPoison > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[1] + onAttackRandomDoom + DESCRIPTIONS[2]);
+ if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackPoison > 0) {
sb.append(" NL ");
}
}
if (onAttackPoison > 0) {
- sb.append(DESCRIPTIONS[1]).append(onAttackPoison).append(DESCRIPTIONS[7]);
- if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[1] + onAttackPoison + DESCRIPTIONS[7]);
+ if (onAttackAOE > 0 || onAttackBlock > 0) {
sb.append(" NL ");
}
}
if (onAttackAOE > 0) {
- sb.append(DESCRIPTIONS[3]).append(onAttackAOE).append(DESCRIPTIONS[4]);
- if (onAttackBlock > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[3] + onAttackAOE + DESCRIPTIONS[4]);
+ if (onAttackBlock > 0) {
sb.append(" NL ");
}
}
if (onAttackBlock > 0) {
- sb.append(DESCRIPTIONS[5]).append(onAttackBlock).append(DESCRIPTIONS[6]);
+ sb.append(DESCRIPTIONS[5] + onAttackBlock + DESCRIPTIONS[6]);
if (onAttackDraw > 0) {
sb.append(" NL ");
}
}
if (onAttackDraw > 0) {
- sb.append(DESCRIPTIONS[8]).append(onAttackDraw).append(onAttackDraw == 1 ? DESCRIPTIONS[9] : DESCRIPTIONS[10]);
+ sb.append(DESCRIPTIONS[7] + onAttackDraw + (onAttackDraw == 1 ? DESCRIPTIONS[8] : DESCRIPTIONS[9]));
}
description = sb.toString();
}
diff --git a/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java b/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
index 8537eea28..e1972d0e0 100644
--- a/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
+++ b/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
@@ -7,6 +7,8 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import static champ.ChampMod.vigor;
+
public class GremlinNobCardPower extends AbstractCollectorPower {
public static final String NAME = "GremlinNobCard";
public static final String POWER_ID = makeID(NAME);
@@ -22,7 +24,7 @@ public GremlinNobCardPower(int amount) {
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
if (card.type == AbstractCard.CardType.SKILL) {
- this.addToTop(new ApplyPowerAction(this.owner, this.owner, new VigorPower(this.owner, this.amount), this.amount));
+ vigor(this.amount);
this.flash();
}
}
diff --git a/src/main/java/collector/relics/BagOfTricks.java b/src/main/java/collector/relics/BagOfTricks.java
index 32cb31ed3..ee4905c97 100644
--- a/src/main/java/collector/relics/BagOfTricks.java
+++ b/src/main/java/collector/relics/BagOfTricks.java
@@ -1,12 +1,16 @@
package collector.relics;
import basemod.abstracts.CustomRelic;
+import collector.CollectorCollection;
import collector.CollectorMod;
import collector.actions.DrawCardFromCollectionAction;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import downfall.util.TextureLoader;
import static collector.util.Wiz.atb;
+import static collector.util.Wiz.att;
public class BagOfTricks extends CustomRelic {
public static final String ID = CollectorMod.makeID(BagOfTricks.class.getSimpleName());
diff --git a/src/main/java/collector/relics/BottledCollectible.java b/src/main/java/collector/relics/BottledCollectible.java
index 292b1d49f..3b81a0d12 100644
--- a/src/main/java/collector/relics/BottledCollectible.java
+++ b/src/main/java/collector/relics/BottledCollectible.java
@@ -7,6 +7,8 @@
import collector.CollectorMod;
import collector.actions.DrawCardFromCollectionAction;
import collector.patches.CollectorBottleField;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -33,6 +35,16 @@ public BottledCollectible() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.RARE, LandingSound.MAGICAL);
}
+ public void atBattleStart() {
+ this.counter = 0;
+ }
+
+ @Override
+ public void onTrigger() {
+ this.flash();
+ this.counter = -1;
+ }
+
@Override
public Predicate isOnCard() {
return CollectorBottleField.inCollectionBottle::get;
diff --git a/src/main/java/collector/relics/ForbiddenFruit.java b/src/main/java/collector/relics/ForbiddenFruit.java
index 26d5a25a8..434f0f718 100644
--- a/src/main/java/collector/relics/ForbiddenFruit.java
+++ b/src/main/java/collector/relics/ForbiddenFruit.java
@@ -1,6 +1,7 @@
package collector.relics;
import basemod.abstracts.CustomRelic;
+import basemod.helpers.CardPowerTip;
import collector.CollectorMod;
import com.megacrit.cardcrawl.cards.curses.Necronomicurse;
import downfall.cards.curses.Sapped;
@@ -12,9 +13,14 @@
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import downfall.util.TextureLoader;
+import expansioncontent.cards.AwakenDeath;
+import slimebound.characters.SlimeboundCharacter;
+import sneckomod.TheSnecko;
import java.util.stream.Collectors;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
public class ForbiddenFruit extends CustomRelic {
public static final String ID = CollectorMod.makeID(ForbiddenFruit.class.getSimpleName());
private static final String IMG_PATH = ForbiddenFruit.class.getSimpleName() + ".png";
@@ -25,6 +31,7 @@ public class ForbiddenFruit extends CustomRelic {
public ForbiddenFruit() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.BOSS, LandingSound.MAGICAL);
+ tips.add(new CardPowerTip( new Sapped() ) );
}
public void onEquip() {
@@ -58,7 +65,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (stage == 2) {
- AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Necronomicurse(), (float) Settings.WIDTH / 2.0F, (float)Settings.HEIGHT / 2.0F));
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Sapped(), (float) Settings.WIDTH / 2.0F, (float)Settings.HEIGHT / 2.0F));
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
}
else if (stage == 0) {
@@ -88,6 +95,14 @@ else if (stage == 1) {
}
}
+ public boolean canSpawn() {
+ if (AbstractDungeon.player instanceof TheSnecko) {
+ return false;
+ }
+
+ return ((AbstractDungeon.floorNum > 1)); // you cannot boss swap into forbidden fruit
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/collector/relics/FuelCanister.java b/src/main/java/collector/relics/FuelCanister.java
index 1cba35b40..1067ceb61 100644
--- a/src/main/java/collector/relics/FuelCanister.java
+++ b/src/main/java/collector/relics/FuelCanister.java
@@ -5,7 +5,10 @@
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.RunicPyramid;
import downfall.util.TextureLoader;
+import expansioncontent.cardmods.RetainCardMod;
+import hermit.relics.Memento;
import hermit.util.Wiz;
import java.util.ArrayList;
@@ -21,23 +24,30 @@ public FuelCanister() {
@Override
public void onPlayerEndTurn() {
- int max = -3;
+ int max = 999;
+ //retains minimum now
ArrayList toRetain = new ArrayList<>();
for (AbstractCard q : AbstractDungeon.player.hand.group) {
- if (q.costForTurn > max) {
+ //can retain unplayable cards but not x cost cards, cannot retain ethereal cards or cards that already retain themselves
+ if ((q.costForTurn < max) && !(q.costForTurn < -1) && !(q.isEthereal) && !(q.selfRetain)) {
+ //if ((q.costForTurn < max) && !(q.costForTurn < -1) && !(q.selfRetain)) {
toRetain.clear();
toRetain.add(q);
max = q.costForTurn;
- } else if (q.costForTurn == max) {
+ } else if ((q.costForTurn == max) && !(q.costForTurn < -1) && !(q.isEthereal) && !(q.selfRetain)) {
toRetain.add(q);
}
}
- toRetain.removeIf(c -> c.isEthereal);
+ //toRetain.removeIf(c -> c.isEthereal);
if (!toRetain.isEmpty()) {
Wiz.getRandomItem(toRetain).retain = true;
}
}
+ public boolean canSpawn() {
+ return !AbstractDungeon.player.hasRelic(RunicPyramid.ID);
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/collector/relics/HolidayCoal.java b/src/main/java/collector/relics/HolidayCoal.java
index 03b2dfbe5..108b7c880 100644
--- a/src/main/java/collector/relics/HolidayCoal.java
+++ b/src/main/java/collector/relics/HolidayCoal.java
@@ -12,7 +12,7 @@ public class HolidayCoal extends CustomRelic {
private static final String OUTLINE_IMG_PATH = HolidayCoal.class.getSimpleName() + ".png";
public HolidayCoal() {
- super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.SHOP, LandingSound.MAGICAL);
tips.add(new CardPowerTip(new LuckyWick()));
}
diff --git a/src/main/java/collector/relics/JadeRing.java b/src/main/java/collector/relics/JadeRing.java
index d0a914919..ef9e2ddd0 100644
--- a/src/main/java/collector/relics/JadeRing.java
+++ b/src/main/java/collector/relics/JadeRing.java
@@ -13,24 +13,23 @@ public class JadeRing extends CustomRelic {
private static final String IMG_PATH = JadeRing.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = JadeRing.class.getSimpleName() + ".png";
- private static final int EXTRA_SOULS = 5;
+ private static final int EXTRA_SOULS = 6;
public JadeRing() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.UNCOMMON, LandingSound.MAGICAL);
}
- @Override
- public void onMonsterDeath(AbstractMonster m) {
- if (m.hasPower(DoomPower.POWER_ID) && !m.hasPower(MinionPower.POWER_ID) && !m.halfDead) {
- flash();
- AbstractDungeon.player.gainGold(EXTRA_SOULS);
- }
- }
-
- @Override
- public boolean canSpawn() {
- return !(AbstractDungeon.getCurrRoom() instanceof com.megacrit.cardcrawl.rooms.ShopRoom);
- }
+ //logic moved to DoomPower.java
+ //but basically the way it works is that DoomPower has +6 added to it when dealing damage and
+ //rendering health bars, and returning the amount of damage in the description
+
+ // @Override
+ // public void onMonsterDeath(AbstractMonster m) {
+ // if (m.hasPower(DoomPower.POWER_ID) && !m.hasPower(MinionPower.POWER_ID) && !m.halfDead) {
+ // flash();
+ // AbstractDungeon.player.gainGold(EXTRA_SOULS);
+ // }
+// }
@Override
public String getUpdatedDescription() {
diff --git a/src/main/java/collector/relics/PrismaticTorch.java b/src/main/java/collector/relics/PrismaticTorch.java
index 2dce28b10..5fa57bf32 100644
--- a/src/main/java/collector/relics/PrismaticTorch.java
+++ b/src/main/java/collector/relics/PrismaticTorch.java
@@ -86,4 +86,4 @@ public String getUpdatedDescription() {
return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/collector/relics/RoughDiamond.java b/src/main/java/collector/relics/RoughDiamond.java
index c06a9ac50..e200eba84 100644
--- a/src/main/java/collector/relics/RoughDiamond.java
+++ b/src/main/java/collector/relics/RoughDiamond.java
@@ -2,28 +2,64 @@
import basemod.abstracts.CustomRelic;
import collector.CollectorMod;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.EnergizedPower;
+import com.megacrit.cardcrawl.relics.Orrery;
+import downfall.util.RareCardReward;
import downfall.util.TextureLoader;
+import downfall.util.ThirdSealReward;
+import org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter;
+import sneckomod.util.ColorfulRareReward;
public class RoughDiamond extends CustomRelic {
public static final String ID = CollectorMod.makeID(RoughDiamond.class.getSimpleName());
private static final String IMG_PATH = RoughDiamond.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = RoughDiamond.class.getSimpleName() + ".png";
+ private boolean triggeredThisTurn = false;
+
public RoughDiamond() {
- super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.RARE, LandingSound.MAGICAL);
+ super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.BOSS, LandingSound.MAGICAL);
+ }
+
+ public void onEquip() {
+ AbstractDungeon.getCurrRoom().rewards.add(new RareCardReward(AbstractDungeon.player.getCardColor()));
+ AbstractDungeon.combatRewardScreen.open(this.DESCRIPTIONS[1]);
+ AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+ AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
}
+
@Override
- public void onPlayCard(AbstractCard c, AbstractMonster m) {
- if (c.rarity == AbstractCard.CardRarity.RARE && c.costForTurn >= 2) {
- flash();
- addToBot(new GainEnergyAction(1));
+ public void onVictory() {
+ stopPulse();
+ }
+
+ public void atTurnStart() {
+ this.triggeredThisTurn = false;
+ beginLongPulse();
+ }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.rarity == AbstractCard.CardRarity.RARE) {
+ if (!this.triggeredThisTurn) {
+ this.triggeredThisTurn = true;
+ stopPulse();
+ flash();
+ this.addToBot(new GainEnergyAction(1));
+ }
}
}
+ public boolean canSpawn() {
+ return ((AbstractDungeon.floorNum > 1)); // you cannot boss swap into this relic
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/collector/util/Wiz.java b/src/main/java/collector/util/Wiz.java
index c0ecba74c..39deeb58f 100644
--- a/src/main/java/collector/util/Wiz.java
+++ b/src/main/java/collector/util/Wiz.java
@@ -5,10 +5,14 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DiscardAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -22,6 +26,8 @@
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -101,12 +107,40 @@ public static boolean isInCombat() {
return CardCrawlGame.isInARun() && AbstractDungeon.currMapNode != null && AbstractDungeon.getCurrRoom() != null && AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT;
}
- public static void atb(AbstractGameAction action) {
- AbstractDungeon.actionManager.addToBottom(action);
+ public static void atb(AbstractGameAction... actions) {
+ for (AbstractGameAction action : actions)
+ AbstractDungeon.actionManager.addToBottom(action);
}
- public static void att(AbstractGameAction action) {
- AbstractDungeon.actionManager.addToTop(action);
+ public static void att(AbstractGameAction... actions) {
+ for (int i = actions.length - 1; i >= 0; i--)
+ AbstractDungeon.actionManager.addToTop(actions[i]);
+ }
+
+ public static AbstractGameAction actionify(Runnable todo) {
+ return new AbstractGameAction() {
+ public void update() {
+ isDone = true;
+ todo.run();
+ }
+ };
+ }
+
+ public static void actB(Runnable todo) {
+ atb(actionify(todo));
+ }
+
+ public static void actT(Runnable todo) {
+ att(actionify(todo));
+ }
+
+ public static AbstractGameAction multiAction(AbstractGameAction... actions) {
+ return actionify(() -> {
+ ArrayList actionsList = (ArrayList)Arrays.asList(actions);
+ Collections.reverse(actionsList);
+ for (AbstractGameAction action : actions)
+ att(action);
+ });
}
public static void vfx(AbstractGameEffect gameEffect) {
@@ -117,6 +151,14 @@ public static void vfx(AbstractGameEffect gameEffect, float duration) {
atb(new VFXAction(gameEffect, duration));
}
+ public static void vfxTop(AbstractGameEffect gameEffect) {
+ att(new VFXAction(gameEffect));
+ }
+
+ public static void vfxTop(AbstractGameEffect gameEffect, float duration) {
+ att(new VFXAction(gameEffect, duration));
+ }
+
public static void makeInHand(AbstractCard c, int i) {
atb(new MakeTempCardInHandAction(c, i));
}
diff --git a/src/main/java/downfall/actions/MessageCaller.java b/src/main/java/downfall/actions/MessageCaller.java
index 4728b0c83..8cd2220e2 100644
--- a/src/main/java/downfall/actions/MessageCaller.java
+++ b/src/main/java/downfall/actions/MessageCaller.java
@@ -4,10 +4,8 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import downfall.downfallMod;
-import downfall.tutorials.CharbossTutorials;
-import downfall.tutorials.CollectorTutorials;
-import downfall.tutorials.GuardianTutorials;
-import downfall.tutorials.HexaghostTutorials;
+import downfall.mainmenu.TalesAndTacticsPopup;
+import downfall.tutorials.*;
import hermit.util.HermitTutorials;
import java.io.IOException;
@@ -30,6 +28,7 @@ public void update() {
if (downfallMod.unseenTutorials[code]) {
switch (code) {
+ //case 5 is the t&t advert and handled elsewhere
case 0:
AbstractDungeon.ftue = new HermitTutorials();
break;
@@ -45,6 +44,21 @@ public void update() {
case 4:
AbstractDungeon.ftue = new CollectorTutorials();
break;
+ case 6:
+ AbstractDungeon.ftue = new SlimeBossTutorials();
+ break;
+ case 7:
+ AbstractDungeon.ftue = new ChampTutorials();
+ break;
+ case 8:
+ AbstractDungeon.ftue = new AutomatonTutorials();
+ break;
+ case 9:
+ AbstractDungeon.ftue = new GremlinsTutorials();
+ break;
+ case 10:
+ AbstractDungeon.ftue = new SneckoTutorials();
+ break;
}
downfallMod.unseenTutorials[code] = false;
diff --git a/src/main/java/downfall/cards/BloodySacrifice.java b/src/main/java/downfall/cards/BloodySacrifice.java
index 60f1b772c..db5e59aee 100644
--- a/src/main/java/downfall/cards/BloodySacrifice.java
+++ b/src/main/java/downfall/cards/BloodySacrifice.java
@@ -27,20 +27,23 @@ public class BloodySacrifice extends AbstractDownfallCard {
public BloodySacrifice() {
super(ID, cardStrings.NAME, IMG_PATH, 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.SPECIAL, CardTarget.SELF);
isEthereal = true;
- baseMagicNumber = magicNumber = 12;
+ baseMagicNumber = magicNumber = 8;
exhaust = true;
}
@Override
public void applyPowers() {
super.applyPowers();
- lose_hp = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * (float)magicNumber * 0.01f);
+ lose_hp = MathUtils.floor((float) AbstractDungeon.player.maxHealth * (float)magicNumber * 0.01f);
rawDescription = (cardStrings.DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[0].replace("{amount}",Integer.toString(lose_hp)) );
this.initializeDescription();
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new LoseHPAction(p, p, lose_hp));
+ AbstractDungeon.player.maxHealth -= this.lose_hp;
+ if (AbstractDungeon.player.currentHealth > AbstractDungeon.player.maxHealth) {
+ AbstractDungeon.player.currentHealth = AbstractDungeon.player.maxHealth;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new RitualPower(p, 1, true), 1));
}
@@ -48,7 +51,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(-5);
+ upgradeMagicNumber(-3);
}
}
diff --git a/src/main/java/downfall/cards/MajorBeam.java b/src/main/java/downfall/cards/MajorBeam.java
new file mode 100644
index 000000000..3be5c63a6
--- /dev/null
+++ b/src/main/java/downfall/cards/MajorBeam.java
@@ -0,0 +1,67 @@
+package downfall.cards;
+
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.RitualPower;
+import expansioncontent.cards.AbstractDownfallCard;
+import expansioncontent.cards.AbstractExpansionCard;
+import expansioncontent.expansionContentMod;
+import guardian.vfx.SmallLaserEffectColored;
+
+import java.util.Arrays;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class MajorBeam extends AbstractExpansionCard {
+
+ private static final int DAMAGE = 5;
+ public static final String ID = makeID("MajorBeam");
+ public static final String IMG_PATH = expansionContentMod.makeCardPath("MajorBeam.png");
+ private static final CardStrings cardStrings;
+
+ public MajorBeam() {
+ super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY, CardColor.COLORLESS);
+ baseDamage = DAMAGE;
+ loadJokeCardImage(this,"MajorBeam.png");
+ baseMagicNumber = magicNumber = 1;
+ //exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SmallLaserEffectColored(m.hb.cX, m.hb.cY, p.hb.cX, p.hb.cY, Color.WHITE), 0.2F));
+ }
+ this.addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new DrawCardAction(p, magicNumber));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(2);
+ upgradeMagicNumber(1);
+ rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ }
+}
diff --git a/src/main/java/downfall/cards/curses/Bewildered.java b/src/main/java/downfall/cards/curses/Bewildered.java
index c85a1fbf2..682c50d66 100644
--- a/src/main/java/downfall/cards/curses/Bewildered.java
+++ b/src/main/java/downfall/cards/curses/Bewildered.java
@@ -59,17 +59,6 @@ public void triggerWhenDrawn() {
this.flash();
}
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- return false;
- }
-
- // public void triggerOnOtherCardPlayed(AbstractCard c) {
-// AbstractDungeon.actionManager.addToBottom(new MuddleHandAction());
-// this.flash();
-// AbstractDungeon.actionManager.addToBottom(new DiscardSpecificCardAction(this));
-// }
-
public AbstractCard makeCopy() {
return new Bewildered();
}
diff --git a/src/main/java/downfall/cards/curses/Haunted.java b/src/main/java/downfall/cards/curses/Haunted.java
index b8d07942d..45d19685a 100644
--- a/src/main/java/downfall/cards/curses/Haunted.java
+++ b/src/main/java/downfall/cards/curses/Haunted.java
@@ -3,9 +3,12 @@
import basemod.abstracts.CustomCard;
import basemod.helpers.CardModifierManager;
+import collector.cards.OnOtherCardExhaustInHand;
import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -13,9 +16,10 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.downfallMod;
import expansioncontent.cardmods.PropertiesMod;
+import sneckomod.cards.TyphoonFang;
-public class Haunted extends CustomCard {
+public class Haunted extends CustomCard implements OnOtherCardExhaustInHand {
public static final String ID = downfallMod.makeID("Haunted");
public static final String NAME;
public static final String DESCRIPTION;
@@ -52,25 +56,34 @@ public void use(AbstractPlayer p, AbstractMonster m) {
@Override
public void triggerWhenDrawn() {
- super.triggerWhenDrawn();
- AbstractDungeon.actionManager.addToTop(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- for (AbstractCard c : AbstractDungeon.player.hand.group) {
- if (!c.isEthereal) {
- CardModifierManager.addModifier(c, new PropertiesMod(PropertiesMod.supportedProperties.ETHEREAL, false));
- c.superFlash(Color.PURPLE.cpy());
- }
- }
- }
- });
+// super.triggerWhenDrawn();
+// AbstractDungeon.actionManager.addToTop(new AbstractGameAction() {
+// @Override
+// public void update() {
+// isDone = true;
+// for (AbstractCard c : AbstractDungeon.player.hand.group) {
+// if (!c.isEthereal) {
+// CardModifierManager.addModifier(c, new PropertiesMod(PropertiesMod.supportedProperties.ETHEREAL, false));
+// c.superFlash(Color.PURPLE.cpy());
+// }
+// }
+// }
+// });
}
@Override
public void atTurnStart() {
}
+ @Override
+ public void onOtherCardExhaustWhileInHand(AbstractCard card) {
+ if (card != this) {
+ flash(Color.PURPLE.cpy());
+ this.addToTop(new DamageAction(AbstractDungeon.player, new DamageInfo(AbstractDungeon.player, 2, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.FIRE));
+ }
+ }
+
+
public AbstractCard makeCopy() {
return new Haunted();
}
diff --git a/src/main/java/downfall/cards/curses/Sapped.java b/src/main/java/downfall/cards/curses/Sapped.java
index b95088656..85ff56166 100644
--- a/src/main/java/downfall/cards/curses/Sapped.java
+++ b/src/main/java/downfall/cards/curses/Sapped.java
@@ -2,8 +2,12 @@
import collector.cards.AbstractCollectorCard;
import com.evacipated.cardcrawl.mod.stslib.fields.cards.AbstractCard.SoulboundField;
+import com.megacrit.cardcrawl.actions.unique.LoseEnergyAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import expansioncontent.expansionContentMod;
import static collector.CollectorMod.makeID;
@@ -11,9 +15,8 @@
public class Sapped extends AbstractCollectorCard {
public final static String ID = makeID(Sapped.class.getSimpleName());
// intellij stuff skill, none, special, , , , , 1, 1
-
public Sapped() {
- super(ID, 1, CardType.CURSE, CardRarity.CURSE, CardTarget.NONE, CardColor.CURSE);
+ super(ID, 0, CardType.CURSE, CardRarity.SPECIAL, CardTarget.NONE, CardColor.CURSE);
baseMagicNumber = magicNumber = 1;
isPyre();
exhaust = true;
@@ -23,7 +26,16 @@ public Sapped() {
public void use(AbstractPlayer p, AbstractMonster m) {
}
+ public void triggerWhenDrawn() {
+ this.addToBot(new LoseEnergyAction(1));
+ }
+
+ @Override
+ public boolean canUpgrade() {
+ return false;
+ }
+
public void upp() {
- upgradeMagicNumber(1);
}
+
}
diff --git a/src/main/java/downfall/cards/curses/Scatterbrained.java b/src/main/java/downfall/cards/curses/Scatterbrained.java
index e8e448960..d6c12268d 100644
--- a/src/main/java/downfall/cards/curses/Scatterbrained.java
+++ b/src/main/java/downfall/cards/curses/Scatterbrained.java
@@ -24,10 +24,10 @@ public class Scatterbrained extends CustomCard {
public static final String IMG_PATH = downfallMod.assetPath("images/cards/scatterbrained.png");
private static final CardType TYPE = CardType.CURSE;
- private static final CardRarity RARITY = CardRarity.CURSE;
+ private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.NONE;
private static final CardStrings cardStrings;
- private static final int COST = 2;
+ private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
private boolean auto_used_end_turn = false;
diff --git a/src/main/java/downfall/downfallMod.java b/src/main/java/downfall/downfallMod.java
index e3225fe52..b9ab7c32f 100644
--- a/src/main/java/downfall/downfallMod.java
+++ b/src/main/java/downfall/downfallMod.java
@@ -39,11 +39,14 @@
import charbosses.bosses.Hermit.CharBossHermit;
import charbosses.bosses.Ironclad.CharBossIronclad;
import charbosses.bosses.Merchant.CharBossMerchant;
+import charbosses.bosses.Merchant.CharBossMerchant;
import charbosses.bosses.Silent.CharBossSilent;
import charbosses.bosses.Watcher.CharBossWatcher;
import collector.CollectorChar;
import collector.CollectorMod;
import collector.potions.TempHPPotion;
+import com.megacrit.cardcrawl.rooms.MonsterRoomBoss;
+import downfall.cards.MajorBeam;
import downfall.cards.curses.Sapped;
import collector.util.CollectibleCardReward;
import collector.util.EssenceReward;
@@ -139,6 +142,7 @@
import sneckomod.cards.unknowns.*;
import sneckomod.potions.MuddlingPotion;
import sneckomod.util.ColorfulCardReward;
+
import sneckomod.util.UpgradedUnknownReward;
import theHexaghost.HexaMod;
import theHexaghost.TheHexaghost;
@@ -153,12 +157,13 @@
import static downfall.patches.EvilModeCharacterSelect.evilMode;
import static reskinContent.reskinContent.unlockAllReskin;
+import static sneckomod.OffclassHelper.getARandomOffclass;
@SpireInitializer
public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubscriber, PostDrawSubscriber, PostDungeonInitializeSubscriber, EditStringsSubscriber, EditKeywordsSubscriber, AddCustomModeModsSubscriber, PostInitializeSubscriber, EditRelicsSubscriber, EditCardsSubscriber, PostUpdateSubscriber, StartGameSubscriber, StartActSubscriber, AddAudioSubscriber, RenderSubscriber, PostDeathSubscriber {
public static final String modID = "downfall";
- public static final boolean STEAM_MODE = false;
+ public static final boolean STEAM_MODE = true;
public static boolean neowtextoverride = false;
@@ -210,11 +215,20 @@ public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubs
public static String Act3BossFaced = "";
public static boolean[] unseenTutorials = new boolean[]{true, // Hermit
- true, // Guardian
- true, // Hexa
- true, // Charboss Info
- true, // COLLECTOR info. Wow, it's hard to believe how much has gone on since the last tutorial was made
- true // THE T&T ADVERTISEMENT!!! ADVERTISING!! To be fair we worked really hard both on T&T and this project
+
+ true, // Guardian 1
+ true, // Hexa 2
+ true, // Charboss Info 3
+ true, // COLLECTOR info. Wow, it's hard to believe how much has gone on since the last tutorial was made 4
+ true, // t&t advert 5
+ true, // Slime Boss 6
+ true, // Champ 7
+ true, // Auto 8
+ true, // Gremlins 9
+ true // Snecko 10
+ // true, //act3 boss 11
+ // true, //act3 boss 12
+ // true //act3 boss 13
};
public static Properties tutorialSaves = new Properties();
@@ -235,10 +249,10 @@ public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubs
Settings.GameLanguage.ENG, Settings.GameLanguage.ZHS,
Settings.GameLanguage.JPN,
Settings.GameLanguage.KOR,
- Settings.GameLanguage.FRA,
+ // Settings.GameLanguage.FRA,
// Settings.GameLanguage.ZHT,
- Settings.GameLanguage.RUS,
-// Settings.GameLanguage.PTB
+ // Settings.GameLanguage.RUS,
+ // Settings.GameLanguage.PTB
};
public static ReplaceData[] wordReplacements;
@@ -452,6 +466,7 @@ public void receiveEditCards() {
// BaseMod.addCard(new ShieldSmash());
// BaseMod.addCard(new Debug());
//BaseMod.addCard(new PeaceOut());
+ BaseMod.addCard(new MajorBeam());
BaseMod.addCard(new Malfunctioning());
BaseMod.addCard(new Bewildered());
BaseMod.addCard(new Haunted());
@@ -546,13 +561,14 @@ public static ArrayList getRandomDownfallCurse(int count) {
}
public void receivePostInitialize() {
+ addPotions();
UnlockTracker.betaCardPref = new IndividualBetaArtEnablerPref(UnlockTracker.betaCardPref);
soulsImage = TextureLoader.getTexture(downfallMod.assetPath("images/ui/Souls.png"));
loadOtherData();
this.initializeMonsters();
-// this.addPotions();
+ this.addPotions(); // sorry
this.initializeEvents();
this.initializeConfig();
@@ -923,7 +939,7 @@ private void initializeEvents() {
BaseMod.addEvent(new AddEventParams.Builder(Serpent_Evil.ID, Serpent_Evil.class) //Event ID//
//Event Spawn Condition//
- .spawnCondition(() -> evilMode)
+ .spawnCondition(() -> evilMode && !(AbstractDungeon.player instanceof TheSnecko))
//Event ID to Override//
.overrideEvent(Sssserpent.ID)
//Event Type//
@@ -959,6 +975,7 @@ private void initializeEvents() {
//Event ID to Override//
.overrideEvent(Ghosts.ID)
//Event Type//
+
.eventType(EventUtils.EventType.FULL_REPLACE).create());
BaseMod.addEvent(new AddEventParams.Builder(CursedTome_Evil.ID, CursedTome_Evil.class) //Event ID//
@@ -1112,7 +1129,7 @@ private void initializeEvents() {
.spawnCondition(() -> evilMode)
//Event ID to Override//
.overrideEvent(Duplicator.ID).eventType(EventUtils.EventType.FULL_REPLACE)
- // .bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
+ .bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
.create());
BaseMod.addEvent(new AddEventParams.Builder(PurificationShrineEvil.ID, PurificationShrineEvil.class) //Event ID//
@@ -1120,7 +1137,7 @@ private void initializeEvents() {
.spawnCondition(() -> evilMode)
//Event ID to Override//
.overrideEvent(PurificationShrine.ID).eventType(EventUtils.EventType.FULL_REPLACE)
- //.bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
+ .bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
.create());
BaseMod.addEvent(new AddEventParams.Builder(TransmogrifierEvil.ID, TransmogrifierEvil.class) //Event ID//
@@ -1128,7 +1145,7 @@ private void initializeEvents() {
.spawnCondition(() -> evilMode)
//Event ID to Override//
.overrideEvent(Transmogrifier.ID).eventType(EventUtils.EventType.FULL_REPLACE)
- //.bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
+ .bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
.create());
BaseMod.addEvent(new AddEventParams.Builder(UpgradeShrineEvil.ID, UpgradeShrineEvil.class) //Event ID//
@@ -1136,7 +1153,7 @@ private void initializeEvents() {
.spawnCondition(() -> evilMode)
//Event ID to Override//
.overrideEvent(UpgradeShrine.ID).eventType(EventUtils.EventType.FULL_REPLACE)
- //.bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
+ .bonusCondition(() -> !(AbstractDungeon.player instanceof GuardianCharacter))
.create());
}
@@ -1150,7 +1167,7 @@ private void initializeMonsters() {
BaseMod.addMonster(FleeingMerchant.ID, FleeingMerchant::new);
- BaseMod.addMonster("downfall:CharBossMerchant", () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossMerchant()}));
+ //BaseMod.addMonster("downfall:CharBossMerchant", () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossMerchant()})); moved to boss section
BaseMod.addMonster(downfall.monsters.FaceTrader.ID, downfall.monsters.FaceTrader::new);
@@ -1235,11 +1252,16 @@ private void initializeMonsters() {
//new Hermit(),
}));
- BaseMod.addMonster(CharBossIronclad.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossIronclad()}));
- BaseMod.addMonster(CharBossSilent.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossSilent()}));
- BaseMod.addMonster(CharBossDefect.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossDefect()}));
- BaseMod.addMonster(CharBossWatcher.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossWatcher()}));
- BaseMod.addMonster(CharBossHermit.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossHermit()}));
+
+ //RUN HISTORY WORKS NOW!!! You can now actually see what bosses you fought in a run.
+ //it doesn't work :(
+ BaseMod.addMonster(CharBossIronclad.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[1], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossIronclad()}));
+ BaseMod.addMonster(CharBossSilent.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[2], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossSilent()}));
+ BaseMod.addMonster(CharBossDefect.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[3], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossDefect()}));
+ BaseMod.addMonster(CharBossWatcher.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[4], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossWatcher()}));
+ BaseMod.addMonster(CharBossHermit.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[6], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossHermit()}));
+ BaseMod.addMonster(CharBossMerchant.ID, LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[5], () -> new CharBossMonsterGroup(new AbstractMonster[]{new CharBossMerchant()}));
+
BaseMod.addMonster(NeowBoss.ID, () -> new MonsterGroup(new AbstractMonster[]{new NeowBoss()}));
BaseMod.addMonster(NeowBossFinal.ID, () -> new CharBossMonsterGroup(new AbstractMonster[]{new NeowBossFinal()}));
@@ -1249,17 +1271,16 @@ private void initializeMonsters() {
}
public void addPotions() {
- if(EvilModeCharacterSelect.evilMode || downfallMod.contentSharing_potions){
BaseMod.addPotion(BossPotion.class, Color.MAROON, Color.MAROON, new Color(0x470000ff), BossPotion.POTION_ID);
BaseMod.addPotion(BlockOnCardUsePotion.class, Color.ROYAL, Color.TEAL, Color.BLUE, BlockOnCardUsePotion.POTION_ID);
- BaseMod.addPotion(SoulburnPotion.class, Color.GRAY, Color.GRAY, Color.BLACK, SoulburnPotion.POTION_ID);
BaseMod.addPotion(MuddlingPotion.class, Color.CYAN, Color.CORAL, Color.MAROON, MuddlingPotion.POTION_ID);
BaseMod.addPotion(ThreeZeroPotion.class, Color.FOREST, Color.BLACK, Color.BLACK, ThreeZeroPotion.POTION_ID);
- BaseMod.addPotion(TempHPPotion.class, Color.BLACK, Color.PURPLE, Color.GRAY, TempHPPotion.POTION_ID);
+ // BaseMod.addPotion(TempHPPotion.class, Color.BLACK, Color.PURPLE, Color.GRAY, TempHPPotion.POTION_ID);
BaseMod.addPotion(CounterstrikePotion.class, Color.GRAY, Color.GRAY, Color.BLACK, CounterstrikePotion.POTION_ID);
BaseMod.addPotion(BurnAndBuffPotion.class, Color.RED, Color.GREEN, Color.CLEAR, BurnAndBuffPotion.POTION_ID);
BaseMod.addPotion(WizPotion.class, Color.PURPLE, Color.PINK, Color.PURPLE, WizPotion.POTION_ID);
- }
+ // BaseMod.addPotion(SoulburnPotion.class, Color.GRAY, Color.GRAY, Color.BLACK, SoulburnPotion.POTION_ID, TheHexaghost.Enums.THE_SPIRIT);
+
if(EvilModeCharacterSelect.evilMode || downfallMod.contentSharing_events){
BaseMod.addPotion(CursedFountainPotion.class, Color.PURPLE, Color.MAROON, Color.BLACK, CursedFountainPotion.POTION_ID);
@@ -1274,8 +1295,11 @@ public void addPotions() {
@Override
public void receiveEditRelics() {
BaseMod.addRelic(new ShatteredFragment(), RelicType.SHARED);
+ BaseMod.addRelic(new BlackCandle(), RelicType.SHARED);
+ BaseMod.addRelic(new Hecktoplasm(), RelicType.SHARED);
BaseMod.addRelic(new BrokenWingStatue(), RelicType.SHARED);
BaseMod.addRelic(new CloakOfManyFaces(), RelicType.SHARED);
+ BaseMod.addRelic(new BurdenOfKnowledge(), RelicType.SHARED);
BaseMod.addRelic(new GremlinSack(), RelicType.SHARED);
BaseMod.addRelic(new GremlinWheel(), RelicType.SHARED);
BaseMod.addRelic(new RedIOU(), RelicType.SHARED);
@@ -1289,6 +1313,7 @@ public void receiveEditRelics() {
BaseMod.addRelic(new NeowBlessing(), RelicType.SHARED);
BaseMod.addRelic(new ExtraCursedBell(), RelicType.SHARED);
BaseMod.addRelic(new ExtraCursedKey(), RelicType.SHARED);
+ addPotions();
}
public static boolean readyToDoThing = false;
@@ -1442,7 +1467,6 @@ public int receiveOnPlayerDamaged(int i, DamageInfo damageInfo) {
@Override
public void receivePostDungeonInitialize() {
-
addPotions();
if (CardCrawlGame.trial != null && CardCrawlGame.trial.dailyModIDs().contains(Jewelcrafting.ID) || ModHelper.isModEnabled(Jewelcrafting.ID)) {
@@ -1520,16 +1544,11 @@ public void receivePostDungeonInitialize() {
if (CardCrawlGame.trial != null && CardCrawlGame.trial.dailyModIDs().contains(Improvised.ID) || ModHelper.isModEnabled(Improvised.ID)) {
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonAttack());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonAttack());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonAttack());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonSkill());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonSkill());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownCommonSkill());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownUncommonAttack());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownUncommonSkill());
- AbstractDungeon.player.masterDeck.addToTop(new UnknownUncommonPower());
- AbstractDungeon.player.masterDeck.addToTop(new Unknown());
+ for (int i = 0; i < 10; i++) {
+ AbstractCard newCard = getARandomOffclass();
+ AbstractDungeon.player.masterDeck.addToTop(newCard);
+ }
+
}
if (CardCrawlGame.trial != null && CardCrawlGame.trial.dailyModIDs().contains(TooManyShivs.ID) || ModHelper.isModEnabled(TooManyShivs.ID)) {
@@ -1656,25 +1675,36 @@ public void receiveOnBattleStart(AbstractRoom abstractRoom) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, m, new LastStandModPower(m, AbstractDungeon.actNum * 2), AbstractDungeon.actNum * 2));
}
+ // Code 0 is Hermit's Tutorial and already within his own mod.
+
+ if ((CardCrawlGame.trial != null && CardCrawlGame.trial.dailyModIDs().contains(ChampStances.ID)) || ModHelper.isModEnabled(ChampStances.ID)) {
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new ModFinisher()));
+ }
+
+ if ((CardCrawlGame.trial != null && CardCrawlGame.trial.dailyModIDs().contains(Enraging.ID)) || ModHelper.isModEnabled(Enraging.ID)) {
+ for (AbstractMonster m : abstractRoom.monsters.monsters)
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, m, new LastStandModPower(m, AbstractDungeon.actNum * 2), AbstractDungeon.actNum * 2));
+ }
+
+ //guardian tutorial 1
if (AbstractDungeon.player instanceof GuardianCharacter) {
if (downfallMod.unseenTutorials[1]) {
AbstractDungeon.actionManager.addToBottom(new MessageCaller(1));
}
}
-
+ //hexa tutorial 2
if (AbstractDungeon.player instanceof TheHexaghost) {
if (downfallMod.unseenTutorials[2]) {
AbstractDungeon.actionManager.addToBottom(new MessageCaller(2));
}
}
-
+ //collector tutorial 4
if (AbstractDungeon.player.chosenClass.equals(CollectorChar.Enums.THE_COLLECTOR)) {
if (downfallMod.unseenTutorials[4]) {
AbstractDungeon.actionManager.addToTop(new MessageCaller(4));
}
}
-
- /*
+ //charboss tutorial 3
if (abstractRoom instanceof MonsterRoomBoss) {
if (evilMode) {
if (downfallMod.unseenTutorials[3]) {
@@ -1682,7 +1712,36 @@ public void receiveOnBattleStart(AbstractRoom abstractRoom) {
}
}
}
- */
+ //slime boss tutorial 6
+ if (AbstractDungeon.player instanceof SlimeboundCharacter) {
+ if (downfallMod.unseenTutorials[6]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(6));
+ }
+ }
+ //champ tutorial 7
+ if (AbstractDungeon.player instanceof ChampChar) {
+ if (downfallMod.unseenTutorials[7]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(7));
+ }
+ }
+ //auto tutorial 8
+ if (AbstractDungeon.player instanceof AutomatonChar) {
+ if (downfallMod.unseenTutorials[8]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(8));
+ }
+ }
+ //grems tutorial 9
+ if (AbstractDungeon.player instanceof GremlinCharacter) {
+ if (downfallMod.unseenTutorials[9]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(9));
+ }
+ }
+ //snecko tutorial 10
+ if (AbstractDungeon.player instanceof TheSnecko) {
+ if (downfallMod.unseenTutorials[10]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(10));
+ }
+ }
}
diff --git a/src/main/java/downfall/events/Beggar_Evil.java b/src/main/java/downfall/events/Beggar_Evil.java
index bca017c88..4572944f4 100644
--- a/src/main/java/downfall/events/Beggar_Evil.java
+++ b/src/main/java/downfall/events/Beggar_Evil.java
@@ -51,12 +51,18 @@ public Beggar_Evil() {
super(NAME, DESCRIPTIONS[0], "images/events/beggar.jpg");
this.noCardsInRewards = true;
+
+
if (AbstractDungeon.ascensionLevel >= 15) {
this.gold = 50;
} else {
this.gold = 75;
}
+ if (Cleric_Evil.encountered) {
+ this.gold = this.gold*2;
+ }
+
this.imageEventText.setDialogOption(OPTIONS[4]);
this.screen = CurScreen.INTRO;
this.cardsToRemove = 1;
diff --git a/src/main/java/downfall/events/CouncilOfGhosts_Evil.java b/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
index 9531e0420..dbcad3e9c 100644
--- a/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
+++ b/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
@@ -7,12 +7,14 @@
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.colorless.Apparition;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import gremlin.patches.GremlinEnum;
import java.util.ArrayList;
import java.util.Collections;
@@ -45,15 +47,21 @@ public class CouncilOfGhosts_Evil extends AbstractImageEvent {
private int screenNum = 0;
private int hpLoss = 0;
- private int goldCost = 150;
+ private int goldCost = 100;
public CouncilOfGhosts_Evil() {
super(NAME, DESCRIPTIONSALT[0], "images/events/ghost.jpg");
this.hpLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.5F);
+ if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+ this.hpLoss = this.hpLoss*5;
+ }
if (this.hpLoss >= AbstractDungeon.player.maxHealth) {
this.hpLoss = AbstractDungeon.player.maxHealth - 1;
}
+ if (AbstractDungeon.ascensionLevel >= 15){
+ goldCost = 150;
+ }
if (AbstractDungeon.player.gold >= goldCost) {
this.imageEventText.setDialogOption(OPTIONSALT[0] + this.goldCost + OPTIONSALT[1], new Apparition());
diff --git a/src/main/java/downfall/events/GoldenIdol_Evil.java b/src/main/java/downfall/events/GoldenIdol_Evil.java
index 10cf63d2d..ca6e24a27 100644
--- a/src/main/java/downfall/events/GoldenIdol_Evil.java
+++ b/src/main/java/downfall/events/GoldenIdol_Evil.java
@@ -36,6 +36,10 @@ public GoldenIdol_Evil() {
super(NAME, "", "images/events/goldenIdol.jpg");
this.screen = CurScreen.INTRO;
+ if (AbstractDungeon.ascensionLevel >= 15){
+ gold = 75;
+ }
+
if (!trapAlreadySet) {
for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
if (c.hasTag(AbstractCard.CardTags.STARTER_STRIKE)) {
diff --git a/src/main/java/downfall/events/MindBloom_Evil.java b/src/main/java/downfall/events/MindBloom_Evil.java
index 6d0212250..58666e2b9 100644
--- a/src/main/java/downfall/events/MindBloom_Evil.java
+++ b/src/main/java/downfall/events/MindBloom_Evil.java
@@ -33,9 +33,7 @@
import downfall.monsters.GremlinMirror;
import downfall.monsters.SneckoMirror;
import downfall.patches.ui.campfire.AddBustKeyButtonPatches;
-import downfall.relics.HeartBlessingBlue;
-import downfall.relics.HeartBlessingGreen;
-import downfall.relics.HeartBlessingRed;
+import downfall.relics.*;
import gremlin.characters.GremlinCharacter;
import guardian.characters.GuardianCharacter;
import slimebound.characters.SlimeboundCharacter;
@@ -77,10 +75,19 @@ public MindBloom_Evil() {
if (AbstractDungeon.player instanceof GremlinCharacter) {
this.imageEventText.setDialogOption(OPTIONSALT[5]);
} else {
- this.imageEventText.setDialogOption(OPTIONSALT[2]);
+ //this.imageEventText.setDialogOption(OPTIONSALT[2]);
+ //if ruining the surprise is important use this instead
+ this.imageEventText.setDialogOption(OPTIONSALT[2], new BurdenOfKnowledge());
}
} else {
- this.imageEventText.setDialogOption(OPTIONSALT[3], true);
+ if (AbstractDungeon.player instanceof GremlinCharacter) {
+ this.imageEventText.setDialogOption(OPTIONSALT[5]);
+ } else {
+ this.imageEventText.setDialogOption(OPTIONSALT[2]);
+ //if ruining the surprise is important use this instead
+ // this.imageEventText.setDialogOption(OPTIONSALT[2], new BurdenOfKnowledge());
+ }
+ //this.imageEventText.setDialogOption(OPTIONSALT[3], true);
}
if (AbstractDungeon.floorNum % 50 <= 40) {
@@ -171,29 +178,17 @@ protected void buttonEffect(int buttonPressed) {
case 1:
this.imageEventText.updateBodyText(DESCRIPTIONSALT[2]);
this.screen = CurScreen.LEAVE;
- int effectCount = 0;
List upgradedCards = new ArrayList();
-
- for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
- if (c.canUpgrade()) {
- ++effectCount;
- if (effectCount <= 20) {
- float x = MathUtils.random(0.1F, 0.9F) * (float) Settings.WIDTH;
- float y = MathUtils.random(0.2F, 0.8F) * (float) Settings.HEIGHT;
- AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy(), x, y));
- AbstractDungeon.topLevelEffects.add(new UpgradeShineEffect(x, y));
- }
-
- upgradedCards.add(c.cardID);
- c.upgrade();
- AbstractDungeon.player.bottledCardUpgradeCheck(c);
- }
- }
-
AbstractDungeon.player.loseRelic(HeartBlessingRed.ID);
AbstractDungeon.player.loseRelic(HeartBlessingBlue.ID);
AbstractDungeon.player.loseRelic(HeartBlessingGreen.ID);
+ // if (AbstractDungeon.ascensionLevel >= 15) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new BurdenOfKnowledge());
+ logMetricObtainRelic(ID, "BurdenOfKnowledge", new BurdenOfKnowledge());
+ // }
+
+
logMetricUpgradeCards(ID, "Upgrade", upgradedCards);
this.imageEventText.updateDialogOption(0, OPTIONS[4]);
diff --git a/src/main/java/downfall/events/Nloth_Evil.java b/src/main/java/downfall/events/Nloth_Evil.java
index c86a4785a..2bd41ae2b 100644
--- a/src/main/java/downfall/events/Nloth_Evil.java
+++ b/src/main/java/downfall/events/Nloth_Evil.java
@@ -1,19 +1,28 @@
package downfall.events;
+import automaton.relics.BottledCode;
+import champ.relics.SignatureFinisher;
+import collector.relics.BottledCollectible;
+import collector.relics.ForbiddenFruit;
import com.megacrit.cardcrawl.cards.curses.Pain;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.localization.EventStrings;
-import com.megacrit.cardcrawl.relics.AbstractRelic;
-import com.megacrit.cardcrawl.relics.Circlet;
-import com.megacrit.cardcrawl.relics.NlothsGift;
+import com.megacrit.cardcrawl.relics.*;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import guardian.relics.BottledStasis;
+import guardian.relics.PickAxe;
+import sneckomod.relics.D8;
+import sneckomod.relics.SneckoBoss;
+import sneckomod.relics.SneckoCommon;
+import theHexaghost.relics.Libra;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Iterator;
import java.util.Random;
public class Nloth_Evil extends AbstractImageEvent {
@@ -48,7 +57,39 @@ public class Nloth_Evil extends AbstractImageEvent {
public Nloth_Evil() {
super(NAME, DIALOG_1, "images/events/nloth.jpg");
ArrayList relics = new ArrayList();
- relics.addAll(AbstractDungeon.player.relics);
+ Iterator relicIterator = relics.iterator();
+ while (relicIterator.hasNext()) {
+ AbstractRelic r = relicIterator.next();
+ //Starter / Boss fairness
+ if (r.tier == AbstractRelic.RelicTier.STARTER || r.tier == AbstractRelic.RelicTier.BOSS ||
+ //commons
+ (r.relicId.equals(Strawberry.ID) ||
+ r.relicId.equals(MawBank.ID) ||
+ r.relicId.equals(PickAxe.ID) ||
+ r.relicId.equals(Matryoshka.ID) || // I mixed up tiny chest and this lol
+ r.relicId.equals(WarPaint.ID) ||
+ r.relicId.equals(Whetstone.ID) || r.relicId.equals(SneckoCommon.ID) || r.relicId.equals(PotionBelt.ID) ||
+ //uncommons
+ r.relicId.equals(BottledFlame.ID) ||
+ r.relicId.equals(BottledLightning.ID) ||
+ r.relicId.equals(BottledTornado.ID) ||
+ r.relicId.equals(BottledStasis.ID) ||
+ r.relicId.equals(Pear.ID) ||
+ //rares
+ r.relicId.equals(BottledCollectible.ID) ||
+ r.relicId.equals(LizardTail.ID) ||
+ r.relicId.equals(Mango.ID) ||
+ r.relicId.equals(SignatureFinisher.ID) ||
+ r.relicId.equals(BottledCode.ID) ||
+ r.relicId.equals(WingBoots.ID)) ||
+ //event
+
+ r.relicId.equals(D8.ID))
+ {
+ relicIterator.remove(); // Remove the blacklisted relic
+ }
+ }
+
Collections.shuffle(relics, new Random(AbstractDungeon.miscRng.randomLong()));
this.choice1 = relics.get(0);
this.choice2 = relics.get(1);
diff --git a/src/main/java/downfall/events/ShiningLight_Evil.java b/src/main/java/downfall/events/ShiningLight_Evil.java
index 2f3ae9c3f..2c3c433a4 100644
--- a/src/main/java/downfall/events/ShiningLight_Evil.java
+++ b/src/main/java/downfall/events/ShiningLight_Evil.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.curses.Pain;
import com.megacrit.cardcrawl.cards.curses.Regret;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -11,6 +12,7 @@
import com.megacrit.cardcrawl.vfx.UpgradeShineEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
+import downfall.cards.curses.Icky;
import downfall.cards.curses.Malfunctioning;
import java.util.*;
@@ -24,6 +26,7 @@ public class ShiningLight_Evil extends AbstractImageEvent {
private static final String INTRO;
private static final String AGREE_DIALOG;
private static final String DISAGREE_DIALOG;
+ private int curseObtainChance = 3;
private static final float HP_LOSS_PERCENT = 0.2F;
private static final float A_2_HP_LOSS_PERCENT = 0.3F;
@@ -45,7 +48,10 @@ public ShiningLight_Evil() {
this.screen = CUR_SCREEN.INTRO;
if (AbstractDungeon.player.masterDeck.hasUpgradableCards()) {
- this.imageEventText.setDialogOption(OPTIONS[0], new Malfunctioning());
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.curseObtainChance = 2;
+ }
+ this.imageEventText.setDialogOption(OPTIONS[0] + this.curseObtainChance + OPTIONS[3], new Malfunctioning());
} else {
this.imageEventText.setDialogOption(OPTIONS[2], true);
}
@@ -116,17 +122,23 @@ private void upgradeCards() {
} else {
upgradableCards.get(0).upgrade();
upgradableCards.get(1).upgrade();
- upgradableCards.get(2).upgrade();
+ if (AbstractDungeon.ascensionLevel < 15) {
+ upgradableCards.get(2).upgrade();
+ }
cardMetrics.add(upgradableCards.get(0).cardID);
cardMetrics.add(upgradableCards.get(1).cardID);
- cardMetrics.add(upgradableCards.get(2).cardID);
- AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(0));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ cardMetrics.add(upgradableCards.get(2).cardID);
+ }
+ AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(0));
AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(1));
- AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(2));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(2));
+ }
AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(0).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F - 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(1).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(2).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F + 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
-
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(1).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F + 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(2).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));}
}
}
diff --git a/src/main/java/downfall/events/WeMeetAgain_Evil.java b/src/main/java/downfall/events/WeMeetAgain_Evil.java
index 8a689a348..7a441a481 100644
--- a/src/main/java/downfall/events/WeMeetAgain_Evil.java
+++ b/src/main/java/downfall/events/WeMeetAgain_Evil.java
@@ -1,6 +1,9 @@
package downfall.events;
+import champ.relics.SignatureFinisher;
import collector.CollectorChar;
+import collector.relics.BottledCollectible;
+import collector.relics.ForbiddenFruit;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -8,11 +11,16 @@
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.helpers.PotionHelper;
import com.megacrit.cardcrawl.localization.EventStrings;
-import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.*;
import com.megacrit.cardcrawl.rewards.RewardItem;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.vfx.RainingGoldEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import guardian.relics.BottledStasis;
+import guardian.relics.PickAxe;
+import sneckomod.relics.SneckoBoss;
+import sneckomod.relics.SneckoCommon;
+import theHexaghost.relics.Libra;
import java.util.ArrayList;
import java.util.Collections;
@@ -54,11 +62,41 @@ public WeMeetAgain_Evil() {
ArrayList playerUncommonRelics = new ArrayList<>();
for (AbstractRelic r : AbstractDungeon.player.relics) {
- if (r.tier == AbstractRelic.RelicTier.COMMON) {
- playerCommonRelics.add(r);
- }
- if (r.tier == AbstractRelic.RelicTier.UNCOMMON) {
- playerUncommonRelics.add(r);
+ if
+ //Commons
+ ((r.relicId != Strawberry.ID) &&
+ (r.relicId != MawBank.ID) &&
+ (r.relicId != PickAxe.ID) &&
+ (r.relicId != TinyChest.ID) &&
+ (r.relicId != WarPaint.ID) &&
+ (r.relicId != Whetstone.ID) &&
+ (r.relicId != SneckoCommon.ID) &&
+ (r.relicId != PotionBelt.ID) &&
+ //Uncommons
+ (r.relicId != BottledFlame.ID) &&
+ (r.relicId != BottledLightning.ID) &&
+ (r.relicId != BottledTornado.ID) &&
+ (r.relicId != BottledStasis.ID) &&
+ (r.relicId != Pear.ID) &&
+ //Rares
+ (r.relicId != BottledCollectible.ID) &&
+ (r.relicId != LizardTail.ID) &&
+ (r.relicId != Mango.ID) &&
+ (r.relicId != SignatureFinisher.ID) &&
+ (r.relicId != WingBoots.ID) &&
+ //Boss
+ (r.relicId != Astrolabe.ID) &&
+ (r.relicId != ForbiddenFruit.ID) &&
+ (r.relicId != Libra.ID) &&
+ (r.relicId != SneckoBoss.ID) &&
+ (r.relicId != PandorasBox.ID)) {
+
+ if (r.tier == AbstractRelic.RelicTier.COMMON) {
+ playerCommonRelics.add(r);
+ }
+ if (r.tier == AbstractRelic.RelicTier.UNCOMMON) {
+ playerUncommonRelics.add(r);
+ }
}
}
diff --git a/src/main/java/downfall/events/WingStatue_Evil.java b/src/main/java/downfall/events/WingStatue_Evil.java
index 5838fb79c..d8d76764b 100644
--- a/src/main/java/downfall/events/WingStatue_Evil.java
+++ b/src/main/java/downfall/events/WingStatue_Evil.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
import downfall.relics.BrokenWingStatue;
import downfall.relics.ShatteredFragment;
+import gremlin.patches.GremlinEnum;
public class WingStatue_Evil extends AbstractImageEvent {
public static final String ID = "downfall:WingStatue";
@@ -28,13 +29,43 @@ public class WingStatue_Evil extends AbstractImageEvent {
}
private CurScreen screen;
- private int damage = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.15F);
+ private int goldLoss;
public WingStatue_Evil() {
super(NAME, DESCRIPTIONS[0], "images/events/goldenWing.jpg");
this.screen = CurScreen.INTRO;
- this.imageEventText.setDialogOption(OPTIONS[0] + this.damage + OPTIONS[1], new ShatteredFragment());
+
+
+ this.goldLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.25F);
+ if (AbstractDungeon.ascensionLevel >= 15){
+ this.goldLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.35F);
+ }
+
+ if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+ this.goldLoss = this.goldLoss*5;
+ }
+
+// if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+// }
+// if (this.goldLoss >= AbstractDungeon.player.maxHealth) {
+// this.goldLoss = AbstractDungeon.player.maxHealth - 1;
+// }
+
+// if (AbstractDungeon.ascensionLevel >= 15) {
+// this.goldLoss = AbstractDungeon.miscRng.random(100, 125);
+// } else {
+// this.goldLoss = AbstractDungeon.miscRng.random(75, 100);
+// }
+
+// if (this.goldLoss > AbstractDungeon.player.gold) {
+// this.goldLoss = AbstractDungeon.player.gold;
+// }
+
+
+ // lose 20 (25)% hp as damage, obtain relic
+ this.imageEventText.setDialogOption(OPTIONS [0] + goldLoss + OPTIONS[1], new ShatteredFragment());
+ //
this.imageEventText.setDialogOption(OPTIONS[2] + ((AbstractDungeon.ascensionLevel >= 15)?7:5) + OPTIONS[4], new BrokenWingStatue());
this.imageEventText.setDialogOption(OPTIONS[3]);
}
@@ -49,10 +80,11 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.setDialogOption(OPTIONS[3]);
AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new ShatteredFragment());
// AbstractDungeon.player.decreaseMaxHealth(this.damage);
- AbstractDungeon.player.damage(new DamageInfo(null, this.damage));
- AbstractDungeon.effectList.add(new FlashAtkImgEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, AttackEffect.FIRE));
+ // AbstractDungeon.player.damage(new DamageInfo(null, this.damage));
+ // AbstractDungeon.effectList.add(new FlashAtkImgEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, AttackEffect.FIRE));
+ AbstractDungeon.player.damage(new DamageInfo(null, this.goldLoss));
this.screen = CurScreen.RESULT;
- logMetricObtainRelicAndDamage(ID, "Destroyed Statue", new ShatteredFragment(), damage);
+ logMetricObtainRelicAndDamage(ID, "Destroyed Statue", new ShatteredFragment(), goldLoss);
return;
case 1:
this.imageEventText.updateBodyText(DESCRIPTIONS[1]);
diff --git a/src/main/java/downfall/events/WorldOfGoop_Evil.java b/src/main/java/downfall/events/WorldOfGoop_Evil.java
index 4c4629038..5d684d69e 100644
--- a/src/main/java/downfall/events/WorldOfGoop_Evil.java
+++ b/src/main/java/downfall/events/WorldOfGoop_Evil.java
@@ -1,5 +1,6 @@
package downfall.events;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -40,14 +41,15 @@ public WorldOfGoop_Evil() {
this.screen = CurScreen.INTRO;
if (AbstractDungeon.ascensionLevel >= 15) {
- this.gold = 100;
- } else {
this.gold = 150;
+ } else {
+ this.gold = 175;
}
- this.imageEventText.setDialogOption(OPTIONS[0] + this.gold * 3 + OPTIONS[3], new Icky());
- this.imageEventText.setDialogOption(OPTIONS[1] + this.gold * 2 + OPTIONS[4], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[0] + (this.gold+50) * 3 + OPTIONS[3], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[1] + (this.gold+25) * 2 + OPTIONS[4], new Icky());
this.imageEventText.setDialogOption(OPTIONS[2] + this.gold + OPTIONS[5], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[6]);
}
public void onEnterRoom() {
@@ -80,7 +82,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .5F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .75F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new RainingGoldEffect(this.gold * 3));
- AbstractDungeon.player.gainGold(this.gold * 3);
+ AbstractDungeon.player.gainGold((this.gold+50) * 3);
logMetricGoop(3);
return;
case 1:
@@ -91,7 +93,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .75F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .25F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new RainingGoldEffect(this.gold * 2));
- AbstractDungeon.player.gainGold(this.gold * 2);
+ AbstractDungeon.player.gainGold((this.gold+25) * 2);
logMetricGoop(2);
return;
case 2:
@@ -105,6 +107,7 @@ protected void buttonEffect(int buttonPressed) {
logMetricGoop(1);
return;
case 3:
+ //AbstractDungeon.player.damage(new DamageInfo(null, ((AbstractDungeon.ascensionLevel >= 15)?11:7)));
this.imageEventText.updateBodyText(LEAVE_DIALOG);
this.imageEventText.clearAllDialogs();
this.imageEventText.setDialogOption(OPTIONS[6]);
diff --git a/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java b/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
index fa3f098cd..6bde00a8a 100644
--- a/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
@@ -3,6 +3,8 @@
/* */
/* */
+import com.megacrit.cardcrawl.cards.curses.Pain;
+import downfall.cards.curses.Aged;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
/* */ import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -39,7 +41,7 @@ public DuplicatorEvil() {
DESCRIPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").DESCRIPTIONS;
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
- this.imageEventText.setDialogOption(OPTIONSALT[0], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[0], new Aged());
this.imageEventText.setDialogOption(OPTIONS[0]);
this.imageEventText.setDialogOption(OPTIONS[1]);
}
@@ -68,7 +70,7 @@ public void update() {
AbstractDungeon.effectList.add(new com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect(c, com.megacrit.cardcrawl.core.Settings.WIDTH * 0.75F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2.0F));
cards.add(c.cardID);
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Aged();
cards.add(curse.cardID);
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) (Settings.WIDTH * .5F), (float) (Settings.HEIGHT / 2)));// 66
diff --git a/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java b/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java
index aba58ceee..f780e7d83 100644
--- a/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java
@@ -1,5 +1,7 @@
package downfall.events.shrines_evil;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.cards.curses.Pain;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -8,6 +10,7 @@
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import downfall.downfallMod;
+import gremlin.patches.GremlinEnum;
import java.util.ArrayList;
import java.util.Collections;
@@ -26,7 +29,7 @@ public class PurificationShrineEvil extends com.megacrit.cardcrawl.events.Abstra
private static final String DIALOG_2 = DESCRIPTIONS[1];
private static final String IGNORE = DESCRIPTIONS[2];
private CUR_SCREEN screen = CUR_SCREEN.INTRO;
-
+ private int hpAmt = 0;
private static enum CUR_SCREEN {
INTRO, COMPLETE;
@@ -38,7 +41,15 @@ public PurificationShrineEvil() {
super(NAME, DIALOG_1, "images/events/shrine3.jpg");
DESCRIPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").DESCRIPTIONS;
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
- this.imageEventText.setDialogOption(OPTIONSALT[1], new Sapped());
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.hpAmt = MathUtils.round((float)AbstractDungeon.player.maxHealth * 0.15F);
+ } else {
+ this.hpAmt = MathUtils.round((float)AbstractDungeon.player.maxHealth * 0.10F);
+ }
+ if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+ //this.hpAmt = this.hpAmt*5;
+ }
+ this.imageEventText.setDialogOption(OPTIONSALT[1] + hpAmt + OPTIONSALT[2]);
this.imageEventText.setDialogOption(OPTIONS[0]);
this.imageEventText.setDialogOption(OPTIONS[1]);
}
@@ -73,17 +84,19 @@ public void update() {
logMetricCardRemoval(ID, "Purged", (AbstractCard)AbstractDungeon.gridSelectScreen.selectedCards.get(0));
}
- if (AbstractDungeon.gridSelectScreen.selectedCards.size() > 2){
+ if (AbstractDungeon.gridSelectScreen.selectedCards.size() > 1){
AbstractDungeon.topLevelEffects.add(new com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect(
- (AbstractCard) AbstractDungeon.gridSelectScreen.selectedCards.get(2), com.megacrit.cardcrawl.core.Settings.WIDTH * 0.75F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2));
+ (AbstractCard) AbstractDungeon.gridSelectScreen.selectedCards.get(1), com.megacrit.cardcrawl.core.Settings.WIDTH * 0.75F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2));
- AbstractCard curse = new Sapped();
- AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) (Settings.WIDTH * .5F), (float) (Settings.HEIGHT * .75F)));// 66
- AbstractDungeon.player.masterDeck.removeCard((AbstractCard) AbstractDungeon.gridSelectScreen.selectedCards.get(2));
- cards.add(AbstractDungeon.gridSelectScreen.selectedCards.get(2).cardID);
-
- logMetric(ID, "Desecrated", Collections.singletonList(curse.cardID), cards, null, null, null, null, null, 0, 0, 0, 0, 0, 0);
+ AbstractDungeon.player.maxHealth -= this.hpAmt;
+ if (AbstractDungeon.player.currentHealth > AbstractDungeon.player.maxHealth) {
+ AbstractDungeon.player.currentHealth = AbstractDungeon.player.maxHealth;
+ }
+ AbstractDungeon.player.masterDeck.removeCard((AbstractCard) AbstractDungeon.gridSelectScreen.selectedCards.get(1));
+ cards.add(AbstractDungeon.gridSelectScreen.selectedCards.get(1).cardID);
+ //todo: write a better metric tracker
+ logMetric(ID, "Desecrated and lost" + hpAmt + "Max HP.");
}
AbstractDungeon.gridSelectScreen.selectedCards.clear();
@@ -99,7 +112,7 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.updateBodyText(DESCRIPTIONSALT[0]);
AbstractDungeon.gridSelectScreen.open(
com.megacrit.cardcrawl.cards.CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck
- .getPurgeableCards()), 3, OPTIONS[2], false, false, false, true);
+ .getPurgeableCards()), 2, OPTIONS[2], false, false, false, true);
this.imageEventText.updateDialogOption(0, OPTIONS[1]);
diff --git a/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java b/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
index 5a6dd9013..ea7930455 100644
--- a/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
@@ -2,6 +2,8 @@
package downfall.events.shrines_evil;
+import com.megacrit.cardcrawl.cards.curses.Pain;
+import downfall.cards.curses.Malfunctioning;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -42,7 +44,7 @@ public TransmogrifierEvil() {
DESCRIPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").DESCRIPTIONS;
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
- this.imageEventText.setDialogOption(OPTIONSALT[2], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[3], new Malfunctioning());
this.imageEventText.setDialogOption(OPTIONS[0]);
this.imageEventText.setDialogOption(OPTIONS[1]);
@@ -73,7 +75,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (bonusShrine3){
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Malfunctioning();
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) (Settings.WIDTH * .5F), (float) (Settings.HEIGHT / 2)));// 66
obtainedCards.add(curse.cardID);
diff --git a/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java b/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
index 1fb8dfcb9..573cff15e 100644
--- a/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
@@ -2,6 +2,7 @@
package downfall.events.shrines_evil;
+import com.megacrit.cardcrawl.cards.curses.Pain;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -49,7 +50,7 @@ public UpgradeShrineEvil() {
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
if (AbstractDungeon.player.masterDeck.getUpgradableCards().size() >= 2) {
- this.imageEventText.setDialogOption(OPTIONSALT[3], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[4], new Pain());
} else {
this.imageEventText.setDialogOption(OPTIONS[3], true);
}
@@ -79,7 +80,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (bonusShrine2){
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Pain();
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (Settings.WIDTH * .5F), Settings.HEIGHT * .5F));// 66
logMetric(ID, "Desecrated", Collections.singletonList(curse.cardID), null,
null, upgradedCards, null, null, null,
diff --git a/src/main/java/downfall/mainmenu/MainMenuAdPatch.java b/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
index e1177442e..ad43d3483 100644
--- a/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
+++ b/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
@@ -59,6 +59,9 @@ private MainMenuAdInfo(String text, String text2, String text3, String text4, St
private static ArrayList ads = new ArrayList<>();
static {
+ // Star of Providence Info
+ ads.add(new MainMenuAdInfo("", "", "", "", "", "", "https://store.steampowered.com/app/603960/Star_of_Providence/", TextureLoader.getTexture("downfallResources/images/menustuff/"+ TalesAndTacticsPopup.langFolder() +"/menuSOP.png")));
+
// T9 Game Info
ads.add(new MainMenuAdInfo("", "", "", "", "", "", "https://store.steampowered.com/app/1652250/Tales__Tactics/", TextureLoader.getTexture("downfallResources/images/menustuff/" + TalesAndTacticsPopup.langFolder() + "/menuTNT.png")));
// STS Modding Info
@@ -223,10 +226,10 @@ public void update() {
btnTint.a = 0.25F;
if (InputHelper.justClickedLeft) {
CardCrawlGame.sound.play("UI_CLICK_1");
- if (advert.current == ads.get(0)) {
- advert.current = ads.get(1);
- } else {
+ if (advert.current == ads.get(2)) {
advert.current = ads.get(0);
+ } else {
+ advert.current = ads.get(ads.indexOf(advert.current) + 1);
}
}
} else {
diff --git a/src/main/java/downfall/monsters/ChangingTotem.java b/src/main/java/downfall/monsters/ChangingTotem.java
index d0ad51034..89db65155 100644
--- a/src/main/java/downfall/monsters/ChangingTotem.java
+++ b/src/main/java/downfall/monsters/ChangingTotem.java
@@ -44,7 +44,7 @@ public ChangingTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/DoomedDagger.java b/src/main/java/downfall/monsters/DoomedDagger.java
index cf037eb48..aafb98694 100644
--- a/src/main/java/downfall/monsters/DoomedDagger.java
+++ b/src/main/java/downfall/monsters/DoomedDagger.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -41,8 +42,8 @@ public void takeTurn() {
AbstractDungeon.actionManager.addToBottom(new WaitAction(0.3F));
AbstractDungeon.actionManager.addToBottom(new DamageAction(AbstractDungeon.player, this.damage.get(0), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
AbstractCard q = new ImpendingDoom();
- CardModifierManager.addModifier(q, new RetainCardMod());
- addToBot(new MakeTempCardInHandAction(q));
+ //CardModifierManager.addModifier(q, new RetainCardMod());
+ addToBot(new MakeTempCardInDrawPileAction((q), 1, false, true));
break;
case 2:
AbstractDungeon.actionManager.addToBottom(new ChangeStateAction(this, "SUICIDE"));
diff --git a/src/main/java/downfall/monsters/FleeingMerchant.java b/src/main/java/downfall/monsters/FleeingMerchant.java
index fb1ab8294..7e28ff967 100644
--- a/src/main/java/downfall/monsters/FleeingMerchant.java
+++ b/src/main/java/downfall/monsters/FleeingMerchant.java
@@ -101,7 +101,15 @@ public FleeingMerchant() {
e.setTime(e.getEndTime() * MathUtils.random());
e.setTimeScale(1.0F);
- type = EnemyType.NORMAL;
+ // if (AbstractDungeon.floorNum >= 50) {
+ // type = EnemyType.BOSS;
+ // }
+
+ // if (!(AbstractDungeon.floorNum < 50)) {
+ type = EnemyType.ELITE;
+ // }
+
+
dialogX = -200.0F * Settings.scale;
dialogY = 10.0F * Settings.scale;
diff --git a/src/main/java/downfall/monsters/ForgetfulTotem.java b/src/main/java/downfall/monsters/ForgetfulTotem.java
index 0231d1fda..416d0628c 100644
--- a/src/main/java/downfall/monsters/ForgetfulTotem.java
+++ b/src/main/java/downfall/monsters/ForgetfulTotem.java
@@ -50,7 +50,7 @@ public ForgetfulTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/GrowingTotem.java b/src/main/java/downfall/monsters/GrowingTotem.java
index e4a70a0f0..5fe7c8f31 100644
--- a/src/main/java/downfall/monsters/GrowingTotem.java
+++ b/src/main/java/downfall/monsters/GrowingTotem.java
@@ -52,7 +52,7 @@ public GrowingTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/Neow4Life30Heal.java b/src/main/java/downfall/monsters/Neow4Life30Heal.java
index 4b0f102f2..6d16b2960 100644
--- a/src/main/java/downfall/monsters/Neow4Life30Heal.java
+++ b/src/main/java/downfall/monsters/Neow4Life30Heal.java
@@ -90,11 +90,11 @@ public Neow4Life30Heal() {
e.setTime(e.getEndTime() * MathUtils.random());
if (AbstractDungeon.ascensionLevel >= 4) {
+ this.damage.add(new DamageInfo(this, 12)); //Eye Beam Damage
+ this.damage.add(new DamageInfo(this, 40)); //Scream Damage
+ } else {
this.damage.add(new DamageInfo(this, 9)); //Eye Beam Damage
this.damage.add(new DamageInfo(this, 25)); //Scream Damage
- } else {
- this.damage.add(new DamageInfo(this, 7)); //Eye Beam Damage
- this.damage.add(new DamageInfo(this, 20)); //Scream Damage
}
this.strAmt = 2; //Strength Scaling for growth ability
diff --git a/src/main/java/downfall/monsters/NeowBoss.java b/src/main/java/downfall/monsters/NeowBoss.java
index 3bb45d118..95069e6a5 100644
--- a/src/main/java/downfall/monsters/NeowBoss.java
+++ b/src/main/java/downfall/monsters/NeowBoss.java
@@ -85,14 +85,14 @@ public NeowBoss() {
type = EnemyType.ELITE;
this.baseDrawX = drawX;
-
+ StrGain = 1;
if (AbstractDungeon.ascensionLevel >= 9) {
StrGain = 2;
} else {
setHp(600);
}
if (AbstractDungeon.ascensionLevel >= 18) {
- StrGain = 2;
+ StrGain = 3;
}
diff --git a/src/main/java/downfall/monsters/NeowBossFinal.java b/src/main/java/downfall/monsters/NeowBossFinal.java
index 15ad54a08..4302e2724 100644
--- a/src/main/java/downfall/monsters/NeowBossFinal.java
+++ b/src/main/java/downfall/monsters/NeowBossFinal.java
@@ -30,6 +30,7 @@
import downfall.powers.neowpowers.*;
import downfall.vfx.combat.FakeDeathScene;
import guardian.vfx.SmallLaserEffectColored;
+import hermit.cards.ImpendingDoom;
import java.util.ArrayList;
@@ -69,7 +70,7 @@ public class NeowBossFinal extends AbstractMonster {
private int buffCount = 0;
public NeowBossFinal() {
- super(NAME, ID, 500, HB_X, HB_Y, HB_W, HB_H, "images/npcs/neow/skeleton.png");
+ super(NAME, ID, 600, HB_X, HB_Y, HB_W, HB_H, "images/npcs/neow/skeleton.png");
this.loadAnimation("images/npcs/neow/skeleton.atlas", "images/npcs/neow/skeleton.json", 1.0F);
@@ -80,20 +81,30 @@ public NeowBossFinal() {
this.baseDrawX = drawX;
if (AbstractDungeon.ascensionLevel >= 9) {
- setHp(600);
+ setHp(650);
} else {
- setHp(550);
+ setHp(600);
}
AnimationState.TrackEntry e = this.state.setAnimation(0, "idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
+
+ //When adjusting these numbers, remember to keep the Heart Blessings in mind.
+ //The player has +1 dexterity and +10 temp hp, so they will be blocking for 4/5 extra than typically, and that they have a
+ //good buffer of Temp HP to get through the first cycle much easier.
+ //Not to mention the lack of Beat of Death, which makes Block much more permanent throughout this fight.
+ //This fight should test consistency and overall scaling to surpass the God of Life scaling that Neow has.
+ //Her buffs should reflect this fact and test consistency by increasing God of Life and
+ //gaining buffs like Artifact. (To test strategies that rely on a debuff like Goop, Soulburn, or Doom)
+
+
if (AbstractDungeon.ascensionLevel >= 4) {
- this.damage.add(new DamageInfo(this, 9)); //Eye Beam Damage
- this.damage.add(new DamageInfo(this, 25)); //Scream Damage
+ this.damage.add(new DamageInfo(this, 12)); //Eye Beam Damage - 54 damage first cycle
+ this.damage.add(new DamageInfo(this, 44)); //Scream Damage - 66 damage first cycle
} else {
- this.damage.add(new DamageInfo(this, 7)); //Eye Beam Damage
- this.damage.add(new DamageInfo(this, 20)); //Scream Damage
+ this.damage.add(new DamageInfo(this, 9)); //Eye Beam Damage - 42 damage first cycle
+ this.damage.add(new DamageInfo(this, 33)); //Scream Damage - 50 damage first cycle
}
this.strAmt = 2; //Strength Scaling for growth ability
@@ -114,11 +125,12 @@ public void curses() {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, this, new WeakPower(AbstractDungeon.player, 3, true), 3));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, this, new FrailPower(AbstractDungeon.player, 3, true), 3));
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Aged(), 1, true, false, false, (float) Settings.WIDTH * 0.18F, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Bewildered(), 1, true, false, false, (float) Settings.WIDTH * 0.34F, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Scatterbrained(), 1, true, false, false, (float) Settings.WIDTH * 0.5F, (float) Settings.HEIGHT / 2.0F));
+
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Haunted(), 1, true, false, false, (float) Settings.WIDTH * 0.18F, (float) Settings.HEIGHT / 2.0F));
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Scatterbrained(), 1, true, false, false, (float) Settings.WIDTH * 0.34F, (float) Settings.HEIGHT / 2.0F));
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new ImpendingDoom(), 1, true, false, false, (float) Settings.WIDTH * 0.5F, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Icky(), 1, true, false, false, (float) Settings.WIDTH * 0.66F, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Malfunctioning(), 1, true, false, false, (float) Settings.WIDTH * 0.82F, (float) Settings.HEIGHT / 2.0F));
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(new Bewildered(), 1, true, false, false, (float) Settings.WIDTH * 0.82F, (float) Settings.HEIGHT / 2.0F));
// ArrayList ac = downfallMod.getRandomDownfallCurse(4);
@@ -141,17 +153,23 @@ public void usePreBattleAction() {
// halfDead = true;
AbstractDungeon.getCurrRoom().playBgmInstantly("BOSS_ENDING");
- int beatAmount = 3;
+ int beatAmount = 3; //a19 healing, a18 healing is this -1
// if (AbstractDungeon.ascensionLevel >= 19) {
// beatAmount += 1;
// }
int invincibleAmt = 250;
-// if (AbstractDungeon.ascensionLevel >= 19) {
-// invincibleAmt -= 50;
-// } a19 difficulty setting is changed from god of life 2(3), invincible 300(250) , to, you (dont) get heart's favor
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ // invincibleAmt -= 50;
+ }// a19 difficulty setting is changed from god of life 2(3), invincible 300(250) , to, you (dont) get heart's favor
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, beatAmount)));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, beatAmount)));
+ }
+
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, beatAmount-1)));
+ }
for (int i = 0; i < 3; i++) {
AbstractDungeon.actionManager.addToBottom(new WaitAction(0.1F));
@@ -224,30 +242,92 @@ public void takeTurn() {
// nukeDebuffs();
//AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this, this, "Shackled"));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, 2)));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 6), 6));
+
+ // god of life maxes out at 6 (7 on a19 because of the higher starting healing) now
+ int buf = 0;
+ if (this.hasPower(NeowInvulnerablePower.POWER_ID)) {
+ buf = this.getPower(NeowInvulnerablePower.POWER_ID).amount;
+ }
+ if (buf < 6) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, 2)));
+ }
+
+
+ if (!this.hasPower(NeowInvulnerablePower.POWER_ID)) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, 2)));
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 9), 9));
+ // this is +27 damage for the multi hit, +36 total, 8 damage over the a19- version
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 7), 7));
+ //this is +21 damage for the multi hit, +28 total
+ }
switch(this.buffCount) {
case 0:
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new ArtifactPower(this, 3), 3));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new ArtifactPower(this, 3), 3));
+ //3 artifact prevents weak + vuln + doom and should make Collector's life harder - and test her artifact piercing and consistency,
+ //but should act as a minor annoyance for other characters, even for Hexa or Slime Boss.
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new ArtifactPower(this, 2), 3));
+ //easier pre a19 version of artifact, still blocks an instance of weak + vuln
+ }
break;
case 1:
- AbstractDungeon.actionManager.addToBottom(new HealAction(this, this, 100));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new HealAction(this, this, 100));
+ //this effectively makes her HP 700 - Not factoring in God of Life.
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new HealAction(this, this, 75));
+ //this pre a19 version effectively makes her hp 675, and 625 pre a4 - Not factoring in God of Life.
+ }
+
// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new BeatOfDeathPower(this, 1), 1));
break;
case 2:
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new RegenerateMonsterPower(this, 50)));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new RegenerateMonsterPower(this, 50)));
+ //this is the part where it becomes significantly harder. If you factor in the God of Life Neow already has much more total HP than
+ //the corrupt heart, and she can easily reach 1000~ HP total depending on the rate that the player uses cards.
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new RegenerateMonsterPower(this, 30)));
+ //this lessened Regenerate should be significantly easier to deal with
+ }
break;
case 3:
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 10), 10));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 15), 10));
+ //this is +45 damage on the multihit, +60 damage total.
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 12), 8));
+ //this is +36 damage on the multihit, +48 damage total.
+ }
break;
default:
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 30), 30));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 30), 30));
+ //this is +90 damage on the multihit, +120 damage total
+ //basically a slightly kinder version of the heart getting +50 strength, especially since Neow always does the big hit before the multihit
+ //not a total "now die" buff but pretty close
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 20), 20));
+ //this is +60 damage on the multihit, +80 damage total
+ //I could see a player living through the multihit on this one
+ }
}
++this.buffCount;
-// AbstractDungeon.actionManager.addToBottom(new GainBlockAction(this, this.blockAmt));
+ this.addToBot(new GainBlockAction(this, this, 20));
// if (hasPower(TrueNeowPower.POWER_ID)){
// getPower(TrueNeowPower.POWER_ID).onSpecificTrigger();
// }
diff --git a/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java b/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
index 52caa2ffb..6527fe754 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
@@ -39,7 +39,6 @@ public String moveName(String ID, String ID2) {
public void usePreBattleAction() {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, 3), 3));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 3), 3));
-
}
@Override
diff --git a/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java b/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
index 1f33753b8..2052298d2 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
@@ -104,6 +104,9 @@ public void takeTurn() {
private void bossMove() {
int rnd = AbstractDungeon.cardRandomRng.random(0, 3);
+ if (turnNum > 5) {
+ rnd = AbstractDungeon.cardRandomRng.random(0, 4);
+ }
switch (rnd) {
case 0:
isAttacking = true;
@@ -121,7 +124,11 @@ private void bossMove() {
isAttacking = true;
setMove(moveName(Bash.ID), (byte) 4, Intent.ATTACK_DEBUFF, this.damage.get(2).base);
break;
- }
+ case 4:
+ isAttacking = true;
+ setMove(moveName(Bash.ID), (byte) 4, Intent.ATTACK_DEBUFF, this.damage.get(2).base);
+ break;
+ }
}
protected void getMove(int num) {
diff --git a/src/main/java/downfall/patches/BanSharedContentPatch.java b/src/main/java/downfall/patches/BanSharedContentPatch.java
index fa9c1911e..700ab5dbd 100644
--- a/src/main/java/downfall/patches/BanSharedContentPatch.java
+++ b/src/main/java/downfall/patches/BanSharedContentPatch.java
@@ -1,6 +1,7 @@
package downfall.patches;
import automaton.AutomatonChar;
+import automaton.potions.BurnAndBuffPotion;
import automaton.relics.BronzeIdol;
import automaton.relics.DecasWashers;
import automaton.relics.DonusWashers;
@@ -10,6 +11,8 @@
import champ.relics.DeflectingBracers;
import champ.relics.DuelingGlove;
import collector.CollectorChar;
+import collector.cards.WhirlingFlame;
+import collector.potions.TempHPPotion;
import collector.relics.*;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -20,11 +23,14 @@
import downfall.events.HeartEvent;
import expansioncontent.actions.RandomCardWithTagAction;
import expansioncontent.cards.*;
+import expansioncontent.potions.BossPotion;
import expansioncontent.relics.StudyCardRelic;
+import gremlin.potions.WizPotion;
import gremlin.relics.ImpeccablePecs;
import gremlin.relics.PricklyShields;
import gremlin.relics.SupplyScroll;
import guardian.characters.GuardianCharacter;
+import guardian.potions.BlockOnCardUsePotion;
import guardian.relics.BottledAnomaly;
import guardian.relics.GemstoneGun;
import guardian.relics.PocketSentry;
@@ -32,15 +38,19 @@
import hermit.relics.BrassTacks;
import hermit.relics.RyeStalk;
import slimebound.characters.SlimeboundCharacter;
+import slimebound.potions.ThreeZeroPotion;
import slimebound.relics.PreparedRelic;
import slimebound.relics.StickyStick;
import sneckomod.SneckoMod;
import sneckomod.TheSnecko;
import sneckomod.cards.unknowns.UnknownClass;
+import sneckomod.potions.MuddlingPotion;
import sneckomod.relics.BlankCard;
import sneckomod.relics.SneckoTalon;
import sneckomod.relics.SuperSneckoEye;
import theHexaghost.TheHexaghost;
+import theHexaghost.potions.SoulburnPotion;
+import champ.potions.CounterstrikePotion;
import theHexaghost.relics.BolsterEngine;
import theHexaghost.relics.Sixitude;
@@ -71,12 +81,33 @@ public static void Postfix(AbstractDungeon __instance) {
AbstractDungeon.colorlessCardPool.removeCard(HyperBeam.ID);
AbstractDungeon.colorlessCardPool.removeCard(LastStand.ID);
AbstractDungeon.colorlessCardPool.removeCard(ShapePower.ID);
- AbstractDungeon.colorlessCardPool.removeCard(PrepareCrush.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperPrepareCrush.ID);
AbstractDungeon.colorlessCardPool.removeCard(QuickStudy.ID);
AbstractDungeon.colorlessCardPool.removeCard(StudyTheSpire.ID);
AbstractDungeon.colorlessCardPool.removeCard(YouAreMine.ID);
AbstractDungeon.colorlessCardPool.removeCard(InvincibleStrength.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(BeatOfDeath.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(BloodBarrage.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(ChargeUp.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(DoubleAct.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(FaceSlap.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(Flail.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(GoopSpray.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(ManipulateTime.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(Pandemonium.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(PeekPages.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperBloodthirst.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperBodyCrash.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperClobber.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperEtherStep.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperGhostShield.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperLivingWall.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperSomberShield.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(TakeFlight.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(Virus.ID);
+
AbstractDungeon.srcColorlessCardPool.removeCard(AwakenDeath.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(Chronoboost.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(DashGenerateEvil.ID);
@@ -85,12 +116,34 @@ public static void Postfix(AbstractDungeon __instance) {
AbstractDungeon.srcColorlessCardPool.removeCard(HyperBeam.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(LastStand.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(ShapePower.ID);
- AbstractDungeon.srcColorlessCardPool.removeCard(PrepareCrush.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperPrepareCrush.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(QuickStudy.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(StudyTheSpire.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(YouAreMine.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(InvincibleStrength.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(BeatOfDeath.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(BloodBarrage.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(ChargeUp.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(DoubleAct.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(FaceSlap.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(Flail.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(GoopSpray.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(ManipulateTime.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(Pandemonium.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(PeekPages.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperBloodthirst.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperBodyCrash.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperClobber.ID);
+
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperEtherStep.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperGhostShield.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperLivingWall.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperSomberShield.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(TakeFlight.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(Virus.ID);
+
+
AbstractDungeon.curseCardPool.removeCard(Aged.ID);
AbstractDungeon.curseCardPool.removeCard(Icky.ID);
AbstractDungeon.curseCardPool.removeCard(Bewildered.ID);
@@ -110,38 +163,66 @@ public static void Postfix(AbstractDungeon __instance) {
AbstractDungeon.srcCurseCardPool.removeCard(Sapped.ID);
}
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- AbstractDungeon.colorlessCardPool.removeCard(PrepareCrush.ID);
- AbstractDungeon.srcColorlessCardPool.removeCard(PrepareCrush.ID);
+ AbstractDungeon.colorlessCardPool.removeCard(SuperPrepareCrush.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperPrepareCrush.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(GoopSpray.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(GoopSpray.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperLivingWall.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperLivingWall.ID);
}
if (AbstractDungeon.player instanceof TheHexaghost || RandomCardWithTagAction.hexaLocked()) {
AbstractDungeon.colorlessCardPool.removeCard(Hexaburn.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(Hexaburn.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperGhostShield.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperGhostShield.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperEtherStep.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperEtherStep.ID);
}
if (AbstractDungeon.player instanceof GuardianCharacter || RandomCardWithTagAction.guardianLocked()) {
AbstractDungeon.colorlessCardPool.removeCard(GuardianWhirl.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(GuardianWhirl.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(ChargeUp.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(ChargeUp.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperBodyCrash.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperBodyCrash.ID);
}
if (AbstractDungeon.player instanceof ChampChar || RandomCardWithTagAction.champLocked()) {
AbstractDungeon.colorlessCardPool.removeCard(LastStand.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(LastStand.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(SuperClobber.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperClobber.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(FaceSlap.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(FaceSlap.ID);
}
if (AbstractDungeon.player instanceof AutomatonChar || RandomCardWithTagAction.autoLocked()) {
AbstractDungeon.colorlessCardPool.removeCard(HyperBeam.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(HyperBeam.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(Virus.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(Virus.ID);
+
+ AbstractDungeon.colorlessCardPool.removeCard(Flail.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(Flail.ID);
}
if (AbstractDungeon.player instanceof CollectorChar || RandomCardWithTagAction.collectorLocked()) {
AbstractDungeon.colorlessCardPool.removeCard(YouAreMine.ID);
AbstractDungeon.srcColorlessCardPool.removeCard(YouAreMine.ID);
- }
+ AbstractDungeon.colorlessCardPool.removeCard(SuperSomberShield.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(SuperSomberShield.ID);
- if (AbstractDungeon.player instanceof TheSnecko) {
- if (SneckoMod.validColors != null && !SneckoMod.pureSneckoMode) {
- AbstractDungeon.commonCardPool.group.removeIf(c -> c instanceof UnknownClass && !SneckoMod.validColors.contains(((UnknownClass) c).myColor));
- AbstractDungeon.srcCommonCardPool.group.removeIf(c -> c instanceof UnknownClass && !SneckoMod.validColors.contains(((UnknownClass) c).myColor));
- }
+ AbstractDungeon.colorlessCardPool.removeCard(SuperWhirlingFlame.ID);
+ AbstractDungeon.srcColorlessCardPool.removeCard(WhirlingFlame.ID);
+ }
}
- }
}
@@ -199,27 +280,29 @@ public static class PotionPatch {
public static void Postfix(AbstractPlayer.PlayerClass chosenClass) {
// edit: this patch doesn't work somehow, the function is moved to downfallMod.receivePostDungeonInitialize()
// by checking the condition before adding them all together
-// if (!EvilModeCharacterSelect.evilMode && !downfallMod.contentSharing_potions) {
-// PotionHelper.potions.remove(SoulburnPotion.POTION_ID);
-// PotionHelper.potions.remove(MuddlingPotion.POTION_ID);
-// PotionHelper.potions.remove(ThreeZeroPotion.POTION_ID);
-// PotionHelper.potions.remove(BlockOnCardUsePotion.POTION_ID);
-// PotionHelper.potions.remove(CounterstrikePotion.POTION_ID);
-// PotionHelper.potions.remove(BurnAndBuffPotion.POTION_ID);
-// PotionHelper.potions.remove(WizPotion.POTION_ID);
-// PotionHelper.potions.remove(BossPotion.POTION_ID);
-// PotionHelper.potions.remove(TempHPPotion.POTION_ID);
-// }
+ //todo: I'm thinking of just making all these potions character exclusive which fixes the compendium problem
+ //todo: and people don't like these potions anyways
+ if (!EvilModeCharacterSelect.evilMode && !downfallMod.contentSharing_potions) {
+ // PotionHelper.potions.remove(SoulburnPotion.POTION_ID);
+ // PotionHelper.potions.remove(MuddlingPotion.POTION_ID);
+ // PotionHelper.potions.remove(ThreeZeroPotion.POTION_ID);
+ // PotionHelper.potions.remove(BlockOnCardUsePotion.POTION_ID);
+ // PotionHelper.potions.remove(CounterstrikePotion.POTION_ID);
+ // PotionHelper.potions.remove(BurnAndBuffPotion.POTION_ID);
+ // PotionHelper.potions.remove(WizPotion.POTION_ID);
+ // PotionHelper.potions.remove(BossPotion.POTION_ID);
+ // PotionHelper.potions.remove(TempHPPotion.POTION_ID);
+ }
// edit: below probably not functioning too but lazy to implement
// Ban shared potions from other classes if you haven't played as that class before
- runLockedPotions.forEach((playerClass, potionIds) -> {
+ // runLockedPotions.forEach((playerClass, potionIds) -> {
// Shared potions will never be banned from their base class
- if (chosenClass != playerClass) {
- if (!HeartEvent.hasPlayedRun(playerClass)) {
- PotionHelper.potions.removeAll(potionIds);
- }
+ // if (chosenClass != playerClass) {
+ // if (!HeartEvent.hasPlayedRun(playerClass)) {
+ // PotionHelper.potions.removeAll(potionIds);
+ // }
}
- });
- }
+ // });
+ // }
}
}
diff --git a/src/main/java/downfall/patches/BanStuffPatch.java b/src/main/java/downfall/patches/BanStuffPatch.java
index 4e00e70ac..bee017f48 100644
--- a/src/main/java/downfall/patches/BanStuffPatch.java
+++ b/src/main/java/downfall/patches/BanStuffPatch.java
@@ -1,9 +1,15 @@
package downfall.patches;
+import basemod.devcommands.relic.RelicRemove;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.helpers.PotionHelper;
+import com.megacrit.cardcrawl.relics.PrismaticShard;
import downfall.potions.CursedFountainPotion;
+import gremlin.patches.GremlinEnum;
+
+import static com.megacrit.cardcrawl.dungeons.AbstractDungeon.relicsToRemoveOnStart;
+import static hermit.characters.hermit.Enums.HERMIT;
public class BanStuffPatch {
@SpirePatch(
@@ -13,6 +19,20 @@ public class BanStuffPatch {
public static class PotionPatch {
public static void Postfix(AbstractPlayer.PlayerClass chosenClass) {
PotionHelper.potions.remove(CursedFountainPotion.POTION_ID);
+
+ if (chosenClass == GremlinEnum.GREMLIN) {
+ relicsToRemoveOnStart.add("Prismatic Shard");
+ }
+
+ if (EvilModeCharacterSelect.evilMode || chosenClass == HERMIT) {
+ relicsToRemoveOnStart.add("Blue Candle");
+ }
+
+ if (EvilModeCharacterSelect.evilMode) {
+ relicsToRemoveOnStart.add("Ectoplasm");
+ }
+
}
}
-}
\ No newline at end of file
+}
+
diff --git a/src/main/java/downfall/patches/CNCardTextColorPatch.java b/src/main/java/downfall/patches/CNCardTextColorPatch.java
index a52a363ee..0e6dd3580 100644
--- a/src/main/java/downfall/patches/CNCardTextColorPatch.java
+++ b/src/main/java/downfall/patches/CNCardTextColorPatch.java
@@ -44,7 +44,7 @@ public static void Insert(AbstractCard __instance, @ByRef String[] word, @ByRef
if (!Settings.manualLineBreak) {
// If the current line is reaching its end, then the ending punctuation's width should be ignored or it would result in
// a new line with a single punctuation as the text
- if( (letter == LocalizedStrings.PERIOD.charAt(0)) && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH) ){
+ if( (LocalizedStrings.PERIOD.length() != 0 && letter == LocalizedStrings.PERIOD.charAt(0)) && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH) ){
letterWidth = 0F;
}
if((letter == ',') && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH ) ){
diff --git a/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java b/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java
new file mode 100644
index 000000000..91aa91309
--- /dev/null
+++ b/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java
@@ -0,0 +1,43 @@
+package downfall.patches;
+
+import basemod.ReflectionHacks;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.screens.DeathScreen;
+import com.megacrit.cardcrawl.screens.GameOverScreen;
+import com.megacrit.cardcrawl.screens.GameOverStat;
+import com.megacrit.cardcrawl.screens.VictoryScreen;
+import downfall.downfallMod;
+import theHexaghost.relics.TheBrokenSeal;
+
+import java.util.ArrayList;
+
+public class DeathScreenScoreBonusesPatch {
+
+ public static String CHECKAGAINST = CardCrawlGame.languagePack.getScoreString("Heartbreaker").NAME;
+ public static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString(downfallMod.makeID("WhaleHunter"));
+ public static final UIStrings uiStrings2 = CardCrawlGame.languagePack.getUIString(downfallMod.makeID("Unfettered"));
+
+ @SpirePatch(
+ clz = DeathScreen.class,
+ method = "createGameOverStats"
+ )
+ //use replaceheartkillbonuspatch too so it also counts on winning a run.
+ public static class DeathScreenPatch {
+ public static void Postfix(DeathScreen __instance) {
+ if (EvilModeCharacterSelect.evilMode) {
+ ArrayList stats = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ //insert evil mode score bonuses here.
+ }
+
+
+ //insert non evil exclusive score bonuses here
+ // ArrayList stats2 = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ // if (AbstractDungeon.player.hasRelic(TheBrokenSeal.ID)) {
+ // stats2.add(stats2.size()-2, new GameOverStat(uiStrings2.TEXT[0], uiStrings2.TEXT[1], Integer.toString(333)));
+ // }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java b/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java
new file mode 100644
index 000000000..d605e8219
--- /dev/null
+++ b/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java
@@ -0,0 +1,44 @@
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.ByRef;
+import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+// This patch, corrects the incorrect text rendering issue for non alphabetic languages(ZHS, JPN, KOR etc) when there exists double space in cards.json
+// For a comparison before and after the patch, visit https://github.com/daviscook477/BaseMod/pull/427
+
+public class FixInitializeDescriptionCNWidthLogic {
+
+ private static float currentWidthStore = -999F; // Initializing to an impossible value for checks, if it becomes any other value it means the value got updated.
+
+ @SpirePatch(
+ clz = AbstractCard.class,
+ method = "initializeDescriptionCN"
+ )
+ public static class InsertBefore {
+ @SpireInsertPatch(
+ rloc = 14,
+ localvars = {"currentWidth"}
+ )
+ public static void Insert(AbstractCard __instance, @ByRef float[] currentWidth) {
+ currentWidthStore = currentWidth[0]; // insert before the assignemnt currentWidth = 0; to store the original width
+ }
+ }
+
+ @SpirePatch(
+ clz = AbstractCard.class,
+ method = "initializeDescriptionCN"
+ )
+ public static class InsertAfter {
+ @SpireInsertPatch(
+ rloc = 15,
+ localvars = {"currentWidth","word","sbuilder"}
+ )
+ public static void Insert(AbstractCard __instance, @ByRef float[] currentWidth, @ByRef String[] word, @ByRef StringBuilder[] sbuilder) {
+ if(sbuilder[0].length() != 0 && currentWidthStore != -999F) currentWidth[0] = currentWidthStore ; // restores the width back if the width was set to 0 incorrectly
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/HecktoplasmPatch.java b/src/main/java/downfall/patches/HecktoplasmPatch.java
new file mode 100644
index 000000000..c54dc7199
--- /dev/null
+++ b/src/main/java/downfall/patches/HecktoplasmPatch.java
@@ -0,0 +1,20 @@
+package downfall.patches;
+
+import charbosses.bosses.AbstractCharBoss;
+import com.evacipated.cardcrawl.modthespire.lib.ByRef;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import downfall.relics.Hecktoplasm;
+
+//thorton code
+@SpirePatch(clz = AbstractPlayer.class, method = "gainGold")
+public class HecktoplasmPatch {
+ public static void Prefix(AbstractPlayer __instance, @ByRef int[] amount) {
+ if (AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) {
+ AbstractDungeon.player.getRelic(Hecktoplasm.ID).flash();
+ System.out.println("Removing " + amount[0] + " Souls.");
+ amount[0] = (int)(amount[0] * 0);
+ }
+ }
+}
diff --git a/src/main/java/downfall/patches/MetricsPatches.java b/src/main/java/downfall/patches/MetricsPatches.java
index 1da78aebc..63520f84d 100644
--- a/src/main/java/downfall/patches/MetricsPatches.java
+++ b/src/main/java/downfall/patches/MetricsPatches.java
@@ -1,45 +1,44 @@
-//package downfall.patches;
-//
-//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
-//import com.megacrit.cardcrawl.core.Settings;
-//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-//import com.megacrit.cardcrawl.metrics.Metrics;
-//import com.megacrit.cardcrawl.screens.GameOverScreen;
-//import downfall.downfallMod;
-//import org.apache.logging.log4j.LogManager;
-//import org.apache.logging.log4j.Logger;
-//
-//import java.lang.reflect.InvocationTargetException;
-//import java.lang.reflect.Method;
-// disabled metric during beta since it get constant changes
-//public class MetricsPatches {
-//
-// private static final Logger logger = LogManager.getLogger(MetricsPatches.class);
-// private static final String url = "http://downfallstats.atwebpages.com/beta/";
-//
-// @SpirePatch(clz = GameOverScreen.class, method = "shouldUploadMetricData")
-// public static class ShouldUploadMetricData {
-// public static boolean Postfix(boolean returnValue) {
-// if (downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
-// returnValue = Settings.UPLOAD_DATA;
-// }
-// return returnValue;
-// }
-// }
-//
-// @SpirePatch(clz = Metrics.class, method = "run")
-// public static class RunPatch {
-// public static void Postfix(Metrics metrics) {
-// if (metrics.type == Metrics.MetricRequestType.UPLOAD_METRICS && downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
-// try {
-// Method m = Metrics.class.getDeclaredMethod("sendPost", String.class, String.class);
-// m.setAccessible(true);
-// m.invoke(metrics, url, null);
-// } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
-// logger.error("Exception while sending metrics", e);
-// }
-// }
-// }
-//
-// }
-//}
\ No newline at end of file
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.metrics.Metrics;
+import com.megacrit.cardcrawl.screens.GameOverScreen;
+import downfall.downfallMod;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class MetricsPatches {
+
+ private static final Logger logger = LogManager.getLogger(MetricsPatches.class);
+ private static final String url = "http://downfallstats.atwebpages.com/beta/";
+
+ @SpirePatch(clz = GameOverScreen.class, method = "shouldUploadMetricData")
+ public static class ShouldUploadMetricData {
+ public static boolean Postfix(boolean returnValue) {
+ if (downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
+ returnValue = Settings.UPLOAD_DATA;
+ }
+ return returnValue;
+ }
+ }
+@SpirePatch(clz = Metrics.class, method = "run")
+ public static class RunPatch {
+ public static void Postfix(Metrics metrics) {
+ if (metrics.type == Metrics.MetricRequestType.UPLOAD_METRICS && downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
+ try {
+ Method m = Metrics.class.getDeclaredMethod("sendPost", String.class, String.class);
+ m.setAccessible(true);
+ m.invoke(metrics, url, null);
+ } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
+ logger.error("Exception while sending metrics", e);
+ }
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/RelicOverrides.java b/src/main/java/downfall/patches/RelicOverrides.java
index 01a28248f..87447ef0a 100644
--- a/src/main/java/downfall/patches/RelicOverrides.java
+++ b/src/main/java/downfall/patches/RelicOverrides.java
@@ -7,21 +7,29 @@
import basemod.helpers.dynamicvariables.DamageVariable;
import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.CardModifierPatches;
import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.RenderCustomDynamicVariableCN;
+import champ.ChampChar;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.evacipated.cardcrawl.modthespire.lib.*;
import com.evacipated.cardcrawl.modthespire.patcher.PatchingException;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.relics.*;
import downfall.downfallMod;
import downfall.util.TextureLoader;
-import javassist.CannotCompileException;
-import javassist.CtBehavior;
+import javassist.*;
+import javassist.bytecode.DuplicateMemberException;
import java.util.Objects;
import java.util.regex.Pattern;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
//TODO: I accidentally pushed one of my attempt code to change those evil run specific relic names(and image) for the related relics, it's not fully working
// (breaks when you load a game) but shouldn't cause any bugs I think, Mwalls
@@ -43,6 +51,51 @@ public class RelicOverrides {
//
// }
+// @SpirePatch(
+// clz = PreservedInsect.class,
+// method = "canSpawn"
+// )
+// public static class PreservedOverwrite {
+// @SpirePrefixPatch
+// public boolean canSpawn() {
+// return Settings.isEndless || (AbstractDungeon.floorNum <= 52 && !evilMode) || (AbstractDungeon.floorNum <= 48 && evilMode);
+// }
+// }
+
+
+// // thanks sandtag for the code
+// @SpirePatch2(clz = PreservedInsect.class, method = "")
+// public static class AddNewMethodPI {
+// @SpireRawPatch
+// public static void addMethod(CtBehavior ctMethodToPatch) throws CannotCompileException, NotFoundException {
+// CtClass ctNestClass = ctMethodToPatch.getDeclaringClass();
+// CtClass superClass = ctNestClass.getSuperclass();
+// CtMethod superMethod = superClass.getDeclaredMethod("canSpawn");
+// CtMethod updateMethod = CtNewMethod.delegator(superMethod, ctNestClass);
+// try {
+// ctNestClass.addMethod(updateMethod);
+// } catch (DuplicateMemberException ignored) {
+// updateMethod = ctNestClass.getDeclaredMethod("canSpawn");
+// }
+// updateMethod.insertBefore("if(true){return " + PreservedInsect.class.getName() + ".addCanSpawn48PI($0);}");
+// }
+// }
+//
+// public static boolean addCanSpawn48PI(PreservedInsect __instance) {
+// return (Settings.isEndless || (AbstractDungeon.floorNum <= 52 && !evilMode) || (AbstractDungeon.floorNum <= 48 && evilMode));
+// }
+
+
+ @SpirePatch(clz = BustedCrown.class, method = "getUpdatedDescription")
+ public static class BustedCrownJokeText {
+ @SpirePrefixPatch
+ public static void Prefix(BustedCrown _instance) {
+ if (AbstractDungeon.player != null && AbstractDungeon.player.chosenClass == ChampChar.Enums.THE_CHAMP) {
+ _instance.flavorText = CardCrawlGame.languagePack.getRelicStrings("downfall:BustedCrownGagText").FLAVOR;
+ }
+ }
+ }
+
@SpirePatch(
clz = OldCoin.class,
@@ -51,8 +104,8 @@ public class RelicOverrides {
public static class oldCoinName {
@SpirePrefixPatch
public static void Prefix(OldCoin _instance) {
- if (EvilModeCharacterSelect.evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[1]) {
- //ReflectionHacks.setPrivateStaticFinal(OldCoin.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[1]);
+ if (evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[1]) {
+ ReflectionHacks.setPrivateStaticFinal(OldCoin.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[1]);
_instance.img = TextureLoader.getTexture(downfallMod.assetPath("images/relics/oldCoinEvil.png"));
_instance.outlineImg = TextureLoader.getTexture(downfallMod.assetPath("images/relics/Outline/oldCoinEvil.png"));
_instance.flavorText = CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[2];
@@ -62,6 +115,61 @@ public static void Prefix(OldCoin _instance) {
}
+// @SpirePatch(
+// clz = BlueCandle.class,
+// method = "onUseCard"
+// )
+// public static class BlueCandleOverride {
+// // @SpirePatch
+// public static void onUseCard(BlueCandle __instance, AbstractCard card, UseCardAction action) {
+// if (card.type == AbstractCard.CardType.CURSE) {
+// __instance.flash();
+// if (!EvilModeCharacterSelect.evilMode || card.cost == -2) {
+// AbstractDungeon.actionManager.addToBottom(
+// new LoseHPAction(AbstractDungeon.player, AbstractDungeon.player, 1, AbstractGameAction.AttackEffect.FIRE)
+// );
+// }
+// card.exhaust = true;
+// action.exhaustCard = true;
+// }
+// }
+// }
+//
+// @SpirePatch(
+// clz = BlueCandle.class,
+// method = "getUpdatedDescription"
+// )
+// public static class bluecandleName {
+// @SpirePrefixPatch
+// public static void Prefix(BlueCandle _instance) {
+// if (EvilModeCharacterSelect.evilMode) {
+// _instance.imgUrl = null;
+// ReflectionHacks.setPrivateStaticFinal(MembershipCard.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:BlackCandle").DESCRIPTIONS[1]);_instance.img = TextureLoader.getTexture(downfallMod.assetPath("images/relics/BlackCandle.png"));
+// _instance.outlineImg = TextureLoader.getTexture(downfallMod.assetPath("images/relics/Outline/BlackCandleOutline.png"));
+// _instance.flavorText = CardCrawlGame.languagePack.getRelicStrings("downfall:BlackCandle").FLAVOR;
+// }
+//
+// }
+// }
+//
+//
+//
+// @SpirePatch(
+// clz = BlueCandle.class,
+// method = "setDescription"
+// )
+// public static class BlueCandleDesc {
+// @SpirePrefixPatch
+// public static SpireReturn Prefix() {
+//
+// if (EvilModeCharacterSelect.evilMode) {
+// return SpireReturn.Return(CardCrawlGame.languagePack.getRelicStrings("downfall:BlackCandle").DESCRIPTIONS[1]);
+// }
+//
+// return SpireReturn.Continue();
+// }
+// }
+
@SpirePatch(
clz = MembershipCard.class,
@@ -70,8 +178,8 @@ public static void Prefix(OldCoin _instance) {
public static class membershipCardName {
@SpirePrefixPatch
public static void Prefix(MembershipCard _instance) {
- if (EvilModeCharacterSelect.evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[3]) {
- //ReflectionHacks.setPrivateStaticFinal(MembershipCard.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[3]);
+ if (evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[3]) {
+ ReflectionHacks.setPrivateStaticFinal(MembershipCard.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[3]);
_instance.img = TextureLoader.getTexture(downfallMod.assetPath("images/relics/membershipCardEvil.png"));
_instance.outlineImg = TextureLoader.getTexture(downfallMod.assetPath("images/relics/Outline/membershipCardEvil.png"));
_instance.flavorText = CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[4];
@@ -89,8 +197,8 @@ public static void Prefix(MembershipCard _instance) {
public static class courierName {
@SpirePrefixPatch
public static void Prefix(Courier _instance) {
- if (EvilModeCharacterSelect.evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[6]) {
- //ReflectionHacks.setPrivateStaticFinal(Courier.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[6]);
+ if (evilMode && _instance.name != CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[6]) {
+ ReflectionHacks.setPrivateStaticFinal(Courier.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[6]);
_instance.imgUrl = null;
_instance.img = TextureLoader.getTexture(downfallMod.assetPath("images/relics/courierEvil.png"));
_instance.outlineImg = TextureLoader.getTexture(downfallMod.assetPath("images/relics/Outline/courierEvil.png"));
@@ -108,9 +216,9 @@ public static void Prefix(Courier _instance) {
public static class prismaticDesc {
@SpirePrefixPatch
public static void Postfix(PrismaticShard _instance) {
- if (EvilModeCharacterSelect.evilMode) {
+ if (evilMode) {
//ReflectionHacks.setPrivateStaticFinal(Courier.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[6]);
- _instance.description = CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[8];
+ // _instance.description = CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[8];
}
@@ -124,8 +232,9 @@ public static void Postfix(PrismaticShard _instance) {
public static class EctoImage {
@SpirePrefixPatch
public static void Prefix(Ectoplasm _instance) {
- if (EvilModeCharacterSelect.evilMode) {
+ if (evilMode) {
_instance.imgUrl = null;
+ ReflectionHacks.setPrivateStaticFinal(Ectoplasm.class, "name", CardCrawlGame.languagePack.getRelicStrings("downfall:Hecktoplasm").DESCRIPTIONS[1]);
_instance.img = TextureLoader.getTexture(downfallMod.assetPath("images/relics/ectoplasmEvil.png"));
_instance.outlineImg = TextureLoader.getTexture(downfallMod.assetPath("images/relics/Outline/ectoplasmEvil.png"));
_instance.flavorText = CardCrawlGame.languagePack.getRelicStrings("downfall:Hecktoplasm").FLAVOR;
@@ -142,7 +251,7 @@ public static class EctoDesc {
@SpirePrefixPatch
public static SpireReturn Prefix() {
- if (EvilModeCharacterSelect.evilMode) {
+ if (evilMode) {
return SpireReturn.Return(CardCrawlGame.languagePack.getRelicStrings("downfall:replacements").DESCRIPTIONS[9]);
}
@@ -159,7 +268,7 @@ public static class EctoTitle {
locator = Locator.class
)
public static void Insert(AbstractRelic __instance,String setId, String imgName, AbstractRelic.RelicTier tier, AbstractRelic.LandingSound sfx) {
- if(Objects.equals(__instance.relicId, "Ectoplasm") && EvilModeCharacterSelect.evilMode) {
+ if(Objects.equals(__instance.relicId, "Ectoplasm") && evilMode) {
ReflectionHacks.setPrivateFinal(__instance, AbstractRelic.class, "relicStrings", CardCrawlGame.languagePack.getRelicStrings("downfall:Hecktoplasm").NAME);
}
diff --git a/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java b/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
index ca69a3ddc..d0e885715 100644
--- a/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
+++ b/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
@@ -3,14 +3,18 @@
import basemod.ReflectionHacks;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.screens.GameOverScreen;
import com.megacrit.cardcrawl.screens.GameOverStat;
import com.megacrit.cardcrawl.screens.VictoryScreen;
import downfall.downfallMod;
+import theHexaghost.relics.TheBrokenSeal;
import java.util.ArrayList;
+import static downfall.patches.DeathScreenScoreBonusesPatch.uiStrings2;
+
public class ReplaceHeartKillBonusPatch {
public static String CHECKAGAINST = CardCrawlGame.languagePack.getScoreString("Heartbreaker").NAME;
@@ -35,6 +39,11 @@ public static void Postfix(VictoryScreen __instance) {
stats.remove(idx);
stats.add(idx, new GameOverStat(uiStrings.TEXT[0], uiStrings.TEXT[1], Integer.toString(250)));
}
- }
- }
-}
\ No newline at end of file
+ // ArrayList stats2 = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ // if (AbstractDungeon.player.hasRelic(TheBrokenSeal.ID)) {
+ // stats2.add(stats2.size()-2, new GameOverStat(uiStrings2.TEXT[0], uiStrings2.TEXT[1], Integer.toString(333)));
+ // }
+
+ }
+ }
+ }
diff --git a/src/main/java/downfall/patches/RestrictCardColor.java b/src/main/java/downfall/patches/RestrictCardColor.java
index efff7c1c7..068914335 100644
--- a/src/main/java/downfall/patches/RestrictCardColor.java
+++ b/src/main/java/downfall/patches/RestrictCardColor.java
@@ -1,5 +1,6 @@
package downfall.patches;
+import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -7,30 +8,41 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import hermit.characters.hermit;
+import sneckomod.SneckoMod;
+import theHexaghost.HexaMod;
@SpirePatch(clz = CardLibrary.class, method = "getAnyColorCard", paramtypez = {AbstractCard.CardRarity.class})
public class RestrictCardColor {
- public static AbstractCard.CardColor[] vanillaColors = new AbstractCard.CardColor[]{AbstractCard.CardColor.RED, AbstractCard.CardColor.GREEN, AbstractCard.CardColor.BLUE, AbstractCard.CardColor.PURPLE, AbstractCard.CardColor.COLORLESS, AbstractCard.CardColor.CURSE, hermit.Enums.COLOR_YELLOW};
+ // Instead of banning non Hero cards like it did previously,
+ // this bans cards that are additionally banned for Snecko. I was very harsh with banning useless
+ // cards from Snecko so it should be fine-ish to play with.
+ // If this still makes prismatic shard bad we can just revert it to the old version again.
+ //public static AbstractCard.CardColor[] vanillaColors = new AbstractCard.CardColor[]{AbstractCard.CardColor.RED, AbstractCard.CardColor.GREEN, AbstractCard.CardColor.BLUE, AbstractCard.CardColor.PURPLE, AbstractCard.CardColor.COLORLESS, AbstractCard.CardColor.CURSE, hermit.Enums.COLOR_YELLOW};
@SpireInsertPatch(rloc = 10, localvars = {"anyCard"})
public static void Insert(AbstractCard.CardRarity rarity, CardGroup anyCard) {
CardGroup cardsToRemove = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+
for (AbstractCard card : anyCard.group) {
boolean available = false;
if (card.color == AbstractDungeon.player.getCardColor()) {
available = true;
- } else {
- for (AbstractCard.CardColor color : vanillaColors) {
- if (card.color == color) {
- available = true;
- break;
- }
- }
}
- if (!available)
+ else if (!card.hasTag(SneckoMod.BANNEDFORSNECKO) && !card.hasTag(HexaMod.GHOSTWHEELCARD)) {
+ available = true;
+ }
+
+ //PLEASE WORK
+ if (card.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE){
+ available = false;
+ }
+
+ if (!available) {
cardsToRemove.addToBottom(card);
+ }
}
- for (AbstractCard card : cardsToRemove.group)
+ for (AbstractCard card : cardsToRemove.group) {
anyCard.removeCard(card);
+ }
}
}
diff --git a/src/main/java/downfall/patches/RestrictCardColorWithType.java b/src/main/java/downfall/patches/RestrictCardColorWithType.java
index 1a8f64018..3e0ec1176 100644
--- a/src/main/java/downfall/patches/RestrictCardColorWithType.java
+++ b/src/main/java/downfall/patches/RestrictCardColorWithType.java
@@ -1,18 +1,23 @@
package downfall.patches;
+import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
-import hermit.characters.hermit;
-
-import static downfall.patches.RestrictCardColor.vanillaColors;
+import sneckomod.SneckoMod;
+import theHexaghost.HexaMod;
@SpirePatch(clz = CardLibrary.class, method = "getAnyColorCard", paramtypez = {AbstractCard.CardType.class, AbstractCard.CardRarity.class})
public class RestrictCardColorWithType {
+ // Instead of banning non Hero cards like it did previously,
+ // this bans cards that are additionally banned for Snecko. I was very harsh with banning useless
+ // cards from Snecko so it should be fine-ish to play with.
+ // If this still makes prismatic shard bad we can just revert it to the old version again.
+
@SpireInsertPatch(rloc = 11, localvars = {"anyCard"})
public static void Insert(AbstractCard.CardType type, AbstractCard.CardRarity rarity, CardGroup anyCard) {
CardGroup cardsToRemove = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
@@ -20,18 +25,21 @@ public static void Insert(AbstractCard.CardType type, AbstractCard.CardRarity ra
boolean available = false;
if (card.color == AbstractDungeon.player.getCardColor()) {
available = true;
- } else {
- for (AbstractCard.CardColor color : vanillaColors) {
- if (card.color == color) {
- available = true;
- break;
- }
- }
- }
- if (!available)
- cardsToRemove.addToBottom(card);
- }
- for (AbstractCard card : cardsToRemove.group)
- anyCard.removeCard(card);
+ }
+ else if (!card.hasTag(SneckoMod.BANNEDFORSNECKO) && !card.hasTag(HexaMod.GHOSTWHEELCARD)) {
+ available = true;
+ }
+
+ if (card.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE){
+ available = false;
+ }
+
+ if (!available) {
+ cardsToRemove.addToBottom(card);
+ }
+ }
+ for (AbstractCard card : cardsToRemove.group) {
+ anyCard.removeCard(card);
+ }
}
}
diff --git a/src/main/java/downfall/patches/SpireShieldPatch.java b/src/main/java/downfall/patches/SpireShieldPatch.java
new file mode 100644
index 000000000..2f5ed3d6e
--- /dev/null
+++ b/src/main/java/downfall/patches/SpireShieldPatch.java
@@ -0,0 +1,48 @@
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RollMoveAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.ending.SpireShield;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import guardian.characters.GuardianCharacter;
+import slimebound.characters.SlimeboundCharacter;
+import slimebound.powers.PotencyPower;
+import sneckomod.TheSnecko;
+import theHexaghost.TheHexaghost;
+import theHexaghost.powers.EnhancePower;
+
+
+//thanks to ocean for the code from cranky mod
+@SpirePatch(clz=SpireShield.class, method="takeTurn")
+public class SpireShieldPatch {
+ @SpireInsertPatch(rloc=8)
+ public static SpireReturn Insert(SpireShield __instance) {
+ if ((AbstractDungeon.player instanceof SlimeboundCharacter || AbstractDungeon.player instanceof TheHexaghost || AbstractDungeon.player instanceof TheSnecko) && AbstractDungeon.aiRng.randomBoolean()) {
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter && !AbstractDungeon.player.orbs.isEmpty()) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new PotencyPower(AbstractDungeon.player, __instance, -1)));
+ }
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter && (AbstractDungeon.player.orbs.isEmpty())) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new StrengthPower(AbstractDungeon.player, -1)));
+ }
+
+ if (AbstractDungeon.player instanceof TheHexaghost) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new EnhancePower(-1), -1));
+ }
+
+ if (AbstractDungeon.player instanceof TheSnecko || AbstractDungeon.player instanceof GuardianCharacter) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new StrengthPower(AbstractDungeon.player, -1)));
+ }
+
+ AbstractDungeon.actionManager.addToBottom(new RollMoveAction(__instance));
+ return SpireReturn.Return();
+ }
+
+ return SpireReturn.Continue();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java b/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
index 58302a79a..39282a700 100644
--- a/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
+++ b/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
@@ -35,8 +35,8 @@ public static void Postfix(ArrayList roomList, int availableRoomCo
roomList.add(new HeartShopRoom());
}
roomList.removeAll(shopRooms);
+ System.out.println("Shop rooms replaced with HeartShopRoom.");
}
-
}
}
@@ -51,6 +51,7 @@ public static SpireReturn Prefix(AbstractDungeon __instance, Event
if (EvilModeCharacterSelect.evilMode) {
if (roomType == EventHelper.RoomResult.SHOP) {
+ System.out.println("Replacing SHOP room with HeartShopRoom.");
return SpireReturn.Return(new HeartShopRoom());
}
}
@@ -59,7 +60,6 @@ public static SpireReturn Prefix(AbstractDungeon __instance, Event
}
}
-
@SpirePatch(
clz = RoomTypeAssigner.class,
method = "ruleParentMatches",
@@ -71,6 +71,7 @@ public static void patch(ArrayList parents, AbstractRoom roomToBeSe
if (EvilModeCharacterSelect.evilMode) {
applicableRooms[0] = new ArrayList<>(applicableRooms[0]);
applicableRooms[0].add(HeartShopRoom.class);
+ System.out.println("Added HeartShopRoom to applicableRooms.");
}
}
}
@@ -86,8 +87,8 @@ public static void patch(ArrayList parents, AbstractRoom roomToBeSe
if (EvilModeCharacterSelect.evilMode) {
applicableRooms[0] = new ArrayList<>(applicableRooms[0]);
applicableRooms[0].add(HeartShopRoom.class);
+ System.out.println("Added HeartShopRoom to sibling applicableRooms.");
}
}
}
}
-
diff --git a/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java b/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
index 913ec8f68..22cf21d02 100644
--- a/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
+++ b/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
@@ -29,7 +29,7 @@ public class ExhaustEndOfTurnPower extends AbstractPower implements CloneablePow
public ExhaustEndOfTurnPower(AbstractCreature owner) {
this.ID = POWER_ID;
this.owner = owner;
- this.type = PowerType.BUFF;
+ this.type = PowerType.DEBUFF;
this.isTurnBased = true;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
diff --git a/src/main/java/downfall/powers/TransformDrawnCardsPower.java b/src/main/java/downfall/powers/TransformDrawnCardsPower.java
index a5bcbc1f9..aac651288 100644
--- a/src/main/java/downfall/powers/TransformDrawnCardsPower.java
+++ b/src/main/java/downfall/powers/TransformDrawnCardsPower.java
@@ -32,7 +32,7 @@ public TransformDrawnCardsPower(final AbstractCreature owner, final int amount)
this.ID = POWER_ID;
this.owner = owner;
this.amount = amount;
- this.type = PowerType.BUFF;
+ this.type = PowerType.DEBUFF;
this.isTurnBased = true;
this.name = NAME;
diff --git a/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java b/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
index 40b633a7e..fdf03ca11 100644
--- a/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
+++ b/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
@@ -22,6 +22,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.ArtifactPower;
+import com.megacrit.cardcrawl.powers.BufferPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import downfall.cards.HeartsFavorWish;
import downfall.cards.OctoChoiceCard;
@@ -64,7 +65,12 @@ public void onSpecificTrigger() {
AbstractPlayer p = AbstractDungeon.player;
for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
if (m != null && !m.isDead && !m.isDying && !m.halfDead && m.id == NeowBossFinal.ID) {
- addToBot(new ApplyPowerAction(m, p, new NeowInvulnerablePower(m, -this.amount), -this.amount));
+ if (m.hasPower(NeowInvulnerablePower.POWER_ID)) {
+ int buf = m.getPower(NeowInvulnerablePower.POWER_ID).amount;
+ if (buf > 0) {
+ addToBot(new ApplyPowerAction(m, p, new NeowInvulnerablePower(m, -this.amount), -this.amount));
+ }
+ }
}
}
}
diff --git a/src/main/java/downfall/relics/BlackCandle.java b/src/main/java/downfall/relics/BlackCandle.java
new file mode 100644
index 000000000..5a14d8486
--- /dev/null
+++ b/src/main/java/downfall/relics/BlackCandle.java
@@ -0,0 +1,59 @@
+package downfall.relics;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import downfall.downfallMod;
+import hermit.characters.hermit;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
+
+/// This relic exists to quickgrab its description, images, and texts to replace blue candle while playing evil mode, like hecktoplasm.
+/// Do not remove it. Also, it doesn't work, the real patch uses an override. But still, don't touch this.
+public class BlackCandle extends CustomRelic {
+
+ public static final String ID = downfallMod.makeID("BlackCandle");
+ private static final Texture IMG = new Texture(downfallMod.assetPath("images/relics/BlackCandle.png"));
+ private static final Texture OUTLINE = new Texture(downfallMod.assetPath("images/relics/Outline/BlackCandleOutline.png"));
+
+ public BlackCandle() {
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.MAGICAL);
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.type == AbstractCard.CardType.CURSE) {
+ if (card.cost == -2) {
+ this.flash();
+ this.addToBot(new LoseHPAction(AbstractDungeon.player, AbstractDungeon.player, 1, AbstractGameAction.AttackEffect.FIRE));
+ card.exhaust = true;
+ action.exhaustCard = true;
+ }
+ }
+ }
+
+ public boolean canPlay(AbstractCard card) {
+ if (card.type == AbstractCard.CardType.CURSE) {
+ return true;
+ }else{
+ return card.canPlay(card);
+ }
+ }
+
+ public boolean canSpawn() {
+ return false;
+ //(evilMode || (AbstractDungeon.player instanceof hermit));
+ }
+
+ public AbstractRelic makeCopy() {
+ return new BlackCandle();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/relics/BurdenOfKnowledge.java b/src/main/java/downfall/relics/BurdenOfKnowledge.java
new file mode 100644
index 000000000..0498267d8
--- /dev/null
+++ b/src/main/java/downfall/relics/BurdenOfKnowledge.java
@@ -0,0 +1,127 @@
+package downfall.relics;
+
+import basemod.abstracts.CustomRelic;
+import champ.relics.Barbells;
+import champ.relics.PowerArmor;
+import collector.CollectorCollection;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.EscapeAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.actions.unique.ArmamentsAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import java.util.function.Predicate;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.watcher.MasterRealityPower;
+import com.megacrit.cardcrawl.relics.*;
+import com.megacrit.cardcrawl.vfx.UpgradeShineEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
+import downfall.actions.WaitForEscapeAction;
+import downfall.downfallMod;
+import gremlin.characters.GremlinCharacter;
+import guardian.relics.StasisUpgradeRelic;
+import hermit.relics.Horseshoe;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BurdenOfKnowledge extends CustomRelic {
+
+ public static final String ID = downfallMod.makeID("BurdenOfKnowledge");
+ private static final Texture IMG = new Texture(downfallMod.assetPath("images/relics/Burden.png"));
+ private static final Texture OUTLINE = new Texture(downfallMod.assetPath("images/relics/Outline/Burden.png"));
+ int effectCount = 0;
+
+ public BurdenOfKnowledge() {
+ super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.MAGICAL);
+ }
+
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ public void onEquip() {
+
+ downfallMod.removeAnyRelicFromPools(ToxicEgg2.ID);
+ downfallMod.removeAnyRelicFromPools(FrozenEgg2.ID);
+ downfallMod.removeAnyRelicFromPools(MoltenEgg2.ID);
+ downfallMod.removeAnyRelicFromPools(UnknownEgg.ID);
+ downfallMod.removeAnyRelicFromPools(StasisUpgradeRelic.ID);
+ downfallMod.removeAnyRelicFromPools(Barbells.ID);
+
+ AbstractDungeon.player.decreaseMaxHealth(10);
+ List upgradedCards = new ArrayList();
+
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.canUpgrade()) {
+ ++effectCount;
+ if (effectCount <= 20) {
+ float x = MathUtils.random(0.1F, 0.9F) * (float) Settings.WIDTH;
+ float y = MathUtils.random(0.2F, 0.8F) * (float) Settings.HEIGHT;
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy(), x, y));
+ AbstractDungeon.topLevelEffects.add(new UpgradeShineEffect(x, y));
+ }
+
+ upgradedCards.add(c.cardID);
+ c.upgrade();
+ AbstractDungeon.player.bottledCardUpgradeCheck(c);
+ }
+ }
+
+
+ //collector compat
+ CardGroup group = CardGroup.getGroupWithoutBottledCards(CollectorCollection.collection);
+ for (AbstractCard c : group.group) {
+ if (c.canUpgrade()) {
+ ++effectCount;
+ if (effectCount <= 20) {
+ float x = MathUtils.random(0.1F, 0.9F) * (float) Settings.WIDTH;
+ float y = MathUtils.random(0.2F, 0.8F) * (float) Settings.HEIGHT;
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy(), x, y));
+ AbstractDungeon.topLevelEffects.add(new UpgradeShineEffect(x, y));
+ }
+ upgradedCards.add(c.cardID);
+ c.upgrade();
+ AbstractDungeon.player.bottledCardUpgradeCheck(c);
+ }
+ }
+
+
+ AbstractDungeon.player.loseRelic(HeartBlessingRed.ID);
+ AbstractDungeon.player.loseRelic(HeartBlessingBlue.ID);
+ AbstractDungeon.player.loseRelic(HeartBlessingGreen.ID);
+ }
+
+ public void onPreviewObtainCard(AbstractCard c) {
+ this.onObtainCard(c);
+ }
+
+ public void onObtainCard(AbstractCard c) {
+ if (!c.upgraded) {
+ c.upgrade();
+ }
+ }
+
+ public void atBattleStart() {
+ this.flash();
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new MasterRealityPower(AbstractDungeon.player)));
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, -1), -1));
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DexterityPower(AbstractDungeon.player, -1), -1));
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ AbstractDungeon.player.hasRelic(Enchiridion.ID);
+ {
+ this.addToBot(new ArmamentsAction(true));
+ }
+ }
+
+ public AbstractRelic makeCopy() {
+ return new BurdenOfKnowledge();
+ }
+}
diff --git a/src/main/java/downfall/relics/ExtraCursedBell.java b/src/main/java/downfall/relics/ExtraCursedBell.java
index d082663e2..3b7e2f19e 100644
--- a/src/main/java/downfall/relics/ExtraCursedBell.java
+++ b/src/main/java/downfall/relics/ExtraCursedBell.java
@@ -35,7 +35,7 @@ public void onEquip() {
CardGroup group = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
AbstractCard bellCurse = new CurseOfTheBell();
UnlockTracker.markCardAsSeen(bellCurse.cardID);
- for (int i = 0; i < 2; i++)
+ for (int i = 0; i < 1; i++)
group.addToBottom(bellCurse.makeCopy());
AbstractDungeon.gridSelectScreen.openConfirmationGrid(group, this.DESCRIPTIONS[1]);
CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
@@ -47,8 +47,10 @@ public void update() {
AbstractDungeon.combatRewardScreen.open();
AbstractDungeon.combatRewardScreen.rewards.clear();
AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.COMMON)));
- AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.UNCOMMON)));
- AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.RARE)));
+ AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.COMMON)));
+ AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.COMMON)));
+ // AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.UNCOMMON)));
+ // AbstractDungeon.combatRewardScreen.rewards.add(new RewardItem(AbstractDungeon.returnRandomScreenlessRelic(RelicTier.RARE)));
AbstractDungeon.combatRewardScreen.positionRewards();
AbstractDungeon.overlayMenu.proceedButton.setLabel(this.DESCRIPTIONS[2]);
this.cardsReceived = true;
diff --git a/src/main/java/downfall/relics/ExtraCursedKey.java b/src/main/java/downfall/relics/ExtraCursedKey.java
index 089dd12e6..4f10daf85 100644
--- a/src/main/java/downfall/relics/ExtraCursedKey.java
+++ b/src/main/java/downfall/relics/ExtraCursedKey.java
@@ -2,9 +2,15 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.curses.Injury;
+import com.megacrit.cardcrawl.cards.curses.Necronomicurse;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.rooms.TreasureRoom;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
@@ -15,6 +21,7 @@ public class ExtraCursedKey extends CustomRelic {
public static final String ID = downfallMod.makeID("ExtraCursedKey");
private static final Texture IMG = new Texture(downfallMod.assetPath("images/relics/ExtraCursedKey.png"));
private static final Texture OUTLINE = new Texture(downfallMod.assetPath("images/relics/Outline/ExtraCursedKey.png"));
+ private boolean triggeredThisTurn = false;
public ExtraCursedKey() {
super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.CLINK);
@@ -37,18 +44,26 @@ public void justEnteredRoom(AbstractRoom room) {
public void onChestOpen(boolean bossChest) {
if (!bossChest) {
- for (int i = 0; i < 2; i++) {
- AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(AbstractDungeon.returnRandomCurse(), (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
+ for (int i = 0; i < 1; i++) {
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Injury(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
}
}
- public void onEquip() {
- ++AbstractDungeon.player.energy.energyMaster;
+ public void atTurnStart() {
+ this.triggeredThisTurn = false;
}
- public void onUnequip() {
- --AbstractDungeon.player.energy.energyMaster;
+ public void onCardDraw(AbstractCard card) {
+ if (card.color == AbstractCard.CardColor.CURSE) {
+ if (!this.triggeredThisTurn) {
+ this.triggeredThisTurn = true;
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToBot(new GainEnergyAction(1));
+ }
+
+ }
}
}
diff --git a/src/main/java/downfall/relics/HeartsMalice.java b/src/main/java/downfall/relics/HeartsMalice.java
index 2f0e1c46a..7a97df785 100644
--- a/src/main/java/downfall/relics/HeartsMalice.java
+++ b/src/main/java/downfall/relics/HeartsMalice.java
@@ -8,6 +8,8 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.rooms.MonsterRoom;
+import com.megacrit.cardcrawl.rooms.ShopRoom;
import downfall.actions.WaitForEscapeAction;
import downfall.downfallMod;
import gremlin.characters.GremlinCharacter;
@@ -28,31 +30,32 @@ public String getUpdatedDescription() {
}
public void atBattleStart() {
- if (this.counter > 0) {
- --this.counter;
- if (this.counter == 0) {
- this.setCounter(-2);
- this.description = this.DESCRIPTIONS[1];
- this.tips.clear();
- this.tips.add(new PowerTip(this.name, this.description));
- this.initializeTips();
- }
+ if (!(AbstractDungeon.getCurrRoom() instanceof ShopRoom)) {
+ if (this.counter > 0) {
+ --this.counter;
+ if (this.counter == 0) {
+ this.setCounter(-2);
+ this.description = this.DESCRIPTIONS[1];
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ this.initializeTips();
+ }
- this.flash();
+ this.flash();
- //AbstractDungeon.actionManager.actions.removeIf((act)->act instanceof DrawCardAction); Works, but may cause issues if somehow not all enemies flee.
- AbstractDungeon.actionManager.addToTop(new WaitForEscapeAction()); //This works better.
- for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
- AbstractDungeon.actionManager.addToTop(new EscapeAction(m));
- }
+ //AbstractDungeon.actionManager.actions.removeIf((act)->act instanceof DrawCardAction); Works, but may cause issues if somehow not all enemies flee.
+ AbstractDungeon.actionManager.addToTop(new WaitForEscapeAction()); //This works better.
+ for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ AbstractDungeon.actionManager.addToTop(new EscapeAction(m));
+ }
- this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- if(AbstractDungeon.player instanceof GremlinCharacter) {
- ((GremlinCharacter) AbstractDungeon.player).mobState.startOfBattle((GremlinCharacter)AbstractDungeon.player);
+ if (AbstractDungeon.player instanceof GremlinCharacter) {
+ ((GremlinCharacter) AbstractDungeon.player).mobState.startOfBattle((GremlinCharacter) AbstractDungeon.player);
+ }
}
}
-
}
public void setCounter(int setCounter) {
diff --git a/src/main/java/downfall/relics/Hecktoplasm.java b/src/main/java/downfall/relics/Hecktoplasm.java
index 1e7ca3ea3..e8ce07c70 100644
--- a/src/main/java/downfall/relics/Hecktoplasm.java
+++ b/src/main/java/downfall/relics/Hecktoplasm.java
@@ -13,7 +13,8 @@
import downfall.downfallMod;
import downfall.patches.EvilModeCharacterSelect;
-@Deprecated
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
public class Hecktoplasm extends CustomRelic {
public static final String ID = downfallMod.makeID("Hecktoplasm");
@@ -38,7 +39,7 @@ public void onUnequip() {
}
public boolean canSpawn() {
- return (AbstractDungeon.actNum <= 1 && EvilModeCharacterSelect.evilMode);
+ return (AbstractDungeon.actNum <= 1 && evilMode);
}
public AbstractRelic makeCopy() {
diff --git a/src/main/java/downfall/relics/ShatteredFragment.java b/src/main/java/downfall/relics/ShatteredFragment.java
index 1c1799bf8..952415d62 100644
--- a/src/main/java/downfall/relics/ShatteredFragment.java
+++ b/src/main/java/downfall/relics/ShatteredFragment.java
@@ -3,11 +3,29 @@
import basemod.abstracts.CustomRelic;
import basemod.helpers.CardPowerTip;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.CuriosityPower;
+import com.megacrit.cardcrawl.powers.RitualPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
import downfall.cards.BloodySacrifice;
+import downfall.cards.curses.Scatterbrained;
import downfall.downfallMod;
+import expansioncontent.actions.EchoACardAction;
+import expansioncontent.cards.AwakenDeath;
+
+import java.util.Iterator;
+
+import static hermit.util.Wiz.atb;
public class ShatteredFragment extends CustomRelic {
@@ -16,8 +34,8 @@ public class ShatteredFragment extends CustomRelic {
private static final Texture OUTLINE = new Texture(downfallMod.assetPath("images/relics/Outline/WingShiv.png"));
public ShatteredFragment() {
- super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.FLAT);
- tips.add(new CardPowerTip( new BloodySacrifice() ) );
+ super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.MAGICAL);
+ //tips.add(new CardPowerTip( new AwakenDeath() ) );
}
@Override
@@ -30,10 +48,53 @@ public String getUpdatedDescription() {
// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
// this.addToBot(new MakeTempCardInHandAction(new CrystalShiv(), 1, false));
// }
- @Override
- public void atBattleStartPreDraw() {
- this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));// 24
- this.addToBot(new MakeTempCardInHandAction(new BloodySacrifice()));// 25
- }
+
+// @Override
+// public void atBattleStartPreDraw() {
+// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));// 24
+// this.addToBot(new MakeTempCardInHandAction(new BloodySacrifice()));// 25
+// }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.type == AbstractCard.CardType.POWER) {
+ boolean isEliteOrBoss = AbstractDungeon.getCurrRoom().eliteTrigger;
+ Iterator var2 = AbstractDungeon.getMonsters().monsters.iterator();
+ while(var2.hasNext()) {
+ AbstractMonster m = (AbstractMonster)var2.next();
+ if (m.type == AbstractMonster.EnemyType.BOSS) {
+ isEliteOrBoss = true;
+ }
+ }
+
+ if (isEliteOrBoss) {
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)AbstractDungeon.player, (AbstractCreature)AbstractDungeon.player, (AbstractPower)new StrengthPower((AbstractCreature)AbstractDungeon.player, 1), 1));
+ }
+ }
+ }
+
+
+
+// public void atBattleStart() {
+// boolean isEliteOrBoss = AbstractDungeon.getCurrRoom().eliteTrigger;
+// Iterator var2 = AbstractDungeon.getMonsters().monsters.iterator();
+//
+// while(var2.hasNext()) {
+// AbstractMonster m = (AbstractMonster)var2.next();
+// if (m.type == AbstractMonster.EnemyType.BOSS) {
+// isEliteOrBoss = true;
+// }
+// }
+//
+// if (isEliteOrBoss) {
+// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+// // AbstractCard q = new AwakenDeath();
+// // addToTop(new EchoACardAction(q, true));
+// atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)AbstractDungeon.player, (AbstractCreature)AbstractDungeon.player, (AbstractPower)new CuriosityPower((AbstractCreature)AbstractDungeon.player, 1), 1));
+//
+// }
+//
+// }
+
}
diff --git a/src/main/java/downfall/tutorials/AutomatonTutorials.java b/src/main/java/downfall/tutorials/AutomatonTutorials.java
new file mode 100644
index 000000000..258b3f96c
--- /dev/null
+++ b/src/main/java/downfall/tutorials/AutomatonTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class AutomatonTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:AutomatonTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public AutomatonTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/AutomatonTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/AutomatonTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/ChampTutorials.java b/src/main/java/downfall/tutorials/ChampTutorials.java
new file mode 100644
index 000000000..791307e6e
--- /dev/null
+++ b/src/main/java/downfall/tutorials/ChampTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class ChampTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:ChampTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public ChampTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/ChampTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/ChampTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/GremlinsTutorials.java b/src/main/java/downfall/tutorials/GremlinsTutorials.java
new file mode 100644
index 000000000..8a7901b32
--- /dev/null
+++ b/src/main/java/downfall/tutorials/GremlinsTutorials.java
@@ -0,0 +1,135 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+
+public class GremlinsTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:GremlinsTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public GremlinsTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/GremlinsTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/GremlinsTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/SlimeBossTutorials.java b/src/main/java/downfall/tutorials/SlimeBossTutorials.java
new file mode 100644
index 000000000..4486b5e01
--- /dev/null
+++ b/src/main/java/downfall/tutorials/SlimeBossTutorials.java
@@ -0,0 +1,135 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+
+public class SlimeBossTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:SlimeBossTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public SlimeBossTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/SlimeBossTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/SlimeBossTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/SneckoTutorials.java b/src/main/java/downfall/tutorials/SneckoTutorials.java
new file mode 100644
index 000000000..74192fb71
--- /dev/null
+++ b/src/main/java/downfall/tutorials/SneckoTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class SneckoTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:SneckoTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public SneckoTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/SneckoTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/SneckoTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/ui/campfire/BustKeyOption.java b/src/main/java/downfall/ui/campfire/BustKeyOption.java
index 7ca066a19..5471f4229 100644
--- a/src/main/java/downfall/ui/campfire/BustKeyOption.java
+++ b/src/main/java/downfall/ui/campfire/BustKeyOption.java
@@ -1,6 +1,7 @@
package downfall.ui.campfire;
import basemod.ReflectionHacks;
+import champ.relics.DeflectingBracers;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -14,9 +15,7 @@
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.downfallMod;
import downfall.patches.ui.campfire.AddBustKeyButtonPatches;
-import downfall.relics.HeartBlessingBlue;
-import downfall.relics.HeartBlessingGreen;
-import downfall.relics.HeartBlessingRed;
+import downfall.relics.*;
import downfall.util.TextureLoader;
import downfall.vfx.campfire.BustKeyEffect;
@@ -35,7 +34,7 @@ public BustKeyOption() {
public BustKeyOption(Keys key) {
this.key = key;
- if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) soulToCost = 0;
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID) || AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) soulToCost = 0;
if (AbstractDungeon.player.gold < soulToCost) {
this.usable = false;
updateImage(key);
@@ -47,7 +46,7 @@ public BustKeyOption(Keys key) {
public void updateImage(Keys key) {
- if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) {
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID) || AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) {
this.description = TEXT[10];
} else {
this.description = TEXT[3];
@@ -162,21 +161,40 @@ public void useOption() {
AbstractDungeon.effectList.add(new BustKeyEffect());
AbstractPlayer p = AbstractDungeon.player;
p.loseGold(soulToCost);
+ if (soulToCost == 0) {
+
+ if (AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) {
+ AbstractDungeon.player.getRelic(Hecktoplasm.ID).flash();
+ System.out.println("Saved Souls with Hecktoplasm.");
+ }
+
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) {
+ AbstractDungeon.player.getRelic(Ectoplasm.ID).flash();
+ System.out.println("Saved Souls with Ectoplasm.");
+ }
+
+ }
this.used = true;
this.usable = false;
switch (key) {
case SAPPHIRE:
AddBustKeyButtonPatches.KeyFields.bustedSapphire.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingBlue());
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingBlue());
+ }
break;
case EMERALD:
AddBustKeyButtonPatches.KeyFields.bustedEmerald.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingGreen());
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingGreen());
+ }
break;
default:
AddBustKeyButtonPatches.KeyFields.bustedRuby.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingRed());
- }
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingRed());
+ }
+ }
updateImage(key);
}
diff --git a/src/main/java/downfall/util/RareCardReward.java b/src/main/java/downfall/util/RareCardReward.java
index 075368b7c..2d21b7441 100644
--- a/src/main/java/downfall/util/RareCardReward.java
+++ b/src/main/java/downfall/util/RareCardReward.java
@@ -160,7 +160,7 @@ public void render(SpriteBatch sb) {
sb.setBlendFunction(770, 771);
}
- Texture cardImg = ImageMaster.REWARD_CARD_NORMAL;
+ Texture cardImg = ImageMaster.REWARD_CARD_BOSS;
sb.setColor(Color.WHITE);
sb.draw(cardImg, REWARD_ITEM_X - 32.0F, this.y - 32.0F - 2.0F * Settings.scale, 32.0F, 32.0F, 64.0F, 64.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 64, 64, false, false);
diff --git a/src/main/java/expansioncontent/actions/BloodthirstAction.java b/src/main/java/expansioncontent/actions/BloodthirstAction.java
new file mode 100644
index 000000000..f6c3490ab
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/BloodthirstAction.java
@@ -0,0 +1,68 @@
+package expansioncontent.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.GetAllInBattleInstances;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Sozu;
+
+import java.util.Iterator;
+import java.util.UUID;
+
+public class BloodthirstAction extends AbstractGameAction {
+ private DamageInfo info;
+ private static final float DURATION = 0.1F;
+ private UUID uuid;
+
+ public BloodthirstAction(AbstractCreature target, DamageInfo info, UUID targetUUID) {
+ this.info = info;
+ this.setValues(target, info);
+ this.actionType = ActionType.DAMAGE;
+ this.duration = DURATION;
+ this.uuid = targetUUID;
+ }
+
+ @Override
+ public void update() {
+ if (this.duration == DURATION && this.target != null) {
+ this.target.damage(this.info);
+
+ if ((((AbstractMonster) this.target).isDying || this.target.currentHealth <= 0)
+ && !this.target.halfDead
+ && !this.target.hasPower("Minion")) {
+
+ Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+ while (var1.hasNext()) {
+ AbstractCard c = var1.next();
+ if (c.uuid.equals(this.uuid)) {
+ // c.applyPowers();
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile, false));
+ }
+ }
+ for (var1 = GetAllInBattleInstances.get(this.uuid).iterator(); var1.hasNext();) {
+ AbstractCard c = var1.next();
+ //c.applyPowers();
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile, false));
+ }
+ AbstractRelic sozu = AbstractDungeon.player.getRelic(Sozu.ID);
+ if (sozu != null) {
+ sozu.flash();
+ } else {
+ AbstractDungeon.player.obtainPotion(AbstractDungeon.returnRandomPotion(true));
+ }
+ }
+
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ }
+ this.tickDuration();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/actions/DiscoverBossAction.java b/src/main/java/expansioncontent/actions/DiscoverBossAction.java
index 1d5ed2b9a..534cf180c 100644
--- a/src/main/java/expansioncontent/actions/DiscoverBossAction.java
+++ b/src/main/java/expansioncontent/actions/DiscoverBossAction.java
@@ -1,6 +1,7 @@
package expansioncontent.actions;
import automaton.AutomatonChar;
+import basemod.BaseMod;
import champ.ChampChar;
import collector.CollectorChar;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
@@ -44,7 +45,7 @@ public void update() {
disCard.setCostForTurn(0);
disCard.current_x = -1000.0F * Settings.scale;
- if (AbstractDungeon.player.hand.size() < 10) {
+ if (AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
} else {
AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
@@ -66,20 +67,20 @@ private ArrayList generateCardChoices() {
ArrayList cardsList = new ArrayList<>();
ArrayList selectionsList = new ArrayList<>();
for (AbstractCard q : CardLibrary.getAllCards()) {
- if (q.rarity != AbstractCard.CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
+ if (q.rarity != AbstractCard.CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY) && !q.hasTag(AbstractCard.CardTags.HEALING)) {
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- if(q.cardID.equals(PrepareCrush.ID)){continue;}
+ if (q.hasTag(expansionContentMod.STUDY_SLIMEBOSS)){continue;}
} else if (AbstractDungeon.player instanceof TheHexaghost) {
- if(q.cardID.equals(Hexaburn.ID)){continue;}
+ if(q.hasTag(expansionContentMod.STUDY_HEXAGHOST)){continue;}
} else if (AbstractDungeon.player instanceof GuardianCharacter) {
- if(q.cardID.equals(GuardianWhirl.ID)){continue;}
+ if(q.hasTag(expansionContentMod.STUDY_GUARDIAN)){continue;}
} else if (AbstractDungeon.player instanceof ChampChar) {
- if(q.cardID.equals(LastStand.ID)){continue;}
+ if(q.hasTag(expansionContentMod.STUDY_CHAMP)){continue;}
} else if (AbstractDungeon.player instanceof AutomatonChar) {
- if(q.cardID.equals(HyperBeam.ID)){continue;}
+ if(q.hasTag(expansionContentMod.STUDY_AUTOMATON)){continue;}
} else if (AbstractDungeon.player instanceof CollectorChar) {
- if(q.cardID.equals(YouAreMine.ID)){continue;}
+ if(q.hasTag(expansionContentMod.STUDY_COLLECTOR)){continue;}
}
AbstractCard r = q.makeCopy();
diff --git a/src/main/java/expansioncontent/actions/DrawSpecificAction.java b/src/main/java/expansioncontent/actions/DrawSpecificAction.java
new file mode 100644
index 000000000..ef88d896a
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/DrawSpecificAction.java
@@ -0,0 +1,46 @@
+package expansioncontent.actions;
+
+import basemod.BaseMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import java.util.function.Predicate;
+
+public class DrawSpecificAction extends AbstractGameAction {
+ public AbstractPlayer p;
+ public Predicate predicate;
+
+ public DrawSpecificAction(int number, Predicate condition) {
+ this.predicate = condition;
+ this.p = AbstractDungeon.player;
+ this.setValues(this.p, this.p, number);
+ this.actionType = AbstractGameAction.ActionType.CARD_MANIPULATION;
+ this.duration = Settings.ACTION_DUR_XFAST;
+ }
+
+ public void update() {
+ this.isDone = true;
+ if (this.p.drawPile.isEmpty())
+ return;
+
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
+ this.p.createHandIsFullDialog();
+ return;
+ }
+
+ for (AbstractCard c : this.p.drawPile.group)
+ if (this.predicate.test(c)) {
+ if (this.amount > 1)
+ addToTop(new DrawSpecificAction(this.amount-1, this.predicate));
+
+ this.p.drawPile.group.remove(c);
+ this.p.drawPile.addToTop(c);
+ addToTop(new DrawCardAction(1));
+ return;
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/actions/ExhaustVirusAction.java b/src/main/java/expansioncontent/actions/ExhaustVirusAction.java
new file mode 100644
index 000000000..9b07b23d1
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/ExhaustVirusAction.java
@@ -0,0 +1,132 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Insight;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import downfall.cards.MajorBeam;
+
+import java.util.Iterator;
+
+public class ExhaustVirusAction extends AbstractGameAction {
+ private static final UIStrings uiStrings;
+ public static final String[] TEXT;
+ private AbstractPlayer p;
+ private boolean isRandom;
+ private boolean anyNumber;
+ private boolean canPickZero;
+ public static int numExhausted;
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this.anyNumber = anyNumber;
+ this.p = AbstractDungeon.player;
+ this.canPickZero = canPickZero;
+ this.isRandom = isRandom;
+ this.amount = 5;
+ this.duration = this.startDuration = Settings.ACTION_DUR_FAST;
+ this.actionType = ActionType.EXHAUST;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom, boolean anyNumber) {
+ this(amount, isRandom, anyNumber);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom) {
+ this(amount, isRandom, false, false);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this(amount, isRandom, anyNumber, canPickZero);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this(99, isRandom, anyNumber, canPickZero);
+ }
+
+ public ExhaustVirusAction(int amount, boolean canPickZero) {
+ this(amount, false, false, canPickZero);
+ }
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber) {
+ this(amount, isRandom, anyNumber, false);
+ }
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber, boolean canPickZero, float duration) {
+ this(amount, isRandom, anyNumber, canPickZero);
+ this.duration = this.startDuration = duration;
+ }
+
+ public void update() {
+ if (this.duration == this.startDuration) {
+ if (this.p.hand.size() == 0) {
+ this.isDone = true;
+ return;
+ }
+
+ int i;
+ if (!this.anyNumber && this.p.hand.size() <= this.amount) {
+ this.amount = this.p.hand.size();
+ numExhausted = this.amount;
+ i = this.p.hand.size();
+
+ for(int z = 0; z < z; ++z) {
+ AbstractCard c = this.p.hand.getTopCard();
+ this.p.hand.moveToExhaustPile(c);
+ }
+
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ return;
+ }
+
+ if (!this.isRandom) {
+ numExhausted = this.amount;
+ AbstractDungeon.handCardSelectScreen.open(TEXT[0], 5, this.anyNumber, this.canPickZero);
+ this.tickDuration();
+ return;
+ }
+
+ for(i = 0; i < this.amount; ++i) {
+ this.p.hand.moveToExhaustPile(this.p.hand.getRandomCard(AbstractDungeon.cardRandomRng));
+ }
+ //this.addToBot(new MakeTempCardInDrawPileAction(new MajorBeam(), this.amount, true, true));
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ }
+
+ if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {
+ Iterator var4 = AbstractDungeon.handCardSelectScreen.selectedCards.group.iterator();
+
+ while(var4.hasNext()) {
+ AbstractCard c = (AbstractCard)var4.next();
+ this.p.hand.moveToExhaustPile(c);
+ this.addToBot(new MakeTempCardInDrawPileAction(new MajorBeam(), 1, true, true));
+ }
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;
+ }
+
+ this.tickDuration();
+ }
+
+ static {
+ uiStrings = CardCrawlGame.languagePack.getUIString("ExhaustAction");
+ TEXT = uiStrings.TEXT;
+ }
+}
diff --git a/src/main/java/expansioncontent/actions/ManipulateTimeAction.java b/src/main/java/expansioncontent/actions/ManipulateTimeAction.java
new file mode 100644
index 000000000..58ed76c41
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/ManipulateTimeAction.java
@@ -0,0 +1,69 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.actions;
+
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.ObtainPotionAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Sozu;
+import com.megacrit.cardcrawl.vfx.GainPennyEffect;
+import com.megacrit.cardcrawl.vfx.StarBounceEffect;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import com.megacrit.cardcrawl.vfx.combat.ViolentAttackEffect;
+import downfall.util.SelectCardsCenteredAction;
+
+public class ManipulateTimeAction extends AbstractGameAction {
+ private final boolean setCostForCombat;
+
+ public ManipulateTimeAction(boolean upgraded) {
+ this.duration = Settings.ACTION_DUR_FAST;
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.setCostForCombat = upgraded;
+ }
+
+ @Override
+ public void update() {
+ AbstractPlayer p = AbstractDungeon.player;
+
+ if (!p.discardPile.isEmpty()) {
+ this.addToBot(new SelectCardsCenteredAction(
+ p.discardPile.group,
+ 1,
+ "Choose.",
+ (selectedCards) -> {
+ AbstractCard selectedCard = selectedCards.get(0);
+ p.discardPile.removeCard(selectedCard);
+ p.drawPile.addToBottom(selectedCard);
+
+ if (setCostForCombat) {
+ selectedCard.modifyCostForCombat(-999);
+ } else {
+ if (selectedCard.cost > 0) {
+ selectedCard.freeToPlayOnce = true;
+ }
+ }
+
+ selectedCard.unhover();
+ selectedCard.applyPowers();
+ }
+ ));
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/expansioncontent/cardmods/EtherealMod.java b/src/main/java/expansioncontent/cardmods/EtherealMod.java
index a2560622d..a7b942ad0 100644
--- a/src/main/java/expansioncontent/cardmods/EtherealMod.java
+++ b/src/main/java/expansioncontent/cardmods/EtherealMod.java
@@ -42,8 +42,9 @@ public String identifier(AbstractCard card) {
}
//Retain Override - do not remove - Stanek
+ //sorry - blue
@Override
- public void onRetained(AbstractCard card) {
- AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
- }
+ public void onRetained(AbstractCard card) {
+ AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
+ }
}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cardmods/PropertiesMod.java b/src/main/java/expansioncontent/cardmods/PropertiesMod.java
index cbfe9b576..4fac405ed 100644
--- a/src/main/java/expansioncontent/cardmods/PropertiesMod.java
+++ b/src/main/java/expansioncontent/cardmods/PropertiesMod.java
@@ -358,7 +358,8 @@ public String identifier(AbstractCard card) {
}
//Retain Override - do not remove - even if it is technically different from how the game usually works, I will do what I am allowed to force the mechanics to work as they are described - Stanek
- @Override
+ //sorry - blue
+ @Override
public void onRetained(AbstractCard card) {
if (card.isEthereal)
AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
diff --git a/src/main/java/expansioncontent/cardmods/RetainCardMod.java b/src/main/java/expansioncontent/cardmods/RetainCardMod.java
index 7b552443a..dea7fc735 100644
--- a/src/main/java/expansioncontent/cardmods/RetainCardMod.java
+++ b/src/main/java/expansioncontent/cardmods/RetainCardMod.java
@@ -44,9 +44,9 @@ public String identifier(AbstractCard card) {
}
//Ethereal check - do not remove - Stanek
- @Override
- public void onRetained(AbstractCard card) {
- if (card.isEthereal)
+ @Override
+ public void onRetained(AbstractCard card) {
+ if (card.isEthereal)
AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
}
}
diff --git a/src/main/java/expansioncontent/cards/AbstractExpansionCard.java b/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
index 4278fa426..95b3bdaed 100644
--- a/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
+++ b/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
@@ -1,9 +1,18 @@
package expansioncontent.cards;
+import basemod.helpers.CardModifierManager;
+import collector.cardmods.PyreMod;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
@@ -11,6 +20,9 @@
import expansioncontent.expansionContentMod;
import expansioncontent.patches.CardColorEnumPatch;
import hermit.util.TextureLoader;
+import theHexaghost.HexaMod;
+import theHexaghost.cards.AbstractHexaCard;
+import theHexaghost.vfx.AfterlifePlayEffect;
import static expansioncontent.expansionContentMod.*;
@@ -96,6 +108,50 @@ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
return super.canUse(p, m);
}
+ @Override
+ public void triggerOnExhaust() {
+ int bonus = 0;
+
+ att(new AbstractGameAction() {
+ @Override
+ public void update() {
+ if (useAfterlifeVFX() && duration == startDuration) {
+ atb(new VFXAction(new AfterlifePlayEffect(AbstractExpansionCard.this)));
+ }
+ tickDuration();
+ if (isDone) {
+
+ atb(new WaitAction(0.2F)); // from ShowCardAction
+
+ applyPowers();
+ afterlife();
+
+ atb(new WaitAction(0.15F)); // from UseCardAction
+
+ if (type == AbstractCard.CardType.POWER) { // special case for powers in UseCardAction
+ if (com.megacrit.cardcrawl.core.Settings.FAST_MODE) {
+ atb(new WaitAction(0.1F));
+ } else {
+ atb(new WaitAction(0.7F));
+ }
+ }
+ }
+ }
+ });
+
+ }
+
+ protected boolean useAfterlifeVFX() {
+ return AbstractExpansionCard.this.tags.contains(HexaMod.AFTERLIFE);
+ }
+
+ public void afterlife() {}
+
+ //collector pyre code
+ protected void isPyre() {
+ CardModifierManager.addModifier(this, new PyreMod());
+ }
+
@Override
protected Texture getPortraitImage() {
if (Settings.PLAYTESTER_ART_MODE || UnlockTracker.betaCardPref.getBoolean(this.cardID, false)) {
diff --git a/src/main/java/expansioncontent/cards/AwakenDeath.java b/src/main/java/expansioncontent/cards/AwakenDeath.java
index 775bad848..96292def4 100644
--- a/src/main/java/expansioncontent/cards/AwakenDeath.java
+++ b/src/main/java/expansioncontent/cards/AwakenDeath.java
@@ -1,44 +1,37 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.CuriosityPower;
import expansioncontent.expansionContentMod;
-import expansioncontent.powers.AwakenDeathPower;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
public class AwakenDeath extends AbstractExpansionCard {
- public final static String ID = makeID("AwakenDeath");
+ public static final String ID = makeID("AwakenDeath");
- private static final int MAGIC = 8;
- private static final int UPGRADE_MAGIC = 4;
+ private static final int MAGIC = 1;
public AwakenDeath() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(expansionContentMod.STUDY_AWAKENEDONE);
- tags.add(expansionContentMod.STUDY);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
- baseMagicNumber = magicNumber = MAGIC;
- tags.add(CardTags.HEALING);
- loadJokeCardImage(this, "AwakenDeath.png");
+ super(ID, 2, AbstractCard.CardType.POWER, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ this.tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ this.tags.add(expansionContentMod.STUDY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
+ this.baseMagicNumber = this.magicNumber = 1;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "AwakenDeath.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- // atb(new ApplyPowerAction(p, p, new StrengthPower(p, 1), 1));
- atb(new ApplyPowerAction(p, p, new AwakenDeathPower(p, p, this.magicNumber), this.magicNumber));
-
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new CuriosityPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeMagicNumber(1);
}
}
-
}
-
-
diff --git a/src/main/java/expansioncontent/cards/BeatOfDeath.java b/src/main/java/expansioncontent/cards/BeatOfDeath.java
new file mode 100644
index 000000000..668fe1349
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/BeatOfDeath.java
@@ -0,0 +1,34 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.BeatOfDeathThatDoesntKillYouPower;
+
+public class BeatOfDeath extends AbstractExpansionCard {
+ public static final String ID = makeID("BeatOfDeath");
+
+ private static final int MAGIC = 2;
+
+ public BeatOfDeath() {
+ super(ID, 2, AbstractCard.CardType.POWER, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.SELF);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_heart.png", "expansioncontentResources/images/1024/bg_boss_heart.png");
+ this.tags.add(expansionContentMod.STUDY);
+ this.magicNumber = this.baseMagicNumber = 2;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BeatOfDeath.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf((AbstractPower)new BeatOfDeathThatDoesntKillYouPower((AbstractCreature)p, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/BloodBarrage.java b/src/main/java/expansioncontent/cards/BloodBarrage.java
new file mode 100644
index 000000000..f60b12072
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/BloodBarrage.java
@@ -0,0 +1,41 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.PummelDamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
+
+public class BloodBarrage extends AbstractExpansionCard {
+ public static final String ID = makeID("BloodBarrage");
+
+ private static final int MAGIC = 5;
+
+ public BloodBarrage() {
+ super(ID, 1, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_heart.png", "expansioncontentResources/images/1024/bg_boss_heart.png");
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseDamage = 2;
+ this.exhaust = true;
+ this.baseMagicNumber = 5;
+ this.magicNumber = this.baseMagicNumber;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BloodBarrage.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ for (int i = 1; i < this.magicNumber; i++)
+ addToBot((AbstractGameAction)new PummelDamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, this.damageTypeForTurn)));
+ addToBot((AbstractGameAction)new DamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/ChargeUp.java b/src/main/java/expansioncontent/cards/ChargeUp.java
new file mode 100644
index 000000000..b9a2d4356
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/ChargeUp.java
@@ -0,0 +1,47 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
+import guardian.GuardianMod;
+import hermit.actions.ReduceDebuffsAction;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class ChargeUp extends AbstractExpansionCard {
+ public static final String ID = makeID("ChargeUp");
+
+ private static final int BLOCK = 20;
+
+ private static final int UPGRADE_BLOCK = 10;
+
+ private static final int MAGIC = 2;
+
+ public ChargeUp() {
+ super(ID, 0, AbstractCard.CardType.SKILL, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ this.tags.add(expansionContentMod.STUDY_GUARDIAN);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 2;
+ this.exhaust = true;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BronzeArmor.png");
+
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new ReduceDebuffsAction((AbstractCreature)AbstractDungeon.player, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ this.exhaust = false;
+ this.rawDescription = this.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/Chronoboost.java b/src/main/java/expansioncontent/cards/Chronoboost.java
index 079575cb5..62355b7d1 100644
--- a/src/main/java/expansioncontent/cards/Chronoboost.java
+++ b/src/main/java/expansioncontent/cards/Chronoboost.java
@@ -1,43 +1,37 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import expansioncontent.expansionContentMod;
import expansioncontent.powers.ChronoBoostPower;
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
-
public class Chronoboost extends AbstractExpansionCard {
- public final static String ID = makeID("Chronoboost");
+ public static final String ID = makeID("Chronoboost");
- private static final int MAGIC = 1;
+ private static final int MAGIC = 2;
public Chronoboost() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(expansionContentMod.STUDY_TIMEEATER);
- tags.add(expansionContentMod.STUDY);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
- loadJokeCardImage(this, "Chronoboost.png");
+ super(ID, 1, AbstractCard.CardType.POWER, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ this.tags.add(expansionContentMod.STUDY_TIMEEATER);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 2;
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "Chronoboost.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- if (upgraded) atb(new ApplyPowerAction(p, p, new StrengthPower(p, 2), 2));
-
- atb(new ApplyPowerAction(p, p, new ChronoBoostPower(p, p, 2), 2));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new ChronoBoostPower((AbstractCreature)p, (AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
-
}
-
-
diff --git a/src/main/java/expansioncontent/cards/DashGenerateEvil.java b/src/main/java/expansioncontent/cards/DashGenerateEvil.java
index 621cc4691..e12299101 100644
--- a/src/main/java/expansioncontent/cards/DashGenerateEvil.java
+++ b/src/main/java/expansioncontent/cards/DashGenerateEvil.java
@@ -1,114 +1,43 @@
package expansioncontent.cards;
-
-import com.badlogic.gdx.Gdx;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.helpers.CardLibrary;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.vfx.combat.HemokinesisEffect;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import expansioncontent.expansionContentMod;
-import expansioncontent.actions.RandomCardWithTagAction;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
-import java.util.ArrayList;
-
+import expansioncontent.powers.EvilWithinPower;
public class DashGenerateEvil extends AbstractExpansionCard {
- public final static String ID = makeID("DashGenerateEvil");
-
- private static final int BLOCK = 10;
- private static final int UPGRADE_BLOCK = 2;
- private static final int DAMAGE = 10;
- private static final int UPGRADE_DAMAGE = 2;
+ public static final String ID = makeID("DashGenerateEvil");
- private ArrayList getList() {
- ArrayList myList = new ArrayList<>();
- for (AbstractCard q : CardLibrary.getAllCards()) {
- if (q.rarity != CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
- AbstractCard r = q.makeCopy();
- if (upgraded) {
- r.upgrade();
- }
- myList.add(r);
- }
- }
- return myList;
- }
+ private static final int MAGIC = 10;
- private float rotationTimer;
- private int previewIndex;
- private ArrayList dupeListForPrev = new ArrayList<>();
+ private static final int downfallMagic = 5;
public DashGenerateEvil() {
- super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_attack.png", "expansioncontentResources/images/1024/bg_boss_attack.png");
- baseBlock = BLOCK;
- baseDamage = DAMAGE;
+ super(ID, 0, AbstractCard.CardType.POWER, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.SELF);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_power.png", "expansioncontentResources/images/1024/bg_boss_power.png");
+ this.baseDownfallMagic = 5;
+ this.baseMagicNumber = this.magicNumber = 10;
this.exhaust = true;
- loadJokeCardImage(this, "DashGenerateEvil.png");
+ this.tags.add(expansionContentMod.STUDY);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "DashGenerateEvil.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- this.addToBot(new VFXAction(new HemokinesisEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY), 0.5F));
-
- // atb(new GainBlockAction(p, p, this.block));
- atb(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
-
- atb(new RandomCardWithTagAction(upgraded, expansionContentMod.STUDY, true));
-
-
+ if (!AbstractDungeon.player.hasPower("expansioncontent:EvilWithinPower"))
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new EvilWithinPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new EvilWithinPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- upgradeDamage(UPGRADE_DAMAGE);
- rawDescription = UPGRADE_DESCRIPTION;
- for (AbstractCard q : this.dupeListForPrev) {
- q.upgrade();
- }
- initializeDescription();
- }
- }
-
- @Override
- public void update() {
- super.update();
- if (dupeListForPrev.isEmpty()) {
- dupeListForPrev.addAll(getList());
- }
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (dupeListForPrev.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = dupeListForPrev.get(previewIndex);
- }
- if (previewIndex == dupeListForPrev.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
+ upgradeMagicNumber(4);
}
}
-
- @Override
- public void unhover() {
- super.unhover();
- cardsToPreview = null;
- }
}
-
diff --git a/src/main/java/expansioncontent/cards/DecaShield.java b/src/main/java/expansioncontent/cards/DecaShield.java
index d2acbfddf..b6ea4c936 100644
--- a/src/main/java/expansioncontent/cards/DecaShield.java
+++ b/src/main/java/expansioncontent/cards/DecaShield.java
@@ -1,4 +1,4 @@
-/*
+package expansioncontent.cards;/*
package expansioncontent.cards;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
diff --git a/src/main/java/expansioncontent/cards/DoubleAct.java b/src/main/java/expansioncontent/cards/DoubleAct.java
new file mode 100644
index 000000000..71991160a
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/DoubleAct.java
@@ -0,0 +1,49 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.actions.unique.LoseEnergyAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.*;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+import downfall.actions.OctoChoiceAction;
+import downfall.cards.OctoChoiceCard;
+import downfall.util.OctopusCard;
+import expansioncontent.expansionContentMod;
+
+import static collector.util.Wiz.applyToEnemy;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+import java.util.ArrayList;
+
+public class DoubleAct extends AbstractExpansionCard{
+ public final static String ID = makeID("DoubleAct");
+
+ private static final int downfallMagic = 0;
+
+ public DoubleAct() {
+ super(ID, 3, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ //todo skill bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_donudeca.png", "expansioncontentResources/images/1024/bg_boss_donudeca.png");
+ tags.add(expansionContentMod.STUDY_SHAPES);
+ tags.add(expansionContentMod.STUDY);
+ baseDownfallMagic = downfallMagic;
+ baseMagicNumber = magicNumber = 0;
+ loadJokeCardImage(this, "DoubleAct.png");
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new EnergizedBluePower(AbstractDungeon.player, p.energy.energyMaster));
+ applyToSelf(new DrawCardNextTurnPower(AbstractDungeon.player, p.gameHandSize));
+ }
+
+ @Override
+ public void upp() {
+upgradeBaseCost(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/ExploitVulnerability.java b/src/main/java/expansioncontent/cards/ExploitVulnerability.java
new file mode 100644
index 000000000..edc104509
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/ExploitVulnerability.java
@@ -0,0 +1,82 @@
+package expansioncontent.cards;
+
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+import downfall.actions.OctoChoiceAction;
+import downfall.cards.OctoChoiceCard;
+import downfall.util.OctopusCard;
+import expansioncontent.expansionContentMod;
+import guardian.vfx.SmallLaserEffectColored;
+
+import static collector.util.Wiz.*;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+import java.util.ArrayList;
+
+public class ExploitVulnerability extends AbstractExpansionCard{
+ public final static String ID = makeID("ExploitVulnerability");
+
+ private static final int downfallMagic = 2;
+
+ public ExploitVulnerability() {
+ //todo attack bg instead of power bg
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_donudeca.png", "expansioncontentResources/images/1024/bg_boss_donudeca.png");
+ tags.add(expansionContentMod.STUDY_SHAPES);
+ tags.add(expansionContentMod.STUDY);
+ baseDamage = 10;
+ baseDownfallMagic = downfallMagic;
+ baseMagicNumber = magicNumber = 999;
+ loadJokeCardImage(this, "ExploitVulnerability.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SmallLaserEffectColored(m.hb.cX, m.hb.cY, p.hb.cX, p.hb.cY, Color.WHITE), 0.2F));
+ }
+ if (m.currentBlock > 0) {
+ int toSteal = Math.min(magicNumber, m.currentBlock);
+ atb(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ m.loseBlock(toSteal);
+ }
+ });
+ atb(new GainBlockAction(p, toSteal));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ for (AbstractMonster m : getEnemies()) {
+ if (m.currentBlock > 0) {
+ this.glowColor = AbstractCard.GOLD_BORDER_GLOW_COLOR;
+ return;
+ }
+ }
+ this.glowColor = AbstractCard.BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/FaceSlap.java b/src/main/java/expansioncontent/cards/FaceSlap.java
new file mode 100644
index 000000000..da947be53
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/FaceSlap.java
@@ -0,0 +1,92 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import java.util.ArrayList;
+
+public class FaceSlap extends AbstractExpansionCard {
+
+ //Super Vicious Mockery
+ public final static String ID = makeID("SuperViciousMockery");
+
+ private static final int MAGIC = 5;
+ private static final int UPGRADE_MAGIC = 3;
+ private static final int downfallMagic = 2;
+ private static final int UPGRADE_downfallMagic = 1;
+
+ public FaceSlap() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ //todo skill bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_champ.png", "expansioncontentResources/images/1024/bg_boss_champ.png");
+
+ tags.add(expansionContentMod.STUDY_CHAMP);
+ tags.add(expansionContentMod.STUDY);
+
+ baseDownfallMagic = downfallMagic;
+ baseMagicNumber = magicNumber = MAGIC;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "ViciousMockery.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ vigor(magicNumber);
+ applyToEnemy(m, autoWeak(m, downfallMagic));
+ atb(new SFXAction("VO_CHAMP_2A"));
+ atb(new TalkAction(true, getTaunt(), 2.0F, 2.0F));
+ }
+
+ public static void vigor(int begone) {
+
+ AbstractDungeon.actionManager.addToBottom(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ int x = begone;
+ if (AbstractDungeon.player.hasRelic(PowerArmor.ID) && AbstractDungeon.player.hasPower(VigorPower.POWER_ID)) {
+ if (x + AbstractDungeon.player.getPower(VigorPower.POWER_ID).amount > PowerArmor.CAP_RESOLVE_ETC) {
+ x = PowerArmor.CAP_RESOLVE_ETC - AbstractDungeon.player.getPower(VigorPower.POWER_ID).amount;
+ }
+ }
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, x), x));
+ }
+ });
+
+ }
+
+ private String getTaunt() {
+ ArrayList derp = new ArrayList<>();
+ derp.add(Champ.DIALOG[0]);
+ derp.add(Champ.DIALOG[1]);
+ derp.add(Champ.DIALOG[2]);
+ derp.add(Champ.DIALOG[3]);
+ return derp.get(MathUtils.random(derp.size() - 1));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDownfall(UPGRADE_downfallMagic);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
+ }
+
+}
+
diff --git a/src/main/java/expansioncontent/cards/deprecated/Flail.java b/src/main/java/expansioncontent/cards/Flail.java
similarity index 52%
rename from src/main/java/expansioncontent/cards/deprecated/Flail.java
rename to src/main/java/expansioncontent/cards/Flail.java
index 038f7fead..fe5e625d7 100644
--- a/src/main/java/expansioncontent/cards/deprecated/Flail.java
+++ b/src/main/java/expansioncontent/cards/Flail.java
@@ -1,30 +1,25 @@
-package expansioncontent.cards.deprecated;
+package expansioncontent.cards;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
-import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ArtifactPower;
-import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
-import downfall.util.CardIgnore;
-import expansioncontent.cards.AbstractExpansionCard;
import expansioncontent.expansionContentMod;
-@CardIgnore
public class Flail extends AbstractExpansionCard {
public final static String ID = makeID("Flail");
- private static final int DAMAGE = 6;
- private static final int UPGRADE_DAMAGE = 1;
-
+ private static final int DAMAGE = 4;
+ private static final int UPGRADE_DAMAGE = 2;
+ private static final int downfallMagic = 2;
public Flail() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
-
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_automaton.png", "expansioncontentResources/images/1024/bg_boss_automaton.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "Flail.png");
tags.add(expansionContentMod.STUDY_AUTOMATON);
tags.add(expansionContentMod.STUDY);
@@ -32,31 +27,21 @@ public Flail() {
this.isMultiDamage = true;
this.exhaust = true;
this.baseMagicNumber = this.magicNumber = 1;
+ baseDownfallMagic = downfallMagic;
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new SFXAction("ATTACK_WHIRLWIND"));
-
- for (int i = 0; i < 2; i++) {
- atb(new SFXAction("ATTACK_HEAVY"));
-
- atb(new VFXAction(p, new CleaveEffect(), 0.1F));
- atb(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
- //atb(new WaitAction(0.1F));
-
-
+ for (int i = 0; i < downfallMagic; i++) {
+ allDmg(AbstractGameAction.AttackEffect.SLASH_HORIZONTAL);
}
atb(new ApplyPowerAction(p, p, new ArtifactPower(p, this.magicNumber), this.magicNumber));
-
-
}
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeDamage(UPGRADE_DAMAGE);
- upgradeMagicNumber(1);
+ // upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/expansioncontent/cards/GoopSpray.java b/src/main/java/expansioncontent/cards/GoopSpray.java
new file mode 100644
index 000000000..0a50d8984
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/GoopSpray.java
@@ -0,0 +1,70 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import expansioncontent.expansionContentMod;
+import slimebound.SlimeboundMod;
+import slimebound.powers.SlimedPower;
+import slimebound.vfx.SlimeProjectileEffect;
+
+import java.util.Iterator;
+
+public class GoopSpray extends AbstractExpansionCard {
+ public static final String ID = makeID("SuperGoopSpray");
+
+ private static final int MAGIC = 8;
+
+ private static final int UPGRADE_MAGIC = 3;
+
+ private static final int downfallMagic = 2;
+
+ private static final int UPGRADE_downfallMagic = 1;
+
+ public GoopSpray() {
+ super(ID, 1, AbstractCard.CardType.SKILL, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ this.tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseDownfallMagic = 2;
+ this.baseMagicNumber = this.magicNumber = 8;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "GoopSpray.png");
+ }
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!this.upgraded) {
+ atb((AbstractGameAction)new VFXAction((AbstractGameEffect)new SlimeProjectileEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY, 3.0F, false, 0.6F), 0.01F));
+ atb((AbstractGameAction)new WaitAction(0.2F));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)m, (AbstractCreature)p, (AbstractPower)new SlimedPower((AbstractCreature)m, (AbstractCreature)p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+
+ this.addToBot(new ApplyPowerAction(m, p, new WeakPower(m, downfallMagic, false), downfallMagic));
+ } else {
+ Iterator var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+ while(var3.hasNext()) {
+ AbstractMonster mo = (AbstractMonster)var3.next();
+ atb((AbstractGameAction)new VFXAction((AbstractGameEffect)new SlimeProjectileEffect(p.hb.cX, p.hb.cY, mo.hb.cX, mo.hb.cY, 3.0F, false, 0.6F), 0.01F));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)mo, (AbstractCreature)p, (AbstractPower)new SlimedPower((AbstractCreature)mo, (AbstractCreature)p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(mo, p, new WeakPower(mo, downfallMagic, false), downfallMagic, true, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(2);
+ this.target = CardTarget.ALL_ENEMY;
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/GuardianWhirl.java b/src/main/java/expansioncontent/cards/GuardianWhirl.java
index 103c4833c..5b9fbbd74 100644
--- a/src/main/java/expansioncontent/cards/GuardianWhirl.java
+++ b/src/main/java/expansioncontent/cards/GuardianWhirl.java
@@ -1,62 +1,58 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
import expansioncontent.expansionContentMod;
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
public class GuardianWhirl extends AbstractExpansionCard {
- public final static String ID = makeID("GuardianWhirl");
+ public static final String ID = makeID("GuardianWhirl");
- private static final int DAMAGE = 4;
- private static final int UPGRADE_DAMAGE = 2;
+ private static final int DAMAGE = 5;
- public GuardianWhirl() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ private static final int MAGIC = 2;
- tags.add(expansionContentMod.STUDY_GUARDIAN);
- tags.add(expansionContentMod.STUDY);
+ private static final int downfallMagic = 10;
- baseDamage = DAMAGE;
+ public GuardianWhirl() {
+ super(ID, 1, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ALL_ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ this.tags.add(expansionContentMod.STUDY_GUARDIAN);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseDamage = 5;
this.isMultiDamage = true;
- this.exhaust = true;
- loadJokeCardImage(this, "GuardianWhirl.png");
+ this.baseDownfallMagic = 10;
+ this.magicNumber = this.baseMagicNumber = 2;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "GuardianWhirl.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new SFXAction("ATTACK_WHIRLWIND"));
-
- for (int i = 0; i < 4; i++) {
- atb(new SFXAction("ATTACK_HEAVY"));
-
- atb(new VFXAction(p, new CleaveEffect(), 0.1F));
- atb(new com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.NONE));
- //atb(new WaitAction(0.1f));
- }
-
- }
-
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- if (p.currentBlock < 10) {
- cantUseMessage = EXTENDED_DESCRIPTION[0];
- return false;
+ atb((AbstractGameAction)new SFXAction("ATTACK_WHIRLWIND"));
+ int i;
+ for (i = 0; i < this.magicNumber; i++) {
+ atb((AbstractGameAction)new SFXAction("ATTACK_HEAVY"));
+ atb((AbstractGameAction)new VFXAction((AbstractCreature)p, (AbstractGameEffect)new CleaveEffect(), 0.1F));
+ atb((AbstractGameAction)new DamageAllEnemiesAction((AbstractCreature)p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
}
- return super.canUse(p, m);
+ if (p.currentBlock >= 10)
+ for (i = 0; i < this.magicNumber; i++) {
+ atb((AbstractGameAction)new SFXAction("ATTACK_HEAVY"));
+ atb((AbstractGameAction)new VFXAction((AbstractCreature)p, (AbstractGameEffect)new CleaveEffect(), 0.1F));
+ atb((AbstractGameAction)new DamageAllEnemiesAction((AbstractCreature)p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
+ }
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeDamage(UPGRADE_DAMAGE);
+ upgradeDamage(1);
}
}
-
-}
\ No newline at end of file
+}
diff --git a/src/main/java/expansioncontent/cards/Hexaburn.java b/src/main/java/expansioncontent/cards/Hexaburn.java
index a6553552e..741f77af6 100644
--- a/src/main/java/expansioncontent/cards/Hexaburn.java
+++ b/src/main/java/expansioncontent/cards/Hexaburn.java
@@ -1,40 +1,43 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import expansioncontent.expansionContentMod;
-import expansioncontent.powers.PretendHexWheelPower;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
+import hermit.vfx.ShortScreenFire;
public class Hexaburn extends AbstractExpansionCard {
- public final static String ID = makeID("Hexaburn");
+ public static final String ID = makeID("Hexaburn");
public Hexaburn() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
- tags.add(expansionContentMod.STUDY_HEXAGHOST);
- tags.add(expansionContentMod.STUDY);
- baseMagicNumber = magicNumber = 3;
- baseDamage = 6;
- loadJokeCardImage(this, "Hexaburn.png");
+ super(ID, 2, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ALL_ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
+ this.tags.add(expansionContentMod.STUDY_HEXAGHOST);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 6;
+ this.baseDamage = 4;
+ this.exhaust = true;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "Hexaburn.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new PretendHexWheelPower(magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new ShortScreenFire(), 0.5F));
+ for (int i = 0; i < this.magicNumber; i++)
+ addToBot((AbstractGameAction)new AttackDamageRandomEnemyAction((AbstractCard)this, AbstractGameAction.AttackEffect.FIRE));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(-1);
+ this.exhaust = false;
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
}
}
}
-
-
-
-
-
diff --git a/src/main/java/expansioncontent/cards/HyperBeam.java b/src/main/java/expansioncontent/cards/HyperBeam.java
index 91790dedb..8f948d4f9 100644
--- a/src/main/java/expansioncontent/cards/HyperBeam.java
+++ b/src/main/java/expansioncontent/cards/HyperBeam.java
@@ -4,8 +4,10 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
@@ -19,32 +21,27 @@ public class HyperBeam extends AbstractExpansionCard {
public final static String ID = makeID("HyperBeam");
- private static final int DAMAGE = 26;
- private static final int UPGRADE_DAMAGE = 8;
+ private static final int DAMAGE = 17;
+ private static final int UPGRADE_DAMAGE = 4;
public HyperBeam() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_automaton.png", "expansioncontentResources/images/1024/bg_boss_automaton.png");
tags.add(expansionContentMod.STUDY_AUTOMATON);
tags.add(expansionContentMod.STUDY);
-
+ cardsToPreview = new VoidCard();
baseDamage = DAMAGE;
- this.exhaust = true;
+ this.exhaust = true;
this.isMultiDamage = true;
loadJokeCardImage(this, "HyperBeam.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
atb(new SFXAction("ATTACK_HEAVY"));
this.addToBot(new VFXAction(p, new MindblastEffect(p.hb.cX, p.hb.cY, p.flipHorizontal), 0.1F));
- atb(new WaitAction(0.1F));
-
+ addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
allDmg(AbstractGameAction.AttackEffect.NONE);
- atb(new ApplyPowerAction(p, p, new DeEnergizedPower(1), 1));
-
-
}
public void upgrade() {
diff --git a/src/main/java/expansioncontent/cards/InvincibleStrength.java b/src/main/java/expansioncontent/cards/InvincibleStrength.java
index 4598554ef..e34fa4728 100644
--- a/src/main/java/expansioncontent/cards/InvincibleStrength.java
+++ b/src/main/java/expansioncontent/cards/InvincibleStrength.java
@@ -1,33 +1,32 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import expansioncontent.expansionContentMod;
import expansioncontent.powers.VexVinciblePower;
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
public class InvincibleStrength extends AbstractExpansionCard {
- public final static String ID = makeID("InvincibleStrength");
+ public static final String ID = makeID("InvincibleStrength");
public InvincibleStrength() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_heart.png", "expansioncontentResources/images/1024/bg_boss_heart.png");
-
- tags.add(expansionContentMod.STUDY);
- loadJokeCardImage(this, "InvincibleStrength.png");
+ super(ID, 1, AbstractCard.CardType.POWER, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.SELF);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_heart.png", "expansioncontentResources/images/1024/bg_boss_heart.png");
+ baseMagicNumber = magicNumber = 10;
+ this.tags.add(expansionContentMod.STUDY);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "InvincibleStrength.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new VexVinciblePower(p, 1));
+ applyToSelf((AbstractPower)new VexVinciblePower((AbstractCreature)p, 1, this.magicNumber, this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(1);
+ upgradeMagicNumber(-5);
}
}
}
-
diff --git a/src/main/java/expansioncontent/cards/LastStand.java b/src/main/java/expansioncontent/cards/LastStand.java
index d1fddf5da..953cd35ea 100644
--- a/src/main/java/expansioncontent/cards/LastStand.java
+++ b/src/main/java/expansioncontent/cards/LastStand.java
@@ -21,11 +21,11 @@
public class LastStand extends AbstractExpansionCard {
public final static String ID = makeID("LastStand");
- private static final int MAGIC = 8;
- private static final int UPGRADE_MAGIC = 10;
+ private static final int MAGIC = 6;
+ private static final int UPGRADE_MAGIC = 3;
public LastStand() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_champ.png", "expansioncontentResources/images/1024/bg_boss_champ.png");
tags.add(expansionContentMod.STUDY_CHAMP);
@@ -48,27 +48,28 @@ public void use(AbstractPlayer p, AbstractMonster m) {
atb(new ApplyPowerAction(p, p, new StrengthPower(p, 1), 1));
double currentPct = p.currentHealth * 1.001 / p.maxHealth * 1.001;
- if (currentPct < 0.5) {
- AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, Champ.DIALOG[6], true));
+ // if (currentPct < 0.5) {
+ // AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, Champ.DIALOG[6], true));
atb(new VFXAction(p, new InflameEffect(p), 0.1F));
- atb(new ApplyPowerAction(p, p, new StrengthPower(p, 2), 2));
+ atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
atb(new VFXAction(p, new InflameEffect(p), 0.1F));
- if (upgraded) atb(new HealAction(p, p, this.magicNumber));
- }
+ // if (upgraded) atb(new HealAction(p, p, this.magicNumber));
+ // }
}
- @Override
- public void triggerOnGlowCheck() {
- this.glowColor = AbstractDungeon.player.currentHealth < AbstractDungeon.player.maxHealth / 2 ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
- }
+ // @Override
+ // public void triggerOnGlowCheck() {
+ // this.glowColor = AbstractDungeon.player.currentHealth < AbstractDungeon.player.maxHealth / 2 ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ // }
public void upgrade() {
if (!upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(3);
+ // rawDescription = UPGRADE_DESCRIPTION;
+ // initializeDescription();
}
}
diff --git a/src/main/java/expansioncontent/cards/ManipulateTime.java b/src/main/java/expansioncontent/cards/ManipulateTime.java
new file mode 100644
index 000000000..9d5828487
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/ManipulateTime.java
@@ -0,0 +1,37 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.unique.ForethoughtAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.actions.ManipulateTimeAction;
+import expansioncontent.expansionContentMod;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class ManipulateTime extends AbstractExpansionCard {
+ public final static String ID = makeID("ManipulateTime");
+
+ public ManipulateTime() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ //todo skill bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
+ loadJokeCardImage(this, "ManipulateTime.png");
+ tags.add(expansionContentMod.STUDY_TIMEEATER);
+ tags.add(expansionContentMod.STUDY);
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ManipulateTimeAction(this.upgraded));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+
+}
+
diff --git a/src/main/java/expansioncontent/cards/Pandemonium.java b/src/main/java/expansioncontent/cards/Pandemonium.java
new file mode 100644
index 000000000..77eef538e
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Pandemonium.java
@@ -0,0 +1,36 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.MayhemPower;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.PandemoniumPower;
+import expansioncontent.powers.VexVinciblePower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class Pandemonium extends AbstractExpansionCard {
+ public final static String ID = makeID("Pandemonium");
+
+ public Pandemonium() {
+ super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ tags.add(expansionContentMod.STUDY);
+ baseMagicNumber = magicNumber = 1;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_power.png", "expansioncontentResources/images/1024/bg_boss_power.png");
+ loadJokeCardImage(this, "Pandemonium.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, p, new PandemoniumPower(p, this.magicNumber)));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(1);
+ }
+ }
+}
+
diff --git a/src/main/java/expansioncontent/cards/PeekPages.java b/src/main/java/expansioncontent/cards/PeekPages.java
new file mode 100644
index 000000000..c9ce7a5a8
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/PeekPages.java
@@ -0,0 +1,53 @@
+package expansioncontent.cards;
+
+import automaton.AutomatonChar;
+import champ.ChampChar;
+import collector.CollectorChar;
+import com.badlogic.gdx.Gdx;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Insight;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.CardLibrary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.SelectCardsCenteredAction;
+import expansioncontent.actions.RandomCardWithTagAction;
+import expansioncontent.expansionContentMod;
+import guardian.characters.GuardianCharacter;
+import slimebound.characters.SlimeboundCharacter;
+import theHexaghost.TheHexaghost;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class PeekPages extends AbstractExpansionCard {
+
+ public final static String ID = makeID("PeekPages");
+
+ public PeekPages() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_skill.png", "expansioncontentResources/images/1024/bg_boss_skill.png");
+ this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber;
+ this.cardsToPreview = new Insight();
+ this.exhaust = true;
+ this.tags.add(expansionContentMod.STUDY);
+ loadJokeCardImage(this, "PeekPages.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new MakeTempCardInDrawPileAction(this.cardsToPreview.makeStatEquivalentCopy(), magicNumber, true, true));
+
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/PrepareCrush.java b/src/main/java/expansioncontent/cards/PrepareCrush.java
deleted file mode 100644
index 45d55d290..000000000
--- a/src/main/java/expansioncontent/cards/PrepareCrush.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package expansioncontent.cards;
-
-
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.actions.utility.ShakeScreenAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.ScreenShake;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.monsters.exordium.SlimeBoss;
-import com.megacrit.cardcrawl.powers.EnergizedPower;
-import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
-import expansioncontent.expansionContentMod;
-import slimebound.cards.SlimeCrush;
-import slimebound.powers.NextTurnGainSlimeCrush;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
-public class PrepareCrush extends AbstractExpansionCard {
- public final static String ID = makeID("PrepareCrush");
-
-
- private static final int BLOCK = 10;
- private static final int UPGRADE_BLOCK = 5;
- private static final int MAGIC = 3;
-
- public PrepareCrush() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
-
- tags.add(expansionContentMod.STUDY_SLIMEBOSS);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- cardsToPreview = new SlimeCrush();
- loadJokeCardImage(this, "PrepareCrush.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, SlimeBoss.DIALOG[0], true));
- atb(new ShakeScreenAction(0.3F, ScreenShake.ShakeDur.MED, ScreenShake.ShakeIntensity.LOW));
-
- atb(new GainBlockAction(p, p, this.block));
- atb(new ApplyPowerAction(p, p, new EnergizedPower(p, magicNumber), magicNumber));
- atb(new ApplyPowerAction(p, p, new NextTurnGainSlimeCrush(p, p, 1, false), 1));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- initializeDescription();
- }
- }
-
-}
diff --git a/src/main/java/expansioncontent/cards/QuickStudy.java b/src/main/java/expansioncontent/cards/QuickStudy.java
index 2786c0013..ba06ac922 100644
--- a/src/main/java/expansioncontent/cards/QuickStudy.java
+++ b/src/main/java/expansioncontent/cards/QuickStudy.java
@@ -32,7 +32,7 @@ private ArrayList getList() {
if (q.rarity != CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- if(q.cardID.equals(PrepareCrush.ID)){continue;}
+ if(q.cardID.equals(SuperPrepareCrush.ID)){continue;}
}
if (AbstractDungeon.player instanceof TheHexaghost ) {
if(q.cardID.equals(Hexaburn.ID)){continue;}
@@ -54,7 +54,7 @@ private ArrayList getList() {
if (upgraded) {
r.upgrade();
}
- r.modifyCostForCombat(-99);
+ r.freeToPlayOnce = true;
myList.add(r);
}
}
@@ -70,6 +70,7 @@ public QuickStudy() {
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_skill.png", "expansioncontentResources/images/1024/bg_boss_skill.png");
this.exhaust = true;
loadJokeCardImage(this, "QuickStudy.png");
+ //this.tags.add(expansionContentMod.STUDY);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/expansioncontent/cards/Reverie.java b/src/main/java/expansioncontent/cards/Reverie.java
new file mode 100644
index 000000000..655c8aacc
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Reverie.java
@@ -0,0 +1,43 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.ChronoBoostPower;
+import expansioncontent.powers.ReveriePower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+
+public class Reverie extends AbstractExpansionCard {
+ public final static String ID = makeID("Reverie");
+
+ private static final int MAGIC = 3;
+
+ public Reverie() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ tags.add(expansionContentMod.STUDY_TIMEEATER);
+ tags.add(expansionContentMod.STUDY);
+ baseMagicNumber = magicNumber = MAGIC;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
+ loadJokeCardImage(this, "Reverie.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new ApplyPowerAction(p, p, new ReveriePower(p, magicNumber), magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ //upgradeMagicNumber(2);
+ upgradeBaseCost(2);
+ }
+ }
+
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/ShapePower.java b/src/main/java/expansioncontent/cards/ShapePower.java
index 4c6a48963..634845a59 100644
--- a/src/main/java/expansioncontent/cards/ShapePower.java
+++ b/src/main/java/expansioncontent/cards/ShapePower.java
@@ -15,7 +15,7 @@
import java.util.ArrayList;
-public class ShapePower extends AbstractExpansionCard implements OctopusCard {
+public class ShapePower extends AbstractExpansionCard {
public final static String ID = makeID("ShapePower");
public ShapePower() {
@@ -24,37 +24,18 @@ public ShapePower() {
tags.add(expansionContentMod.STUDY_SHAPES);
tags.add(expansionContentMod.STUDY);
baseMagicNumber = magicNumber = 2;
- baseDownfallMagic = downfallMagic = 5;
+ baseDownfallMagic = downfallMagic = 4;
loadJokeCardImage(this, "ShapePower.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new OctoChoiceAction(m, this));
- }
-
- public ArrayList choiceList() {
- ArrayList cardList = new ArrayList<>();
- cardList.add(new OctoChoiceCard("expansioncontent:PolyBeam", EXTENDED_DESCRIPTION[0], "expansioncontentResources/images/cards/PolyBeam.png", EXTENDED_DESCRIPTION[1], -1, -1, magicNumber, CardType.POWER));
- cardList.add(new OctoChoiceCard("expansioncontent:DecaShield", EXTENDED_DESCRIPTION[2], "expansioncontentResources/images/cards/DecaShield.png", EXTENDED_DESCRIPTION[3], -1, -1, downfallMagic, CardType.POWER));
- return cardList;
- }
-
- public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
- AbstractPlayer p = AbstractDungeon.player;
- switch (card.cardID) {
- case "expansioncontent:PolyBeam": {
- atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
- break;
- }
- case "expansioncontent:DecaShield": {
- atb(new ApplyPowerAction(p, p, new PlatedArmorPower(p, downfallMagic)));
- }
- }
+ atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ atb(new ApplyPowerAction(p, p, new PlatedArmorPower(p, downfallMagic)));
}
@Override
public void upp() {
upgradeMagicNumber(1);
- upgradeDownfall(3);
+ upgradeDownfall(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/StudyTheSpire.java b/src/main/java/expansioncontent/cards/StudyTheSpire.java
index 891627f6f..7af1b8b69 100644
--- a/src/main/java/expansioncontent/cards/StudyTheSpire.java
+++ b/src/main/java/expansioncontent/cards/StudyTheSpire.java
@@ -34,22 +34,17 @@ private ArrayList getList() {
if (q.rarity != CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- if(q.cardID.equals(PrepareCrush.ID)){continue;}
- }
- if (AbstractDungeon.player instanceof TheHexaghost ) {
- if(q.cardID.equals(Hexaburn.ID)){continue;}
- }
- if (AbstractDungeon.player instanceof GuardianCharacter ) {
- if(q.cardID.equals(GuardianWhirl.ID)){continue;}
- }
- if (AbstractDungeon.player instanceof ChampChar ) {
- if(q.cardID.equals(LastStand.ID)){continue;}
- }
- if (AbstractDungeon.player instanceof AutomatonChar ) {
- if(q.cardID.equals(HyperBeam.ID)){continue;}
- }
- if (AbstractDungeon.player instanceof CollectorChar ) {
- if(q.cardID.equals(YouAreMine.ID)){continue;}
+ if (q.hasTag(expansionContentMod.STUDY_SLIMEBOSS)){continue;}
+ } else if (AbstractDungeon.player instanceof TheHexaghost) {
+ if(q.hasTag(expansionContentMod.STUDY_HEXAGHOST)){continue;}
+ } else if (AbstractDungeon.player instanceof GuardianCharacter) {
+ if(q.hasTag(expansionContentMod.STUDY_GUARDIAN)){continue;}
+ } else if (AbstractDungeon.player instanceof ChampChar) {
+ if(q.hasTag(expansionContentMod.STUDY_CHAMP)){continue;}
+ } else if (AbstractDungeon.player instanceof AutomatonChar) {
+ if(q.hasTag(expansionContentMod.STUDY_AUTOMATON)){continue;}
+ } else if (AbstractDungeon.player instanceof CollectorChar) {
+ if(q.hasTag(expansionContentMod.STUDY_COLLECTOR)){continue;}
}
AbstractCard r = q.makeCopy();
diff --git a/src/main/java/expansioncontent/cards/SuperBloodthirst.java b/src/main/java/expansioncontent/cards/SuperBloodthirst.java
new file mode 100644
index 000000000..42fd64ebf
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperBloodthirst.java
@@ -0,0 +1,64 @@
+package expansioncontent.cards;
+
+
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ObtainPotionAction;
+import com.megacrit.cardcrawl.actions.unique.GreedAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.StarBounceEffect;
+import com.megacrit.cardcrawl.vfx.combat.ViolentAttackEffect;
+import expansioncontent.actions.BloodthirstAction;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.AwakenDeathPower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+
+public class SuperBloodthirst extends AbstractExpansionCard {
+ public final static String ID = makeID("SuperBloodthirst");
+
+ private static final int DAMAGE = 20;
+ private static final int UPGRADE_DAMAGE = 5;
+
+ public SuperBloodthirst() {
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ tags.add(expansionContentMod.STUDY);
+ //todo attack bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
+ this.baseDamage = DAMAGE;
+ tags.add(CardTags.HEALING);
+ loadJokeCardImage(this, "SuperBloodthirst.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ int i;
+ if (Settings.FAST_MODE) {
+ this.addToTop(new VFXAction(new ViolentAttackEffect(m.hb.cX, m.hb.cY, Color.RED)));
+
+ for(i = 0; i < 5; ++i) {
+ this.addToTop(new VFXAction(new StarBounceEffect(m.hb.cX, m.hb.cY)));
+ }
+ } else {
+ this.addToTop(new VFXAction(new ViolentAttackEffect(m.hb.cX, m.hb.cY, Color.RED), 0.4F));
+
+ for(i = 0; i < 5; ++i) {
+ this.addToTop(new VFXAction(new StarBounceEffect(m.hb.cX, m.hb.cY)));
+ }
+ }
+ this.addToBot(new BloodthirstAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), this.uuid));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/SuperBodyCrash.java b/src/main/java/expansioncontent/cards/SuperBodyCrash.java
new file mode 100644
index 000000000..04b989ee5
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperBodyCrash.java
@@ -0,0 +1,58 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
+import guardian.GuardianMod;
+import guardian.cards.BodySlam;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class SuperBodyCrash extends AbstractExpansionCard {
+ public static final String ID = makeID("SuperBodyCrash");
+
+ private static final int BLOCK = 7;
+
+ public SuperBodyCrash() {
+ super(ID, 1, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperBodyCrash.png");
+ this.baseBlock = 6;
+ this.tags.add(expansionContentMod.STUDY_GUARDIAN);
+ this.tags.add(expansionContentMod.STUDY);
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ calculateCardDamage(m);
+ this.baseDamage = p.currentBlock + this.block;
+ calculateCardDamage(m);
+ addToBot((AbstractGameAction)new GainBlockAction((AbstractCreature)p, this.block));
+ addToBot((AbstractGameAction)new DamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ this.rawDescription = this.DESCRIPTION;
+ initializeDescription();
+
+ }
+
+ public void applyPowers() {
+ super.applyPowers();
+ this.baseDamage = AbstractDungeon.player.currentBlock + this.block;
+ super.applyPowers();
+ this.rawDescription = this.DESCRIPTION;
+ this.rawDescription += BodySlam.UPGRADED_DESCRIPTION;
+ initializeDescription();
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeBaseCost(0);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/SuperClobber.java b/src/main/java/expansioncontent/cards/SuperClobber.java
new file mode 100644
index 000000000..6fe496bce
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperClobber.java
@@ -0,0 +1,61 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperClobber extends AbstractExpansionCard {
+
+ //Super Clobber
+ public final static String ID = makeID("SuperClobber");
+
+ private static final int DAMAGE = 6;
+
+ public SuperClobber() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ tags.add(CardTags.STRIKE);
+ //todo attack bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_champ.png", "expansioncontentResources/images/1024/bg_boss_champ.png");
+
+ tags.add(expansionContentMod.STUDY_CHAMP);
+ tags.add(expansionContentMod.STUDY);
+
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperClobber.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new WallopAction(m, makeInfo()));
+ }
+
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(3);
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/SuperEtherStep.java b/src/main/java/expansioncontent/cards/SuperEtherStep.java
new file mode 100644
index 000000000..d7dc0a8c5
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperEtherStep.java
@@ -0,0 +1,60 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.BlurPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
+import theHexaghost.HexaMod;
+import theHexaghost.util.HexaPurpleTextInterface;
+import downfall.downfallMod;
+import expansioncontent.expansionContentMod;
+import theHexaghost.HexaMod;
+
+public class SuperEtherStep extends AbstractExpansionCard {
+ public final static String ID = makeID("SuperEtherStep");
+
+ private static final int DAMAGE = 10;
+ private static final int UPG_DAMAGE = 3;
+
+ public SuperEtherStep() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ //todo attack bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
+ tags.add(expansionContentMod.STUDY_HEXAGHOST);
+ tags.add(expansionContentMod.STUDY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = 1;
+ //isEthereal = true;
+ //tags.add(HexaMod.AFTERLIFE);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "EtherStep.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ExhaustAction(1, false));
+ this.addToBot(new DrawCardAction(p, this.magicNumber));
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/SuperGhostShield.java b/src/main/java/expansioncontent/cards/SuperGhostShield.java
new file mode 100644
index 000000000..5c191ef27
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperGhostShield.java
@@ -0,0 +1,84 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.BlurPower;
+import downfall.downfallMod;
+import expansioncontent.expansionContentMod;
+import theHexaghost.HexaMod;
+
+public class SuperGhostShield extends AbstractExpansionCard {
+ public final static String ID = makeID("SuperGhostShield");
+
+
+ private static final int BLOCK = 7;
+ private static final int UPG_BLOCK = 3;
+ private static final int MAGIC = 1;
+
+ public SuperGhostShield() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ //todo skill bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
+ tags.add(expansionContentMod.STUDY_HEXAGHOST);
+ tags.add(expansionContentMod.STUDY);
+ baseBlock = BLOCK;
+ isEthereal = true;
+ baseMagicNumber = magicNumber = MAGIC;
+ tags.add(HexaMod.AFTERLIFE);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "GhostShield.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
+ }
+
+ @Override
+ public void afterlife() {
+ blck();
+ applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ }
+ }
+ // to still show afterlife tooltip. because the format [purple]hexamod:afterlife[] doesnt get displayed correctly
+ // we are only using [purple]afterlife[] here for easier text comprehension for new players, but doing this
+ // means we dont have the keyword tooltip so we need to manually add it
+ // but after I tried adding it in the constrcutor it turns out sometimes who knows why it wont be added
+ // and this way seems to work
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ String afterlife_name = downfallMod.keywords_and_proper_names.get("afterlife");
+ this.keywords.add(afterlife_name);
+
+ if (Settings.language == Settings.GameLanguage.JPN) {
+ this.keywords.add("ブラー");
+ }
+
+ if (Settings.language != Settings.GameLanguage.JPN) {
+ String blur_name = downfallMod.keywords_and_proper_names.get("blur");
+ this.keywords.add(blur_name);
+ }
+ if (Settings.language == Settings.GameLanguage.ZHS) {
+ this.keywords.add("格挡");
+ } else if (Settings.language == Settings.GameLanguage.RUS) {
+ //this.keywords.add("ловкость");
+ } else {
+ if (Settings.language != Settings.GameLanguage.JPN) {
+ this.keywords.add("block");
+ }
+ }
+ }
+ }
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperLivingWall.java b/src/main/java/expansioncontent/cards/SuperLivingWall.java
new file mode 100644
index 000000000..bd7c1a348
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperLivingWall.java
@@ -0,0 +1,130 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import slimebound.SlimeboundMod;
+import slimebound.patches.AbstractCardEnum;
+import slimebound.powers.SlimedThornsPower;
+import slimebound.vfx.FakeFlashAtkImgEffect;
+import slimebound.vfx.SlimeDripsEffectPurple;
+import slimebound.vfx.SlimeProjectileEffect;
+import expansioncontent.expansionContentMod;
+import slimebound.vfx.FakeFlashAtkImgEffect;
+import slimebound.vfx.SlimeProjectileEffect;
+
+import java.util.ArrayList;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperLivingWall extends AbstractExpansionCard {
+
+ public static final String ID = "expansioncontent:SuperLivingWall";
+ public static final String NAME;
+ public static final String DESCRIPTION;
+ public static final String IMG_PATH = "cards/slimewave.png";
+ private static final CardType TYPE = CardType.SKILL;
+ private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardTarget TARGET = CardTarget.SELF;
+ private static final CardStrings cardStrings;
+ private static final int COST = 2;
+ private static final int MAGIC = 6;
+ private static final int UPGRADE_BONUS = 3;
+ public static String UPGRADED_DESCRIPTION;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ NAME = cardStrings.NAME;
+ DESCRIPTION = cardStrings.DESCRIPTION;
+ UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+
+ }
+
+
+ public SuperLivingWall() {
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "LivingWall.png");
+ tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ tags.add(expansionContentMod.STUDY);
+
+ this.baseBlock = 14;
+ baseMagicNumber = magicNumber = MAGIC;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY - 40 * Settings.scale, 2F, false, 0.6F, false, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 40 * Settings.scale, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 80 * Settings.scale, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 120 * Settings.scale, 2F, false, 0.6F, true, false), 0.325F));
+
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY - 30 * Settings.scale, Color.PURPLE, 1F, true, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 50 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 90 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 130 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.1F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY - 40 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 40 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 80 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 120 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY - 30 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 10 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 50 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 80 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 130 * Settings.scale, 4), 0.0f));
+
+ AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.GainBlockAction(p, p, this.block));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new SlimedThornsPower(p, p, this.magicNumber), this.magicNumber));
+
+ }
+
+ public AbstractCard makeCopy() {
+
+ return new SuperLivingWall();
+
+ }
+
+ public void upgrade() {
+
+ if (!this.upgraded) {
+
+ upgradeName();
+
+ upgradeMagicNumber(2);
+ upgradeBlock(4);
+ }
+
+ }
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperPrepareCrush.java b/src/main/java/expansioncontent/cards/SuperPrepareCrush.java
new file mode 100644
index 000000000..c67fbfbca
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperPrepareCrush.java
@@ -0,0 +1,68 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.ShakeScreenAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ScreenShake;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
+import expansioncontent.expansionContentMod;
+import slimebound.cards.SlimeCrush;
+import slimebound.powers.EnergizedSlimeboundPower;
+import slimebound.powers.NextTurnGainSlimeCrush;
+import slimebound.powers.NextTurnGainStrengthPower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperPrepareCrush extends AbstractExpansionCard {
+ public final static String ID = makeID("SuperPrepareCrush");
+
+
+ private static final int BLOCK = 10;
+ private static final int UPGRADE_BLOCK = 5;
+ private static final int MAGIC = 3;
+
+ public SuperPrepareCrush() {
+ super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+
+ tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ tags.add(expansionContentMod.STUDY);
+ this.exhaust = true;
+ this.cardsToPreview = new SlimeCrush();
+ this.magicNumber = this.baseMagicNumber = 3;
+ cardsToPreview = new SlimeCrush();
+ loadJokeCardImage(this, "SuperPrepareCrush.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, EXTENDED_DESCRIPTION[0], true));
+ AbstractDungeon.actionManager.addToBottom(new ShakeScreenAction(0.3F, ScreenShake.ShakeDur.MED, ScreenShake.ShakeIntensity.LOW));
+
+ if (upgraded)
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedSlimeboundPower(p, p, 4), 4));
+ else
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedSlimeboundPower(p, p, 3), 3));
+
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new NextTurnGainStrengthPower(p, p, this.magicNumber), this.magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new NextTurnGainSlimeCrush(p, p, 1, this.upgraded), 1));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ AbstractCard q = new SlimeCrush();
+ q.upgrade();
+ cardsToPreview = q;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ upgradeMagicNumber(2);
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperSomberShield.java b/src/main/java/expansioncontent/cards/SuperSomberShield.java
new file mode 100644
index 000000000..ad76ad3f4
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperSomberShield.java
@@ -0,0 +1,69 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import collector.cards.AbstractCollectorCard;
+import collector.cards.OnPyreCard;
+import collector.cards.SomberShield;
+import collector.powers.AddCopyNextTurnPower;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import static hermit.util.Wiz.applyToSelfTop;
+
+import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+
+public class SuperSomberShield extends AbstractExpansionCard implements OnPyreCard {
+ public final static String ID = makeID(SuperSomberShield.class.getSimpleName());
+ // intellij stuff skill, self, common, , , 7, 3, ,
+
+ public SuperSomberShield() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 9;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
+
+ tags.add(expansionContentMod.STUDY_COLLECTOR);
+ tags.add(expansionContentMod.STUDY);
+
+ isPyre();
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperSomberShield.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ }
+
+ @Override
+ public void onPyred(AbstractCard card) {
+ applyToSelfTop(new AddCopyNextTurnPower(card));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java b/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java
new file mode 100644
index 000000000..c3c1b2d35
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java
@@ -0,0 +1,66 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import collector.cards.AbstractCollectorCard;
+import collector.cards.OnPyreCard;
+import collector.cards.SomberShield;
+import collector.powers.AddCopyNextTurnPower;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.unique.DiscardPileToTopOfDeckAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import static hermit.util.Wiz.applyToSelfTop;
+
+import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+
+public class SuperWhirlingFlame extends AbstractExpansionCard {
+ public final static String ID = makeID(SuperWhirlingFlame.class.getSimpleName());
+ // intellij stuff skill, self, common, , , 7, 3, ,
+
+ public SuperWhirlingFlame() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseDamage = 8;
+ isMultiDamage = true;
+ //todo attack bg instead of skill bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
+
+ tags.add(expansionContentMod.STUDY_COLLECTOR);
+ tags.add(expansionContentMod.STUDY);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperWhirlingFlame.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ allDmg(AbstractGameAction.AttackEffect.FIRE);
+ atb(new DiscardPileToTopOfDeckAction(p));
+ }
+
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/TakeFlight.java b/src/main/java/expansioncontent/cards/TakeFlight.java
new file mode 100644
index 000000000..73e1f837e
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/TakeFlight.java
@@ -0,0 +1,70 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.RegenPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import expansioncontent.expansionContentMod;
+
+public class TakeFlight extends AbstractExpansionCard {
+ public static final String ID = makeID("TakeFlight");
+
+ private static final int BLOCK = 14;
+
+ private static final int UPGRADE_BLOCK = 5;
+
+ private static final int MAGIC = 1;
+
+ boolean chant = false;
+
+ public TakeFlight() {
+ super(ID, 1, AbstractCard.CardType.POWER, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ this.tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ this.tags.add(expansionContentMod.STUDY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
+ this.baseMagicNumber = this.magicNumber = 3;
+ this.baseDownfallMagic = this.downfallMagic = 4;
+ tags.add(CardTags.HEALING);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "TakeFlight.png");
+ this.exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!this.chant)
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)AbstractDungeon.player, (AbstractCreature)AbstractDungeon.player, (AbstractPower)new RegenPower((AbstractCreature)AbstractDungeon.player, this.magicNumber), this.magicNumber));
+ if (this.chant)
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)AbstractDungeon.player, (AbstractCreature)AbstractDungeon.player, (AbstractPower)new RegenPower((AbstractCreature)AbstractDungeon.player, this.downfallMagic), this.downfallMagic));
+ }
+
+ public void triggerWhenDrawn() {
+ this.chant = false;
+ }
+
+ public void triggerOnCardPlayed(AbstractCard card) {
+ if (card.type == AbstractCard.CardType.POWER && AbstractDungeon.player.hand.contains((AbstractCard)this))
+ this.chant = true;
+ }
+
+ @Override
+ public void onMoveToDiscard() {
+ this.chant = false;
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = this.chant ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ upgradeDownfall(1);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/Virus.java b/src/main/java/expansioncontent/cards/Virus.java
new file mode 100644
index 000000000..acbb5e5ff
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Virus.java
@@ -0,0 +1,55 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
+import downfall.cards.MajorBeam;
+import expansioncontent.actions.ExhaustVirusAction;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.DeEnergizedPower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+
+public class Virus extends AbstractExpansionCard {
+ public final static String ID = makeID("Virus");
+
+
+ private static final int MAGIC = 5;
+
+ public Virus() {
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ //todo skill bg instead of attack bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_automaton.png", "expansioncontentResources/images/1024/bg_boss_automaton.png");
+
+ tags.add(expansionContentMod.STUDY_AUTOMATON);
+ tags.add(expansionContentMod.STUDY);
+ cardsToPreview = new MajorBeam();
+ baseMagicNumber = MAGIC;
+ this.exhaust = true;
+
+ loadJokeCardImage(this, "Virus.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ExhaustVirusAction(5, false, true, true));
+
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(0);
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/YouAreMine.java b/src/main/java/expansioncontent/cards/YouAreMine.java
index 83c98f32c..fb80250de 100644
--- a/src/main/java/expansioncontent/cards/YouAreMine.java
+++ b/src/main/java/expansioncontent/cards/YouAreMine.java
@@ -1,6 +1,7 @@
package expansioncontent.cards;
+import collector.powers.DoomPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
@@ -13,6 +14,8 @@
import com.megacrit.cardcrawl.vfx.CollectorCurseEffect;
import expansioncontent.expansionContentMod;
+import static collector.util.Wiz.applyToEnemy;
+import static collector.util.Wiz.forAllMonstersLiving;
import static expansioncontent.expansionContentMod.loadJokeCardImage;
public class YouAreMine extends AbstractExpansionCard {
@@ -20,14 +23,17 @@ public class YouAreMine extends AbstractExpansionCard {
private static final int MAGIC = 3;
private static final int UPGRADE_MAGIC = 2;
+ private static final int downfallMagic = 6;
+ private static final int UPGRADE_downfallMagic = 4;
public YouAreMine() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.ALL_ENEMY);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
tags.add(expansionContentMod.STUDY_COLLECTOR);
tags.add(expansionContentMod.STUDY);
+ baseDownfallMagic = downfallMagic;
baseMagicNumber = magicNumber = MAGIC;
this.exhaust = true;
loadJokeCardImage(this, "YouAreMine.png");
@@ -41,24 +47,19 @@ public void use(AbstractPlayer p, AbstractMonster m) {
for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
if ((!monster.isDead) && (!monster.isDying) && !monster.halfDead) {
atb(new VFXAction(new CollectorCurseEffect(monster.hb.cX, monster.hb.cY), .5F));
- atb(new RemoveAllBlockAction(monster, p));
-
atb(new ApplyPowerAction(monster, p, new WeakPower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
atb(new ApplyPowerAction(monster, p, new VulnerablePower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
}
+ }
+ forAllMonstersLiving(q -> applyToEnemy(q, new DoomPower(q, 2*magicNumber)));
}
}
-
-
- }
-
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeDownfall(4);
}
}
diff --git a/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java b/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java
deleted file mode 100644
index aeb909b1b..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.utility.SFXAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-import slimebound.powers.NextTurnGainStrengthPower;
-
-@CardIgnore
-public class ChargeUp extends AbstractExpansionCard {
- public final static String ID = makeID("ChargeUp");
-
- private static final int BLOCK = 20;
- private static final int UPGRADE_BLOCK = 10;
- private static final int MAGIC = 2;
-
- public ChargeUp() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_GUARDIAN);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new SFXAction("MONSTER_GUARDIAN_DESTROY"));
- atb(new ApplyPowerAction(p, p, new NextTurnBlockPower(p, this.block), this.block));
- atb(new ApplyPowerAction(p, p, new NextTurnGainStrengthPower(p, p, this.magicNumber), this.magicNumber));
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- }
- }
-
-}
-
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java b/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java
deleted file mode 100644
index ce5133c7d..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
-import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.VulnerablePower;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-
-@CardIgnore
-public class FaceSlap extends AbstractExpansionCard {
- public final static String ID = makeID("FaceSlap");
-
- private static final int DAMAGE = 12;
- private static final int UPGRADE_DAMAGE = 3;
- private static final int MAGIC = 2;
- private static final int UPGRADE_MAGIC = 1;
-
- public FaceSlap() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
-
- tags.add(expansionContentMod.STUDY_CHAMP);
- tags.add(expansionContentMod.STUDY);
-
- baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new RemoveAllBlockAction(m, p));
- atb(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- atb(new ApplyPowerAction(m, p, new VulnerablePower(m, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeDamage(UPGRADE_DAMAGE);
- upgradeMagicNumber(UPGRADE_MAGIC);
- }
- }
-
-}
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java b/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java
deleted file mode 100644
index b2a7384ba..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.utility.WaitAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.VulnerablePower;
-import downfall.util.CardIgnore;
-import expansioncontent.cards.AbstractExpansionCard;
-import expansioncontent.expansionContentMod;
-import slimebound.powers.SlimedPower;
-import slimebound.vfx.SlimeProjectileEffect;
-
-@CardIgnore
-public class GoopSpray extends AbstractExpansionCard {
- public final static String ID = makeID("GoopSpray");
-
- private static final int MAGIC = 12;
- private static final int UPGRADE_MAGIC = 4;
-
- public GoopSpray() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
-
- tags.add(expansionContentMod.STUDY_SLIMEBOSS);
- tags.add(expansionContentMod.STUDY);
-
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- if (!AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
- flash();
- for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
- if ((!monster.isDead) && (!monster.isDying)) {
- atb(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, monster.hb.cX, monster.hb.cY, 3F, false, 0.6F), 0.01F));
-
-
- }
- atb(new WaitAction(0.2F));
- }
- for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
- if ((!monster.isDead) && (!monster.isDying)) {
-
- atb(new ApplyPowerAction(monster, p, new SlimedPower(monster, p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
- int vuln = 2;
- if (upgraded) vuln++;
- atb(new ApplyPowerAction(monster, p, new VulnerablePower(monster, vuln, false), vuln, true, AbstractGameAction.AttackEffect.NONE));
-
-
- }
-
- }
- }
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_MAGIC);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java b/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
index 9175c03df..e97fb2214 100644
--- a/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
+++ b/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
@@ -1,4 +1,4 @@
-/*
+package expansioncontent.cards.deprecated;/*
package expansioncontent.cards;
diff --git a/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java b/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java
deleted file mode 100644
index 2ba8d99f3..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-import slimebound.actions.TriggerStartOfTurnEffectsAction;
-
-@CardIgnore
-public class ManipulateTime extends AbstractExpansionCard {
- public final static String ID = makeID("ManipulateTime");
-
- private static final int BLOCK = 10;
- private static final int UPGRADE_BLOCK = 4;
-
- public ManipulateTime() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_TIMEEATER);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- CardCrawlGame.sound.play("POWER_TIME_WARP", 0.05F);
- AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.BorderFlashEffect(com.badlogic.gdx.graphics.Color.GOLD, true));
- AbstractDungeon.topLevelEffectsQueue.add(new com.megacrit.cardcrawl.vfx.combat.TimeWarpTurnEndEffect());
- atb(new com.megacrit.cardcrawl.actions.common.GainBlockAction(p, p, this.block));
-
- atb(new TriggerStartOfTurnEffectsAction(p));
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- }
- }
-
-}
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java b/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java
deleted file mode 100644
index 0ebbbc3fb..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.common.DrawCardAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import downfall.util.CardIgnore;
-import expansioncontent.cards.AbstractExpansionCard;
-import expansioncontent.expansionContentMod;
-
-@CardIgnore
-public class SuperHexaguard extends AbstractExpansionCard {
- public final static String ID = makeID("SuperHexaguard");
-
-
- private static final int BLOCK = 12;
- private static final int UPG_BLOCK = 4;
-
- public SuperHexaguard() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_HEXAGHOST);
- tags.add(expansionContentMod.STUDY);
- baseBlock = BLOCK;
- isEthereal = true;
-
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- blck();
- atb(new DrawCardAction(p, 1));
-
- }
-
- public void triggerOnExhaust() {
- blck();
- atb(new DrawCardAction(AbstractDungeon.player, 1));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPG_BLOCK);
- }
- }
-
-}
-
-
diff --git a/src/main/java/expansioncontent/patches/ShopBossPatch.java b/src/main/java/expansioncontent/patches/ShopBossPatch.java
index 85936aa9d..e8cc19fc5 100644
--- a/src/main/java/expansioncontent/patches/ShopBossPatch.java
+++ b/src/main/java/expansioncontent/patches/ShopBossPatch.java
@@ -13,6 +13,7 @@
import downfall.patches.EvilModeCharacterSelect;
import expansioncontent.actions.RandomCardWithTagAction;
import expansioncontent.cards.*;
+import expansioncontent.expansionContentMod;
import guardian.characters.GuardianCharacter;
import slimebound.characters.SlimeboundCharacter;
import theHexaghost.TheHexaghost;
@@ -27,7 +28,8 @@ public class ShopBossPatch {
public static void Postfix(ShopScreen __instance) {
if (EvilModeCharacterSelect.evilMode) {
ArrayList colorlessCards = (ArrayList) ReflectionHacks.getPrivate(__instance, ShopScreen.class, "colorlessCards");
- if (AbstractDungeon.merchantRng.randomBoolean()) {
+ if (1 == 1) {
+ // if (AbstractDungeon.merchantRng.randomBoolean()) {
int x = colorlessCards.get(0).price;
colorlessCards.set(0, getReplacement(colorlessCards.get(0).rarity));
colorlessCards.get(0).price = x;
@@ -35,7 +37,8 @@ public static void Postfix(ShopScreen __instance) {
r.onPreviewObtainCard(colorlessCards.get(0));
}
}
- if (AbstractDungeon.merchantRng.randomBoolean()) {
+ if (1 == 1) {
+ // if (AbstractDungeon.merchantRng.randomBoolean()) {
int x = colorlessCards.get(1).price;
colorlessCards.set(1, getReplacement(colorlessCards.get(1).rarity));
colorlessCards.get(1).price = x;
@@ -60,25 +63,36 @@ public static boolean okayToSpawn(AbstractCard q) {
if (q.rarity == AbstractCard.CardRarity.SPECIAL) return false;
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- if (q.cardID.equals(PrepareCrush.ID)) {
+ if (q.hasTag(expansionContentMod.STUDY_SLIMEBOSS)){
return false;
}
}
if (AbstractDungeon.player instanceof TheHexaghost || RandomCardWithTagAction.hexaLocked()) {
- if (q.cardID.equals(Hexaburn.ID)) return false;
+ if (q.hasTag(expansionContentMod.STUDY_HEXAGHOST)){
+ return false;
+ }
}
if (AbstractDungeon.player instanceof GuardianCharacter || RandomCardWithTagAction.guardianLocked()) {
- if (q.cardID.equals(GuardianWhirl.ID)) return false;
+ if (q.hasTag(expansionContentMod.STUDY_GUARDIAN)){
+ return false;
+ }
}
if (AbstractDungeon.player instanceof ChampChar || RandomCardWithTagAction.champLocked()) {
- if (q.cardID.equals(LastStand.ID)) return false;
+ if (q.hasTag(expansionContentMod.STUDY_CHAMP)){
+ return false;
+ }
}
if (AbstractDungeon.player instanceof AutomatonChar || RandomCardWithTagAction.autoLocked()) {
- return !q.cardID.equals(HyperBeam.ID);
+ if (q.hasTag(expansionContentMod.STUDY_AUTOMATON)){
+ return false;
+ }
}
if (AbstractDungeon.player instanceof CollectorChar || RandomCardWithTagAction.collectorLocked()) {
- return !q.cardID.equals(YouAreMine.ID);
- }
+ if (q.hasTag(expansionContentMod.STUDY_COLLECTOR)){
+ return false;
+ }
+ }
+
return true;
}
}
diff --git a/src/main/java/expansioncontent/powers/AwakenDeathPower.java b/src/main/java/expansioncontent/powers/AwakenDeathPower.java
index 7f4855977..d15ce691c 100644
--- a/src/main/java/expansioncontent/powers/AwakenDeathPower.java
+++ b/src/main/java/expansioncontent/powers/AwakenDeathPower.java
@@ -52,7 +52,7 @@ public boolean onPlayerDeath(AbstractPlayer abstractPlayer, DamageInfo damageInf
public void onVictory()
{
- AbstractPlayer p = com.megacrit.cardcrawl.dungeons.AbstractDungeon.player;
+ AbstractPlayer p = AbstractDungeon.player;
if (p.currentHealth > 0) {
p.heal(this.amount);
}
diff --git a/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java b/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java
new file mode 100644
index 000000000..417c8c4c7
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java
@@ -0,0 +1,62 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.powers;
+
+import collector.powers.DoomPower;
+import com.evacipated.cardcrawl.mod.stslib.powers.abstracts.TwoAmountPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+
+import static expansioncontent.expansionContentMod.makeID;
+import static hermit.util.Wiz.atb;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.DamageInfo.DamageType;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.AbstractPower.PowerType;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.CollectorCurseEffect;
+import slimebound.orbs.AttackSlime;
+
+public class BeatOfDeathThatDoesntKillYouPower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:BeatOfDeathP";
+ public static final String NAME = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).NAME;
+ public static final String[] DESCRIPTIONS = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).DESCRIPTIONS;
+ public int maxAmt;
+
+ public BeatOfDeathThatDoesntKillYouPower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ this.loadRegion("beat");
+ this.type = PowerType.BUFF;
+ }
+
+ public void onAfterUseCard(AbstractCard card, UseCardAction action) {
+ this.flash();
+ this.addToBot(new DamageAllEnemiesAction(this.owner, DamageInfo.createDamageMatrix(this.amount, true), DamageType.THORNS, AttackEffect.BLUNT_LIGHT, true));
+ }
+ public void updateDescription () {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/powers/EvilWithinPower.java b/src/main/java/expansioncontent/powers/EvilWithinPower.java
new file mode 100644
index 000000000..46b92bc43
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/EvilWithinPower.java
@@ -0,0 +1,66 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.DamageInfo.DamageType;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EvilWithinPower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:EvilWithinPower";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ public static final int DEBUFF_AMT = 5;
+ private int damage;
+
+ public EvilWithinPower(AbstractCreature owner, int damage) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.type = PowerType.BUFF;
+ this.amount = 5;
+ this.isTurnBased = false;
+ this.updateDescription();
+ this.loadRegion("sadistic");
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0] + this.damage + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[3];
+ } else {
+ this.description = DESCRIPTIONS[0] + this.damage + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+
+ }
+
+ public void stackPower(int stackAmount) {
+ this.fontScale = 8.0F;
+ this.damage += stackAmount;
+ this.updateDescription();
+ }
+
+ public void onApplyPower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if (power.type == PowerType.DEBUFF && !power.ID.equals("Shackled") && source == this.owner && target != this.owner && !target.hasPower("Artifact")) {
+ --this.amount;
+ if (this.amount == 0) {
+ this.flash();
+ this.amount = 5;
+ this.addToBot(new DamageAllEnemiesAction(AbstractDungeon.player, DamageInfo.createDamageMatrix(this.damage, true), DamageType.THORNS, AttackEffect.SLASH_DIAGONAL));
+ }
+ this.updateDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/PandemoniumPower.java b/src/main/java/expansioncontent/powers/PandemoniumPower.java
new file mode 100644
index 000000000..1222993a2
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/PandemoniumPower.java
@@ -0,0 +1,75 @@
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.utility.UnlimboAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class PandemoniumPower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:PandemoniumPower";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+
+ public PandemoniumPower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.type = PowerType.BUFF;
+ this.isTurnBased = false;
+ this.updateDescription();
+ this.loadRegion("mayhem");
+ priority = -999;
+ }
+
+ @Override
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ this.flash();
+ for (int i = 0; i < this.amount; ++i) {
+ if (!AbstractDungeon.player.discardPile.isEmpty()) {
+ AbstractCard cardToPlay = AbstractDungeon.player.discardPile.getRandomCard(AbstractDungeon.cardRandomRng);
+ AbstractDungeon.player.discardPile.removeCard(cardToPlay);
+ this.addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ AbstractMonster randomMonster = AbstractDungeon.getCurrRoom().monsters.getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+ cardToPlay.freeToPlayOnce = true;
+ cardToPlay.applyPowers();
+ cardToPlay.calculateCardDamage(randomMonster);
+
+ // Add the card to the player's limbo (temporary play area)
+ AbstractDungeon.player.limbo.addToBottom(cardToPlay);
+ cardToPlay.current_y = -200.0F * Settings.scale;
+ cardToPlay.target_x = (Settings.WIDTH / 2.0F - 300.0F * Settings.scale);
+ cardToPlay.target_y = (Settings.HEIGHT / 2.0F);
+ // Calculate the damage for the target
+ cardToPlay.calculateCardDamage(randomMonster);
+
+ // Add the card to the action manager's card queue, targeting the selected monster
+ AbstractDungeon.actionManager.cardQueue.add(new com.megacrit.cardcrawl.cards.CardQueueItem(cardToPlay, randomMonster, cardToPlay.energyOnUse));
+ this.addToTop(new UnlimboAction(cardToPlay));
+ this.isDone = true;
+ }
+ });
+
+ }
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/ReveriePower.java b/src/main/java/expansioncontent/powers/ReveriePower.java
new file mode 100644
index 000000000..c1618835d
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/ReveriePower.java
@@ -0,0 +1,74 @@
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.SelectCardsCenteredAction;
+import sneckomod.SneckoMod;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+import java.util.ArrayList;
+
+public class ReveriePower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:ReveriePower";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+
+ public ReveriePower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.type = PowerType.BUFF;
+ this.isTurnBased = false;
+ this.updateDescription();
+ this.loadRegion("time");
+ priority = 999;
+ }
+
+ @Override
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ this.flash();
+
+ if (!AbstractDungeon.player.discardPile.isEmpty()) {
+ ArrayList cardsToChooseFrom = new ArrayList<>();
+
+ for (int i = 0; i < this.amount && i < AbstractDungeon.player.discardPile.size(); ++i) {
+ cardsToChooseFrom.add(AbstractDungeon.player.discardPile.group.get(i));
+ }
+
+ if (!cardsToChooseFrom.isEmpty()) {
+ this.addToBot(new SelectCardsCenteredAction(
+ cardsToChooseFrom,
+ 1,
+ DESCRIPTIONS[3],
+ (selectedCards) -> {
+ AbstractCard chosenCard = selectedCards.get(0);
+ AbstractDungeon.player.discardPile.removeCard(chosenCard);
+ AbstractDungeon.player.hand.addToHand(chosenCard);
+
+ chosenCard.lighten(false);
+ chosenCard.unhover();
+ chosenCard.applyPowers();
+ }
+ ));
+ }
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/VexVinciblePower.java b/src/main/java/expansioncontent/powers/VexVinciblePower.java
index 0a123ae32..969ac0214 100644
--- a/src/main/java/expansioncontent/powers/VexVinciblePower.java
+++ b/src/main/java/expansioncontent/powers/VexVinciblePower.java
@@ -1,29 +1,36 @@
package expansioncontent.powers;
import com.evacipated.cardcrawl.mod.stslib.powers.abstracts.TwoAmountPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
-
-import static expansioncontent.expansionContentMod.makeID;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import expansioncontent.expansionContentMod;
public class VexVinciblePower extends TwoAmountPower {
- public static final String POWER_ID = makeID("VexVinciblePower");
- public static final String NAME = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).NAME;
- public static final String[] DESCRIPTIONS = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).DESCRIPTIONS;
+ public static final String POWER_ID = expansionContentMod.makeID("VexVinciblePower");
+
+ public static final String NAME = (CardCrawlGame.languagePack.getPowerStrings(POWER_ID)).NAME;
+
+ public static final String[] DESCRIPTIONS = (CardCrawlGame.languagePack.getPowerStrings(POWER_ID)).DESCRIPTIONS;
+
public int maxAmt;
+ public int variable;
+
private boolean activated = false;
- public VexVinciblePower(AbstractCreature owner, int amount) {
+ public VexVinciblePower(AbstractCreature owner, int amount, int amount2, int amount3) {
this.name = NAME;
this.ID = POWER_ID;
this.owner = owner;
- this.amount = amount; //duration
- this.amount2 = 10; //damage cap, also "damage remaining this turn"
+ this.amount = amount;
+ this.amount2 = amount2;
+ this.variable = amount3;
this.maxAmt = amount;
- this.updateDescription();
- this.loadRegion("heartDef");
+ updateDescription();
+ loadRegion("heartDef");
this.priority = 99;
this.activated = false;
}
@@ -31,32 +38,26 @@ public VexVinciblePower(AbstractCreature owner, int amount) {
public int onLoseHp(int damageAmount) {
if (damageAmount > this.amount2) {
damageAmount = this.amount2;
- activated = true;
+ this.activated = true;
}
-
this.amount2 -= damageAmount;
- if (this.amount2 < 0) {
+ if (this.amount2 < 0)
this.amount2 = 0;
- }
-
- this.updateDescription();
-
+ updateDescription();
return damageAmount;
}
- @Override
- public void atEndOfRound(){
- if (activated) {
- addToBot(new ReducePowerAction(owner, owner, this, 1));
- }
- this.amount2 = 10;
+ public void atEndOfRound() {
+ if (this.activated)
+ addToBot((AbstractGameAction)new ReducePowerAction(this.owner, this.owner, (AbstractPower)this, 1));
+ this.amount2 = this.variable;
}
public void updateDescription() {
if (this.amount == 1) {
this.description = DESCRIPTIONS[0] + this.amount2 + DESCRIPTIONS[1];
} else {
- this.description = DESCRIPTIONS[2] + this.amount2 + DESCRIPTIONS[3] + amount + DESCRIPTIONS[4];
+ this.description = DESCRIPTIONS[2] + this.amount2 + DESCRIPTIONS[3] + this.amount + DESCRIPTIONS[4];
}
}
}
diff --git a/src/main/java/expansioncontent/relics/StudyCardRelic.java b/src/main/java/expansioncontent/relics/StudyCardRelic.java
index 6df7b2331..f493d8e2f 100644
--- a/src/main/java/expansioncontent/relics/StudyCardRelic.java
+++ b/src/main/java/expansioncontent/relics/StudyCardRelic.java
@@ -23,7 +23,7 @@ public class StudyCardRelic extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("tinybowlerhatOutline.png"));
public StudyCardRelic() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.FLAT);
+ super(ID, IMG, OUTLINE, RelicTier.DEPRECATED, LandingSound.FLAT);
this.tips.add(new CardPowerTip(new StudyTheSpire()));
}
diff --git a/src/main/java/gremlin/GremlinMod.java b/src/main/java/gremlin/GremlinMod.java
index 305044840..ebcda8b5b 100644
--- a/src/main/java/gremlin/GremlinMod.java
+++ b/src/main/java/gremlin/GremlinMod.java
@@ -175,7 +175,7 @@ public void receiveEditRelics() {
addRelicToCustomPool(new WizardHat(), AbstractCardEnum.GREMLIN);
// Uncommon
- addRelic(new ImpeccablePecs(), RelicType.SHARED);
+ addRelicToCustomPool(new ImpeccablePecs(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new MagicalMallet(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new WizardStaff(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new WoundPoker(), AbstractCardEnum.GREMLIN);
diff --git a/src/main/java/gremlin/actions/CounterStrikeAction.java b/src/main/java/gremlin/actions/CounterStrikeAction.java
index 388588121..d4b8a2676 100644
--- a/src/main/java/gremlin/actions/CounterStrikeAction.java
+++ b/src/main/java/gremlin/actions/CounterStrikeAction.java
@@ -2,11 +2,19 @@
import com.megacrit.cardcrawl.actions.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.monsters.*;
import com.megacrit.cardcrawl.dungeons.*;
import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
import gremlin.GremlinMod;
import gremlin.cards.Ward;
+import gremlin.characters.GremlinCharacter;
+import gremlin.orbs.MadGremlin;
+import gremlin.orbs.SneakyGremlin;
+import gremlin.powers.ModifiedLoseStrengthPower;
+import gremlin.powers.WizPower;
public class CounterStrikeAction extends AbstractGameAction
{
@@ -23,12 +31,55 @@ public CounterStrikeAction(final AbstractMonster m, final int amount, boolean is
@Override
public void update() {
if (GremlinMod.doesEnemyIntendToAttack(this.m)) {
- AbstractCard c = new Ward();
- if(isUpgraded){
- c.upgrade();
+ String gremlin = "";
+ boolean isNob = false;
+ if(AbstractDungeon.player instanceof GremlinCharacter) {
+ if(((GremlinCharacter) AbstractDungeon.player).nob){
+ isNob = true;
+ } else {
+ gremlin = ((GremlinCharacter) AbstractDungeon.player).currentGremlin;
+ }
+ }
+
+ if(gremlin.equals("shield")){
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, 2));
+ }
+
+ if(gremlin.equals("angry")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new StrengthPower(AbstractDungeon.player, MadGremlin.STRENGTH)));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new ModifiedLoseStrengthPower(AbstractDungeon.player, MadGremlin.STRENGTH)));
+ }
+
+ else if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new WizPower(AbstractDungeon.player, 1), 1));
+ } else {
+ // AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
+ // this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("fat")){
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(mo, AbstractDungeon.player,
+ new WeakPower(mo, 1, false), 1));
+ }
+ }
+ }
+
+ if(gremlin.equals("sneak")){
+ AbstractDungeon.actionManager.addToBottom(
+ new DamageRandomEnemyAction(new DamageInfo(AbstractDungeon.player, SneakyGremlin.DAMAGE, DamageInfo.DamageType.THORNS),
+ AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new WizPower(AbstractDungeon.player, 1), 1));
+ }
}
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(c, amount));
- }
this.isDone = true;
}
}
diff --git a/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java b/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
index f6d3cd695..7dae12288 100644
--- a/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
+++ b/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
@@ -1,5 +1,6 @@
package gremlin.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.*;
import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.dungeons.*;
@@ -20,11 +21,16 @@ public void update() {
this.isDone = true;
int count = AbstractDungeon.actionManager.cardsPlayedThisTurn.size();
--count;
+ int availableSpace = BaseMod.MAX_HAND_SIZE - AbstractDungeon.player.hand.size();
+ if (count > availableSpace) {
+ count = availableSpace;
+ }
AbstractCard c = new Shiv();
- if(upgraded){
+ if (upgraded) {
c.upgrade();
}
AbstractDungeon.actionManager.addToTop(new MakeTempCardInHandAction(c, count));
}
+
}
diff --git a/src/main/java/gremlin/cards/AbstractGremlinCard.java b/src/main/java/gremlin/cards/AbstractGremlinCard.java
index 04c48fc90..39fd40bf4 100644
--- a/src/main/java/gremlin/cards/AbstractGremlinCard.java
+++ b/src/main/java/gremlin/cards/AbstractGremlinCard.java
@@ -19,6 +19,16 @@ protected static String getID(String ID) {
public boolean wizardry = false;
public boolean sorcery = false;
+ //Variables
+ //Second Magic - Downfall Magic (DM)
+ public int gremlinMagic;
+ public int basegremlinMagic;
+ public boolean isgremlinUpgraded;
+ public boolean isgremlinModified;
+
+ public boolean upgradedsecondMagic;
+ public boolean issecondMagicModified;
+
public boolean isBlamageModifed = false;
public int baseBlamage = 0;
public int blamage = 0;
@@ -45,9 +55,27 @@ public void displayUpgrades() {
blamage = baseBlamage;
isBlamageModifed = true;
}
+ if (isgremlinUpgraded) {
+ gremlinMagic = basegremlinMagic;
+ isgremlinModified = true;
+ }
+ }
+ protected void upgradeBlammage(int amount) {
+ baseBlamage += amount;
+ blamage = baseBlamage;
+ upgradedBlamage = true;
}
+
+ public void resetAttributes() {
+ super.resetAttributes();
+ gremlinMagic = basegremlinMagic;
+ isgremlinModified = false;
+ }
+
+
+
public void setBackgrounds() {
//Call this immediately after any tag changes.
if (getGremlinEnumFromCard(this).equals(ART_GREMLIN.NONE)) {
diff --git a/src/main/java/gremlin/cards/AggressiveDefense.java b/src/main/java/gremlin/cards/AggressiveDefense.java
index 63bd2ab87..29d81f4de 100644
--- a/src/main/java/gremlin/cards/AggressiveDefense.java
+++ b/src/main/java/gremlin/cards/AggressiveDefense.java
@@ -26,7 +26,7 @@ public class AggressiveDefense extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 6;
+ private static final int POWER = 8;
private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 3;
private static final int UPGRADE_MAGIC_BONUS = 1;
diff --git a/src/main/java/gremlin/cards/ArmsTheft.java b/src/main/java/gremlin/cards/ArmsTheft.java
index b75287fb9..d60223d37 100644
--- a/src/main/java/gremlin/cards/ArmsTheft.java
+++ b/src/main/java/gremlin/cards/ArmsTheft.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
import gremlin.GremlinMod;
import static gremlin.GremlinMod.MAD_GREMLIN;
@@ -39,6 +40,8 @@ public ArmsTheft() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p,
+ new WeakPower(m, magicNumber, false), magicNumber));
AbstractDungeon.actionManager.addToBottom(
new ApplyPowerAction(m, p, new StrengthPower(m, -this.magicNumber), -this.magicNumber));
if (!m.hasPower("Artifact")) {
diff --git a/src/main/java/gremlin/cards/Astound.java b/src/main/java/gremlin/cards/Astound.java
index fef88f2e0..383671f4a 100644
--- a/src/main/java/gremlin/cards/Astound.java
+++ b/src/main/java/gremlin/cards/Astound.java
@@ -24,7 +24,7 @@ public class Astound extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 0;
- private static final int BLOCK = 3;
+ private static final int BLOCK = 5;
private static final int MAGIC = 2;
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/gremlin/cards/BrokenShin.java b/src/main/java/gremlin/cards/BrokenShin.java
index 626337f7a..164acdfca 100644
--- a/src/main/java/gremlin/cards/BrokenShin.java
+++ b/src/main/java/gremlin/cards/BrokenShin.java
@@ -24,7 +24,7 @@ public class BrokenShin extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.RARE;
private static final AbstractCard.CardTarget TARGET = CardTarget.ENEMY;
- private static final int COST = 0;
+ private static final int COST = 2;
private static final int MAGIC = 4;
private static final int UPGRADE_BONUS = -1;
diff --git a/src/main/java/gremlin/cards/BubbleBarrier.java b/src/main/java/gremlin/cards/BubbleBarrier.java
index a219ad56b..53c46e025 100644
--- a/src/main/java/gremlin/cards/BubbleBarrier.java
+++ b/src/main/java/gremlin/cards/BubbleBarrier.java
@@ -19,7 +19,7 @@ public class BubbleBarrier extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/bubble_barrier.png";
private static final AbstractCard.CardType TYPE = AbstractCard.CardType.SKILL;
- private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 1;
diff --git a/src/main/java/gremlin/cards/BulkUp.java b/src/main/java/gremlin/cards/BulkUp.java
index ca4a1ca4b..e5dd62efb 100644
--- a/src/main/java/gremlin/cards/BulkUp.java
+++ b/src/main/java/gremlin/cards/BulkUp.java
@@ -10,6 +10,7 @@
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
import gremlin.orbs.FatGremlin;
+import sneckomod.SneckoMod;
import static gremlin.GremlinMod.FAT_GREMLIN;
@@ -24,7 +25,7 @@ public class BulkUp extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 1;
- private static final int MAGIC = 5;
+ private static final int MAGIC = 4;
private static final int UPGRADE_BONUS = 2;
public BulkUp()
@@ -36,6 +37,7 @@ public BulkUp()
this.tags.add(FAT_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "BulkUp.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m)
diff --git a/src/main/java/gremlin/cards/BurlyBlow.java b/src/main/java/gremlin/cards/BurlyBlow.java
index bc0e4e7b4..c13309547 100644
--- a/src/main/java/gremlin/cards/BurlyBlow.java
+++ b/src/main/java/gremlin/cards/BurlyBlow.java
@@ -26,7 +26,7 @@ public class BurlyBlow extends AbstractGremlinCard {
private static final int COST = 2;
private static final int POWER = 4;
- private static final int UPGRADE_BONUS = 1;
+ private static final int UPGRADE_BONUS = 2;
public BurlyBlow()
{
@@ -44,7 +44,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if(m.hasPower(WeakPower.POWER_ID)){
count = m.getPower(WeakPower.POWER_ID).amount;
}
- for(int i=0; i cardsList = new ArrayList<>();
@@ -37,58 +50,121 @@ public class GremlinArms extends AbstractGremlinCard {
public GremlinArms()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.baseMagicNumber = MAGIC;
this.magicNumber = baseMagicNumber;
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
- this.cardsToPreview = new Shiv();
- this.tags.add(SNEAKY_GREMLIN);
- setBackgrounds();
GremlinMod.loadJokeCardImage(this, "GremlinArms.png");
}
public void use(AbstractPlayer p, AbstractMonster m)
{
+
+ if(hasOptions){
+ addToBot(new ChooseOneAction(updateModal()));
+ }
+
for(int i = 0; i < magicNumber; i++){
- int shiv = AbstractDungeon.cardRandomRng.random(0, 1);
- if (shiv == 1)
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Shiv(), 1));
- else
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Ward(), 1));
+ String gremlin = "";
+ boolean isNob = false;
+ if(AbstractDungeon.player instanceof GremlinCharacter) {
+ if(((GremlinCharacter) AbstractDungeon.player).nob){
+ isNob = true;
+ } else {
+ gremlin = ((GremlinCharacter) AbstractDungeon.player).currentGremlin;
+ }
+ }
+
+ if(gremlin.equals("shield")){
+ AbstractDungeon.actionManager.addToTop(new GainBlockAction(p, p, 2));
+ }
+
+ if(gremlin.equals("angry")){
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new StrengthPower(p, MadGremlin.STRENGTH)));
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new ModifiedLoseStrengthPower(p, MadGremlin.STRENGTH)));
+ }
+
+ else if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new WizPower(p, 1), 1));
+ } else {
+ // AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
+ // this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("fat")){
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(mo, p,
+ new WeakPower(mo, 1, false), 1));
+ }
+ }
+ }
+
+ if(gremlin.equals("sneak")){
+ AbstractDungeon.actionManager.addToTop(
+ new DamageRandomEnemyAction(new DamageInfo(AbstractDungeon.player, SneakyGremlin.DAMAGE, DamageInfo.DamageType.THORNS),
+ AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
}
}
+ private ArrayList updateModal(){
+ if(AbstractDungeon.player != null){
+ ArrayList living = new ArrayList<>();
+ for(AbstractOrb orb : AbstractDungeon.player.orbs){
+ if(orb instanceof GremlinStandby){
+ living.add((GremlinStandby) orb);
+ }
+ }
+ if(living.size() == 0){
+ hasOptions = false;
+ return new ArrayList<>();
+ }
+ else {
+ hasOptions = true;
+ ArrayList options = new ArrayList<>();
+ for(AbstractOrb grem : living){
+ if(grem instanceof MadGremlin){
+ options.add(new MadGremlinCard());
+ }
+ else if(grem instanceof FatGremlin){
+ options.add(new FatGremlinCard());
+ }
+ else if(grem instanceof ShieldGremlin){
+ options.add(new ShieldGremlinCard());
+ }
+ else if(grem instanceof SneakyGremlin){
+ options.add(new SneakyGremlinCard());
+ }
+ else if(grem instanceof GremlinWizard){
+ options.add(new GremlinWizardCard());
+ }
+ }
+ return options;
+ }
+ }
+ hasOptions = false;
+ return new ArrayList<>();
+ }
+
+ @Override
+ public void applyPowers() {
+ updateModal();
+ super.applyPowers();
+ }
+
public void upgrade()
{
if (!this.upgraded)
{
upgradeName();
upgradeMagicNumber(UPGRADE_BONUS);
+ this.rawDescription = strings.UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
}
diff --git a/src/main/java/gremlin/cards/GremlinDance.java b/src/main/java/gremlin/cards/GremlinDance.java
index eb4c5b96c..d396ea6fa 100644
--- a/src/main/java/gremlin/cards/GremlinDance.java
+++ b/src/main/java/gremlin/cards/GremlinDance.java
@@ -37,7 +37,7 @@ public class GremlinDance extends AbstractGremlinCard {
private static final int POWER = 6;
private static final int BLOCK = 6;
private static final int MAGIC = 2;
- private static final int UPGRADE_BONUS = 3;
+ private static final int UPGRADE_BONUS = 2;
private String gremlin;
private float rotationTimer;
@@ -96,6 +96,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if(gremlin.equals("angry")){
AbstractDungeon.actionManager.addToBottom(new DamageAllEnemiesAction(p, this.multiDamage,
this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+
} else if(gremlin.equals("wizard")){
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
@@ -137,6 +138,7 @@ public void update() {
if (previewIndex == cardsList.size() - 1) {
previewIndex = 0;
} else {
+
previewIndex++;
}
} else {
@@ -239,7 +241,8 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
- upgradeDamage(UPGRADE_BONUS);
+ upgradeDamage(3);
+ upgradeBlock(3);
}
}
diff --git a/src/main/java/gremlin/cards/GremlinOffensive.java b/src/main/java/gremlin/cards/GremlinOffensive.java
index df23db363..75cccd608 100644
--- a/src/main/java/gremlin/cards/GremlinOffensive.java
+++ b/src/main/java/gremlin/cards/GremlinOffensive.java
@@ -25,7 +25,7 @@ public class GremlinOffensive extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 6;
+ private static final int POWER = 7;
private static final int UPGRADE_BONUS = 3;
private boolean real = true;
diff --git a/src/main/java/gremlin/cards/GremlinToss.java b/src/main/java/gremlin/cards/GremlinToss.java
index 2ae4efcd3..6ec46368b 100644
--- a/src/main/java/gremlin/cards/GremlinToss.java
+++ b/src/main/java/gremlin/cards/GremlinToss.java
@@ -27,7 +27,7 @@ public class GremlinToss extends AbstractGremlinCard {
private static final int COST = 1;
private static final int POWER = 0;
- private static final int MAGIC = 0;
+ private static final int MAGIC = 3;
private static final int UPGRADE_BONUS = 3;
public GremlinToss()
@@ -44,9 +44,7 @@ public GremlinToss()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
- if(upgraded) {
- AbstractDungeon.actionManager.addToBottom(new AddTemporaryHPAction(p, p, magicNumber));
- }
+ AbstractDungeon.actionManager.addToBottom(new AddTemporaryHPAction(p, p, magicNumber));
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
}
@@ -100,9 +98,7 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
- upgradeMagicNumber(UPGRADE_BONUS);
- this.rawDescription = strings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
+ upgradeBaseCost(0);
}
}
}
diff --git a/src/main/java/gremlin/cards/Heckle.java b/src/main/java/gremlin/cards/Heckle.java
index 99cd5d4b9..4a7e638d6 100644
--- a/src/main/java/gremlin/cards/Heckle.java
+++ b/src/main/java/gremlin/cards/Heckle.java
@@ -19,11 +19,11 @@ public class Heckle extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/heckle.png";
private static final AbstractCard.CardType TYPE = CardType.POWER;
- private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.RARE;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
- private static final int COST = 3;
- private static final int UPGRADE_COST = 2;
+ private static final int COST = 2;
+ private static final int UPGRADE_COST = 1;
private static final int MAGIC = 2;
public Heckle()
diff --git a/src/main/java/gremlin/cards/IrksomeBlow.java b/src/main/java/gremlin/cards/IrksomeBlow.java
index fc19aff31..c96c9ef44 100644
--- a/src/main/java/gremlin/cards/IrksomeBlow.java
+++ b/src/main/java/gremlin/cards/IrksomeBlow.java
@@ -24,8 +24,8 @@ public class IrksomeBlow extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
- private static final int COST = 0;
- private static final int POWER = 1;
+ private static final int COST = 1;
+ private static final int POWER = 5;
private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 4;
diff --git a/src/main/java/gremlin/cards/Irritability.java b/src/main/java/gremlin/cards/Irritability.java
index 290268819..58fceed5e 100644
--- a/src/main/java/gremlin/cards/Irritability.java
+++ b/src/main/java/gremlin/cards/Irritability.java
@@ -16,6 +16,7 @@
import gremlin.actions.GremlinSwapAction;
import gremlin.orbs.MadGremlin;
import guardian.powers.LoseThornsPower;
+import sneckomod.SneckoMod;
import static gremlin.GremlinMod.MAD_GREMLIN;
@@ -42,6 +43,7 @@ public Irritability()
this.magicNumber = baseMagicNumber;
this.baseBlock = BLOCK;
this.tags.add(MAD_GREMLIN);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Irritability.png");
}
diff --git a/src/main/java/gremlin/cards/Kablamo.java b/src/main/java/gremlin/cards/Kablamo.java
index ee208a1af..61a2188c3 100644
--- a/src/main/java/gremlin/cards/Kablamo.java
+++ b/src/main/java/gremlin/cards/Kablamo.java
@@ -23,8 +23,8 @@ public class Kablamo extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 2;
- private static final int POWER = 13;
- private static final int UPGRADE_BONUS = 4;
+ private static final int POWER = 4;
+ private static final int UPGRADE_BONUS = 2;
public Kablamo()
{
@@ -44,6 +44,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(
new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn,
AbstractGameAction.AttackEffect.FIRE));
+ AbstractDungeon.actionManager.addToBottom(
+ new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn,
+ AbstractGameAction.AttackEffect.FIRE));
}
@Override
diff --git a/src/main/java/gremlin/cards/Mockery.java b/src/main/java/gremlin/cards/Mockery.java
index 0d54b77c4..f939f29a8 100644
--- a/src/main/java/gremlin/cards/Mockery.java
+++ b/src/main/java/gremlin/cards/Mockery.java
@@ -24,7 +24,7 @@ public class Mockery extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ENEMY;
private static final int COST = 1;
- private static final int BLOCK = 10;
+ private static final int BLOCK = 9;
private static final int UPGRADE_BONUS = 3;
private static final int MAGIC = 1;
private static final int MAGIC_UPGRADE_BONUS = 1;
diff --git a/src/main/java/gremlin/cards/Nob.java b/src/main/java/gremlin/cards/Nob.java
index 827d3cec3..630d790d8 100644
--- a/src/main/java/gremlin/cards/Nob.java
+++ b/src/main/java/gremlin/cards/Nob.java
@@ -1,6 +1,7 @@
package gremlin.cards;
import basemod.helpers.BaseModCardTags;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
@@ -8,6 +9,7 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -59,6 +61,7 @@ public Nob() {
this.tags.add(NOB_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Nob.png");
+ MultiCardPreview.add(new Bellow(), new SkullBash(), new Rush());
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -75,32 +78,11 @@ public void upgrade() {
}
}
- @Override
- public boolean canSpawn(ArrayList currentRewardCards) {
- return AbstractDungeon.cardRandomRng.randomBoolean();
- }
+// @Override
+// public boolean canSpawn(ArrayList currentRewardCards) {
+// return AbstractDungeon.cardRandomRng.randomBoolean();
+// }
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
private void playSfx() {
int roll = MathUtils.random(2);
diff --git a/src/main/java/gremlin/cards/Patsy.java b/src/main/java/gremlin/cards/Patsy.java
index e08f5008a..30eaffb41 100644
--- a/src/main/java/gremlin/cards/Patsy.java
+++ b/src/main/java/gremlin/cards/Patsy.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
+import sneckomod.SneckoMod;
public class Patsy extends AbstractGremlinCard {
public static final String ID = getID("Patsy");
@@ -27,7 +28,7 @@ public class Patsy extends AbstractGremlinCard {
public Patsy()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.baseBlock = BLOCK;
GremlinMod.loadJokeCardImage(this, "Patsy.png");
}
diff --git a/src/main/java/gremlin/cards/Pickpocket.java b/src/main/java/gremlin/cards/Pickpocket.java
index eeaa71cfd..3b3b6d642 100644
--- a/src/main/java/gremlin/cards/Pickpocket.java
+++ b/src/main/java/gremlin/cards/Pickpocket.java
@@ -9,7 +9,9 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.GainPennyEffect;
import gremlin.GremlinMod;
+import gremlin.actions.ShackleAction;
import gremlin.actions.StealArtifactAction;
import static gremlin.GremlinMod.MAD_GREMLIN;
@@ -24,34 +26,61 @@ public class Pickpocket extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
- private static final int COST = 1;
+ private static final int COST = 2;
private static final int POWER = 9;
+ private static final int MAGIC = 2;
private static final int UPGRADE_BONUS = 4;
public Pickpocket()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
+ this.baseMagicNumber = MAGIC;
+ this.magicNumber = baseMagicNumber;
this.baseDamage = POWER;
+ this.baseBlamage = 5;
this.exhaust = true;
this.tags.add(MAD_GREMLIN);
+ this.tags.add(CardTags.HEALING);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Pickpocket.png");
}
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
- AbstractDungeon.actionManager.addToBottom(new StealArtifactAction(m,p));
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
- }
+
+ AbstractDungeon.actionManager.addToBottom(new ShackleAction(m, magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new ShackleAction(m, magicNumber));
+
+ if (!this.upgraded) {
+ {
+ AbstractDungeon.player.gainGold(5);
+ for (int i = 0; i < 5; ++i) {
+ AbstractDungeon.effectList.add(new GainPennyEffect(p, p.hb.cX, p.hb.cY, p.hb.cX, p.hb.cY, true));
+ }
+ }
+ }
+
+ if (this.upgraded) {
+ {
+ AbstractDungeon.player.gainGold(10);
+ for (int i = 0; i < 10; ++i) {
+ AbstractDungeon.effectList.add(new GainPennyEffect(p, p.hb.cX, p.hb.cY, p.hb.cX, p.hb.cY, true));
+ }
+ }
+ }
+
+ }
@Override
public void upgrade() {
if (!this.upgraded)
{
upgradeName();
+ upgradeBlammage(5);
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
}
diff --git a/src/main/java/gremlin/cards/Polish.java b/src/main/java/gremlin/cards/Polish.java
index 987993615..e9b73427b 100644
--- a/src/main/java/gremlin/cards/Polish.java
+++ b/src/main/java/gremlin/cards/Polish.java
@@ -1,5 +1,6 @@
package gremlin.cards;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -35,15 +36,12 @@ public class Polish extends AbstractGremlinCard {
public Polish()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
this.baseMagicNumber = MAGIC;
this.magicNumber = baseMagicNumber;
this.tags.add(SHIELD_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Polish.png");
+ MultiCardPreview.add(this, new Shiv(), new Ward());
}
public void use(AbstractPlayer p, AbstractMonster m)
@@ -63,28 +61,6 @@ public void upgrade()
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
-
private float rotationTimer;
private int previewIndex;
private ArrayList cardsList = new ArrayList<>();
diff --git a/src/main/java/gremlin/cards/Presto.java b/src/main/java/gremlin/cards/Presto.java
index 54583d046..65f48f7cd 100644
--- a/src/main/java/gremlin/cards/Presto.java
+++ b/src/main/java/gremlin/cards/Presto.java
@@ -26,8 +26,8 @@ public class Presto extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 7;
- private static final int UPGRADE_BONUS = 4;
+ private static final int POWER = 9;
+ private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 1;
private static final int UPGRADE_MAGIC = 1;
diff --git a/src/main/java/gremlin/cards/Pretaliation.java b/src/main/java/gremlin/cards/Pretaliation.java
index d904ac53c..e185137ad 100644
--- a/src/main/java/gremlin/cards/Pretaliation.java
+++ b/src/main/java/gremlin/cards/Pretaliation.java
@@ -35,17 +35,17 @@ public class Pretaliation extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
- private static final int COST = 2;
- private static final int POWER = 20;
+ private static final int COST = 1;
+ private static final int POWER = 6;
private static final int BLAMAGE = 5;
- private static final int UPGRADE_POWER = 7;
+ private static final int UPGRADE_POWER = 2;
public Pretaliation()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
this.baseDamage = POWER;
- this.baseBlamage = BLAMAGE;
+ this.baseMagicNumber = magicNumber = 3;
this.tags.add(MAD_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Pretaliation.png");
@@ -53,14 +53,9 @@ public Pretaliation()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
- if (GremlinMod.doesEnemyIntendToAttack(m)) {
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
- this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- } else {
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.blamage,
- this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
- }
-// AbstractDungeon.actionManager.addToBottom(new PretaliationAction(this.magicNumber, m));
+ addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ addToBot(new DamageAction(p, new DamageInfo(m, this.magicNumber, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
}
@Override
@@ -69,96 +64,7 @@ public void upgrade() {
{
upgradeName();
upgradeDamage(UPGRADE_POWER);
- }
- }
-
- public void applyPowers() {
- super.applyPowers();
- AbstractPlayer player = AbstractDungeon.player;
- this.isBlamageModifed = false;
- float tmp = (float)this.baseBlamage;
- Iterator var3 = player.relics.iterator();
-
- while(var3.hasNext()) {
- AbstractRelic r = (AbstractRelic)var3.next();
- tmp = r.atDamageModify(tmp, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
- }
-
- AbstractPower p;
- for(var3 = player.powers.iterator(); var3.hasNext(); tmp = p.atDamageGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var3.next();
- }
-
- tmp = player.stance.atDamageGive(tmp, this.damageTypeForTurn, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
-
- for(var3 = player.powers.iterator(); var3.hasNext(); tmp = p.atDamageFinalGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var3.next();
- }
-
- if (tmp < 0.0F) {
- tmp = 0.0F;
- }
-
- if (this.baseBlamage != MathUtils.floor(tmp)) {
- this.isBlamageModifed = true;
- }
-
- this.blamage = MathUtils.floor(tmp);
- }
-
- public void calculateCardDamage(AbstractMonster mo) {
- super.calculateCardDamage(mo);
- AbstractPlayer player = AbstractDungeon.player;
- if (mo != null) {
- this.isBlamageModifed = false;
- float tmp = (float)this.baseBlamage;
- Iterator var9 = player.relics.iterator();
-
- while(var9.hasNext()) {
- AbstractRelic r = (AbstractRelic)var9.next();
- tmp = r.atDamageModify(tmp, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
- }
-
- AbstractPower p;
- for(var9 = player.powers.iterator(); var9.hasNext(); tmp = p.atDamageGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- tmp = player.stance.atDamageGive(tmp, this.damageTypeForTurn, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
-
- for(var9 = mo.powers.iterator(); var9.hasNext(); tmp = p.atDamageReceive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- for(var9 = player.powers.iterator(); var9.hasNext(); tmp = p.atDamageFinalGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- for(var9 = mo.powers.iterator(); var9.hasNext(); tmp = p.atDamageFinalReceive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- if (tmp < 0.0F) {
- tmp = 0.0F;
- }
-
- if (this.baseBlamage != MathUtils.floor(tmp)) {
- this.isBlamageModifed = true;
- }
-
- this.blamage = MathUtils.floor(tmp);
+ upgradeMagicNumber(-2);
}
}
diff --git a/src/main/java/gremlin/cards/ProperTools.java b/src/main/java/gremlin/cards/ProperTools.java
index e4a8099f4..c6f2d1412 100644
--- a/src/main/java/gremlin/cards/ProperTools.java
+++ b/src/main/java/gremlin/cards/ProperTools.java
@@ -1,5 +1,6 @@
package gremlin.cards;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
@@ -14,6 +15,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.ProperToolsAction;
+import guardian.cards.*;
import java.util.ArrayList;
@@ -45,10 +47,7 @@ public ProperTools()
this.baseDamage = POWER;
this.baseMagicNumber = MAGIC;
this.magicNumber = MAGIC;
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
- this.cardsToPreview = new Shiv();
+ MultiCardPreview.add(this, new Shiv(), new Ward());
this.tags.add(SNEAKY_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "ProperTools.png");
@@ -67,28 +66,8 @@ public void upgrade() {
{
upgradeName();
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
}
diff --git a/src/main/java/gremlin/cards/Rhythm.java b/src/main/java/gremlin/cards/Rhythm.java
index f0f69b297..8ac79a8f1 100644
--- a/src/main/java/gremlin/cards/Rhythm.java
+++ b/src/main/java/gremlin/cards/Rhythm.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
+import sneckomod.SneckoMod;
import java.util.List;
import java.util.function.Consumer;
@@ -31,6 +32,7 @@ public Rhythm()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
GremlinMod.loadJokeCardImage(this, "Rhythm.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m)
diff --git a/src/main/java/gremlin/cards/SecondVolley.java b/src/main/java/gremlin/cards/SecondVolley.java
index cec499d55..ae71d7cc8 100644
--- a/src/main/java/gremlin/cards/SecondVolley.java
+++ b/src/main/java/gremlin/cards/SecondVolley.java
@@ -26,7 +26,7 @@ public class SecondVolley extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 2;
- private static final int POWER = 6;
+ private static final int POWER = 4;
public SecondVolley()
{
@@ -89,6 +89,7 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
+ upgradeDamage(2);
this.rawDescription = strings.UPGRADE_DESCRIPTION;
initializeDescription();
this.cardsToPreview.upgrade();
diff --git a/src/main/java/gremlin/cards/ShankStone.java b/src/main/java/gremlin/cards/ShankStone.java
index 9774d16f9..0a3538493 100644
--- a/src/main/java/gremlin/cards/ShankStone.java
+++ b/src/main/java/gremlin/cards/ShankStone.java
@@ -19,7 +19,7 @@ public class ShankStone extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/shank_stone.png";
private static final AbstractCard.CardType TYPE = AbstractCard.CardType.SKILL;
- private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.NONE;
private static final int COST = -2;
diff --git a/src/main/java/gremlin/cards/ShowStopper.java b/src/main/java/gremlin/cards/ShowStopper.java
index 2bad36b60..473f65d95 100644
--- a/src/main/java/gremlin/cards/ShowStopper.java
+++ b/src/main/java/gremlin/cards/ShowStopper.java
@@ -27,7 +27,7 @@ public class ShowStopper extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 0;
- private static final int POWER = 0;
+ private static final int POWER = 3;
private static final int UPGRADE_BONUS = 2;
private static final int SHOWMANSHIP = 7;
@@ -36,7 +36,7 @@ public ShowStopper()
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
this.baseDamage = POWER;
-
+ this.magicNumber = this.baseMagicNumber = 5;
this.isMultiDamage = true;
this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(WIZARD_GREMLIN);
@@ -47,10 +47,9 @@ public ShowStopper()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new VFXAction(new GrandFinalEffect(), 1.0F));
- for(int i=0;i<5;i++) {
+ for(int i=0;i getStartingDeck() {
retVal.add("Gremlin:Defend");
retVal.add("Gremlin:Defend");
retVal.add("Gremlin:Defend");
+ //welp, rip "draw relic means additional cards in starter deck"
+ //retVal.add("Gremlin:Defend");
retVal.add("Gremlin:TagTeam");
retVal.add("Gremlin:GremlinDance");
return retVal;
diff --git a/src/main/java/gremlin/orbs/SneakyGremlin.java b/src/main/java/gremlin/orbs/SneakyGremlin.java
index 9050366ec..efd4af090 100644
--- a/src/main/java/gremlin/orbs/SneakyGremlin.java
+++ b/src/main/java/gremlin/orbs/SneakyGremlin.java
@@ -5,7 +5,7 @@
import gremlin.powers.SneakyGremlinPower;
public class SneakyGremlin extends GremlinStandby{
- public static final int DAMAGE = 3;
+ public static final int DAMAGE = 2;
public SneakyGremlin(int hp) {
super(hp, "Gremlin:SneakyGremlin", "sneak", "animation", 25);
@@ -13,7 +13,7 @@ public SneakyGremlin(int hp) {
@Override
public void updateDescription() {
- this.description = this.descriptions[0] + DAMAGE + this.descriptions[1];
+ this.description = this.descriptions[0] + DAMAGE + this.descriptions[1] + DAMAGE + this.descriptions[2];
}
@Override
diff --git a/src/main/java/gremlin/patches/CrippledPowerPatch.java b/src/main/java/gremlin/patches/CrippledPowerPatch.java
index 2a0253b40..973a50ad0 100644
--- a/src/main/java/gremlin/patches/CrippledPowerPatch.java
+++ b/src/main/java/gremlin/patches/CrippledPowerPatch.java
@@ -1,19 +1,19 @@
-package gremlin.patches;
-
-import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
-import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
-import com.megacrit.cardcrawl.powers.WeakPower;
-import gremlin.powers.CrippledPower;
-
-@SpirePatch(
- clz= WeakPower.class,
- method="atEndOfRound"
-)
-public class CrippledPowerPatch {
- public static SpireReturn Prefix(WeakPower __instance){
- if(__instance.owner.hasPower(CrippledPower.POWER_ID)){
- return SpireReturn.Return(null);
- }
- return SpireReturn.Continue();
- }
-}
+//package gremlin.patches;
+//
+//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+//import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
+//import com.megacrit.cardcrawl.powers.WeakPower;
+//import gremlin.powers.CrippledPower;
+//
+//@SpirePatch(
+// clz= WeakPower.class,
+// method="atEndOfRound"
+//)
+//public class CrippledPowerPatch {
+// public static SpireReturn Prefix(WeakPower __instance){
+// if(__instance.owner.hasPower(CrippledPower.POWER_ID)){
+// return SpireReturn.Return(null);
+// }
+// return SpireReturn.Continue();
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java b/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
index ef6722e1a..4995f647b 100644
--- a/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
+++ b/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
@@ -22,7 +22,15 @@ public static SpireReturn Insert() {
}
// Only rez 1
+ // a4 and under, full rez
+ // a5 and up, rez 2
if (((GremlinCharacter) AbstractDungeon.player).canRez()) {
+ if (AbstractDungeon.ascensionLevel < 5) {
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ }
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
}
diff --git a/src/main/java/gremlin/powers/CrippledPower.java b/src/main/java/gremlin/powers/CrippledPower.java
index 992aa9882..9acd83227 100644
--- a/src/main/java/gremlin/powers/CrippledPower.java
+++ b/src/main/java/gremlin/powers/CrippledPower.java
@@ -3,24 +3,28 @@
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.HealthBarRenderPower;
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.OnReceivePowerPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.unique.PoisonLoseHpAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import gremlin.GremlinMod;
-public class CrippledPower extends AbstractGremlinPower implements HealthBarRenderPower {
+public class CrippledPower extends AbstractGremlinPower implements OnReceivePowerPower {
public static final String POWER_ID = getID("Crippled");
private static final PowerStrings strings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
private static final Texture IMG = new Texture(GremlinMod.getResourcePath("powers/crippled.png"));
private AbstractCreature source;
- public CrippledPower(AbstractCreature owner, AbstractCreature source) {
+ public CrippledPower(AbstractCreature owner, AbstractCreature source, int amount) {
this.name = strings.NAME;
this.ID = POWER_ID;
this.owner = owner;
@@ -28,35 +32,21 @@ public CrippledPower(AbstractCreature owner, AbstractCreature source) {
this.img = IMG;
this.type = PowerType.DEBUFF;
- this.amount = -1;
+ this.amount = amount;
this.updateDescription();
}
- public void updateDescription()
- {
- this.description = strings.DESCRIPTIONS[0];
- }
-
- public void atEndOfTurn(boolean player) {
- if (!player) {
- if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT && !AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
- this.flashWithoutSound();
- AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.LoseHPAction(this.owner, this.source, getHealthBarAmount(), AbstractGameAction.AttackEffect.POISON));
- }
- }
+ public void updateDescription() {
+ this.description = strings.DESCRIPTIONS[0] + this.amount + strings.DESCRIPTIONS[1];
}
@Override
- public int getHealthBarAmount() {
- if (owner.hasPower(WeakPower.POWER_ID)) {
- return owner.getPower(WeakPower.POWER_ID).amount;
+ public boolean onReceivePower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if ((power instanceof WeakPower) && (target == this.owner) &&
+ (!target.hasPower("Artifact"))) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, amount, DamageInfo.DamageType.HP_LOSS), AbstractGameAction.AttackEffect.POISON));
}
- return 0;
- }
-
- @Override
- public Color getColor() {
- return Color.YELLOW;
+ return true;
}
}
diff --git a/src/main/java/gremlin/powers/ShadowShivPower.java b/src/main/java/gremlin/powers/ShadowShivPower.java
index 5b6dda159..35914a4fb 100644
--- a/src/main/java/gremlin/powers/ShadowShivPower.java
+++ b/src/main/java/gremlin/powers/ShadowShivPower.java
@@ -40,7 +40,7 @@ public void updateDescription()
@Override
public void onUseCard(final AbstractCard card, final UseCardAction action) {
if (card.type == AbstractCard.CardType.ATTACK && !card.exhaust) {
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Shiv(), this.amount));
+ AbstractDungeon.actionManager.addToTop(new MakeTempCardInHandAction(new Shiv(), this.amount));
this.flash();
}
}
diff --git a/src/main/java/gremlin/powers/SneakyGremlinPower.java b/src/main/java/gremlin/powers/SneakyGremlinPower.java
index cfff00c40..ecb1b5a69 100644
--- a/src/main/java/gremlin/powers/SneakyGremlinPower.java
+++ b/src/main/java/gremlin/powers/SneakyGremlinPower.java
@@ -22,7 +22,12 @@ public SneakyGremlinPower(int amount) {
}
public void updateDescription() {
- this.description = (strings.DESCRIPTIONS[0] + this.pot + strings.DESCRIPTIONS[1]);
+ this.description = (strings.DESCRIPTIONS[0] + this.pot + strings.DESCRIPTIONS[1] + this.pot + strings.DESCRIPTIONS[2]);
+ }
+
+ @Override
+ public float atDamageGive(float damage, DamageInfo.DamageType type, AbstractCard card) {
+ return super.atDamageGive(card.costForTurn == 0 ? damage + this.pot : damage, type, card);
}
@Override
@@ -33,4 +38,5 @@ public void onUseCard(final AbstractCard card, final UseCardAction action) {
AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
}
}
+
}
diff --git a/src/main/java/gremlin/powers/WizPower.java b/src/main/java/gremlin/powers/WizPower.java
index 9b1f8e51a..6ff480b3a 100644
--- a/src/main/java/gremlin/powers/WizPower.java
+++ b/src/main/java/gremlin/powers/WizPower.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.BufferPower;
import gremlin.GremlinMod;
import gremlin.relics.WizardHat;
import gremlin.relics.WizardStaff;
@@ -43,14 +44,24 @@ public void updateDescription()
@Override
public void onInitialApplication() {
- if(amount >= 3){
- if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
- {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10 + WizardStaff.OOMPH), 1));
- } else {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10), 1));
+ if(amount >= 3) {
+ if(!this.owner.hasPower(BangPower.POWER_ID)) {
+ if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
+ {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
+ new BangPower(this.owner, 7 + WizardStaff.OOMPH + buf), 1));
+ } else {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
+ new BangPower(this.owner, 7 + buf), 1));
+ }
}
}
}
@@ -58,15 +69,23 @@ public void onInitialApplication() {
@Override
public void stackPower(int stackAmount) {
super.stackPower(stackAmount);
- if(amount >= 3){
+ if(amount >= 3) {
if(!this.owner.hasPower(BangPower.POWER_ID)) {
if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
{
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10 + WizardStaff.OOMPH), 1));
+ new BangPower(this.owner, 7 + WizardStaff.OOMPH + buf), 1));
} else {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10), 1));
+ new BangPower(this.owner, 7 + buf), 1));
}
}
}
@@ -74,9 +93,9 @@ public void stackPower(int stackAmount) {
@Override
public void onRemove() {
- if(this.owner.hasPower(EncorePower.POWER_ID)){
- this.owner.getPower(EncorePower.POWER_ID).onSpecificTrigger();
- }
+ // if(this.owner.hasPower(EncorePower.POWER_ID)){
+ // this.owner.getPower(EncorePower.POWER_ID).onSpecificTrigger();
+ // }
if(AbstractDungeon.player.hasRelic(WizardHat.ID)) {
AbstractDungeon.player.getRelic(WizardHat.ID).onTrigger();
}
diff --git a/src/main/java/gremlin/relics/FragmentationGrenade.java b/src/main/java/gremlin/relics/FragmentationGrenade.java
index 8615c3958..b67b2d83c 100644
--- a/src/main/java/gremlin/relics/FragmentationGrenade.java
+++ b/src/main/java/gremlin/relics/FragmentationGrenade.java
@@ -1,5 +1,6 @@
package gremlin.relics;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.RelicStrings;
import com.megacrit.cardcrawl.relics.AbstractRelic;
@@ -7,7 +8,7 @@
public class FragmentationGrenade extends AbstractGremlinRelic {
public static final String ID = getID("FragmentationGrenade");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.COMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
private static final String IMG = "relics/fragmentation_grenade.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.CLINK;
@@ -17,6 +18,10 @@ public FragmentationGrenade() {
super(ID, IMG, TIER, SOUND);
}
+// public float atDamageModify(float damage, AbstractCard c) {
+// return c.costForTurn != 0 && (!c.freeToPlayOnce || c.cost == -1) ? damage : damage + 2.0F;
+// }
+
@Override
public String getUpdatedDescription() {
return strings.DESCRIPTIONS[0] + OOMPH + strings.DESCRIPTIONS[1];
diff --git a/src/main/java/gremlin/relics/ImpeccablePecs.java b/src/main/java/gremlin/relics/ImpeccablePecs.java
index 8e1e1edb5..5139244d8 100644
--- a/src/main/java/gremlin/relics/ImpeccablePecs.java
+++ b/src/main/java/gremlin/relics/ImpeccablePecs.java
@@ -22,7 +22,10 @@ public ImpeccablePecs() {
super(ID, IMG, TIER, SOUND);
}
- //TODO Rework this Relic at some point
+ // Rework this Relic at some point
+ // I mean I also want to rework this, it's very weird
+ // Removed to-do, made grems exclusive instead. Not worth the effort.
+
@Override
public String getUpdatedDescription() {
diff --git a/src/main/java/gremlin/relics/StolenMerchandise.java b/src/main/java/gremlin/relics/StolenMerchandise.java
index b012b6f19..49e9971c8 100644
--- a/src/main/java/gremlin/relics/StolenMerchandise.java
+++ b/src/main/java/gremlin/relics/StolenMerchandise.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.RelicStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.ending.CorruptHeart;
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import downfall.monsters.FleeingMerchant;
@@ -50,7 +51,7 @@ public void onGremlinSwap() {
public void atBattleStart() {
for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
if (!mo.isDeadOrEscaped()) {
- if (mo instanceof FleeingMerchant || mo instanceof CharBossMerchant) {
+ if (mo instanceof FleeingMerchant || mo instanceof CharBossMerchant || mo instanceof CorruptHeart) {
flash();
addToBot(new RelicAboveCreatureAction(mo, this));
AbstractDungeon.actionManager.addToBottom(
diff --git a/src/main/java/gremlin/relics/SupplyScroll.java b/src/main/java/gremlin/relics/SupplyScroll.java
index a62d0f98d..2512d2619 100644
--- a/src/main/java/gremlin/relics/SupplyScroll.java
+++ b/src/main/java/gremlin/relics/SupplyScroll.java
@@ -36,7 +36,7 @@ public void atTurnStart() {
if (this.counter == 3) {
this.flash();
this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- addToBot(new GainEnergyAction(1));
+ addToBot(new GainEnergyAction(2));
addToBot(new DrawCardAction(2));
this.counter = -1;
diff --git a/src/main/java/gremlin/relics/WizardHat.java b/src/main/java/gremlin/relics/WizardHat.java
index 7531fd91d..73cbbb040 100644
--- a/src/main/java/gremlin/relics/WizardHat.java
+++ b/src/main/java/gremlin/relics/WizardHat.java
@@ -9,7 +9,7 @@
public class WizardHat extends AbstractGremlinRelic {
public static final String ID = getID("WizardHat");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.RARE;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
private static final String IMG = "relics/wizard_hat.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.MAGICAL;
diff --git a/src/main/java/gremlin/relics/WizardStaff.java b/src/main/java/gremlin/relics/WizardStaff.java
index 6d45c8d26..7ca7d878f 100644
--- a/src/main/java/gremlin/relics/WizardStaff.java
+++ b/src/main/java/gremlin/relics/WizardStaff.java
@@ -7,7 +7,7 @@
public class WizardStaff extends AbstractGremlinRelic {
public static final String ID = getID("WizardStaff");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.RARE;
private static final String IMG = "relics/wizard_staff.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.MAGICAL;
diff --git a/src/main/java/gremlin/relics/WoundPoker.java b/src/main/java/gremlin/relics/WoundPoker.java
index 7635e5192..3fa4c71f4 100644
--- a/src/main/java/gremlin/relics/WoundPoker.java
+++ b/src/main/java/gremlin/relics/WoundPoker.java
@@ -13,11 +13,11 @@
public class WoundPoker extends AbstractGremlinRelic {
public static final String ID = getID("WoundPoker");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.COMMON;
private static final String IMG = "relics/wound_poker.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.CLINK;
- public static final int OOMPH = 6;
+ public static final int OOMPH = 4;
public WoundPoker() {
super(ID, IMG, TIER, SOUND);
diff --git a/src/main/java/guardian/GuardianMod.java b/src/main/java/guardian/GuardianMod.java
index 291d77455..3ad25d789 100644
--- a/src/main/java/guardian/GuardianMod.java
+++ b/src/main/java/guardian/GuardianMod.java
@@ -157,7 +157,7 @@ public class GuardianMod implements PostDrawSubscriber,
private CustomUnlockBundle unlocks4;
- //TODO - content sharing if needed
+ //removed to-do due to content sharing being handled elsewhere
/*
public static Properties slimeboundDefault = new Properties();
public static boolean contentSharing_relics = true;
@@ -185,7 +185,7 @@ public GuardianMod() {
getResourcePath(ATTACK_CARD_PORTRAIT), getResourcePath(SKILL_CARD_PORTRAIT),
getResourcePath(POWER_CARD_PORTRAIT), getResourcePath(ENERGY_ORB_PORTRAIT), getResourcePath(CARD_ENERGY_ORB));
- //TODO - Part of Settings
+ //Part of Settings
/*
slimeboundDefault.setProperty(PROP_EVENT_SHARING, "FALSE");
slimeboundDefault.setProperty(PROP_RELIC_SHARING, "FALSE");
@@ -324,43 +324,19 @@ public static String getModID() {
}
- public static AbstractCard getSingleRewardGemWithWeight() {
- AbstractCard.CardRarity gem_rarity = AbstractDungeon.rollRarity();
- ArrayList gems = new ArrayList<>();
- gems.add(new Gem_Red());
- gems.add(new Gem_Blue());
- gems.add(new Gem_Green());
- gems.add(new Gem_Lightblue());
- gems.add(new Gem_Yellow());
- gems.add(new Gem_Purple());
- gems.add(new Gem_Fragmented());
- gems.add(new Gem_Crimson());
- gems.add(new Gem_White());
- gems.add(new Gem_Cyan());
- gems.add(new Gem_Orange());
- gems.add(new Gem_Synthetic());
- int i = AbstractDungeon.cardRng.random(gems.size()-1);
- while(gems.get(i).rarity != gem_rarity){
- i = AbstractDungeon.cardRng.random(gems.size()-1);
- }
- return gems.get(i);
- }
-
-
public static ArrayList getRewardGemCards(boolean onlyCommon, int count) {
ArrayList allGemCards = new ArrayList<>();
ArrayList rewardGemCards = new ArrayList<>();
allGemCards.add("RED");
- allGemCards.add("GREEN");
allGemCards.add("LIGHTBLUE");
- allGemCards.add("BLUE");
-
+ allGemCards.add("FRAGMENTED");
if (!onlyCommon) allGemCards.add("ORANGE");
if (!onlyCommon) allGemCards.add("CYAN");
if (!onlyCommon) allGemCards.add("WHITE");
+ allGemCards.add("BLUE");
if (!onlyCommon) allGemCards.add("CRIMSON");
- if (!onlyCommon) allGemCards.add("FRAGMENTED");
+ if (!onlyCommon) allGemCards.add("GREEN");
if (!onlyCommon) allGemCards.add("PURPLE");
if (!onlyCommon) allGemCards.add("SYNTHETIC");
if (!onlyCommon) allGemCards.add("YELLOW");
@@ -447,7 +423,7 @@ public static boolean canSpawnStasisOrb() {
return false;
}
- //TODO - Part of shared relics
+ //Part of shared relics
/*
public void addSharedRelics(){
if (contentSharing_relics){
@@ -562,7 +538,7 @@ public void receiveSetUnlocks() {
FierceBash.ID,
ChargeUp.ID,
- GemFire.ID,
+ ShieldSpikes.ID,
GemFinder.ID,
StasisEngine.ID,
@@ -594,6 +570,7 @@ public void receiveEditRelics() {
BaseMod.addRelicToCustomPool(new StasisUpgradeRelic(), AbstractCardEnum.GUARDIAN);
BaseMod.addRelicToCustomPool(new guardian.relics.StasisEgg(), AbstractCardEnum.GUARDIAN);
BaseMod.addRelicToCustomPool(new guardian.relics.PickAxe(), AbstractCardEnum.GUARDIAN);
+ BaseMod.addRelicToCustomPool(new guardian.relics.ObsidianScales(), AbstractCardEnum.GUARDIAN);
BaseMod.registerBottleRelic(BottledStasisPatch.inStasisEgg, new guardian.relics.StasisEgg());
BaseMod.addRelic(new GemstoneGun(), RelicType.SHARED);
BaseMod.addRelic(new PocketSentry(), RelicType.SHARED);
@@ -675,7 +652,7 @@ public void receiveEditCards() {
BaseMod.addCard(new RefractedBeam());
BaseMod.addCard(new SpikerProtocol());
//BaseMod.addCard(new ArmoredProtocol());
- BaseMod.addCard(new ArmoredProtocol());
+ BaseMod.addCard(new Metallicize());
BaseMod.addCard(new StrikeForStrike());
BaseMod.addCard(new EvasiveProtocol());
BaseMod.addCard(new TimeSifter());
@@ -898,7 +875,9 @@ public void receivePostInitialize() {
//Act
.dungeonID(TheBeyond.ID)
//Only in Evil if content sharing is disabled
- .spawnCondition(() -> (evilMode || downfallMod.contentSharing_events))
+ //This is a guardian exclusive event that doesn't overwrite anything, it should appear in standard even without content sharing
+ .spawnCondition(() -> (1==1))
+ // .spawnCondition(() -> (evilMode || downfallMod.contentSharing_events))
.create());
BaseMod.addEvent(new AddEventParams.Builder(CrystalForge.ID, CrystalForge.class) //Event ID//
//Event Character//
@@ -1080,7 +1059,7 @@ public void receivePostCreateStartingDeck(AbstractPlayer.PlayerClass playerClass
AbstractGemCard starter_gem = (AbstractGemCard) GuardianMod.getRewardGemCards(true, 1).get(0).makeStatEquivalentCopy();
cardGroup.addToTop(starter_gem);
// this adds the real save&load friendly gem on floor 0, sentences below enable the
- // show-card-and-card-flies-to-deck visual effect, by adding a dummy card and remove it instantly
+ // show-card-and-card-flies-to-deck visual effect ,by adding a dummy card and remove it instantly
AbstractGemCard dummy_starter_gem_to_be_removed = (AbstractGemCard) starter_gem.makeStatEquivalentCopy();
AbstractDungeon.effectList.add(new AddGemToStartingDeckEffect(dummy_starter_gem_to_be_removed, (Settings.WIDTH * 0.5F), (Settings.HEIGHT * 0.5F)));
diff --git a/src/main/java/guardian/actions/BraceAction.java b/src/main/java/guardian/actions/BraceAction.java
index 8c6aacdf9..8544a880c 100644
--- a/src/main/java/guardian/actions/BraceAction.java
+++ b/src/main/java/guardian/actions/BraceAction.java
@@ -55,7 +55,4 @@ public void update() {
}
this.isDone = true;
}
-}
-
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/actions/BraceWallopAction.java b/src/main/java/guardian/actions/BraceWallopAction.java
new file mode 100644
index 000000000..3ebec1fdb
--- /dev/null
+++ b/src/main/java/guardian/actions/BraceWallopAction.java
@@ -0,0 +1,46 @@
+package guardian.actions;
+
+import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import static guardian.cards.AbstractGuardianCard.brace;
+
+
+//thorton code
+public class BraceWallopAction extends AbstractGameAction {
+ private int damage;
+
+ public BraceWallopAction(AbstractCreature target, AbstractCreature source, int amount, DamageInfo.DamageType type, AbstractGameAction.AttackEffect effect) {
+ setValues(target, source, amount);
+ this.damage = amount;
+ this.actionType = AbstractGameAction.ActionType.DAMAGE;
+ this.damageType = type;
+ this.attackEffect = effect;
+ }
+
+ public void update() {
+ if (this.duration == 0.5F)
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, this.attackEffect));
+ tickDuration();
+ if (this.isDone) {
+ braceattack();
+ this.target.damage(new DamageInfo(this.source, this.damage, this.damageType));
+ if (AbstractDungeon.getMonsters().areMonstersBasicallyDead())
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ AbstractDungeon.actionManager.addToTop((AbstractGameAction) new WaitAction(0.1F));
+ }
+ }
+
+ private void braceattack() {
+ int tmp = this.damage;
+ tmp -= this.target.currentBlock;
+ if (tmp > this.target.currentHealth)
+ tmp = this.target.currentHealth;
+ if (tmp > 0)
+ brace(tmp);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/actions/CompilePackageAction.java b/src/main/java/guardian/actions/CompilePackageAction.java
index 1db793e3b..d9b9ea5b6 100644
--- a/src/main/java/guardian/actions/CompilePackageAction.java
+++ b/src/main/java/guardian/actions/CompilePackageAction.java
@@ -39,13 +39,7 @@ public void update() {
disCard.current_x = -1000.0F * Settings.scale;
AbstractGuardianCard disG = (AbstractGuardianCard) disCard;
disG.flipPreviewMode = true;
- if (AbstractDungeon.player.hand.size() < 10) {
- AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- } else {
- AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- }
-
-
+ AbstractDungeon.actionManager.addToBottom(new PlaceActualCardIntoStasis(disCard));
AbstractDungeon.cardRewardScreen.discoveryCard = null;
}
diff --git a/src/main/java/guardian/actions/GemFireAction.java b/src/main/java/guardian/actions/GemFireAction.java
index 015dd22ce..968ce5ab9 100644
--- a/src/main/java/guardian/actions/GemFireAction.java
+++ b/src/main/java/guardian/actions/GemFireAction.java
@@ -38,34 +38,34 @@ public class GemFireAction extends AbstractGameAction {
private int exhaustCount;
private ArrayList shots = new ArrayList<>();
- public GemFireAction(AbstractCreature target, DamageInfo info) {
+ public GemFireAction(AbstractCreature target) {
this.info = info;
this.setValues(target, info);
this.actionType = ActionType.WAIT;
this.attackEffect = AttackEffect.FIRE;
this.startingDuration = Settings.ACTION_DUR_FAST;
this.duration = this.startingDuration;
+ this.target = target;
}
- public class GemShootEffect extends AbstractGameEffect {
+ public static class GemShootEffect extends AbstractGameEffect {
private GuardianMod.socketTypes gem;
private float x1, y1, x2, y2, x3, y3, sX, sY, scaleX, scaleY;
private Color glowColor;
- public GemShootEffect(GuardianMod.socketTypes gem, int hitNo) {
+ public GemShootEffect(GuardianMod.socketTypes gem, int hitNo, AbstractCreature target, int total) {
this.gem = gem;
this.color = Color.WHITE.cpy();
this.duration = this.startingDuration = Settings.FAST_MODE
- ? (1.0f + Settings.ACTION_DUR_XFAST * exhaustCount)
- : (1.0f + Settings.ACTION_DUR_FAST * exhaustCount);
+ ? (1.0f + Settings.ACTION_DUR_XFAST * total)
+ : (1.0f + Settings.ACTION_DUR_FAST * total);
this.duration += hitNo * (Settings.FAST_MODE ? 0.1 : 0.2);
sX = x1 = AbstractDungeon.player.hb.cX - AbstractDungeon.player.animX;
sY = y1 = AbstractDungeon.player.hb.cY - AbstractDungeon.player.animY;
float theta = MathUtils.random(-1.0f, 1.0f);
x2 = x1 + MathUtils.sin(theta) * 200 * Settings.xScale;
y2 = y1 + MathUtils.cos(theta) * 200 * Settings.yScale;
- AbstractMonster target = AbstractDungeon.getMonsters().getRandomMonster((AbstractMonster)null, true, AbstractDungeon.cardRandomRng);
if (target == null) {
x3 = Settings.WIDTH * 2;
y3 = Settings.HEIGHT / 2f + MathUtils.random(-100f, 100f) * Settings.yScale;
@@ -110,7 +110,7 @@ public void render(SpriteBatch sb) {
@Override
public void update() {
- float deployed = this.startingDuration - 0.25f;
+ float deployed = this.startingDuration - 0.05f;
this.duration -= Gdx.graphics.getDeltaTime();
this.rotation = this.duration * 1080.0f;
@@ -148,9 +148,7 @@ public class GemFireDamageAction extends AbstractGameAction {
@Override
public void update() {
if (this.duration == this.startDuration) {
- for (GuardianMod.socketTypes socket : shots) {
- addToTop(new DamageRandomEnemyAction(info, AttackEffect.SLASH_DIAGONAL));
- }
+ //addToTop(new DamageRandomEnemyAction(info, AttackEffect.SLASH_DIAGONAL));
this.duration = 0.0f;
this.isDone = true;
}
@@ -159,18 +157,18 @@ public void update() {
public int get_cards(){
addGemsFromGroup(AbstractDungeon.player.hand);
-// addGemsFromGroup(AbstractDungeon.player.drawPile);
-// addGemsFromGroup(AbstractDungeon.player.discardPile);
-// addGemsFromGroup(this.gatherStasisCards());
+ addGemsFromGroup(AbstractDungeon.player.drawPile);
+ addGemsFromGroup(AbstractDungeon.player.discardPile);
+ addGemsFromGroup(this.gatherStasisCards());
return exhaustCount;
}
public void update() {
if (this.duration == this.startingDuration) {
- addToTop(new GemFireDamageAction());
+ //addToTop(new GemFireDamageAction());
addToTop(new AbstractGameAction() {
- { duration = 0.5f; }
+ { duration = 0.1f; }
@Override
public void update() {
tickDuration();
@@ -179,7 +177,7 @@ public void update() {
this.get_cards();
int i = 0;
for (GuardianMod.socketTypes socket : shots) {
- AbstractDungeon.effectsQueue.add(new GemShootEffect(socket, i++));
+ // AbstractDungeon.effectsQueue.add(new GemShootEffect(socket, i++, target));
}
}
@@ -226,7 +224,7 @@ private void addGemsFromGroup(CardGroup group) {
}
private void exhaustCard(CardGroup group, AbstractCard c) {
- addToTop(new ExhaustGemAction(c, group, exhaustCount));
+ // addToTop(new ExhaustGemAction(c, group, exhaustCount));
}
public class ExhaustGemAction extends AbstractGameAction {
diff --git a/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java b/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
index 2466d1932..89d23be0f 100644
--- a/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
+++ b/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
@@ -30,13 +30,14 @@ public PlaceCardsInHandIntoStasisAction(AbstractCreature source, int amount, boo
public void update() {
if (this.duration == 0.5F) {
// removing Ethereal cards for Future Plans for consistency with similar affects.
+ // deprecated ethereal override
if (this.endOfTurn) {
ArrayList toMove = new ArrayList<>();
toMove.addAll(AbstractDungeon.player.hand.group);
for (AbstractCard c : toMove) {
if (c.isEthereal) {
- AbstractDungeon.player.hand.removeCard(c);
- invalidTargets.add(c);
+ // AbstractDungeon.player.hand.removeCard(c);
+ // invalidTargets.add(c);
}
}
diff --git a/src/main/java/guardian/actions/PolyBeamAction.java b/src/main/java/guardian/actions/PolyBeamAction.java
index 7a31f8440..8e96609d0 100644
--- a/src/main/java/guardian/actions/PolyBeamAction.java
+++ b/src/main/java/guardian/actions/PolyBeamAction.java
@@ -38,8 +38,8 @@ public void update() {
AbstractDungeon.topLevelEffects.add(new SmallLaserEffect(this.target.hb.cX + (randoX * Settings.scale), this.target.hb.cY + (randoY * Settings.scale), AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY));
AbstractDungeon.topLevelEffects.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, this.attackEffect));
- this.card.calculateCardDamage((AbstractMonster)this.target);
- addToTop(new PseudoDamageRandomEnemyAction(target, new DamageInfo(AbstractDungeon.player, this.card.damage, this.card.damageTypeForTurn)));
+ // this.card.calculateCardDamage((AbstractMonster)this.target);
+ // addToTop(new PseudoDamageRandomEnemyAction(target, new DamageInfo(AbstractDungeon.player, this.card.damage, this.card.damageTypeForTurn)));
}
this.isDone = true;
}
diff --git a/src/main/java/guardian/cards/AbstractGemCard.java b/src/main/java/guardian/cards/AbstractGemCard.java
index e9270b222..7ea3ac2e3 100644
--- a/src/main/java/guardian/cards/AbstractGemCard.java
+++ b/src/main/java/guardian/cards/AbstractGemCard.java
@@ -1,43 +1,43 @@
-package guardian.cards;
-
-import basemod.BaseMod;
-import basemod.helpers.TooltipInfo;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import downfall.downfallMod;
-import guardian.GuardianMod;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class AbstractGemCard extends AbstractGuardianCard {
- //private String[] descriptorStrings = CardCrawlGame.languagePack.getUIString(GuardianMod.makeID("gemDescriptor")).TEXT;
-
- public AbstractGemCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target) {
- super(id, name, img, cost, rawDescription, type, color, rarity, target);
- /*
- if (downfallMod.disableDescriptors && !this.rawDescription.contains(descriptorStrings[1])) {
- //If zht & zhs & kor need/needn't add in end you can add there if()
- this.rawDescription = descriptorStrings[1] + this.rawDescription;
- initializeDescription();
- }
- }
-
- @Override
- public List getCardDescriptors() {
- List tags = new ArrayList<>();
- if (!downfallMod.disableDescriptors) {
- tags.add(descriptorStrings[0]);
- }
- return tags;
- }
-
- @Override
- public List getCustomTooltipsTop() {
- List tips = new ArrayList<>();
- if (!downfallMod.disableDescriptors && !keywords.contains(("guardianmod:" + descriptorStrings[0]).toLowerCase())) {
- tips.add(new TooltipInfo(BaseMod.getKeywordTitle("guardianmod:gem"), BaseMod.getKeywordDescription("guardianmod:gem")));
- }
- return tips;
- */
- }
-}
+package guardian.cards;
+
+import basemod.BaseMod;
+import basemod.helpers.TooltipInfo;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import downfall.downfallMod;
+import guardian.GuardianMod;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractGemCard extends AbstractGuardianCard {
+ //private String[] descriptorStrings = CardCrawlGame.languagePack.getUIString(GuardianMod.makeID("gemDescriptor")).TEXT;
+
+ public AbstractGemCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target) {
+ super(id, name, img, cost, rawDescription, type, color, rarity, target);
+ /*
+ if (downfallMod.disableDescriptors && !this.rawDescription.contains(descriptorStrings[1])) {
+ //If zht & zhs & kor need/needn't add in end you can add there if()
+ this.rawDescription = descriptorStrings[1] + this.rawDescription;
+ initializeDescription();
+ }
+ }
+
+ @Override
+ public List getCardDescriptors() {
+ List tags = new ArrayList<>();
+ if (!downfallMod.disableDescriptors) {
+ tags.add(descriptorStrings[0]);
+ }
+ return tags;
+ }
+
+ @Override
+ public List getCustomTooltipsTop() {
+ List tips = new ArrayList<>();
+ if (!downfallMod.disableDescriptors && !keywords.contains(("guardianmod:" + descriptorStrings[0]).toLowerCase())) {
+ tips.add(new TooltipInfo(BaseMod.getKeywordTitle("guardianmod:gem"), BaseMod.getKeywordDescription("guardianmod:gem")));
+ }
+ return tips;
+ */
+ }
+}
diff --git a/src/main/java/guardian/cards/AncientConstruct.java b/src/main/java/guardian/cards/AncientConstruct.java
index 3db29c8da..a3800f504 100644
--- a/src/main/java/guardian/cards/AncientConstruct.java
+++ b/src/main/java/guardian/cards/AncientConstruct.java
@@ -56,7 +56,7 @@ public AncientConstruct() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.BorderFlashEffect(com.badlogic.gdx.graphics.Color.GOLD, true));
- if (upgraded) AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, 2), 2));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, 1), 1));
//AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p,this.magicNumber)));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ConstructPower(p, p, this.magicNumber), this.magicNumber));
@@ -71,7 +71,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-
+ upgradeBaseCost(2);
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
diff --git a/src/main/java/guardian/cards/ArmoredProtocol.java b/src/main/java/guardian/cards/ArmoredProtocol.java
index c23dc86a7..a0ced8543 100644
--- a/src/main/java/guardian/cards/ArmoredProtocol.java
+++ b/src/main/java/guardian/cards/ArmoredProtocol.java
@@ -17,23 +17,27 @@
import guardian.powers.ArmoredProtocolPower;
import guardian.powers.DontLeaveDefensiveModePower;
+@Deprecated
public class ArmoredProtocol extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("ArmoredProtocol");
public static final String NAME;
public static final String DESCRIPTION;
- public static final String IMG_PATH = "cards/Metallicize.png";
+ public static final String IMG_PATH = "cards/armoredScales.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 1;
- private static final int METALLICIZE = 4;
+ //TUNING CONSTANTS
+ private static final int METALLICIZE = 5;
private static final int SOCKETS = 0;
private static final int BRACE_PER_TURN = 3;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
@@ -54,6 +58,7 @@ public ArmoredProtocol() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArmoredProtocolPower(p, magicNumber)));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
}
public AbstractCard makeCopy() {
@@ -63,20 +68,19 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(0);
-// upgradeMagicNumber(3);
+ upgradeMagicNumber(3);
}
}
public void updateDescription() {
-//
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
}
diff --git a/src/main/java/guardian/cards/BaubleBeam.java b/src/main/java/guardian/cards/BaubleBeam.java
index 06419d751..b4a995ef3 100644
--- a/src/main/java/guardian/cards/BaubleBeam.java
+++ b/src/main/java/guardian/cards/BaubleBeam.java
@@ -63,7 +63,7 @@ public BaubleBeam() {
this.socketCount = SOCKETS;
updateDescription();
loadGemMisc();
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("BaubleBeam.png"));
}
diff --git a/src/main/java/guardian/cards/BodySlam.java b/src/main/java/guardian/cards/BodySlam.java
index 877282d18..f760ace71 100644
--- a/src/main/java/guardian/cards/BodySlam.java
+++ b/src/main/java/guardian/cards/BodySlam.java
@@ -1,7 +1,11 @@
package guardian.cards;
+import basemod.helpers.BaseModCardTags;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -9,6 +13,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.actions.BraceAction;
import guardian.patches.AbstractCardEnum;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -17,7 +22,7 @@
public class BodySlam extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("BodySlam");
public static final String NAME;
- public static final String IMG_PATH = "cards/BodySlam.png";
+ public static final String IMG_PATH = "cards/bodySlam.png";
private static final CardType TYPE = CardType.ATTACK;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.ENEMY;
@@ -27,6 +32,8 @@ public class BodySlam extends AbstractGuardianCard {
public static String DESCRIPTION;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
diff --git a/src/main/java/guardian/cards/BronzeOrb.java b/src/main/java/guardian/cards/BronzeOrb.java
index 088be4808..18d2fcb40 100644
--- a/src/main/java/guardian/cards/BronzeOrb.java
+++ b/src/main/java/guardian/cards/BronzeOrb.java
@@ -1,6 +1,7 @@
package guardian.cards;
+import collector.powers.DoomPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
@@ -8,15 +9,18 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.actions.BraceWallopAction;
import guardian.actions.PlaceRandomCardIntoStasisAction;
import guardian.patches.AbstractCardEnum;
import guardian.vfx.BronzeOrbEffect;
+import static collector.util.Wiz.applyToEnemy;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -28,11 +32,11 @@ public class BronzeOrb extends AbstractGuardianCard {
private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.ENEMY;
private static final CardStrings cardStrings;
- private static final int COST = 0;
- private static final int DAMAGE = 8;
+ private static final int COST = 2;
+ private static final int DAMAGE = 9;
//TUNING CONSTANTS
- private static final int UPGRADE_DAMAGE = 4;
+ private static final int UPGRADE_DAMAGE = 3;
private static final int BLOCK = 5;
private static final int UPGRADE_BLOCK = 2;
private static final int SOCKETS = 0;
@@ -54,10 +58,10 @@ public BronzeOrb() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.baseDamage = DAMAGE;
- // this.baseBlock = BLOCK;
+ // this.baseBlock = BLOCK;
//this.sockets.add(GuardianMod.socketTypes.RED);
- this.isInnate = true;
+ // this.isInnate = true;
this.exhaust = true;
this.socketCount = SOCKETS;
this.tags.add(GuardianMod.BEAM);
@@ -67,24 +71,13 @@ public BronzeOrb() {
}
- @Override
- public float calculateModifiedCardDamage(AbstractPlayer player, AbstractMonster mo, float tmp) {
- return tmp + calculateBeamDamage();
- }
-
- @Override
- public float calculateModifiedCardDamage(AbstractPlayer player, float tmp) {
- return tmp + calculateBeamDamage();
- }
-
-
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
+
AbstractDungeon.actionManager.addToBottom(new VFXAction(new BronzeOrbEffect(p, m), 0.5F));
- AbstractDungeon.actionManager.addToBottom(new PlaceRandomCardIntoStasisAction(1));
- // AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new BraceWallopAction((AbstractCreature)m, (AbstractCreature)p, this.damage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.FIRE));
+
this.useGems(p, m);
}
@@ -96,23 +89,8 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
upgradeDamage(UPGRADE_DAMAGE);
- // upgradeBlock(UPGRADE_BLOCK);
+ // upgradeBlock(UPGRADE_BLOCK);
}
-
-
- }
-
- public void updateDescription() {
-
- if (this.socketCount > 0) {
- if (upgraded && UPGRADED_DESCRIPTION != null) {
- this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
- } else {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
- }
- }
- this.initializeDescription();
}
}
-
diff --git a/src/main/java/guardian/cards/ChargeUp.java b/src/main/java/guardian/cards/ChargeUp.java
index bdd07338a..6216f705f 100644
--- a/src/main/java/guardian/cards/ChargeUp.java
+++ b/src/main/java/guardian/cards/ChargeUp.java
@@ -23,7 +23,7 @@ public ChargeUp() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.GUARDIAN, CardRarity.COMMON, CardTarget.SELF);
this.baseBlock = 7;
this.baseMagicNumber = this.magicNumber = 2;
- this.socketCount = 0;
+ this.socketCount = 1;
updateDescription();
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("ChargeUp.png"));
diff --git a/src/main/java/guardian/cards/CompilePackage.java b/src/main/java/guardian/cards/CompilePackage.java
index a7d2a919f..a4732937b 100644
--- a/src/main/java/guardian/cards/CompilePackage.java
+++ b/src/main/java/guardian/cards/CompilePackage.java
@@ -1,10 +1,13 @@
package guardian.cards;
+import automaton.FunctionHelper;
import automaton.cards.Batch;
import automaton.cards.Debug;
import automaton.cards.Decompile;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.math.Interpolation;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -41,12 +44,14 @@ public class CompilePackage extends AbstractGuardianCard {
private float rotationTimer;
private int previewIndex;
private ArrayList cardsList = new ArrayList<>();
+ public static final String[] TEXT;
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
DESCRIPTION = cardStrings.DESCRIPTION;
UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+ TEXT = CardCrawlGame.languagePack.getUIString("Guardian:UIOptions").TEXT;
}
public CompilePackage() {
@@ -57,6 +62,8 @@ public CompilePackage() {
updateDescription();
loadGemMisc();
+ //cardsList.add(new PackageDefect());
+
cardsList.add(new PackageDefect());
cardsList.add(new PackageWalker());
cardsList.add(new PackageSphere());
@@ -64,6 +71,7 @@ public CompilePackage() {
cardsList.add(new PackageSentry());
cardsList.add(new PackageDonuDeca());
cardsList.add(new PackageAutomaton());
+ //MultiCardPreview.add(this, new PackageDefect(), new PackageWalker(), new PackageSphere(), new PackageShapes(), new PackageSentry(), new PackageDonuDeca(), new PackageAutomaton());
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("CompilePackage.png"));
}
@@ -84,12 +92,16 @@ public void upgrade() {
upgradeName();
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
- for(AbstractCard c:cardsList){
- c.upgrade();
- }
+ MultiCardPreview.multiCardPreview.get(this).forEach(AbstractCard::upgrade);
}
}
+ @Override
+ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ this.cantUseMessage = TEXT[5];
+ return AbstractDungeon.player.hasEmptyOrb();
+ }
+
public void updateDescription() {
if (this.socketCount > 0) {
@@ -124,6 +136,4 @@ public void update() {
}
}
}
-}
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/cards/CrystalBeam.java b/src/main/java/guardian/cards/CrystalBeam.java
index 3a1c8442b..1e86fdb66 100644
--- a/src/main/java/guardian/cards/CrystalBeam.java
+++ b/src/main/java/guardian/cards/CrystalBeam.java
@@ -122,6 +122,7 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/CrystalShiv.java b/src/main/java/guardian/cards/CrystalShiv.java
index 194af614c..de728b459 100644
--- a/src/main/java/guardian/cards/CrystalShiv.java
+++ b/src/main/java/guardian/cards/CrystalShiv.java
@@ -24,7 +24,7 @@ public class CrystalShiv extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.ENEMY;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int DAMAGE = 4;
+ private static final int DAMAGE = 3;
//TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/guardian/cards/CrystalWard.java b/src/main/java/guardian/cards/CrystalWard.java
index 346776724..505fe9316 100644
--- a/src/main/java/guardian/cards/CrystalWard.java
+++ b/src/main/java/guardian/cards/CrystalWard.java
@@ -23,7 +23,7 @@ public class CrystalWard extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int BLOCK = 3;
+ private static final int BLOCK = 4;
//TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/guardian/cards/DonusPower.java b/src/main/java/guardian/cards/DonusPower.java
index b1a81239b..ed2620a11 100644
--- a/src/main/java/guardian/cards/DonusPower.java
+++ b/src/main/java/guardian/cards/DonusPower.java
@@ -49,7 +49,7 @@ public class DonusPower extends AbstractGuardianCard {
public DonusPower() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
- baseMagicNumber = magicNumber = 4;
+ baseMagicNumber = magicNumber = 2;
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("DonusPower.png"));
}
@@ -57,10 +57,7 @@ public DonusPower() {
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new DrawCardAction(magicNumber));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DrawLessNextTurnPower(2), 2));
- if (upgraded){
- AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, 1));
- }
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, 1));
}
public AbstractCard makeCopy() {
@@ -70,8 +67,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- this.rawDescription = UPGRADED_DESCRIPTION;
- this.initializeDescription();
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/Emergency.java b/src/main/java/guardian/cards/Emergency.java
index 388eb84b8..47506ab53 100644
--- a/src/main/java/guardian/cards/Emergency.java
+++ b/src/main/java/guardian/cards/Emergency.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.orbs.AbstractOrb;
import guardian.GuardianMod;
+import guardian.actions.AccelerateAllCardsInStasisAction;
import guardian.orbs.StasisOrb;
import guardian.patches.AbstractCardEnum;
import sneckomod.SneckoMod;
@@ -51,19 +52,10 @@ public Emergency() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
- for (AbstractOrb o : p.orbs) {
- if (o instanceof StasisOrb) {
- int stasisCount = o.passiveAmount;
- ((StasisOrb) o).stasisCard.superFlash(Color.GOLDENROD);
- if(stasisCount <= 0) {
- o.onStartOfTurn();
- }else {
- for (int i = 0; i < stasisCount; i++) {
- o.onStartOfTurn();
- }
- }
- break;
- }
+ addToBot(new AccelerateAllCardsInStasisAction());
+
+ if (this.upgraded) {
+ addToBot(new AccelerateAllCardsInStasisAction());
}
super.useGems(p, m);
@@ -76,7 +68,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- exhaust = false;
+ // exhaust = false;
rawDescription = UPGRADED_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/guardian/cards/EvasiveProtocol.java b/src/main/java/guardian/cards/EvasiveProtocol.java
index fd312b464..8cb27b570 100644
--- a/src/main/java/guardian/cards/EvasiveProtocol.java
+++ b/src/main/java/guardian/cards/EvasiveProtocol.java
@@ -2,15 +2,22 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+import downfall.actions.ForceWaitAction;
import guardian.GuardianMod;
+import guardian.powers.BracePerTurnPower;
+import guardian.stances.DefensiveMode;
import guardian.patches.AbstractCardEnum;
+import guardian.powers.DontLeaveDefensiveModePower;
import guardian.powers.EvasiveProtocolPower;
+import hermit.actions.ReduceDebuffsAction;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -25,12 +32,15 @@ public class EvasiveProtocol extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 1;
- private static final int DEX = 2;
- private static final int BRACE_PER_TURN = 3;
+ //TUNING CONSTANTS
+ private static final int DEX = 1;
+ private static final int BRACE_PER_TURN = 6;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
@@ -49,12 +59,37 @@ public EvasiveProtocol() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
+
+ int moda = 999;
+ int mods = 0;
super.use(p, m);
+
+ if (AbstractDungeon.player.hasPower("Guardian:ModeShiftPower")) {
+ moda = AbstractDungeon.player.getPower("Guardian:ModeShiftPower").amount;
+ }
+
+ if (!this.upgraded) {
+ brace(secondaryM);
+ mods = secondaryM;
+ }
+
+ if (this.upgraded) {
+ brace(secondaryM);
+ mods = secondaryM;
+ }
+
+
+ if (p.stance instanceof DefensiveMode) {
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, magicNumber));
+ }
+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EvasiveProtocolPower(p, magicNumber)));
-// if (p.stance instanceof DefensiveMode) {
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DexterityPower(p, magicNumber), magicNumber));
-// }
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
+
+ // if (((moda - mods) <= 0)) {
+ // AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, magicNumber));
+ // }
+
+ //AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
}
public AbstractCard makeCopy() {
@@ -64,21 +99,10 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeMagicNumber(2);
- upgradeBaseCost(0);
+ upgradeMagicNumber(1);
+ upgradeSecondaryM(3);
}
}
-
- public void updateDescription() {
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
- this.initializeDescription();
- }
}
diff --git a/src/main/java/guardian/cards/ExploitGems.java b/src/main/java/guardian/cards/ExploitGems.java
index bcef66384..a3985a4f9 100644
--- a/src/main/java/guardian/cards/ExploitGems.java
+++ b/src/main/java/guardian/cards/ExploitGems.java
@@ -1,59 +1,50 @@
package guardian.cards;
-
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.orbs.StasisOrb;
import guardian.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import static guardian.GuardianMod.makeBetaCardPath;
-public class ExploitGems extends AbstractGuardianCard {
+public class ExploitGems extends AbstractGuardianCard implements InStasisCard {
public static final String ID = GuardianMod.makeID("ExploitGems");
- public static final String NAME;
- public static final String DESCRIPTION;
+ private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ public static final String NAME = cardStrings.NAME;
+ public static final String DESCRIPTION = cardStrings.DESCRIPTION;
+ public static final String UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
public static final String IMG_PATH = "cards/exploitGems.png";
- private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 0;
- //TUNING CONSTANTS
+ // Tuning Constants
private static final int SOCKETS = 2;
- private static final boolean SOCKETSAREAFTER = true;
- public static String UPGRADED_DESCRIPTION;
-
- //END TUNING CONSTANTS
-
- static {
- cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
- NAME = cardStrings.NAME;
- DESCRIPTION = cardStrings.DESCRIPTION;
- UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
- }
+ private static final boolean SOCKETS_ARE_AFTER = true;
public ExploitGems() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
this.socketCount = SOCKETS;
updateDescription();
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("ExploitGems.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
- super.use(p, m);
-
- // if (upgraded) AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
super.useGems(p, m);
-
}
public AbstractCard makeCopy() {
@@ -67,20 +58,13 @@ public void upgrade() {
this.socketCount++;
this.saveGemMisc();
}
- // this.rawDescription = UPGRADED_DESCRIPTION;
-
- this.updateDescription();
-
-
+ updateDescription();
}
}
public void updateDescription() {
-
this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-
this.initializeDescription();
}
-}
-
+}
diff --git a/src/main/java/guardian/cards/FastForward.java b/src/main/java/guardian/cards/FastForward.java
index 2ebf42987..2a3ba704b 100644
--- a/src/main/java/guardian/cards/FastForward.java
+++ b/src/main/java/guardian/cards/FastForward.java
@@ -19,8 +19,6 @@ public class FastForward extends AbstractGuardianCard {
public static final String IMG_PATH = GuardianMod.getResourcePath("cards/accelerate.png");
private static final CardStrings cardStrings;
- // speed boost
-
public FastForward() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.GUARDIAN, CardRarity.RARE, CardTarget.NONE);
this.magicNumber = this.baseMagicNumber = 3;
@@ -48,9 +46,10 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- selfRetain = true;
- this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
+// selfRetain = true;
+// this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+// this.initializeDescription();
+ upgradeBaseCost(0);
}
}
diff --git a/src/main/java/guardian/cards/FierceBash.java b/src/main/java/guardian/cards/FierceBash.java
index cd96009ec..088be64cc 100644
--- a/src/main/java/guardian/cards/FierceBash.java
+++ b/src/main/java/guardian/cards/FierceBash.java
@@ -28,12 +28,12 @@ public class FierceBash extends AbstractGuardianCard implements InStasisCard {
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.ENEMY;
private static final CardStrings cardStrings;
- private static final int COST = 3;
- private static final int DAMAGE = 18;
+ private static final int COST = 2;
+ private static final int DAMAGE = 16;
//TUNING CONSTANTS
- private static final int UPGRADE_BONUS = 6;
- private static final int DAMAGEPERTURNINSTASIS = 2;
+ private static final int UPGRADE_BONUS = 4;
+ private static final int DAMAGEPERTURNINSTASIS = 1;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String DESCRIPTION;
@@ -83,7 +83,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/FloatingOrbs.java b/src/main/java/guardian/cards/FloatingOrbs.java
index ecc8ff6e6..09a2bdfa5 100644
--- a/src/main/java/guardian/cards/FloatingOrbs.java
+++ b/src/main/java/guardian/cards/FloatingOrbs.java
@@ -18,7 +18,7 @@ public class FloatingOrbs extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("FloatingOrbs");
public static final String NAME;
public static final String DESCRIPTION;
- public static final String IMG_PATH = "cards/FloatingOrbs.png";
+ public static final String IMG_PATH = "cards/floatingOrbs.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
@@ -54,7 +54,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(2);
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/FuturePlans.java b/src/main/java/guardian/cards/FuturePlans.java
index 3e88d1b90..2ea6c8317 100644
--- a/src/main/java/guardian/cards/FuturePlans.java
+++ b/src/main/java/guardian/cards/FuturePlans.java
@@ -19,7 +19,7 @@ public class FuturePlans extends AbstractGuardianCard {
private static final CardStrings cardStrings;
public FuturePlans() {
- super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.RARE, CardTarget.SELF);
this.baseMagicNumber = this.magicNumber = 1;
this.socketCount = 0;
updateDescription();
diff --git a/src/main/java/guardian/cards/GearUp.java b/src/main/java/guardian/cards/GearUp.java
index 4856102d3..7bd7db69f 100644
--- a/src/main/java/guardian/cards/GearUp.java
+++ b/src/main/java/guardian/cards/GearUp.java
@@ -17,7 +17,7 @@ public class GearUp extends AbstractGuardianCard {
public GearUp() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.SPECIAL, CardTarget.SELF);
- this.baseMagicNumber = magicNumber = 15;
+ this.baseMagicNumber = magicNumber = 10;
this.selfRetain = true;
this.exhaust = true;
updateDescription();
diff --git a/src/main/java/guardian/cards/GemFinder.java b/src/main/java/guardian/cards/GemFinder.java
index b9ded7296..ce80c143d 100644
--- a/src/main/java/guardian/cards/GemFinder.java
+++ b/src/main/java/guardian/cards/GemFinder.java
@@ -11,6 +11,7 @@
import guardian.GuardianMod;
import guardian.patches.AbstractCardEnum;
import guardian.powers.GemFinderPower;
+import sneckomod.SneckoMod;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -23,13 +24,15 @@ public class GemFinder extends AbstractGuardianCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 1;
+ private static final int COST = 2;
- private static final int UPGRADENEWCOST = 0;
+ //TUNING CONSTANTS
+ private static final int UPGRADENEWCOST = 1;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
@@ -40,7 +43,7 @@ public class GemFinder extends AbstractGuardianCard {
public GemFinder() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
+ isEthereal = true;
this.baseMagicNumber = this.magicNumber = 1;
this.socketCount = SOCKETS;
updateDescription();
diff --git a/src/main/java/guardian/cards/GemFire.java b/src/main/java/guardian/cards/GemFire.java
index d4eb525de..2554b4be7 100644
--- a/src/main/java/guardian/cards/GemFire.java
+++ b/src/main/java/guardian/cards/GemFire.java
@@ -1,155 +1,210 @@
package guardian.cards;
-
+import collector.util.Wiz;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.orbs.AbstractOrb;
+import com.megacrit.cardcrawl.powers.*;
+import downfall.actions.ForceWaitAction;
import guardian.GuardianMod;
import guardian.actions.GemFireAction;
+import guardian.actions.ReduceRightMostStasisAction;
import guardian.orbs.StasisOrb;
import guardian.patches.AbstractCardEnum;
+import guardian.powers.LoseThornsPower;
+import hermit.actions.ReduceDebuffsAction;
import sneckomod.SneckoMod;
-import static guardian.GuardianMod.makeBetaCardPath;
+import java.util.ArrayList;
+import static collector.util.Wiz.applyToEnemy;
+import static collector.util.Wiz.atb;
public class GemFire extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("GemFire");
- public static final String NAME;
+ private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
public static final String IMG_PATH = "cards/gemFire.png";
private static final CardType TYPE = CardType.ATTACK;
private static final CardRarity RARITY = CardRarity.RARE;
- private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
- private static final CardStrings cardStrings;
+ private static final CardTarget TARGET = CardTarget.ENEMY;
private static final int COST = 2;
- private static final int DAMAGE = 12;
- private static int gem_count=0;
+ private static final int DAMAGE = 16;
- private static final int UPGRADE_BONUS = 5;
private static final int SOCKETS = 0;
- private static final boolean SOCKETSAREAFTER = true;
- public static String DESCRIPTION;
- public static String UPGRADED_DESCRIPTION;
-
- static {
- cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
- NAME = cardStrings.NAME;
- DESCRIPTION = cardStrings.DESCRIPTION;
- UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
- }
-
public GemFire() {
- super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
-// this.exhaust = true;
+ super(ID, cardStrings.NAME, GuardianMod.getResourcePath(IMG_PATH), COST, cardStrings.DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
+ this.exhaust = true;
this.baseDamage = DAMAGE;
- magicNumber = baseMagicNumber = 0;
this.socketCount = SOCKETS;
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
updateDescription();
loadGemMisc();
- //this.sockets.add(GuardianMod.socketTypes.RED);
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
- GuardianMod.loadJokeCardImage(this, makeBetaCardPath("GemFire.png"));
+ GuardianMod.loadJokeCardImage(this, GuardianMod.makeBetaCardPath("GemFire.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
- super.use(p, m);
- AbstractDungeon.actionManager.addToBottom(new GemFireAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn)));
+ // SECOND ARRAY TO AVOID CRASHING
+ ArrayList tempSockets = new ArrayList<>();
- }
+ // Collect sockets from piles and stasis
+ collectSocketsFromGroup(p.hand, tempSockets);
+ collectSocketsFromGroup(p.drawPile, tempSockets);
+ collectSocketsFromGroup(p.discardPile, tempSockets);
+ collectSocketsFromStasis(p, tempSockets);
- public void applyPowers() {
- this.countCards();
- baseMagicNumber = magicNumber = GemFire.gem_count;
- super.applyPowers();
- this.rawDescription = cardStrings.DESCRIPTION+cardStrings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
- }
+ for (GuardianMod.socketTypes socket : tempSockets) {
+
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new GemFireAction.GemShootEffect(socket,tempSockets.indexOf(socket),m, tempSockets.size()),0.00F));
+
+ //Wiz.atb(new ForceWaitAction(.1F));
+ }
+
+ if (tempSockets.size() > 0){
+ Wiz.atb(new ForceWaitAction(1.25F + 0.05F*tempSockets.size()));
+ }
+
+
+ AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
- public void countCards(){
- GemFire.gem_count=0;
- count_gems_from_group(AbstractDungeon.player.hand);
-// count_gems_from_group(AbstractDungeon.player.drawPile);
-// count_gems_from_group(AbstractDungeon.player.discardPile);
-// count_gems_from_group(this.gatherStasisCards());
+
+ // Process sockets (non-SYNTHETIC first, then SYNTHETIC)
+ ArrayList nonSyntheticSockets = new ArrayList<>();
+ ArrayList syntheticSockets = new ArrayList<>();
+ for (GuardianMod.socketTypes socket : tempSockets) {
+ if (socket == GuardianMod.socketTypes.SYNTHETIC) {
+ syntheticSockets.add(socket);
+ } else {
+ nonSyntheticSockets.add(socket);
+ }
+ }
+ nonSyntheticSockets.addAll(syntheticSockets); // Combine lists
+
+ for (GuardianMod.socketTypes socket : nonSyntheticSockets) {
+ processSocket(p, m, socket);
+ AbstractDungeon.actionManager.addToBottom(new ForceWaitAction(0.02F));
+ }
}
- public void count_gems_from_group(CardGroup group) {
+ private void collectSocketsFromGroup(CardGroup group, ArrayList tempSockets) {
for (AbstractCard c : group.group) {
- if (c instanceof AbstractGuardianCard) {
+ if (c instanceof AbstractGuardianCard && !c.hasTag(GuardianMod.GEM)) {
AbstractGuardianCard gc = (AbstractGuardianCard) c;
- if (gc.socketCount > 0 || c.hasTag(GuardianMod.GEM)) {
- if (gc.sockets.size() > 0) {
- for (GuardianMod.socketTypes socket : gc.sockets) {
- if (socket != null) GemFire.gem_count++;
- }
-
- }
- if (gc.hasTag(GuardianMod.GEM)) {
- GemFire.gem_count++;
+ tempSockets.addAll(gc.sockets);
+ } else if (c.hasTag(GuardianMod.GEM)) {
+ if (c instanceof AbstractGuardianCard) {
+ GuardianMod.socketTypes gemType = ((AbstractGuardianCard) c).thisGemsType;
+ if (gemType != null) {
+ tempSockets.add(gemType);
}
}
}
}
}
-// public CardGroup gatherStasisCards(){
-// CardGroup stasiscards = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
-// for (AbstractOrb o : AbstractDungeon.player.orbs) {
-// if (o instanceof StasisOrb) {
-// stasiscards.group.add( ((StasisOrb) o).stasisCard );
-// }
-// }
-// return stasiscards;
-// }
-
- public AbstractCard makeCopy() {
- return new GemFire();
+ private void collectSocketsFromStasis(AbstractPlayer p, ArrayList tempSockets) {
+ for (AbstractOrb orb : p.orbs) {
+ if (orb instanceof StasisOrb) {
+ AbstractCard stasisCard = ((StasisOrb) orb).stasisCard;
+ if (stasisCard instanceof AbstractGuardianCard) {
+ AbstractGuardianCard gc = (AbstractGuardianCard) stasisCard;
+ tempSockets.addAll(gc.sockets);
+ } else if (stasisCard != null && stasisCard.hasTag(GuardianMod.GEM)) {
+ if (stasisCard instanceof AbstractGuardianCard) {
+ GuardianMod.socketTypes gemType = ((AbstractGuardianCard) stasisCard).thisGemsType;
+ if (gemType != null) {
+ tempSockets.add(gemType);
+ }
+ }
+ }
+ }
+ }
}
- public void upgrade() {
- if (!this.upgraded) {
- upgradeName();
-
- upgradeBaseCost(1);
+ private void processSocket(AbstractPlayer p, AbstractMonster m, GuardianMod.socketTypes socketType) {
+ switch (socketType) {
+ case RED:
+ applyTemporaryPower(new StrengthPower(p, 2), new LoseStrengthPower(p, 2));
+ break;
+ case GREEN:
+ applyTemporaryPower(new DexterityPower(p, 2), new LoseDexterityPower(p, 2));
+ break;
+ case LIGHTBLUE:
+ applyTemporaryPower(new ThornsPower(p, 4), new LoseThornsPower(p, 4));
+ break;
+ case ORANGE:
+ AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
+ break;
+ case WHITE:
+ AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
+ break;
+ case CYAN:
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new CrystalWard(), 1));
+ break;
+ case BLUE:
+ brace(4);
+ break;
+ case CRIMSON:
+ applyVulnerableToAllEnemies(p, 1);
+ break;
+ case FRAGMENTED:
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new CrystalShiv(), 1));
+ break;
+ case PURPLE:
+ weakenAllEnemies(p, 2);
+ break;
+ case SYNTHETIC:
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(p, 1));
+ break;
+ case YELLOW:
+ AbstractDungeon.actionManager.addToBottom(new ForceWaitAction(0.1F));
+ AbstractDungeon.actionManager.addToBottom(new ReduceRightMostStasisAction());
+ break;
}
-
-
}
- public void updateDescription() {
+ private void applyTemporaryPower(AbstractPower power, AbstractPower lossPower) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, power, power.amount));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, lossPower, lossPower.amount));
+ }
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
- this.initializeDescription();
+ private void weakenAllEnemies(AbstractPlayer p, int amount) {
+ for (AbstractMonster monster : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ applyToEnemy(monster, new StrengthPower(monster, -amount));
+ if (!monster.hasPower(ArtifactPower.POWER_ID)) {
+ applyToEnemy(monster, new GainStrengthPower(monster, amount));
+ }
+ }
}
- @Override //zhs card text thing
- public void initializeDescriptionCN() {
- super.initializeDescriptionCN();
- if((Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT) && this.description!=null && this.description.size()>=1 ) {
- for(int i=0; i < this.description.size(); i++){
- if(this.description.get(i).text.equals(",")){
- StringBuilder sb = new StringBuilder();
- this.description.get(i-1).text = sb.append(this.description.get(i-1).text).append(",").toString();
- this.description.remove(i);
- }
+ private void applyVulnerableToAllEnemies(AbstractPlayer p, int amount) {
+ for (AbstractMonster monster : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!monster.isDeadOrEscaped()) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(monster, p, new VulnerablePower(monster, amount, false), amount));
}
}
}
-}
+ @Override
+ public AbstractCard makeCopy() {
+ return new GemFire();
+ }
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(1);
+ }
+ }
+}
diff --git a/src/main/java/guardian/cards/Gem_Blue.java b/src/main/java/guardian/cards/Gem_Blue.java
index 7c057bf36..ec8ae0160 100644
--- a/src/main/java/guardian/cards/Gem_Blue.java
+++ b/src/main/java/guardian/cards/Gem_Blue.java
@@ -50,7 +50,7 @@ public Gem_Blue() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = BLUE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Sapphire.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Crimson.java b/src/main/java/guardian/cards/Gem_Crimson.java
index bd9880650..d178625a4 100644
--- a/src/main/java/guardian/cards/Gem_Crimson.java
+++ b/src/main/java/guardian/cards/Gem_Crimson.java
@@ -50,7 +50,7 @@ public Gem_Crimson() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = CRIMSON;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Garnet.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Cyan.java b/src/main/java/guardian/cards/Gem_Cyan.java
index 89fd8fd49..a0416d671 100644
--- a/src/main/java/guardian/cards/Gem_Cyan.java
+++ b/src/main/java/guardian/cards/Gem_Cyan.java
@@ -47,7 +47,7 @@ public Gem_Cyan() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = CYAN;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
this.cardsToPreview = new CrystalWard();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Aquamarine.png"));
diff --git a/src/main/java/guardian/cards/Gem_Fragmented.java b/src/main/java/guardian/cards/Gem_Fragmented.java
index fd0d1209c..8c854efe7 100644
--- a/src/main/java/guardian/cards/Gem_Fragmented.java
+++ b/src/main/java/guardian/cards/Gem_Fragmented.java
@@ -21,7 +21,7 @@ public class Gem_Fragmented extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemFrag.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -48,7 +48,7 @@ public Gem_Fragmented() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = FRAGMENTED;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
this.cardsToPreview = new CrystalShiv();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Fragmented_Gem.png"));
diff --git a/src/main/java/guardian/cards/Gem_Green.java b/src/main/java/guardian/cards/Gem_Green.java
index 76c154b7f..3a7c13477 100644
--- a/src/main/java/guardian/cards/Gem_Green.java
+++ b/src/main/java/guardian/cards/Gem_Green.java
@@ -23,7 +23,7 @@ public class Gem_Green extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemGreen.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -52,7 +52,7 @@ public Gem_Green() {
this.baseMagicNumber = this.magicNumber = DAMAGEBUFF;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = GREEN;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Emerald.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Lightblue.java b/src/main/java/guardian/cards/Gem_Lightblue.java
index 57c36d519..1c284e570 100644
--- a/src/main/java/guardian/cards/Gem_Lightblue.java
+++ b/src/main/java/guardian/cards/Gem_Lightblue.java
@@ -30,7 +30,7 @@ public class Gem_Lightblue extends AbstractGemCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int Thorns = 2; //HARDCODED IN DESCRIPTION
+ private static final int Thorns = 4; //HARDCODED IN DESCRIPTION
//TUNING CONSTANTS
private static final int SOCKETS = 0;
@@ -55,14 +55,14 @@ public Gem_Lightblue() {
this.baseMagicNumber = this.magicNumber = Thorns;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = LIGHTBLUE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Tourmaline.png"));
}
public static void gemEffect(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, Thorns), Thorns));
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, Thorns), Thorns));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, Thorns), Thorns));
}
diff --git a/src/main/java/guardian/cards/Gem_Orange.java b/src/main/java/guardian/cards/Gem_Orange.java
index e9e0b02d3..51bcf9293 100644
--- a/src/main/java/guardian/cards/Gem_Orange.java
+++ b/src/main/java/guardian/cards/Gem_Orange.java
@@ -48,7 +48,7 @@ public Gem_Orange() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = ORANGE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Citrine.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Purple.java b/src/main/java/guardian/cards/Gem_Purple.java
index 6c44c8a62..aca494e77 100644
--- a/src/main/java/guardian/cards/Gem_Purple.java
+++ b/src/main/java/guardian/cards/Gem_Purple.java
@@ -55,7 +55,7 @@ public Gem_Purple() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = PURPLE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Amethyst.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Red.java b/src/main/java/guardian/cards/Gem_Red.java
index b089dce3b..cee34c652 100644
--- a/src/main/java/guardian/cards/Gem_Red.java
+++ b/src/main/java/guardian/cards/Gem_Red.java
@@ -52,7 +52,7 @@ public Gem_Red() {
this.baseMagicNumber = this.magicNumber = DAMAGEBUFF;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = RED;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Ruby.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Synthetic.java b/src/main/java/guardian/cards/Gem_Synthetic.java
index 8af11e266..c7c2a243b 100644
--- a/src/main/java/guardian/cards/Gem_Synthetic.java
+++ b/src/main/java/guardian/cards/Gem_Synthetic.java
@@ -21,7 +21,7 @@ public class Gem_Synthetic extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemBlack.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.RARE;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -45,7 +45,7 @@ public Gem_Synthetic() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = SYNTHETIC;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Onyx.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_White.java b/src/main/java/guardian/cards/Gem_White.java
index b50b5b800..78a87b406 100644
--- a/src/main/java/guardian/cards/Gem_White.java
+++ b/src/main/java/guardian/cards/Gem_White.java
@@ -21,7 +21,7 @@ public class Gem_White extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemWhite.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -49,7 +49,7 @@ public Gem_White() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = WHITE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Quartz.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Yellow.java b/src/main/java/guardian/cards/Gem_Yellow.java
index e518b5bb6..696c49cfe 100644
--- a/src/main/java/guardian/cards/Gem_Yellow.java
+++ b/src/main/java/guardian/cards/Gem_Yellow.java
@@ -47,7 +47,7 @@ public Gem_Yellow() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = YELLOW;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Amber.png"));
}
diff --git a/src/main/java/guardian/cards/GuardianWhirl.java b/src/main/java/guardian/cards/GuardianWhirl.java
index e3befbfbe..d33fedc48 100644
--- a/src/main/java/guardian/cards/GuardianWhirl.java
+++ b/src/main/java/guardian/cards/GuardianWhirl.java
@@ -1,73 +1,40 @@
package guardian.cards;
-
import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.ChangeStateAction;
import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
-import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
import guardian.GuardianMod;
import guardian.patches.AbstractCardEnum;
-import guardian.stances.DefensiveMode;
-import sneckomod.SneckoMod;
+import hermit.cards.AbstractDynamicCard;
import static guardian.GuardianMod.makeBetaCardPath;
-
public class GuardianWhirl extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("GuardianWhirl");
- public static final String NAME;
public static final String IMG_PATH = "cards/guardianwhirl.png";
private static final CardType TYPE = CardType.ATTACK;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
- private static final CardStrings cardStrings;
+ private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+
private static final int COST = 1;
private static final int DAMAGE = 4;
-
- //TUNING CONSTANTS
- private static final int MULTICOUNT = 4;
+ private static final int MULTICOUNT = 2;
private static final int SOCKETS = 0;
- private static final boolean SOCKETSAREAFTER = true;
- public static String DESCRIPTION;
- public static String UPGRADED_DESCRIPTION;
-
- //END TUNING CONSTANTS
- static {
- cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
- NAME = cardStrings.NAME;
- DESCRIPTION = cardStrings.DESCRIPTION;
- UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
- }
-
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- if (p.currentBlock >= 20) {
- return super.canUse(p, m);
- } else {
- this.cantUseMessage = cardStrings.EXTENDED_DESCRIPTION[0];
- return false;
- }
- }
+ public static final String DESCRIPTION = cardStrings.DESCRIPTION;
+ public static final String UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
public GuardianWhirl() {
- super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
+ super(ID, cardStrings.NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.baseDamage = DAMAGE;
- this.tags.add(GuardianMod.MULTIHIT);
-
- //this.sockets.add(GuardianMod.socketTypes.RED);
-
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.magicNumber = this.baseMagicNumber = MULTICOUNT;
this.isMultiDamage = true;
this.socketCount = SOCKETS;
@@ -76,48 +43,55 @@ public GuardianWhirl() {
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("guardianwhirl.png"));
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
-
- //AbstractDungeon.actionManager.addToBottom(new ChangeStanceAction(NeutralStance.STANCE_ID));
-
AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_WHIRLWIND"));
- for (int i = 0; i < this.magicNumber; i++) {
- AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_HEAVY"));
+ for (int i = 0; i < 2; i++) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_HEAVY"));
AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new CleaveEffect(), 0.05F));
AbstractDungeon.actionManager.addToBottom(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.NONE));
+ }
+ if (p.currentBlock >= 16) {
+ for (int i = 0; i < this.magicNumber; i++) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_HEAVY"));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new CleaveEffect(), 0.05F));
+ AbstractDungeon.actionManager.addToBottom(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.NONE));
+ }
}
+
this.useGems(p, m);
}
- public AbstractCard makeCopy() {
- return new GuardianWhirl();
+ @Override
+ public void triggerOnGlowCheck() {
+ this.glowColor = AbstractDynamicCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ if (AbstractDungeon.player.currentBlock >= 16) {
+ this.glowColor = AbstractDynamicCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ }
}
+ @Override
public void upgrade() {
if (!this.upgraded) {
upgradeName();
upgradeMagicNumber(1);
-
- this.updateDescription();
+ updateDescription();
}
-
-
}
+ @Override
public void updateDescription() {
-
if (this.socketCount > 0) {
- if (upgraded && UPGRADED_DESCRIPTION != null) {
- this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
- } else {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
- }
+ this.rawDescription = upgraded && UPGRADED_DESCRIPTION != null ? updateGemDescription(UPGRADED_DESCRIPTION, true) : updateGemDescription(DESCRIPTION, true);
}
this.initializeDescription();
}
-}
-
+ @Override
+ public AbstractCard makeCopy() {
+ return new GuardianWhirl();
+ }
+}
diff --git a/src/main/java/guardian/cards/Metallicize.java b/src/main/java/guardian/cards/Metallicize.java
index 67743124a..412e532fe 100644
--- a/src/main/java/guardian/cards/Metallicize.java
+++ b/src/main/java/guardian/cards/Metallicize.java
@@ -1,48 +1,51 @@
-//package guardian.cards;
-//
-//import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-//import com.megacrit.cardcrawl.cards.AbstractCard;
-//import com.megacrit.cardcrawl.characters.AbstractPlayer;
-//import com.megacrit.cardcrawl.core.CardCrawlGame;
-//import com.megacrit.cardcrawl.core.Settings;
-//import com.megacrit.cardcrawl.localization.CardStrings;
-//import com.megacrit.cardcrawl.monsters.AbstractMonster;
-//import com.megacrit.cardcrawl.powers.MetallicizePower;
-//import guardian.GuardianMod;
-//import guardian.patches.AbstractCardEnum;
-//
-//import static guardian.GuardianMod.makeBetaCardPath;
-//
-//public class Metallicize extends AbstractGuardianCard {
-// public static final String ID = GuardianMod.makeID("Metallicize");
-// private static final CardStrings cardStrings;
-//
-// public Metallicize() {
-// super(ID, cardStrings.NAME, GuardianMod.getResourcePath("cards/Metallicize.png"), 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
-// this.baseMagicNumber = magicNumber = 3;
-// GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Metallicize.png"));
-// }
-//
-// public void use(AbstractPlayer p, AbstractMonster m) {
-// this.addToBot(new ApplyPowerAction(p, p, new MetallicizePower(p, this.magicNumber), this.magicNumber));
-// }
-//
-// public void upgrade() {
-// if (!this.upgraded) {
-// this.upgradeName();
-// this.upgradeMagicNumber(1);
-// }
-// }
-//
-// public AbstractCard makeCopy() {
-// return new Metallicize();
-// }
-//
-// static {
-// if( Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT ){
-// cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
-// }else{
-// cardStrings = CardCrawlGame.languagePack.getCardStrings("Metallicize");
-// }
-// }
-//}
+package guardian.cards;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.MetallicizePower;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import guardian.GuardianMod;
+import guardian.patches.AbstractCardEnum;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class Metallicize extends AbstractGuardianCard {
+ public static final String ID = GuardianMod.makeID("Metallicize");
+ private static final CardStrings cardStrings;
+
+
+ //Harden
+ public Metallicize() {
+ super(ID, cardStrings.NAME, GuardianMod.getResourcePath("cards/Metallicize.png"), 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = magicNumber = 4;
+ GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Metallicize.png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, p, new PlatedArmorPower(p, this.magicNumber), this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(2);
+ }
+ }
+
+ public AbstractCard makeCopy() {
+ return new Metallicize();
+ }
+
+ static {
+ if( Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT ){
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
+ }else{
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
+ }
+ }
+}
diff --git a/src/main/java/guardian/cards/ModeShift.java b/src/main/java/guardian/cards/ModeShift.java
index 705c8d03e..173fac988 100644
--- a/src/main/java/guardian/cards/ModeShift.java
+++ b/src/main/java/guardian/cards/ModeShift.java
@@ -25,12 +25,15 @@ public class ModeShift extends AbstractGuardianCard {
private static final int COST = 1;
private static final int DAMAGE = 4;
+ //TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String DESCRIPTION;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
diff --git a/src/main/java/guardian/cards/MultiBeam.java b/src/main/java/guardian/cards/MultiBeam.java
index 4df8100fb..7ac0e1137 100644
--- a/src/main/java/guardian/cards/MultiBeam.java
+++ b/src/main/java/guardian/cards/MultiBeam.java
@@ -29,11 +29,11 @@ public class MultiBeam extends AbstractGuardianCard implements InStasisCard {
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final CardStrings cardStrings;
private static final int COST = -1;
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 6;
//TUNING CONSTANTS
private static final int UPGRADE_DAMAGE = 2;
- private static final int BEAMBUFF = 1;
+ private static final int BEAMBUFF = 2;
private static final int UPGRADE_BEAMBUFF = 1;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
diff --git a/src/main/java/guardian/cards/Orbwalk.java b/src/main/java/guardian/cards/Orbwalk.java
index faf6b50c0..23db49bc8 100644
--- a/src/main/java/guardian/cards/Orbwalk.java
+++ b/src/main/java/guardian/cards/Orbwalk.java
@@ -19,7 +19,7 @@ public class Orbwalk extends AbstractGuardianCard implements InStasisCard {
public static final String ID = GuardianMod.makeID("Orbwalk");
public static final String NAME;
public static final String DESCRIPTION;
- public static final String IMG_PATH = "cards/Orbwalk.png";
+ public static final String IMG_PATH = "cards/orbwalk.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
@@ -44,7 +44,7 @@ public class Orbwalk extends AbstractGuardianCard implements InStasisCard {
public Orbwalk() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
- this.baseMagicNumber = this.magicNumber = 2;
+ this.baseMagicNumber = this.magicNumber = 3;
this.tags.add(GuardianMod.TICK);
this.tags.add(GuardianMod.VOLATILE);
this.socketCount = SOCKETS;
diff --git a/src/main/java/guardian/cards/PackageAutomaton.java b/src/main/java/guardian/cards/PackageAutomaton.java
index 4c23221d7..e828222c8 100644
--- a/src/main/java/guardian/cards/PackageAutomaton.java
+++ b/src/main/java/guardian/cards/PackageAutomaton.java
@@ -25,7 +25,7 @@ public class PackageAutomaton extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageDefect.java b/src/main/java/guardian/cards/PackageDefect.java
index 00259c82e..a6b98af69 100644
--- a/src/main/java/guardian/cards/PackageDefect.java
+++ b/src/main/java/guardian/cards/PackageDefect.java
@@ -25,7 +25,7 @@ public class PackageDefect extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageDonuDeca.java b/src/main/java/guardian/cards/PackageDonuDeca.java
index e7b40e217..0de699722 100644
--- a/src/main/java/guardian/cards/PackageDonuDeca.java
+++ b/src/main/java/guardian/cards/PackageDonuDeca.java
@@ -26,7 +26,7 @@ public class PackageDonuDeca extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 2;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageSentry.java b/src/main/java/guardian/cards/PackageSentry.java
index 94d5f5a60..355219a59 100644
--- a/src/main/java/guardian/cards/PackageSentry.java
+++ b/src/main/java/guardian/cards/PackageSentry.java
@@ -26,7 +26,7 @@ public class PackageSentry extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageSphere.java b/src/main/java/guardian/cards/PackageSphere.java
index db6641b78..1287478a0 100644
--- a/src/main/java/guardian/cards/PackageSphere.java
+++ b/src/main/java/guardian/cards/PackageSphere.java
@@ -23,17 +23,19 @@ public class PackageSphere extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 2;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
public AbstractGuardianCard constPrev1 = new SphericShield();
public AbstractGuardianCard constPrev2 = new FloatingOrbs();
- public AbstractGuardianCard constPrev3 = new ArmoredProtocol();
+ public AbstractGuardianCard constPrev3 = new Metallicize();
public AbstractGuardianCard prev1;
public AbstractGuardianCard prev2;
@@ -92,7 +94,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if (upgraded) tmp.upgrade();
addToBot(new MakeTempCardInHandAction(tmp, true));
- tmp = new ArmoredProtocol();
+ tmp = new Metallicize();
if (upgraded) tmp.upgrade();
addToBot(new MakeTempCardInHandAction(tmp, true));
}
diff --git a/src/main/java/guardian/cards/PiercingHide.java b/src/main/java/guardian/cards/PiercingHide.java
index 564e67bf9..ad65604f2 100644
--- a/src/main/java/guardian/cards/PiercingHide.java
+++ b/src/main/java/guardian/cards/PiercingHide.java
@@ -69,7 +69,12 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, this.magicNumber), this.magicNumber));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, this.magicNumber), this.magicNumber));
- brace(3);
+ if (!upgraded) {
+ brace(3);
+ }
+ if (upgraded) {
+ brace(4);
+ }
super.useGems(p, m);
}
@@ -82,6 +87,8 @@ public void upgrade() {
upgradeName();
upgradeBlock(UPGRADE_BLOCK);
upgradeMagicNumber(UPGRADE_THORNS);
+ this.rawDescription = UPGRADED_DESCRIPTION;
+ this.updateDescription();
}
}
diff --git a/src/main/java/guardian/cards/PolyBeam.java b/src/main/java/guardian/cards/PolyBeam.java
index 70b9bdd3f..852cf8850 100644
--- a/src/main/java/guardian/cards/PolyBeam.java
+++ b/src/main/java/guardian/cards/PolyBeam.java
@@ -1,6 +1,8 @@
package guardian.cards;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -12,6 +14,7 @@
import guardian.GuardianMod;
import guardian.actions.PolyBeamAction;
import guardian.patches.AbstractCardEnum;
+import hermit.patches.EnumPatch;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -21,7 +24,7 @@ public class PolyBeam extends AbstractGuardianCard {
public static final String NAME;
public static final String IMG_PATH = "cards/polybeam.png";
private static final CardType TYPE = CardType.ATTACK;
- private static final CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final CardStrings cardStrings;
private static final int COST = 1;
@@ -67,6 +70,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
for(int i=0; i 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
}
diff --git a/src/main/java/guardian/cards/RevengeProtocol.java b/src/main/java/guardian/cards/RevengeProtocol.java
index 314695959..d9dcfd624 100644
--- a/src/main/java/guardian/cards/RevengeProtocol.java
+++ b/src/main/java/guardian/cards/RevengeProtocol.java
@@ -2,14 +2,20 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.ThornsPower;
import guardian.GuardianMod;
-import guardian.patches.AbstractCardEnum;
import guardian.powers.BracePerTurnPower;
+import guardian.stances.DefensiveMode;
+import guardian.patches.AbstractCardEnum;
+import guardian.powers.RevengePower;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -22,13 +28,13 @@ public class RevengeProtocol extends AbstractGuardianCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 1;
+ private static final int COST = 2;
public static String UPGRADED_DESCRIPTION;
public RevengeProtocol() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.magicNumber = this.baseMagicNumber = 2;
- this.secondaryM = 5;
+ this.secondaryM = 4;
this.socketCount = 0;
updateDescription();
loadGemMisc();
@@ -37,10 +43,10 @@ public RevengeProtocol() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
-// addToBot(new ApplyPowerAction(p, p, new RevengePower(p, p, magicNumber), magicNumber));
-// if (p.stance instanceof DefensiveMode) {
-// addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
-// }
+ addToBot(new ApplyPowerAction(p, p, new RevengePower(p, p, magicNumber), magicNumber));
+ if (p.stance instanceof DefensiveMode) {
+ addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ }
addToBot(new ApplyPowerAction(p, p, new BracePerTurnPower(p, secondaryM)));
}
@@ -51,20 +57,19 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(0);
-// upgradeMagicNumber(1);
-// upgradeSecondaryM(1);
+ upgradeMagicNumber(1);
+ upgradeSecondaryM(2);
}
}
public void updateDescription() {
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
diff --git a/src/main/java/guardian/cards/ShieldSpikes.java b/src/main/java/guardian/cards/ShieldSpikes.java
index f8e81bf25..6e283145d 100644
--- a/src/main/java/guardian/cards/ShieldSpikes.java
+++ b/src/main/java/guardian/cards/ShieldSpikes.java
@@ -51,9 +51,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if (p.stance instanceof DefensiveMode) {
addToBot(new ApplyPowerAction(p, p, new ThornsPower(p, this.magicNumber), this.magicNumber));
- } else {
- brace(8);
}
+ brace(8);
}
public void triggerOnGlowCheck() {
diff --git a/src/main/java/guardian/cards/SphericShield.java b/src/main/java/guardian/cards/SphericShield.java
index 1bf65b5be..8f144deed 100644
--- a/src/main/java/guardian/cards/SphericShield.java
+++ b/src/main/java/guardian/cards/SphericShield.java
@@ -2,7 +2,9 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -11,9 +13,11 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
-import guardian.powers.DontLeaveDefensiveModePower;
+import guardian.powers.*;
+import guardian.relics.ModeShifterPlus;
import guardian.stances.DefensiveMode;
import guardian.patches.AbstractCardEnum;
+import sneckomod.powers.ToxicPersonalityPower;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -38,7 +42,7 @@ public class SphericShield extends AbstractGuardianCard {
public SphericShield() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
- this.baseBlock = 20;
+ this.baseBlock = 10;
this.socketCount = 0;
exhaust = true;
updateDescription();
@@ -52,6 +56,49 @@ public void use(AbstractPlayer p, AbstractMonster m) {
addToBot(new GainBlockAction(p, p, this.block));
addToBot(new ChangeStanceAction(new DefensiveMode()));
addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DontLeaveDefensiveModePower(AbstractDungeon.player, 1), 1));
+
+ ModeShifterPlus modeShifterPlusInstance = new ModeShifterPlus();
+ if (AbstractDungeon.player.hasRelic(ModeShifterPlus.ID)) {
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ addToTop(new GainEnergyAction(1));
+ }
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedGuardianPower(p, 1)));
+ }
+ addToTop(new DrawCardAction(AbstractDungeon.player, 2));
+ modeShifterPlusInstance.flash();
+ }
+
+ if (AbstractDungeon.player.hasPower(RevengePower.POWER_ID)) {
+ RevengePower revengePower =
+ (RevengePower) AbstractDungeon.player.getPower(RevengePower.POWER_ID);
+
+ if (revengePower != null) {
+ revengePower.onActivateCallR(p);
+ }
+ }
+
+ if (AbstractDungeon.player.hasPower(SpikerProtocolPower.POWER_ID)) {
+ SpikerProtocolPower spikerProtocolPower =
+ (SpikerProtocolPower) AbstractDungeon.player.getPower(SpikerProtocolPower.POWER_ID);
+
+ if (spikerProtocolPower != null) {
+ spikerProtocolPower.onActivateCallS(p);
+ }
+ }
+
+
+ if (AbstractDungeon.player.hasPower(EvasiveProtocolPower.POWER_ID)) {
+ EvasiveProtocolPower evasiveProtocolPower =
+ (EvasiveProtocolPower) AbstractDungeon.player.getPower(EvasiveProtocolPower.POWER_ID);
+
+ if (evasiveProtocolPower != null) {
+ evasiveProtocolPower.onActivateCallE(p);
+ }
+
+
+ }
+
}
public AbstractCard makeCopy() {
@@ -61,7 +108,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBlock(5);
+ upgradeBlock(4);
}
}
diff --git a/src/main/java/guardian/cards/SpikerProtocol.java b/src/main/java/guardian/cards/SpikerProtocol.java
index 3eada9242..e2c1ca6a0 100644
--- a/src/main/java/guardian/cards/SpikerProtocol.java
+++ b/src/main/java/guardian/cards/SpikerProtocol.java
@@ -10,12 +10,15 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ThornsPower;
+import downfall.actions.ForceWaitAction;
import guardian.GuardianMod;
import guardian.powers.BracePerTurnPower;
+import guardian.powers.EvasiveProtocolPower;
import guardian.stances.DefensiveMode;
import guardian.patches.AbstractCardEnum;
import guardian.powers.DontLeaveDefensiveModePower;
import guardian.powers.SpikerProtocolPower;
+import hermit.actions.ReduceDebuffsAction;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -30,13 +33,16 @@ public class SpikerProtocol extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 1;
- private static final int THORNS = 4;
- private static final int UPGRADE_THORNS = 2;
+ //TUNING CONSTANTS
+ private static final int THORNS = 2;
+ private static final int UPGRADE_THORNS = 1;
private static final int SOCKETS = 0;
- private static final int BRACE_PER_TURN = 3;
+ private static final int BRACE_PER_TURN = 6;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
@@ -56,12 +62,35 @@ public SpikerProtocol() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ int moda = 999;
+ int mods = 0;
super.use(p, m);
+
+
+ if (AbstractDungeon.player.hasPower("Guardian:ModeShiftPower")) {
+ moda = AbstractDungeon.player.getPower("Guardian:ModeShiftPower").amount;
+ }
+
+ // if (((moda - mods) <= 0)) {
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, magicNumber), magicNumber));
+
+
+
+ if (!this.upgraded) {
+ brace(secondaryM);
+ mods = secondaryM;
+ }
+
+ if (this.upgraded) {
+ brace(secondaryM);
+ mods = secondaryM;
+ }
+ // }
+ if (p.stance instanceof DefensiveMode) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, magicNumber), magicNumber));
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new SpikerProtocolPower(p, magicNumber)));
-// if (p.stance instanceof DefensiveMode) {
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, magicNumber), magicNumber));
-// }
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
}
public AbstractCard makeCopy() {
@@ -71,22 +100,11 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeMagicNumber(UPGRADE_THORNS);
- upgradeBaseCost(0);
+ upgradeMagicNumber(UPGRADE_THORNS);
+ upgradeSecondaryM(3);
}
}
- public void updateDescription() {
-
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
- this.initializeDescription();
- }
}
diff --git a/src/main/java/guardian/cards/StasisField.java b/src/main/java/guardian/cards/StasisField.java
index 4662f8c05..74b7e491c 100644
--- a/src/main/java/guardian/cards/StasisField.java
+++ b/src/main/java/guardian/cards/StasisField.java
@@ -50,10 +50,10 @@ public void use(AbstractPlayer p, AbstractMonster m) {
this.useGems(p, m);
}
- @Override
- public void onEvoke(StasisOrb orb) {
- addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, this.block));
- }
+// @Override
+// public void onEvoke(StasisOrb orb) {
+// addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, this.block));
+// }
public AbstractCard makeCopy() {
@@ -83,6 +83,4 @@ public void updateDescription() {
public void onStartOfTurn(StasisOrb orb) {
}
-}
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/cards/StasisStrike.java b/src/main/java/guardian/cards/StasisStrike.java
index a8b019033..5db26f4f9 100644
--- a/src/main/java/guardian/cards/StasisStrike.java
+++ b/src/main/java/guardian/cards/StasisStrike.java
@@ -22,7 +22,7 @@ public class StasisStrike extends AbstractGuardianCard {
public StasisStrike() {
super(ID, cardStrings.NAME, IMG_PATH, 2, cardStrings.DESCRIPTION, CardType.ATTACK, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.ENEMY);
- this.baseDamage = 15;
+ this.baseDamage = 16;
this.socketCount = 0;
this.tags.add(CardTags.STRIKE);
updateDescription();
@@ -44,7 +44,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeDamage(5);
+ upgradeDamage(4);
}
}
diff --git a/src/main/java/guardian/cards/Suspension.java b/src/main/java/guardian/cards/Suspension.java
index 812946fd0..6ea0b7a69 100644
--- a/src/main/java/guardian/cards/Suspension.java
+++ b/src/main/java/guardian/cards/Suspension.java
@@ -64,8 +64,13 @@ public void upgrade() {
}
public void updateDescription() {
+
if (this.socketCount > 0) {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
}
this.initializeDescription();
}
diff --git a/src/main/java/guardian/cards/TemporalStrike.java b/src/main/java/guardian/cards/TemporalStrike.java
index 08091632c..1d974407e 100644
--- a/src/main/java/guardian/cards/TemporalStrike.java
+++ b/src/main/java/guardian/cards/TemporalStrike.java
@@ -50,10 +50,11 @@ public TemporalStrike() {
this.baseDamage = DAMAGE;
this.socketCount = SOCKETS;
+ tags.add(CardTags.STRIKE);
updateDescription();
loadGemMisc();
- tags.add(CardTags.STRIKE);
+
//this.sockets.add(GuardianMod.socketTypes.RED);
this.updateDescription();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("TemporalStrike.png"));
diff --git a/src/main/java/guardian/cards/TimeSifter.java b/src/main/java/guardian/cards/TimeSifter.java
index 89c5ca517..5590f714e 100644
--- a/src/main/java/guardian/cards/TimeSifter.java
+++ b/src/main/java/guardian/cards/TimeSifter.java
@@ -22,7 +22,7 @@ public class TimeSifter extends AbstractGuardianCard {
public static final String IMG_PATH = "cards/hourglass.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
- private static final CardRarity RARITY = CardRarity.RARE;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
diff --git a/src/main/java/guardian/cards/VentSteam.java b/src/main/java/guardian/cards/VentSteam.java
index 55b4461b7..924405f8e 100644
--- a/src/main/java/guardian/cards/VentSteam.java
+++ b/src/main/java/guardian/cards/VentSteam.java
@@ -20,7 +20,7 @@ public class VentSteam extends AbstractGuardianCard {
public static final String IMG_PATH = "cards/ventSteam.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 1;
diff --git a/src/main/java/guardian/characters/GuardianCharacter.java b/src/main/java/guardian/characters/GuardianCharacter.java
index 41d748c53..551aa8641 100644
--- a/src/main/java/guardian/characters/GuardianCharacter.java
+++ b/src/main/java/guardian/characters/GuardianCharacter.java
@@ -1,9 +1,12 @@
package guardian.characters;
+import automaton.vfx.CompileVictoryEffect;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.*;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.scene.DefectVictoryNumberEffect;
import downfall.util.TextureLoader;
import guardian.modules.EnergyOrbGuardian;
import guardian.powers.ModeShiftPower;
@@ -114,8 +117,6 @@ public GuardianCharacter(String name, PlayerClass setClass) {
}
- //TODO - Victory screens
-
public CharSelectInfo getInfo() {
return getLoadout();
}
@@ -332,6 +333,14 @@ public String getVampireText() {
return charStrings.TEXT[3];
}
+
+ @Override
+ public void updateVictoryVfx(ArrayList effects) {
+ if (effects.stream().filter(e -> e instanceof DefectVictoryNumberEffect).count() < 8)
+ effects.add(new DefectVictoryNumberEffect());
+ }
+
+
@Override
public void onVictory() {
super.onVictory();
diff --git a/src/main/java/guardian/commands/SocketGems.java b/src/main/java/guardian/commands/SocketGems.java
index f564e701b..cf705317e 100644
--- a/src/main/java/guardian/commands/SocketGems.java
+++ b/src/main/java/guardian/commands/SocketGems.java
@@ -1,33 +1,33 @@
-package guardian.commands;
-
-import basemod.devcommands.ConsoleCommand;
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import guardian.GuardianMod;
-import guardian.cards.AbstractGuardianCard;
-
-public class SocketGems extends ConsoleCommand {
- // Fills all empty sockets with random gems, for testing purposes
- @Override
- protected void execute(String[] strings, int i) {
- socketGems(AbstractDungeon.player.hand);
- socketGems(AbstractDungeon.player.drawPile);
- socketGems(AbstractDungeon.player.discardPile);
-
- }
-
- private void socketGems(CardGroup group) {
- for (AbstractCard card : group.group) {
- if(card instanceof AbstractGuardianCard) {
- AbstractGuardianCard gc = (AbstractGuardianCard) card;
- gc.sockets.clear();
- while(gc.socketCount > gc.sockets.size()) {
- gc.sockets.add(GuardianMod.socketTypes.values()[MathUtils.random(GuardianMod.socketTypes.values().length-1)]);
- }
- gc.updateDescription();
- }
- }
- }
-}
+package guardian.commands;
+
+import basemod.devcommands.ConsoleCommand;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import guardian.GuardianMod;
+import guardian.cards.AbstractGuardianCard;
+
+public class SocketGems extends ConsoleCommand {
+ // Fills all empty sockets with random gems, for testing purposes
+ @Override
+ protected void execute(String[] strings, int i) {
+ socketGems(AbstractDungeon.player.hand);
+ socketGems(AbstractDungeon.player.drawPile);
+ socketGems(AbstractDungeon.player.discardPile);
+
+ }
+
+ private void socketGems(CardGroup group) {
+ for (AbstractCard card : group.group) {
+ if(card instanceof AbstractGuardianCard) {
+ AbstractGuardianCard gc = (AbstractGuardianCard) card;
+ gc.sockets.clear();
+ while(gc.socketCount > gc.sockets.size()) {
+ gc.sockets.add(GuardianMod.socketTypes.values()[MathUtils.random(GuardianMod.socketTypes.values().length-1)]);
+ }
+ gc.updateDescription();
+ }
+ }
+ }
+}
diff --git a/src/main/java/guardian/patches/AddEnhanceButtonPatch.java b/src/main/java/guardian/patches/AddEnhanceButtonPatch.java
index a5df0a0a7..b9587fe5f 100644
--- a/src/main/java/guardian/patches/AddEnhanceButtonPatch.java
+++ b/src/main/java/guardian/patches/AddEnhanceButtonPatch.java
@@ -16,7 +16,7 @@
import javassist.CtBehavior;
import sneckomod.TheSnecko;
import sneckomod.relics.UnknownEgg;
-import sneckomod.ui.LockInCampfireOption;
+
import java.util.ArrayList;
@@ -26,22 +26,20 @@ public static class AddKeys {
@SpireInsertPatch(locator = Locator.class)
public static void patch(CampfireUI __instance, ArrayList ___buttons) {
Boolean active = true;
-
if (GuardianMod.getSocketableCards().size() == 0) {
active = false;
}
-
if (GuardianMod.getGemCards().size() == 0) {
active = false;
}
-
if (AbstractDungeon.player instanceof GuardianCharacter || active) {
GuardianMod.socketBonfireOption = new EnhanceBonfireOption(active);
___buttons.add(GuardianMod.socketBonfireOption);
}
-
- if (AbstractDungeon.player instanceof TheSnecko || AbstractDungeon.player.hasRelic(UnknownEgg.ID)) {
- ___buttons.add(new LockInCampfireOption());
+ if (AbstractDungeon.player.hasRelic(PickAxe.ID)) {
+ boolean relicActive;
+ relicActive = AbstractDungeon.player.getRelic(PickAxe.ID).counter != -2;
+ ___buttons.add(new FindGemsOption(relicActive));
}
if (AbstractDungeon.player instanceof CollectorChar || !CollectorCollection.collection.isEmpty()) {
diff --git a/src/main/java/guardian/potions/DefensiveModePotion.java b/src/main/java/guardian/potions/DefensiveModePotion.java
index e4c76ac32..f61510be9 100644
--- a/src/main/java/guardian/potions/DefensiveModePotion.java
+++ b/src/main/java/guardian/potions/DefensiveModePotion.java
@@ -4,7 +4,9 @@
import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -13,7 +15,8 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
-import guardian.powers.DontLeaveDefensiveModePower;
+import guardian.powers.*;
+import guardian.relics.ModeShifterPlus;
import guardian.stances.DefensiveMode;
import guardian.characters.GuardianCharacter;
@@ -46,6 +49,50 @@ public void use(AbstractCreature target) {
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, potency));
AbstractDungeon.actionManager.addToBottom(new ChangeStanceAction(DefensiveMode.STANCE_ID));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DontLeaveDefensiveModePower(AbstractDungeon.player, 1), 1));
+
+
+ ModeShifterPlus modeShifterPlusInstance = new ModeShifterPlus();
+ if (AbstractDungeon.player.hasRelic(ModeShifterPlus.ID)) {
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ addToTop(new GainEnergyAction(1));
+ }
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(target, target, new EnergizedGuardianPower(target, 1)));
+ }
+ addToTop(new DrawCardAction(AbstractDungeon.player, 2));
+ modeShifterPlusInstance.flash();
+ }
+
+ if (AbstractDungeon.player.hasPower(RevengePower.POWER_ID)) {
+ RevengePower revengePower =
+ (RevengePower) AbstractDungeon.player.getPower(RevengePower.POWER_ID);
+
+ if (revengePower != null) {
+ revengePower.onActivateCallR(target);
+ }
+ }
+
+ if (AbstractDungeon.player.hasPower(SpikerProtocolPower.POWER_ID)) {
+ SpikerProtocolPower spikerProtocolPower =
+ (SpikerProtocolPower) AbstractDungeon.player.getPower(SpikerProtocolPower.POWER_ID);
+
+ if (spikerProtocolPower != null) {
+ spikerProtocolPower.onActivateCallS(target);
+ }
+ }
+
+
+ if (AbstractDungeon.player.hasPower(EvasiveProtocolPower.POWER_ID)) {
+ EvasiveProtocolPower evasiveProtocolPower =
+ (EvasiveProtocolPower) AbstractDungeon.player.getPower(EvasiveProtocolPower.POWER_ID);
+
+ if (evasiveProtocolPower != null) {
+ evasiveProtocolPower.onActivateCallE(target);
+ }
+
+
+ }
+
}
@@ -54,7 +101,7 @@ public CustomPotion makeCopy() {
}
public int getPotency(int ascensionLevel) {
- return 10;
+ return 16;
}
}
diff --git a/src/main/java/guardian/powers/ArmoredProtocolPower.java b/src/main/java/guardian/powers/ArmoredProtocolPower.java
index 511b4f8a2..cd3b7bf27 100644
--- a/src/main/java/guardian/powers/ArmoredProtocolPower.java
+++ b/src/main/java/guardian/powers/ArmoredProtocolPower.java
@@ -11,7 +11,7 @@
import guardian.stances.DefensiveMode;
-public class ArmoredProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class ArmoredProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:ArmoredProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -30,25 +30,15 @@ public ArmoredProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
-//
-// public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
-// flash();
-// if (AbstractDungeon.player.stance instanceof DefensiveMode) {
-// addToBot(new com.megacrit.cardcrawl.actions.common.GainBlockAction(this.owner, this.owner, this.amount));
-// }
-// }
- public void updateDescription() {
- this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
- }
-
- @Override
- public void onEnter() {
- this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new MetallicizePower(AbstractDungeon.player, amount), amount));
+ public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
+ flash();
+ if (AbstractDungeon.player.stance instanceof DefensiveMode) {
+ addToBot(new com.megacrit.cardcrawl.actions.common.GainBlockAction(this.owner, this.owner, this.amount));
+ }
}
- @Override
- public void onLeave() {
-
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/guardian/powers/ConstructModePower.java b/src/main/java/guardian/powers/ConstructModePower.java
index ee8e288cb..3a3887f3c 100644
--- a/src/main/java/guardian/powers/ConstructModePower.java
+++ b/src/main/java/guardian/powers/ConstructModePower.java
@@ -33,14 +33,19 @@ public ConstructModePower(AbstractCreature owner, int amount) {
}
public void updateDescription() {
- this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];;
}
public void atStartOfTurn() {
- if (AbstractDungeon.player.hasPower(BufferPower.POWER_ID)){
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, amount), amount));
+ ;
+ if (AbstractDungeon.player.hasPower(BufferPower.POWER_ID)) {
+ if (AbstractDungeon.player.hasPower("Buffer")) {
+ int buf = AbstractDungeon.player.getPower("Buffer").amount;
+ if (buf >= amount) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, amount), amount));
+ }
+ }
}
}
-
}
diff --git a/src/main/java/guardian/powers/EvasiveProtocolPower.java b/src/main/java/guardian/powers/EvasiveProtocolPower.java
index 446856cb8..b15f5945a 100644
--- a/src/main/java/guardian/powers/EvasiveProtocolPower.java
+++ b/src/main/java/guardian/powers/EvasiveProtocolPower.java
@@ -2,13 +2,17 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.ThornsPower;
+import hermit.actions.ReduceDebuffsAction;
+import hermit.util.Wiz;
-public class EvasiveProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class EvasiveProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:EvasiveProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -27,17 +31,11 @@ public EvasiveProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
- @Override
- public void onEnter() {
+ public void onActivateCallE(AbstractCreature target) {
flash();
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DexterityPower(AbstractDungeon.player, amount), amount));
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, amount));
}
- @Override
- public void onLeave() {
-// flash();
-// addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, DexterityPower.POWER_ID, amount));
- }
public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
diff --git a/src/main/java/guardian/powers/ExhaustStatusesPower.java b/src/main/java/guardian/powers/ExhaustStatusesPower.java
index b3bb810da..fdfe0a28b 100644
--- a/src/main/java/guardian/powers/ExhaustStatusesPower.java
+++ b/src/main/java/guardian/powers/ExhaustStatusesPower.java
@@ -29,6 +29,8 @@ public ExhaustStatusesPower(AbstractCreature owner, AbstractCreature source, int
}
+ //ACTUAL EFFECTS IN RECEIVE POST DRAW OF GUARDIANMOD
+
@Override
public void atStartOfTurn() {
super.atStartOfTurn();
diff --git a/src/main/java/guardian/powers/LoseThornsPower.java b/src/main/java/guardian/powers/LoseThornsPower.java
index db16b7282..0d52ae8ff 100644
--- a/src/main/java/guardian/powers/LoseThornsPower.java
+++ b/src/main/java/guardian/powers/LoseThornsPower.java
@@ -1,12 +1,16 @@
package guardian.powers;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
+import guardian.relics.ObsidianScales;
+import sneckomod.relics.LoadedDie;
public class LoseThornsPower extends AbstractGuardianPower {
@@ -60,6 +64,11 @@ public void atStartOfTurn() {
} else {
this.owner.getPower(ArtifactPower.POWER_ID).onSpecificTrigger();
}
+ ObsidianScales OScalesInstance = new ObsidianScales();
+ if (AbstractDungeon.player.hasRelic(ObsidianScales.ID)) {
+ this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, 1), 1));
+ OScalesInstance.flash();
+ }
}
}
diff --git a/src/main/java/guardian/powers/ModeShiftPower.java b/src/main/java/guardian/powers/ModeShiftPower.java
index 41a31a90b..edf051165 100644
--- a/src/main/java/guardian/powers/ModeShiftPower.java
+++ b/src/main/java/guardian/powers/ModeShiftPower.java
@@ -1,25 +1,31 @@
package guardian.powers;
+import champ.powers.EnergizedDurationPower;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.BufferPower;
+import com.megacrit.cardcrawl.powers.EnergizedBluePower;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import guardian.relics.ModeShifterPlus;
import guardian.stances.DefensiveMode;
+import sneckomod.relics.LoadedDie;
import static com.megacrit.cardcrawl.dungeons.AbstractDungeon.actionManager;
public class ModeShiftPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:ModeShiftPower";
- private static final int STARTING_AMOUNT = 30;
- private static final int AMOUNT_GAIN_PER_ACTIVATION = 0;
- private static final int MAX_AMOUNT = 30;
- private static final int BLOCK_ON_TRIGGER = 20;
+ private static final int STARTING_AMOUNT = 20;
+ private static final int AMOUNT_GAIN_PER_ACTIVATION = 10;
+ private static final int MAX_AMOUNT = 50;
+ private static final int BLOCK_ON_TRIGGER = 16;
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
private AbstractCreature source;
@@ -53,13 +59,59 @@ public void onSpecificTrigger(int brace) {
actionManager.addToBottom(new GainBlockAction(this.owner, this.owner, BLOCK_ON_TRIGGER));
actionManager.addToBottom(new ChangeStanceAction(DefensiveMode.STANCE_ID));
-// int turns;
-// if (AbstractDungeon.actionManager.turnHasEnded)
-// turns = 2;
-// else
-// turns = 1;
+ ModeShifterPlus modeShifterPlusInstance = new ModeShifterPlus();
+ if (AbstractDungeon.player.hasRelic(ModeShifterPlus.ID)) {
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ addToTop(new GainEnergyAction(1));
+ }
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner, new EnergizedGuardianPower(owner, 1)));
+ }
+ addToTop(new DrawCardAction(AbstractDungeon.player, 2));
+ modeShifterPlusInstance.flash();
+ }
+
+
+ int turns;
+ if (AbstractDungeon.actionManager.turnHasEnded)
+ turns = 2;
+ else
+ turns = 1;
AbstractPlayer p = AbstractDungeon.player;
- actionManager.addToBottom(new ApplyPowerAction(p, p, new DontLeaveDefensiveModePower(p, 2), 2));
+
+ actionManager.addToBottom(new ApplyPowerAction(p, p, new DontLeaveDefensiveModePower(p, turns), turns));
+
+ if (AbstractDungeon.player.hasPower(RevengePower.POWER_ID)) {
+ RevengePower revengePower =
+ (RevengePower) AbstractDungeon.player.getPower(RevengePower.POWER_ID);
+
+ if (revengePower != null) {
+ revengePower.onActivateCallR(p);
+ }
+ }
+
+ if (AbstractDungeon.player.hasPower(SpikerProtocolPower.POWER_ID)) {
+ SpikerProtocolPower spikerProtocolPower =
+ (SpikerProtocolPower) AbstractDungeon.player.getPower(SpikerProtocolPower.POWER_ID);
+
+ if (spikerProtocolPower != null) {
+ spikerProtocolPower.onActivateCallS(p);
+ }
+ }
+
+
+ if (AbstractDungeon.player.hasPower(EvasiveProtocolPower.POWER_ID)) {
+ EvasiveProtocolPower evasiveProtocolPower =
+ (EvasiveProtocolPower) AbstractDungeon.player.getPower(EvasiveProtocolPower.POWER_ID);
+
+ if (evasiveProtocolPower != null) {
+ evasiveProtocolPower.onActivateCallE(p);
+ }
+
+
+ }
+
+
this.activations++;
this.amount += Math.min(STARTING_AMOUNT + (AMOUNT_GAIN_PER_ACTIVATION * activations), MAX_AMOUNT); //Set max of 40 Brace
diff --git a/src/main/java/guardian/powers/RepulsiveProtocolPower.java b/src/main/java/guardian/powers/RepulsiveProtocolPower.java
deleted file mode 100644
index 5de897f1a..000000000
--- a/src/main/java/guardian/powers/RepulsiveProtocolPower.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package guardian.powers;
-
-
-import com.megacrit.cardcrawl.actions.common.ExhaustAction;
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-
-
-public class RepulsiveProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
- public static final String POWER_ID = "Guardian:RepulsiveProtocolPower";
- public static PowerType POWER_TYPE = PowerType.BUFF;
- public static String[] DESCRIPTIONS;
-
- public RepulsiveProtocolPower(AbstractCreature owner, int amount) {
-
- this.ID = POWER_ID;
- this.owner = owner;
- this.setImage("EvasiveProtocolPower84.png", "EvasiveProtocolPower32.png");
- this.type = POWER_TYPE;
- DESCRIPTIONS = CardCrawlGame.languagePack.getPowerStrings(this.ID).DESCRIPTIONS;
-
- this.name = CardCrawlGame.languagePack.getPowerStrings(this.ID).NAME;
- this.amount = amount;
-
- updateDescription();
- }
-
- @Override
- public void onEnter() {
- flash();
- addToBot(new ExhaustAction(this.amount, false, true, true));
- }
-
- @Override
- public void onLeave() {
- }
-
- public void updateDescription() {
- if( amount == 1){
- this.description = DESCRIPTIONS[0];
- }else{
- this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
- }
-
- }
-}
diff --git a/src/main/java/guardian/powers/RevengePower.java b/src/main/java/guardian/powers/RevengePower.java
index 1ac9c3ccd..411310e77 100644
--- a/src/main/java/guardian/powers/RevengePower.java
+++ b/src/main/java/guardian/powers/RevengePower.java
@@ -8,9 +8,10 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.LoseStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.powers.VenomDebuff;
-public class RevengePower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class RevengePower extends AbstractGuardianPower{
public static final String POWER_ID = "Guardian:RevengePower";
public static PowerType POWER_TYPE = PowerType.BUFF;
@@ -37,15 +38,10 @@ public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
- @Override
- public void onEnter() {
+
+ public void onActivateCallR(AbstractCreature target) {
flash();
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner, new StrengthPower(owner, amount), amount));
}
- @Override
- public void onLeave() {
- flash();
- AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(owner, owner, StrengthPower.POWER_ID, amount));
- }
}
\ No newline at end of file
diff --git a/src/main/java/guardian/powers/SpikerProtocolPower.java b/src/main/java/guardian/powers/SpikerProtocolPower.java
index 45825da74..e6866fb8e 100644
--- a/src/main/java/guardian/powers/SpikerProtocolPower.java
+++ b/src/main/java/guardian/powers/SpikerProtocolPower.java
@@ -6,10 +6,11 @@
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
-public class SpikerProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class SpikerProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:SpikerProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -28,18 +29,11 @@ public SpikerProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
- @Override
- public void onEnter() {
+ public void onActivateCallS(AbstractCreature target) {
flash();
addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, amount), amount));
}
- @Override
- public void onLeave() {
-// flash();
-// addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, ThornsPower.POWER_ID, amount));
- }
-
public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
diff --git a/src/main/java/guardian/relics/BottledAnomaly.java b/src/main/java/guardian/relics/BottledAnomaly.java
index 2f3695c4a..cf6d0e467 100644
--- a/src/main/java/guardian/relics/BottledAnomaly.java
+++ b/src/main/java/guardian/relics/BottledAnomaly.java
@@ -29,7 +29,7 @@ public class BottledAnomaly extends CustomRelic implements CustomBottleRelic, Cu
public BottledAnomaly() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.SHOP, LandingSound.FLAT);
+ RelicTier.SHOP, LandingSound.CLINK);
}
@Override
@@ -172,10 +172,10 @@ public void atTurnStartPostDraw() {
addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
if (card instanceof AbstractUnknownCard) {
AbstractCard unknowncard = ( (AbstractUnknownCard)card ).generateFromPoolButNotIntoHand();
- unknowncard.modifyCostForCombat(-999);
+ unknowncard.setCostForTurn(0);
addToBot( new MakeTempCardInHandAction( unknowncard ) );
}else {
- card.modifyCostForCombat(-999);
+ card.setCostForTurn(0);
addToBot(new MakeTempCardInHandAction(card));
}
this.grayscale = true;
diff --git a/src/main/java/guardian/relics/BottledStasis.java b/src/main/java/guardian/relics/BottledStasis.java
index bbe08b419..b514e2220 100644
--- a/src/main/java/guardian/relics/BottledStasis.java
+++ b/src/main/java/guardian/relics/BottledStasis.java
@@ -30,7 +30,7 @@ public class BottledStasis extends CustomRelic implements CustomBottleRelic, Cus
public BottledStasis() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.SHOP, LandingSound.FLAT);
+ RelicTier.UNCOMMON, LandingSound.CLINK);
}
@Override
diff --git a/src/main/java/guardian/relics/ModeShifterPlus.java b/src/main/java/guardian/relics/ModeShifterPlus.java
index 41bdd8ca1..bfaec69e1 100644
--- a/src/main/java/guardian/relics/ModeShifterPlus.java
+++ b/src/main/java/guardian/relics/ModeShifterPlus.java
@@ -1,40 +1,47 @@
package guardian.relics;
import basemod.abstracts.CustomRelic;
+import champ.ChampMod;
+import champ.relics.ChampionCrown;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.stances.AbstractStance;
import guardian.GuardianMod;
-import guardian.powers.DontLeaveDefensiveModePower;
+import guardian.cards.GearUp;
import guardian.stances.DefensiveMode;
public class ModeShifterPlus extends CustomRelic {
public static final String ID = "Guardian:ModeShifterPlus";
public static final String IMG_PATH = "relics/guardianGear.png";
public static final String OUTLINE_IMG_PATH = "relics/guardianGearOutline.png";
- private static final int HP_PER_CARD = 1;
public ModeShifterPlus() {
- super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
+ super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)),
+ new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
RelicTier.BOSS, LandingSound.FLAT);
}
@Override
- public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0];
+ public void atBattleStart() {
+ flash();
+ addToTop(new MakeTempCardInHandAction(new GearUp()));
+ addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
- public void atBattleStartPreDraw() {
- this.flash();
- AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, 10));
- AbstractDungeon.actionManager.addToBottom(new ChangeStanceAction(DefensiveMode.STANCE_ID));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DontLeaveDefensiveModePower(AbstractDungeon.player, 3), 3));
+ @Override
+ public void onChangeStance(AbstractStance prevStance, AbstractStance newStance) {
+ if (newStance instanceof DefensiveMode) {
+ // flash();
+ addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ }
}
-
@Override
public void obtain() {
if (AbstractDungeon.player.hasRelic(ModeShifter.ID)) {
@@ -49,12 +56,33 @@ public void obtain() {
}
}
+ @Override
+ public String getUpdatedDescription() {
+ // Colorize the starter relic's name
+ String name = new ModeShifter().name;
+ StringBuilder sb = new StringBuilder();
+ if(Settings.language== Settings.GameLanguage.ZHS|| Settings.language== Settings.GameLanguage.ZHT){
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]").append(name).append("[]");
+
+ }else {
+ for (String word : name.split(" ")) {
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]").append(word).append("[] ");
+ }
+ sb.setLength(sb.length() - 1);
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]");
+ }
+
+ return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
+ }
+
+
@Override
public AbstractRelic makeCopy() {
return new ModeShifterPlus();
}
+ @Override
public boolean canSpawn() {
return AbstractDungeon.player.hasRelic(ModeShifter.ID);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/guardian/relics/ObsidianScales.java b/src/main/java/guardian/relics/ObsidianScales.java
new file mode 100644
index 000000000..0c2521b51
--- /dev/null
+++ b/src/main/java/guardian/relics/ObsidianScales.java
@@ -0,0 +1,46 @@
+package guardian.relics;
+
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnReceivePowerRelic;
+import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.*;
+import guardian.GuardianMod;
+
+public class ObsidianScales extends CustomRelic implements OnReceivePowerRelic{
+ public static final String ID = "Guardian:ObsidianScales";
+ public static final String IMG_PATH = "relics/obsidianscales.png";
+ public static final String OUTLINE_IMG_PATH = "relics/obsidianscalesOutline.png";
+
+
+ public ObsidianScales() {
+ super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)),
+ new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
+ RelicTier.BOSS, LandingSound.CLINK);
+ }
+
+ public void atBattleStart() {
+ this.flash();
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, 3), 3));
+ }
+
+
+ @Override
+ public boolean onReceivePower(AbstractPower var1, AbstractCreature var2) {
+ // was told that checking for flex / speed / thorns down was "not fun" so it uses determination rules
+ if (var1.type == AbstractPower.PowerType.DEBUFF){
+ this.flash();
+ this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, 1), 1));
+ }
+ return true;
+ }
+
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
diff --git a/src/main/java/guardian/relics/PickAxe.java b/src/main/java/guardian/relics/PickAxe.java
index 2ea8ae822..523f772ab 100644
--- a/src/main/java/guardian/relics/PickAxe.java
+++ b/src/main/java/guardian/relics/PickAxe.java
@@ -2,23 +2,22 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
-import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
+import downfall.util.TextureLoader;
import guardian.GuardianMod;
-import guardian.ui.FindGemsOption;
-
-import java.util.ArrayList;
public class PickAxe extends CustomRelic {
public static final String ID = "Guardian:PickAxe";
public static final String IMG_PATH = "relics/pick.png";
public static final String OUTLINE_IMG_PATH = "relics/pickOutline.png";
+ private static final int HP_PER_CARD = 1;
public PickAxe() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
RelicTier.COMMON, LandingSound.FLAT);
-// this.counter = 3;
+ this.counter = 3;
}
@Override
@@ -27,27 +26,23 @@ public String getUpdatedDescription() {
}
@Override
- public void addCampfireOption(ArrayList options) {
- options.add(new FindGemsOption(true));
+ public void onTrigger() {
+ super.onTrigger();
+ this.counter--;
+ setCounter(this.counter);
}
- // @Override
-// public void onTrigger() {
-// super.onTrigger();
-//// this.counter--;
-// setCounter(this.counter);
-// }
-
-// public void setCounter(int counter) {
-// this.counter = counter;
-// if (counter == 0) {
-// this.counter = -2;
-// this.img = TextureLoader.getTexture(GuardianMod.getResourcePath("relics/pickUsed.png"));
-// this.usedUp();
-// } else {
-//
-// }
-// }
+ public void setCounter(int counter) {
+ this.counter = counter;
+ if (counter == 0) {
+ this.counter = -2;
+ this.img = TextureLoader.getTexture(GuardianMod.getResourcePath("relics/pickUsed.png"));
+ this.usedUp();
+ } else {
+
+ }
+
+ }
@Override
public AbstractRelic makeCopy() {
diff --git a/src/main/java/guardian/relics/SackOfGems.java b/src/main/java/guardian/relics/SackOfGems.java
index 23efd5e70..35d6d494a 100644
--- a/src/main/java/guardian/relics/SackOfGems.java
+++ b/src/main/java/guardian/relics/SackOfGems.java
@@ -8,6 +8,9 @@
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import guardian.GuardianMod;
+import guardian.rewards.GemReward;
+import guardian.rewards.GemRewardAllRarities;
+import sneckomod.util.ColorfulRareReward;
import java.util.ArrayList;
@@ -28,21 +31,12 @@ public String getUpdatedDescription() {
}
public void onEquip() {
- ArrayList gems = GuardianMod.getRewardGemCards(false, 5);
- ArrayList rewards = new ArrayList<>();
- int rando;
- for (int i = 0; i < 5; ++i) {
- rando = AbstractDungeon.cardRng.random(gems.size() - 1);
- rewards.add(gems.get(rando));
- gems.remove(rando);
- }
-
- int times = 0;
- for (AbstractCard c : rewards) {
-
- AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(c, (float) (Settings.WIDTH * (0.1 + (0.2 * times))), (float) (Settings.HEIGHT / 2)));
- times++;
+ for (int i = 0; i < 5; i++) {
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
}
+ AbstractDungeon.combatRewardScreen.open();
+ AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+ AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
}
diff --git a/src/main/java/guardian/relics/StasisCodex.java b/src/main/java/guardian/relics/StasisCodex.java
index 8edd6b4d9..aa43697e4 100644
--- a/src/main/java/guardian/relics/StasisCodex.java
+++ b/src/main/java/guardian/relics/StasisCodex.java
@@ -15,32 +15,53 @@ public class StasisCodex extends CustomRelic {
public static final String IMG_PATH = "relics/constructCodex.png";
public static final String OUTLINE_IMG_PATH = "relics/constructCodexOutline.png";
public static final String LARGE_IMG_PATH = "relics/constructCodexLarge.png";
- private static final int HP_PER_CARD = 1;
+ private static final int MAX_MARKER = 3;
+ private int marker = 0;
public StasisCodex() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.UNCOMMON, LandingSound.FLAT);
+ RelicTier.SHOP, LandingSound.FLAT);
this.largeImg = TextureLoader.getTexture(GuardianMod.getResourcePath(LARGE_IMG_PATH));
}
+ @Override
+ public void atBattleStart() {
+ this.counter = 0;
+ marker = 0;
+ this.grayscale = false;
+ }
+
@Override
public void onPlayerEndTurn() {
super.onPlayerEndTurn();
- if (!GuardianMod.isStasisOrbInPlay()) {
-
- AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- AbstractDungeon.actionManager.addToBottom(new StasisCodexAction());
+ if (marker < 3) {
+ ++this.counter;
+ marker++;
+ if (AbstractDungeon.player.hasEmptyOrb() || !GuardianMod.isStasisOrbInPlay()) {
+ AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ AbstractDungeon.actionManager.addToBottom(new StasisCodexAction());
+ }
+ if (marker == 3) {
+ this.flash();
+ this.grayscale = true;
+ }
}
}
+ @Override
+ public void onVictory() {
+ this.grayscale = false;
+ marker = 0;
+ this.counter = 0;
+ }
+
@Override
public String getUpdatedDescription() {
return this.DESCRIPTIONS[0];
}
-
@Override
public AbstractRelic makeCopy() {
return new StasisCodex();
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/guardian/rewards/GemReward.java b/src/main/java/guardian/rewards/GemReward.java
index 1cf27b284..8100f24e8 100644
--- a/src/main/java/guardian/rewards/GemReward.java
+++ b/src/main/java/guardian/rewards/GemReward.java
@@ -32,7 +32,7 @@ public boolean claimReward() {
public void generate_reward_cards(){
this.cards.clear();
- this.cards.add( GuardianMod.getSingleRewardGemWithWeight() );
+ this.cards.addAll(GuardianMod.getRewardGemCards(false,1));
}
}
\ No newline at end of file
diff --git a/src/main/java/guardian/stances/DefensiveMode.java b/src/main/java/guardian/stances/DefensiveMode.java
index 7f6483191..02dd6c216 100644
--- a/src/main/java/guardian/stances/DefensiveMode.java
+++ b/src/main/java/guardian/stances/DefensiveMode.java
@@ -136,4 +136,4 @@ public void onEndOfRound() {
public void updateDescription() {
this.description = GuardianCharacter.charStrings.TEXT[5];
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/ui/EnhanceBonfireOption.java b/src/main/java/guardian/ui/EnhanceBonfireOption.java
index 99df0800d..f83a173f5 100644
--- a/src/main/java/guardian/ui/EnhanceBonfireOption.java
+++ b/src/main/java/guardian/ui/EnhanceBonfireOption.java
@@ -5,7 +5,9 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.helpers.MathHelper;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.util.TextureLoader;
@@ -23,6 +25,7 @@ public class EnhanceBonfireOption extends AbstractCampfireOption {
}
+ //private ArrayList idleMessages;
public EnhanceBonfireOption(boolean active) {
this.label = DESCRIPTIONS[0];
diff --git a/src/main/java/guardian/ui/FindGemsOption.java b/src/main/java/guardian/ui/FindGemsOption.java
index d780bf397..65a97d9a4 100644
--- a/src/main/java/guardian/ui/FindGemsOption.java
+++ b/src/main/java/guardian/ui/FindGemsOption.java
@@ -4,11 +4,13 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.helpers.MathHelper;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.util.TextureLoader;
import guardian.GuardianMod;
+import guardian.relics.PickAxe;
import guardian.vfx.CampfireFindGemsEffect;
@@ -22,8 +24,10 @@ public class FindGemsOption extends AbstractCampfireOption {
}
+ //private ArrayList idleMessages;
public FindGemsOption(boolean active) {
this.label = DESCRIPTIONS[0];
+ this.description = DESCRIPTIONS[1];
this.usable = active;
if (active) {
@@ -37,10 +41,10 @@ public FindGemsOption(boolean active) {
@Override
public void useOption() {
+
AbstractDungeon.effectList.add(new CampfireFindGemsEffect());
- this.description = DESCRIPTIONS[2];
- this.img = TextureLoader.getTexture(GuardianMod.getResourcePath("ui/minecampfiredisabled.png"));
- this.usable = false;
+ AbstractDungeon.player.getRelic(PickAxe.ID).onTrigger();
+
}
@Override
diff --git a/src/main/java/guardian/vfx/CampfireFindGemsEffect.java b/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
index 2580cc3d6..01cabccbd 100644
--- a/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
+++ b/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
@@ -1,3 +1,8 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
package guardian.vfx;
import com.badlogic.gdx.Gdx;
@@ -9,16 +14,17 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.rooms.AbstractRoom.RoomPhase;
import com.megacrit.cardcrawl.rooms.RestRoom;
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import guardian.GuardianMod;
+import guardian.rewards.GemReward;
import java.util.ArrayList;
-import java.util.Arrays;
public class CampfireFindGemsEffect extends AbstractGameEffect {
private static final float DUR = 2.0F;
- private boolean got = false;
private Color screenColor;
@@ -33,25 +39,19 @@ public void update() {
this.duration -= Gdx.graphics.getDeltaTime();
this.updateBlackScreenColor();
- if (this.duration < 1.0F) {
- if(!got) {
- got = true;
- CardCrawlGame.sound.play("SHOVEL");
- ArrayList gems = new ArrayList<>(Arrays.asList(GuardianMod.getSingleRewardGemWithWeight())) ;
- if (gems != null && !gems.isEmpty()) {
- AbstractDungeon.cardRewardScreen.open(gems, null, "");
- }
-
-// AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(gems.get(0), (float) (Settings.WIDTH * 0.35), (float) (Settings.HEIGHT / 2)));
-// AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(gems.get(1), (float) (Settings.WIDTH * 0.7), (float) (Settings.HEIGHT / 2)));
+ if (this.duration < 0.0F) {
+ CardCrawlGame.sound.play("SHOVEL");
+ for (int i = 0; i < 2; i++) {
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
}
- }
+ // AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
+ AbstractDungeon.combatRewardScreen.open();
+ AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+
- if (this.duration < 0.0F) {
this.isDone = true;
((RestRoom) AbstractDungeon.getCurrRoom()).fadeIn();
- ((RestRoom) AbstractDungeon.getCurrRoom()).campfireUI.reopen();
-// AbstractDungeon.getCurrRoom().phase = RoomPhase.COMPLETE;
+ AbstractDungeon.getCurrRoom().phase = RoomPhase.COMPLETE;
}
}
@@ -74,4 +74,4 @@ public void render(SpriteBatch sb) {
public void dispose() {
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/hermit/actions/EclipseAction.java b/src/main/java/hermit/actions/EclipseAction.java
index 31bf061f7..4c85b3241 100644
--- a/src/main/java/hermit/actions/EclipseAction.java
+++ b/src/main/java/hermit/actions/EclipseAction.java
@@ -1,6 +1,8 @@
package hermit.actions;
import java.util.Iterator;
+
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -40,7 +42,7 @@ public void update() {
this.isDone = true;
} else if (tmp.size() == 1) {
card = tmp.getTopCard();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.exhaustPile.removeCard(card);
this.p.createHandIsFullDialog();
@@ -64,7 +66,7 @@ public void update() {
} else if (tmp.size() <= this.amount) {
for(int i = 0; i < tmp.size(); ++i) {
card = tmp.getNCardFromTop(i);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -101,7 +103,7 @@ public void update() {
while(var1.hasNext()) {
card = (AbstractCard)var1.next();
card.unhover();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.exhaustPile.removeCard(card);
card.setCostForTurn(0);
diff --git a/src/main/java/hermit/actions/FullyLoadedAction.java b/src/main/java/hermit/actions/FullyLoadedAction.java
index a86e6adc1..bd690e2ec 100644
--- a/src/main/java/hermit/actions/FullyLoadedAction.java
+++ b/src/main/java/hermit/actions/FullyLoadedAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -53,7 +54,7 @@ public void update() {
tmp.shuffle();
card = tmp.getBottomCard();
tmp.removeCard(card);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.createHandIsFullDialog();
} else {
p.drawPile.group.remove(card);
diff --git a/src/main/java/hermit/actions/GambitAction.java b/src/main/java/hermit/actions/GambitAction.java
index 7505b87f2..30c700955 100644
--- a/src/main/java/hermit/actions/GambitAction.java
+++ b/src/main/java/hermit/actions/GambitAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.actions.common.ReduceCostForTurnAction;
@@ -53,7 +54,7 @@ public void update() {
tmp.shuffle();
card = tmp.getBottomCard();
tmp.removeCard(card);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.createHandIsFullDialog();
} else {
card.unhover();
diff --git a/src/main/java/hermit/actions/LuckDrawAction.java b/src/main/java/hermit/actions/LuckDrawAction.java
index 6b2a6081d..274cb76f2 100644
--- a/src/main/java/hermit/actions/LuckDrawAction.java
+++ b/src/main/java/hermit/actions/LuckDrawAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.EmptyDeckShuffleAction;
@@ -26,7 +27,7 @@ public LuckDrawAction(int energy) {
public void update() {
if (this.duration == Settings.ACTION_DUR_MED) {
- if (tracker >= energy || (p.drawPile.isEmpty() && p.discardPile.isEmpty()) || p.hand.size() >= 10) {
+ if (tracker >= energy || (p.drawPile.isEmpty() && p.discardPile.isEmpty()) || p.hand.size() >= BaseMod.MAX_HAND_SIZE) {
this.isDone = true;
return;
}
diff --git a/src/main/java/hermit/cards/EternalForm.java b/src/main/java/hermit/cards/EternalForm.java
index 9f5f78e20..a23227fe0 100644
--- a/src/main/java/hermit/cards/EternalForm.java
+++ b/src/main/java/hermit/cards/EternalForm.java
@@ -1,5 +1,6 @@
package hermit.cards;
+import basemod.helpers.BaseModCardTags;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -35,6 +36,7 @@ public EternalForm() {
baseMagicNumber = magicNumber = 1;
this.isEthereal = true;
loadJokeCardImage(this, "eternal_form.png");
+ tags.add(BaseModCardTags.FORM);
}
@Override
diff --git a/src/main/java/hermit/cards/FinalCanter.java b/src/main/java/hermit/cards/FinalCanter.java
index d869e52e7..c49a17ef9 100644
--- a/src/main/java/hermit/cards/FinalCanter.java
+++ b/src/main/java/hermit/cards/FinalCanter.java
@@ -11,6 +11,7 @@
import hermit.actions.FinalCanterAction;
import hermit.characters.hermit;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.Iterator;
@@ -46,6 +47,7 @@ public FinalCanter() {
this.selfRetain = true;
exhaust=true;
loadJokeCardImage(this, "final_canter.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
// Actions the card should do.
diff --git a/src/main/java/hermit/cards/ImpendingDoom.java b/src/main/java/hermit/cards/ImpendingDoom.java
index 3680490a1..09124b9b9 100644
--- a/src/main/java/hermit/cards/ImpendingDoom.java
+++ b/src/main/java/hermit/cards/ImpendingDoom.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import hermit.HermitMod;
import hermit.powers.Concentration;
import hermit.powers.SnipePower;
@@ -27,7 +28,7 @@ public class ImpendingDoom extends AbstractDynamicCard {
// STAT DECLARATION
- private static final CardRarity RARITY = CardRarity.SPECIAL;
+ private static final CardRarity RARITY = CardRarity.CURSE; //Change from Special Rarity: Impending Doom can now show up as a Curse during Downfall Mode runs.
private static final CardTarget TARGET = CardTarget.ALL;
private static final CardType TYPE = CardType.CURSE;
public static final CardColor COLOR = CardColor.CURSE;
@@ -45,6 +46,10 @@ public ImpendingDoom() {
baseDamage = DAMAGE;
this.isMultiDamage = true;
loadJokeCardImage(this, "impending_doom.png");
+
+ //Impending Doom can now show up as a Curse during Downfall Mode runs.
+ tags.add(downfallMod.DOWNFALL_CURSE);
+
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/hermit/cards/RoundhouseKick.java b/src/main/java/hermit/cards/RoundhouseKick.java
index 6a1c83104..c4e2eb811 100644
--- a/src/main/java/hermit/cards/RoundhouseKick.java
+++ b/src/main/java/hermit/cards/RoundhouseKick.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
import hermit.HermitMod;
import hermit.characters.hermit;
+import sneckomod.SneckoMod;
import java.util.Iterator;
@@ -50,6 +51,7 @@ public RoundhouseKick() {
baseDamage=13;
exhaust=true;
loadJokeCardImage(this, "roundhouse_kick.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
// Actions the card should do.
diff --git a/src/main/java/hermit/powers/CoalescencePower.java b/src/main/java/hermit/powers/CoalescencePower.java
index 6cbe1fba1..45efcfead 100644
--- a/src/main/java/hermit/powers/CoalescencePower.java
+++ b/src/main/java/hermit/powers/CoalescencePower.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.watcher.EstablishmentPower;
import hermit.HermitMod;
import hermit.util.TextureLoader;
@@ -49,7 +50,7 @@ public CoalescencePower(final AbstractCreature owner, final int amount) {
public void atEndOfTurn(boolean isPlayer) {
this.flash();
- if (isPlayer && !AbstractDungeon.player.hand.isEmpty() && !AbstractDungeon.player.hasRelic("Runic Pyramid") && !AbstractDungeon.player.hasPower("Equilibrium")) {
+ if ((isPlayer && !AbstractDungeon.player.hand.isEmpty() && !AbstractDungeon.player.hasPower("Equilibrium"))) {
this.addToBot(new RetainCardsAction(this.owner, this.amount));
}
diff --git a/src/main/java/hermit/relics/BloodyTooth.java b/src/main/java/hermit/relics/BloodyTooth.java
index 96ff154f2..86cb54b51 100644
--- a/src/main/java/hermit/relics/BloodyTooth.java
+++ b/src/main/java/hermit/relics/BloodyTooth.java
@@ -2,10 +2,12 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import hermit.HermitMod;
import hermit.util.TextureLoader;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
import static hermit.HermitMod.makeRelicOutlinePath;
import static hermit.HermitMod.makeRelicPath;
@@ -30,9 +32,12 @@ public void onVictory(){
}
}
+ public boolean canSpawn() {
+ return Settings.isEndless || ((AbstractDungeon.floorNum <= 53 && AbstractDungeon.ascensionLevel >= 20) && !evilMode) || ((AbstractDungeon.floorNum <= 52 && AbstractDungeon.ascensionLevel < 20 && !evilMode)) || ((AbstractDungeon.floorNum <= 48 && evilMode));
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
}
-
}
diff --git a/src/main/java/hermit/relics/CharredGlove.java b/src/main/java/hermit/relics/CharredGlove.java
index 328a60d98..b2369fb5a 100644
--- a/src/main/java/hermit/relics/CharredGlove.java
+++ b/src/main/java/hermit/relics/CharredGlove.java
@@ -21,6 +21,7 @@
import java.util.Iterator;
import java.util.Random;
+import static champ.ChampMod.vigor;
import static hermit.HermitMod.makeRelicOutlinePath;
import static hermit.HermitMod.makeRelicPath;
@@ -39,7 +40,11 @@ public CharredGlove() {
public void onCardDraw(AbstractCard card) {
if (card.color == AbstractCard.CardColor.CURSE) {
this.flash();
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
+ //AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
+
+ //This should NEVER happen but maybe there's some cross-mod nonsense that allows it to happen.
+ //Mechanically speaking, this is so basically identical.
+ vigor(3);
}
}
diff --git a/src/main/java/hermit/relics/ClaspedLocket.java b/src/main/java/hermit/relics/ClaspedLocket.java
index 4db0dae4c..78158689d 100644
--- a/src/main/java/hermit/relics/ClaspedLocket.java
+++ b/src/main/java/hermit/relics/ClaspedLocket.java
@@ -49,7 +49,10 @@ public void onCardDraw(AbstractCard card) {
if (card.type == AbstractCard.CardType.CURSE) {
this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
this.canTrigger = false;
+ // visual feedback so the player can tell if it triggered that turn
+ stopPulse();
this.addToTop(new DrawCardAction(AbstractDungeon.player, 2));
this.addToTop(new ExhaustSpecificCardAction(card,AbstractDungeon.player.hand));
}
@@ -62,8 +65,15 @@ public boolean canSpawn() {
public void atTurnStart() {
this.canTrigger = true;
+ beginLongPulse(); //visual feedback
}
+ @Override
+ public void onVictory() {
+ stopPulse();
+ }
+
+
public void update() {
super.update();
diff --git a/src/main/java/hermit/relics/StraightRazor.java b/src/main/java/hermit/relics/StraightRazor.java
index 19987752e..1a6ba6ec9 100644
--- a/src/main/java/hermit/relics/StraightRazor.java
+++ b/src/main/java/hermit/relics/StraightRazor.java
@@ -5,10 +5,12 @@
import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import hermit.HermitMod;
import hermit.util.TextureLoader;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
import static hermit.HermitMod.makeRelicOutlinePath;
import static hermit.HermitMod.makeRelicPath;
@@ -29,9 +31,12 @@ public void onRemoveCardFromMasterDeck(AbstractCard var1){
AbstractDungeon.player.heal(15);
}
+ public boolean canSpawn() {
+ return Settings.isEndless || (AbstractDungeon.floorNum <= 48); // cannot appear in act 4
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
}
-
}
diff --git a/src/main/java/reskinContent/reskinContent.java b/src/main/java/reskinContent/reskinContent.java
index 27bfe7934..4033a517d 100644
--- a/src/main/java/reskinContent/reskinContent.java
+++ b/src/main/java/reskinContent/reskinContent.java
@@ -73,18 +73,21 @@ public reskinContent() {
public static String getLanguageString() {
String language;
switch (Settings.language) {
+ case PTB:
+ language = "ptb";
+ break;
case ZHS:
language = "zhs";
break;
-// case ZHT:
-// language = "zht";
-// break;
+ case ZHT:
+ language = "zht";
+ break;
case RUS:
language = "rus";
break;
-// case FRA:
-// language = "fra";
-// break;
+ case FRA:
+ language = "fra";
+ break;
case KOR:
language = "kor";
break;
diff --git a/src/main/java/reskinContent/skinCharacter/GremlinSkin.java b/src/main/java/reskinContent/skinCharacter/GremlinSkin.java
new file mode 100644
index 000000000..f2d9ef257
--- /dev/null
+++ b/src/main/java/reskinContent/skinCharacter/GremlinSkin.java
@@ -0,0 +1 @@
+//there's nothing here!
\ No newline at end of file
diff --git a/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java b/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
index 90f70d14a..13f0c2f39 100644
--- a/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
+++ b/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
@@ -1,5 +1,6 @@
package slimebound.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
@@ -16,7 +17,7 @@ public ExhaustToHandDirectlyAction(AbstractCard card) {
public void update() {
if (this.duration == Settings.ACTION_DUR_FAST) {// 19
- if ((AbstractDungeon.player.discardPile.contains(this.card)) && AbstractDungeon.player.hand.size() < 10) {// 20 21
+ if ((AbstractDungeon.player.discardPile.contains(this.card)) && AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {// 20 21
AbstractDungeon.player.hand.addToHand(this.card);// 22
this.card.unhover();// 23
this.card.setAngle(0.0F, true);// 24
diff --git a/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java b/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
index f49f62d34..3f69c24be 100644
--- a/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
+++ b/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
@@ -1,5 +1,6 @@
package slimebound.actions;
+import basemod.BaseMod;
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
@@ -61,9 +62,9 @@ public void update() {
int handAmount = this.amount;
- if (this.amount + AbstractDungeon.player.hand.size() > 10) {
+ if (this.amount + AbstractDungeon.player.hand.size() > BaseMod.MAX_HAND_SIZE) {
AbstractDungeon.player.createHandIsFullDialog();
- discardAmount = this.amount + AbstractDungeon.player.hand.size() - 10;
+ discardAmount = this.amount + AbstractDungeon.player.hand.size() - BaseMod.MAX_HAND_SIZE;
handAmount -= discardAmount;
}
diff --git a/src/main/java/slimebound/actions/SlimeAutoAttack.java b/src/main/java/slimebound/actions/SlimeAutoAttack.java
index f37cda518..bad22e3fe 100644
--- a/src/main/java/slimebound/actions/SlimeAutoAttack.java
+++ b/src/main/java/slimebound/actions/SlimeAutoAttack.java
@@ -166,7 +166,6 @@ public void update() {
if (this.CultistBuff) {
CardCrawlGame.sound.playA("VO_CULTIST_1A", .3f);
AbstractDungeon.actionManager.addToTop(new SlimeAutoCultistBuff(1, this.slime));
-
}
if (slime instanceof ShieldSlime)
@@ -174,7 +173,6 @@ public void update() {
if (this.hitsAll) {
AbstractDungeon.actionManager.addToTop(new DamageAllEnemiesAction(AbstractDungeon.player, DamageInfo.createDamageMatrix(this.damage, true, true), DamageInfo.DamageType.THORNS, AttackEffect.POISON));
-
} else {
AbstractDungeon.actionManager.addToTop(new DamageAction(mo,
new DamageInfo(AbstractDungeon.player, this.damage, DamageInfo.DamageType.THORNS),
diff --git a/src/main/java/slimebound/cards/DivideAndConquer.java b/src/main/java/slimebound/cards/DivideAndConquer.java
index bf838d9a0..108221cb5 100644
--- a/src/main/java/slimebound/cards/DivideAndConquer.java
+++ b/src/main/java/slimebound/cards/DivideAndConquer.java
@@ -24,6 +24,7 @@
import slimebound.actions.TendrilFlailAction;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -56,6 +57,7 @@ public DivideAndConquer() {
this.exhaust = true;
this.isMultiDamage = true;
baseDamage = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "DivideAndConquer.png");
}
diff --git a/src/main/java/slimebound/cards/FirmFortitude.java b/src/main/java/slimebound/cards/FirmFortitude.java
index 2556671a8..94a041c81 100644
--- a/src/main/java/slimebound/cards/FirmFortitude.java
+++ b/src/main/java/slimebound/cards/FirmFortitude.java
@@ -13,6 +13,7 @@
import slimebound.SlimeboundMod;
import slimebound.patches.AbstractCardEnum;
import slimebound.powers.PotencyPower;
+import sneckomod.SneckoMod;
public class FirmFortitude extends AbstractSlimeboundCard {
@@ -41,6 +42,7 @@ public FirmFortitude() {
baseMagicNumber = magicNumber = 2;
SlimeboundMod.loadJokeCardImage(this, "FirmFortitude.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
@@ -51,18 +53,18 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
- if (AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount < 0) {
- if (!this.hasTag(expansionContentMod.UNPLAYABLE))
- this.tags.add(expansionContentMod.UNPLAYABLE);
- return false;
- }
- }
- this.tags.remove(expansionContentMod.UNPLAYABLE);
- return super.canUse(p, m);
- }
+ // @Override
+ // public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ // if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
+ // if (AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount < 0) {
+ // if (!this.hasTag(expansionContentMod.UNPLAYABLE))
+ // this.tags.add(expansionContentMod.UNPLAYABLE);
+ // return false;
+ // }
+ // }
+ // this.tags.remove(expansionContentMod.UNPLAYABLE);
+ // return super.canUse(p, m);
+ // }
public AbstractCard makeCopy() {
return new FirmFortitude();
diff --git a/src/main/java/slimebound/cards/FormOfPuddle.java b/src/main/java/slimebound/cards/FormOfPuddle.java
index 317a80c49..4efdf9c0c 100644
--- a/src/main/java/slimebound/cards/FormOfPuddle.java
+++ b/src/main/java/slimebound/cards/FormOfPuddle.java
@@ -20,8 +20,9 @@ public class FormOfPuddle extends AbstractSlimeboundCard {
private static final CardStrings cardStrings;
public FormOfPuddle() {
- super(ID, cardStrings.NAME, IMG_PATH, 3, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.SLIMEBOUND, CardRarity.RARE, CardTarget.SELF);
+ super(ID, cardStrings.NAME, IMG_PATH, 2, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.SLIMEBOUND, CardRarity.RARE, CardTarget.SELF);
this.magicNumber = this.baseMagicNumber = 1;
+ isEthereal = true;
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "FormOfPuddle.png");
}
@@ -36,7 +37,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(2);
+ upgradeBaseCost(1);
}
}
diff --git a/src/main/java/slimebound/cards/LevelUp.java b/src/main/java/slimebound/cards/LevelUp.java
index 2463b9199..69e0cacc7 100644
--- a/src/main/java/slimebound/cards/LevelUp.java
+++ b/src/main/java/slimebound/cards/LevelUp.java
@@ -36,7 +36,7 @@ public class LevelUp extends AbstractSlimeboundCard {
public LevelUp() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- this.magicNumber = this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber = 2;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/MassFeed.java b/src/main/java/slimebound/cards/MassFeed.java
index caa740cef..e07314ce5 100644
--- a/src/main/java/slimebound/cards/MassFeed.java
+++ b/src/main/java/slimebound/cards/MassFeed.java
@@ -43,7 +43,7 @@ public MassFeed() {
this.tags.add(CardTags.HEALING);
this.baseDamage = 10;
- this.magicNumber = this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber = 2;
this.exhaust = true;
this.isMultiDamage = true;
diff --git a/src/main/java/slimebound/cards/MassRepurpose.java b/src/main/java/slimebound/cards/MassRepurpose.java
index d6013cecd..b4f6cfa23 100644
--- a/src/main/java/slimebound/cards/MassRepurpose.java
+++ b/src/main/java/slimebound/cards/MassRepurpose.java
@@ -34,7 +34,7 @@ public class MassRepurpose extends AbstractSlimeboundCard {
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
- private static final int COST = 1;
+ private static final int COST = 0;
public static String UPGRADED_DESCRIPTION;
static {
@@ -51,7 +51,7 @@ public MassRepurpose() {
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "MassRepurpose.png");
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
// this.tags.add(CardTags.HEALING);
@@ -64,7 +64,10 @@ public void use(AbstractPlayer p, AbstractMonster m) {
SlimeboundMod.spawnSpecialistSlime();
}
}
- if (upgraded) AbstractDungeon.actionManager.addToBottom(new TriggerSlimeAttacksAction(p));
+ if (upgraded) {
+ AbstractDungeon.actionManager.addToBottom(new TriggerSlimeAttacksAction(p));
+ checkMinionMaster();
+ }
}
public void upgrade() {
diff --git a/src/main/java/slimebound/cards/MinionMaster.java b/src/main/java/slimebound/cards/MinionMaster.java
index ca59673ad..ae1594325 100644
--- a/src/main/java/slimebound/cards/MinionMaster.java
+++ b/src/main/java/slimebound/cards/MinionMaster.java
@@ -23,7 +23,7 @@ public class MinionMaster extends AbstractSlimeboundCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 2;
+ private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
private static int upgradedamount = 1;
@@ -36,7 +36,7 @@ public class MinionMaster extends AbstractSlimeboundCard {
public MinionMaster() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.magicNumber = this.baseMagicNumber = 1;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/OneTwoCombo.java b/src/main/java/slimebound/cards/OneTwoCombo.java
index 449857bae..db0e5cbcf 100644
--- a/src/main/java/slimebound/cards/OneTwoCombo.java
+++ b/src/main/java/slimebound/cards/OneTwoCombo.java
@@ -36,7 +36,7 @@ public class OneTwoCombo extends AbstractSlimeboundCard {
public OneTwoCombo() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- baseDamage = 3;
+ baseDamage = 4;
SlimeboundMod.loadJokeCardImage(this, "OneTwoCombo.png");
// exhaust = true;
}
@@ -47,17 +47,17 @@ public void onSplit() {
public void use(AbstractPlayer p, AbstractMonster m) {
addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HEAVY));
- if (upgraded) addToBot(new CommandAction());
-
-
+ addToBot(new CommandAction());
+ // if (upgraded) addToBot(new CommandAction());
checkMinionMaster();
}
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- this.rawDescription = UPGRADED_DESCRIPTION;
- this.initializeDescription();
+ upgradeDamage(3);
+ //this.rawDescription = UPGRADED_DESCRIPTION;
+ // this.initializeDescription();
}
}
}
diff --git a/src/main/java/slimebound/cards/OozeBath.java b/src/main/java/slimebound/cards/OozeBath.java
index d735a9c7a..e30ded9cd 100644
--- a/src/main/java/slimebound/cards/OozeBath.java
+++ b/src/main/java/slimebound/cards/OozeBath.java
@@ -47,7 +47,7 @@ public OozeBath() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- this.magicNumber = this.baseMagicNumber = 6;
+ this.slimed = this.baseSlimed = 6;
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "OozeBath.png");
@@ -55,10 +55,7 @@ public OozeBath() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new GoopPerTurnPower(m, magicNumber), magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new GoopPerTurnPower(m, this.slimed), this.slimed, true, AbstractGameAction.AttackEffect.NONE));
}
public AbstractCard makeCopy() {
@@ -72,7 +69,7 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(3);
+ upgradeSlimed(3);
}
diff --git a/src/main/java/slimebound/cards/Overexert.java b/src/main/java/slimebound/cards/Overexert.java
index 7eec9a10b..b6bd92034 100644
--- a/src/main/java/slimebound/cards/Overexert.java
+++ b/src/main/java/slimebound/cards/Overexert.java
@@ -55,7 +55,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new BorderFlashEffect(Color.GREEN, true), 0.05F, true));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new PotencyPower(p, p, 4), 4));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new PotencyPower(p, p, 5), 5));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseSlimesPower(p, p, this.magicNumber), this.magicNumber));
if (upgraded) addToBot(new CommandAction());
diff --git a/src/main/java/slimebound/cards/PrepareCrush.java b/src/main/java/slimebound/cards/PrepareCrush.java
index b1aae0dc3..621edee7b 100644
--- a/src/main/java/slimebound/cards/PrepareCrush.java
+++ b/src/main/java/slimebound/cards/PrepareCrush.java
@@ -11,6 +11,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
+import expansioncontent.expansionContentMod;
import slimebound.SlimeboundMod;
import slimebound.patches.AbstractCardEnum;
import slimebound.powers.EnergizedSlimeboundPower;
@@ -70,7 +71,7 @@ public void upgrade() {
AbstractCard q = new SlimeCrush();
q.upgrade();
cardsToPreview = q;
-
+ upgradeMagicNumber(2);
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
}
diff --git a/src/main/java/slimebound/cards/PressTheAttack.java b/src/main/java/slimebound/cards/PressTheAttack.java
index 5cb54e2a4..a669b379a 100644
--- a/src/main/java/slimebound/cards/PressTheAttack.java
+++ b/src/main/java/slimebound/cards/PressTheAttack.java
@@ -48,18 +48,10 @@ public PressTheAttack() {
}
- @Override
- public void triggerOnGlowCheck() {
- slimedGlowCheck();
- }
-
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- if (m.hasPower(SlimedPower.POWER_ID)) {
addToBot(new CommandAction());
if (upgraded) addToBot(new CommandAction());
- }
-
checkMinionMaster();
}
diff --git a/src/main/java/slimebound/cards/ProtectTheBoss.java b/src/main/java/slimebound/cards/ProtectTheBoss.java
index 1a5690488..9101daeba 100644
--- a/src/main/java/slimebound/cards/ProtectTheBoss.java
+++ b/src/main/java/slimebound/cards/ProtectTheBoss.java
@@ -33,12 +33,13 @@ public class ProtectTheBoss extends AbstractSlimeboundCard {
NAME = cardStrings.NAME;
DESCRIPTION = cardStrings.DESCRIPTION;
UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+
}
public ProtectTheBoss() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
//this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 1;
SlimeboundMod.loadJokeCardImage(this, "ProtectTheBoss.png");
diff --git a/src/main/java/slimebound/cards/Repurpose.java b/src/main/java/slimebound/cards/Repurpose.java
index 12a970c1d..401e75e42 100644
--- a/src/main/java/slimebound/cards/Repurpose.java
+++ b/src/main/java/slimebound/cards/Repurpose.java
@@ -46,6 +46,7 @@ public Repurpose() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
this.baseMagicNumber = magicNumber = 2;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "Repurpose.png");
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/ServeAndProtect.java b/src/main/java/slimebound/cards/ServeAndProtect.java
index b673ffa28..877621cc5 100644
--- a/src/main/java/slimebound/cards/ServeAndProtect.java
+++ b/src/main/java/slimebound/cards/ServeAndProtect.java
@@ -21,6 +21,7 @@
import slimebound.actions.TendrilFlailAction;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -55,6 +56,7 @@ public ServeAndProtect() {
baseMagicNumber = magicNumber = 1;
baseBlock = block = 10;
this.exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "ServeAndProtect.png");
}
diff --git a/src/main/java/slimebound/cards/SlimeBrawl.java b/src/main/java/slimebound/cards/SlimeBrawl.java
index 2b6bcc260..09ce33ace 100644
--- a/src/main/java/slimebound/cards/SlimeBrawl.java
+++ b/src/main/java/slimebound/cards/SlimeBrawl.java
@@ -11,6 +11,7 @@
import slimebound.SlimeboundMod;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
public class SlimeBrawl extends AbstractSlimeboundCard {
@@ -46,6 +47,7 @@ public SlimeBrawl() {
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SlimeBrawl.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
diff --git a/src/main/java/slimebound/cards/SlimeCrush.java b/src/main/java/slimebound/cards/SlimeCrush.java
index 5155352c8..b3c47d8a7 100644
--- a/src/main/java/slimebound/cards/SlimeCrush.java
+++ b/src/main/java/slimebound/cards/SlimeCrush.java
@@ -69,7 +69,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeDamage(5);
+ // upgradeDamage(10);
this.target = CardTarget.ALL_ENEMY;
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
diff --git a/src/main/java/slimebound/cards/SlimeTap.java b/src/main/java/slimebound/cards/SlimeTap.java
index 2ec58fdb6..a1acc33f6 100644
--- a/src/main/java/slimebound/cards/SlimeTap.java
+++ b/src/main/java/slimebound/cards/SlimeTap.java
@@ -45,7 +45,7 @@ public SlimeTap() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 2;
SlimeboundMod.loadJokeCardImage(this, "SlimeTap.png");
diff --git a/src/main/java/slimebound/cards/Split.java b/src/main/java/slimebound/cards/Split.java
index ac8949176..b65edaf9d 100644
--- a/src/main/java/slimebound/cards/Split.java
+++ b/src/main/java/slimebound/cards/Split.java
@@ -3,9 +3,12 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import slimebound.SlimeboundMod;
+import slimebound.actions.CommandAction;
+import slimebound.actions.SlimeSpawnAction;
import slimebound.patches.AbstractCardEnum;
@@ -20,7 +23,11 @@ public Split() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- SlimeboundMod.spawnNormalSlime();
+ //SlimeboundMod.spawnNormalSlime();
+ AbstractDungeon.actionManager.addToBottom(new SlimeSpawnAction(new slimebound.orbs.PoisonSlime(), false, true, 0, 0));
+ addToBot(new CommandAction());
+ checkMinionMaster();
+ // what if... not random??????
//Forever shall this code remain commented here. A legacy to the origins of how bad Mayhem was at coding when this all began.
/* for (int i = 0; i < magicNumber; i++) {
diff --git a/src/main/java/slimebound/cards/SplitAcid.java b/src/main/java/slimebound/cards/SplitAcid.java
index 86ffbec3e..de1e93e62 100644
--- a/src/main/java/slimebound/cards/SplitAcid.java
+++ b/src/main/java/slimebound/cards/SplitAcid.java
@@ -41,7 +41,7 @@ public SplitAcid() {
this.baseDamage = 7;
- this.exhaust = true;
+ // this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 2;
this.isMultiDamage = true;
SlimeboundMod.loadJokeCardImage(this, "SplitAcid.png");
diff --git a/src/main/java/slimebound/cards/SplitBruiser.java b/src/main/java/slimebound/cards/SplitBruiser.java
index 3ef6f059f..88b4ece6e 100644
--- a/src/main/java/slimebound/cards/SplitBruiser.java
+++ b/src/main/java/slimebound/cards/SplitBruiser.java
@@ -40,12 +40,11 @@ public SplitBruiser() {
this.baseDamage = 9;
this.magicNumber = this.baseMagicNumber = 2;
- this.exhaust = true;
+ // this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitBruiser.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
int bonus = 0;
//com.megacrit.cardcrawl.dungeons.AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
diff --git a/src/main/java/slimebound/cards/SplitLeeching.java b/src/main/java/slimebound/cards/SplitLeeching.java
index 5c84d3816..33f5c5f17 100644
--- a/src/main/java/slimebound/cards/SplitLeeching.java
+++ b/src/main/java/slimebound/cards/SplitLeeching.java
@@ -40,7 +40,7 @@ public SplitLeeching() {
this.baseBlock = 8;
this.magicNumber = this.baseMagicNumber = 2;
- this.exhaust = true;
+ //this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitLeeching.png");
}
diff --git a/src/main/java/slimebound/cards/SplitLicking.java b/src/main/java/slimebound/cards/SplitLicking.java
index 115e363a8..d91d42ee0 100644
--- a/src/main/java/slimebound/cards/SplitLicking.java
+++ b/src/main/java/slimebound/cards/SplitLicking.java
@@ -44,7 +44,7 @@ public SplitLicking() {
this.magicNumber = this.baseMagicNumber = 2;
this.slimed = this.baseSlimed = 8;
- this.exhaust = true;
+ //this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitMire.png");
}
diff --git a/src/main/java/slimebound/cards/Tackle.java b/src/main/java/slimebound/cards/Tackle.java
index 3a069bf58..1aba14af9 100644
--- a/src/main/java/slimebound/cards/Tackle.java
+++ b/src/main/java/slimebound/cards/Tackle.java
@@ -39,7 +39,7 @@ public Tackle() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
tags.add(SlimeboundMod.TACKLE);
- this.baseDamage = 12;
+ this.baseDamage = 13;
baseSelfDamage = this.selfDamage = 3;
SlimeboundMod.loadJokeCardImage(this, "Tackle.png");
}
diff --git a/src/main/java/slimebound/cards/ViciousTackle.java b/src/main/java/slimebound/cards/ViciousTackle.java
index f3bc03db0..c2852a9ae 100644
--- a/src/main/java/slimebound/cards/ViciousTackle.java
+++ b/src/main/java/slimebound/cards/ViciousTackle.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -10,6 +11,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.VerticalImpactEffect;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import slimebound.SlimeboundMod;
@@ -85,7 +87,9 @@ public float calculateModifiedCardDamage(AbstractPlayer player, AbstractMonster
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
+ if (m != null) {
+ this.addToBot(new VFXAction(new VerticalImpactEffect(m.hb.cX + m.hb.width / 4.0F, m.hb.cY - m.hb.height / 4.0F)));
+ }
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
if (!AbstractDungeon.player.hasPower(PreventTackleDamagePower.POWER_ID))
addToBot(new TackleSelfDamageAction(new DamageInfo(p, selfDamage, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SMASH));
diff --git a/src/main/java/slimebound/cards/WasteNot.java b/src/main/java/slimebound/cards/WasteNot.java
index 6d0f5270c..47e5352d5 100644
--- a/src/main/java/slimebound/cards/WasteNot.java
+++ b/src/main/java/slimebound/cards/WasteNot.java
@@ -10,6 +10,7 @@
import slimebound.SlimeboundMod;
import slimebound.actions.OverexertionAction;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
public class WasteNot extends AbstractSlimeboundCard {
@@ -39,7 +40,7 @@ public class WasteNot extends AbstractSlimeboundCard {
public WasteNot() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 1;
SlimeboundMod.loadJokeCardImage(this, "WasteNot.png");
diff --git a/src/main/java/slimebound/orbs/AttackSlime.java b/src/main/java/slimebound/orbs/AttackSlime.java
index bd37baf0d..aa4d419c7 100644
--- a/src/main/java/slimebound/orbs/AttackSlime.java
+++ b/src/main/java/slimebound/orbs/AttackSlime.java
@@ -19,7 +19,7 @@ public class AttackSlime
public AttackSlime() {
- super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, false, true, 5, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/3.png"));
+ super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, false, true, 3, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/3.png"));
spawnVFX();
}
@@ -30,10 +30,8 @@ public void updateDescription() {
public void activateEffectUnique() {
-
-
AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.BLUNT_LIGHT, this, false, false, false, 0, false, 0, false));
-
+ AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.BLUNT_LIGHT, this, false, false, false, 0, false, 0, false));
}
diff --git a/src/main/java/slimebound/orbs/DrawingSlime.java b/src/main/java/slimebound/orbs/DrawingSlime.java
index afd068512..dcea2c1ca 100644
--- a/src/main/java/slimebound/orbs/DrawingSlime.java
+++ b/src/main/java/slimebound/orbs/DrawingSlime.java
@@ -20,15 +20,15 @@ public class DrawingSlime
public DrawingSlime() {
- super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, true, true, 3, 1, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/attackBuff.png"));
- this.debuffAmount = 1;
- this.extraFontColor = new Color(.75F, .75F, .75F, 1F);
+ super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, true, false, 3, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/attackBuff.png"));
+ //this.debuffAmount = 1;
+ //this.extraFontColor = new Color(.75F, .75F, .75F, 1F);
spawnVFX();
}
public void updateDescription() {
- this.description = this.descriptions[0] + this.passiveAmount + this.descriptions[1] + this.debuffAmount + this.descriptions[2];
+ this.description = this.descriptions[0] + this.passiveAmount + this.descriptions[1] + 1 + this.descriptions[2];
}
@@ -36,7 +36,7 @@ public void activateEffectUnique() {
AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.LIGHTNING, this, false, false, false, 0, false, 0, false, false, false, false, false));
- AbstractDungeon.actionManager.addToBottom(new DrawCardAction(AbstractDungeon.player, debuffAmount));
+ AbstractDungeon.actionManager.addToBottom(new DrawCardAction(AbstractDungeon.player, 1));
}
diff --git a/src/main/java/slimebound/orbs/HexSlime.java b/src/main/java/slimebound/orbs/HexSlime.java
index 494581ecb..b9793a5cc 100644
--- a/src/main/java/slimebound/orbs/HexSlime.java
+++ b/src/main/java/slimebound/orbs/HexSlime.java
@@ -14,6 +14,7 @@
import slimebound.SlimeboundMod;
import slimebound.actions.SlimeAutoAttack;
import slimebound.vfx.SlimeFlareEffect;
+import theHexaghost.relics.CandleOfCauterizing;
public class HexSlime
@@ -34,14 +35,20 @@ public class HexSlime
public HexSlime() {
- super(ID, new Color(.65F, .65F, 1.0F, 100F), atlasString, skeletonString, true, false, 3, 5, false, new Color(.36F, .55F, .85F, 1), SlimeFlareEffect.OrbFlareColor.HEX, new Texture("slimeboundResources/SlimeboundImages/orbs/attackDebuff.png"));
+ super(ID, new Color(.65F, .65F, 1.0F, 100F), atlasString, skeletonString, true, false, 4, 6, false, new Color(.36F, .55F, .85F, 1), SlimeFlareEffect.OrbFlareColor.HEX, new Texture("slimeboundResources/SlimeboundImages/orbs/attackDebuff.png"));
this.x = (x * Settings.scale + (5F + MathUtils.random(-10.0F, 10.0F) * Settings.scale));
this.y = (y * Settings.scale + (-30F + MathUtils.random(-10.0F, 10.0F) * Settings.scale));
this.color = Color.CHARTREUSE.cpy();
this.extraFontColor = new Color(.5F, 1F, .5F, 1F);
this.color.a = 0.0F;
this.activated = true;
- this.debuffAmount = 5;
+ this.debuffAmount = 6;
+
+ //prismatic shard is a relic of all time
+ if(AbstractDungeon.player.hasRelic(CandleOfCauterizing.ID)){
+ debuffAmount = debuffAmount + CandleOfCauterizing.SOULBURN_BONUS_AMOUNT;
+ }
+
spawnVFX();
}
diff --git a/src/main/java/slimebound/orbs/PoisonSlime.java b/src/main/java/slimebound/orbs/PoisonSlime.java
index c514cbf01..24d8047f7 100644
--- a/src/main/java/slimebound/orbs/PoisonSlime.java
+++ b/src/main/java/slimebound/orbs/PoisonSlime.java
@@ -21,7 +21,7 @@ public PoisonSlime() {
}
public PoisonSlime(boolean topLevelVFX) {
- super(ID, new Color(.5F, 1.0F, .5F, 100F), atlasString, skeletonString, false, false, 3, 1, true, new Color(.58F, .81F, .35F, 1), SlimeFlareEffect.OrbFlareColor.POISON, new Texture("slimeboundResources/SlimeboundImages/orbs/4.png"));
+ super(ID, new Color(.5F, 1.0F, .5F, 100F), atlasString, skeletonString, false, false, 3, 0, true, new Color(.58F, .81F, .35F, 1), SlimeFlareEffect.OrbFlareColor.POISON, new Texture("slimeboundResources/SlimeboundImages/orbs/4.png"));
this.topSpawnVFX = topLevelVFX;
spawnVFX();
}
diff --git a/src/main/java/slimebound/orbs/SpawnedSlime.java b/src/main/java/slimebound/orbs/SpawnedSlime.java
index f5a5c118c..c77821453 100644
--- a/src/main/java/slimebound/orbs/SpawnedSlime.java
+++ b/src/main/java/slimebound/orbs/SpawnedSlime.java
@@ -287,7 +287,7 @@ public void applyFocus() {
if (power != null) {
this.passiveAmount = this.basePassiveAmount + power.amount + this.UniqueFocus + bonus;
- this.debuffAmount = this.debuffBaseAmount + (power.amount / 2) ;
+ this.debuffAmount = (int) Math.ceil(this.debuffBaseAmount + (power.amount / 2.0));
} else {
this.passiveAmount = this.basePassiveAmount + this.UniqueFocus + bonus;
@@ -465,7 +465,7 @@ public void render(SpriteBatch sb) {
public void renderText(SpriteBatch sb) {
- if (this.extraFontColor != null) {
+ if (this.extraFontColor != null){
float fontOffset = 26 * Settings.scale;
diff --git a/src/main/java/slimebound/powers/ComboAttackPower.java b/src/main/java/slimebound/powers/ComboAttackPower.java
index ce271aa36..93c04d328 100644
--- a/src/main/java/slimebound/powers/ComboAttackPower.java
+++ b/src/main/java/slimebound/powers/ComboAttackPower.java
@@ -12,6 +12,8 @@
import slimebound.actions.CommandAction;
import slimebound.actions.TrigggerSpecificSlimeAttackAction;
+import static downfall.cardmods.CommandMod.checkMinionMaster;
+
public class ComboAttackPower extends TwoAmountPower {
public static final String POWER_ID = "Slimebound:ComboAttackPower";
@@ -78,6 +80,7 @@ public void onAfterCardPlayed(AbstractCard usedCard) {
{
flash();
com.megacrit.cardcrawl.dungeons.AbstractDungeon.actionManager.addToBottom(new CommandAction());
+ checkMinionMaster(); // maybe this crashes idk lol
this.amount2--;
updateDescription();
}
diff --git a/src/main/java/slimebound/powers/CommandOnPlayPower.java b/src/main/java/slimebound/powers/CommandOnPlayPower.java
index 357f88b76..dfb30ab3b 100644
--- a/src/main/java/slimebound/powers/CommandOnPlayPower.java
+++ b/src/main/java/slimebound/powers/CommandOnPlayPower.java
@@ -16,6 +16,8 @@
import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
+import static downfall.cardmods.CommandMod.checkMinionMaster;
+
public class CommandOnPlayPower extends AbstractPower implements CloneablePowerInterface {
public static final String POWER_ID = "Slimebound:CommandOnPlayPower";
@@ -46,6 +48,7 @@ public void onAfterCardPlayed(AbstractCard usedCard) {
if (o != null) {
addToBot(new TrigggerSpecificSlimeAttackAction(o));
}
+ checkMinionMaster(); // maybe this crashes idk lol
addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, this, 1));
}
diff --git a/src/main/java/slimebound/powers/PotencyPower.java b/src/main/java/slimebound/powers/PotencyPower.java
index a20f7d2ca..8a986ba1a 100644
--- a/src/main/java/slimebound/powers/PotencyPower.java
+++ b/src/main/java/slimebound/powers/PotencyPower.java
@@ -49,11 +49,14 @@ public PotencyPower(AbstractCreature owner, AbstractCreature source, int amount)
public void updateDescription() {
- this.description = (DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1]+ this.amount/2 + DESCRIPTIONS[2]);
-
+ if(this.amount<0){
+ this.type = PowerType.DEBUFF;
+ }else{
+ this.type = PowerType.BUFF;
+ }
+ this.description = (DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1]+ (int) Math.ceil((this.amount / 2.0)) + DESCRIPTIONS[2]);
}
-
}
diff --git a/src/main/java/slimebound/powers/SlimedPower.java b/src/main/java/slimebound/powers/SlimedPower.java
index c9c2e8577..83fd65f5c 100644
--- a/src/main/java/slimebound/powers/SlimedPower.java
+++ b/src/main/java/slimebound/powers/SlimedPower.java
@@ -67,8 +67,12 @@ public void stackPower(int stackAmount) {
}
- public float atDamageFinalReceive(float damage, DamageInfo.DamageType damageType) {
- return damageType == DamageInfo.DamageType.NORMAL ? damage + this.amount : damage;
+ public float atDamageReceive(float damage, DamageInfo.DamageType type) {
+ if (type == DamageInfo.DamageType.NORMAL) {
+ return damage +this.amount;
+ } else {
+ return damage;
+ }
}
diff --git a/src/main/java/slimebound/relics/PotencyRelic.java b/src/main/java/slimebound/relics/PotencyRelic.java
index 226de3bb2..206b249d1 100644
--- a/src/main/java/slimebound/relics/PotencyRelic.java
+++ b/src/main/java/slimebound/relics/PotencyRelic.java
@@ -33,7 +33,7 @@ public String getUpdatedDescription() {
public void atBattleStartPreDraw() {
flash();
addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PotencyPower(AbstractDungeon.player, AbstractDungeon.player, 2), 2));
+ addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PotencyPower(AbstractDungeon.player, AbstractDungeon.player, 1), 1));
}
public boolean canSpawn() {
diff --git a/src/main/java/slimebound/relics/PreparedRelic.java b/src/main/java/slimebound/relics/PreparedRelic.java
index 975616dd1..22c64c581 100644
--- a/src/main/java/slimebound/relics/PreparedRelic.java
+++ b/src/main/java/slimebound/relics/PreparedRelic.java
@@ -3,6 +3,7 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
@@ -11,6 +12,8 @@
import downfall.util.TextureLoader;
import slimebound.actions.AddPreparedAction;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
public class PreparedRelic extends CustomRelic {
public static final String ID = "Slimebound:PreparedRelic";
public static final String IMG_PATH = "relics/slimedteaSet.png";
@@ -67,6 +70,12 @@ public void onEnterRoom(AbstractRoom room) {
}
}
+
+ public boolean canSpawn() {
+ return Settings.isEndless || (AbstractDungeon.floorNum <= 48 && !evilMode) || evilMode;
+ }
+
+
@Override
public AbstractRelic makeCopy() {
return new PreparedRelic();
diff --git a/src/main/java/slimebound/relics/StickyStick.java b/src/main/java/slimebound/relics/StickyStick.java
index a95da1e5c..f01a4bd8e 100644
--- a/src/main/java/slimebound/relics/StickyStick.java
+++ b/src/main/java/slimebound/relics/StickyStick.java
@@ -1,9 +1,11 @@
package slimebound.relics;
+import automaton.cards.goodstatus.IntoTheVoid;
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.powers.EvolvePower;
@@ -19,7 +21,7 @@ public class StickyStick extends CustomRelic {
//Gelatinous Cube
public StickyStick() {
super(ID, new Texture(slimebound.SlimeboundMod.getResourcePath(IMG_PATH)), new Texture(slimebound.SlimeboundMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.UNCOMMON, LandingSound.SOLID);
+ RelicTier.RARE, LandingSound.SOLID);
this.largeImg = TextureLoader.getTexture(slimebound.SlimeboundMod.getResourcePath(IMG_PATH_LARGE));
}
@@ -29,10 +31,34 @@ public String getUpdatedDescription() {
return this.DESCRIPTIONS[0];
}
- public void atBattleStartPreDraw() {
- this.flash();
- this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new EvolvePower(AbstractDungeon.player, 1), 1));
- this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ public void onCardDraw(AbstractCard card) {
+ if (this.counter == 2) {
+ this.grayscale = true;
+ return;
+ }
+
+ if (this.counter < 3) {
+ if (card.type == AbstractCard.CardType.STATUS || card.type == AbstractCard.CardType.CURSE) {
+ this.flash();
+ ++this.counter;
+ //this.addToTop(new ExhaustSpecificCardAction(card,AbstractDungeon.player.hand));
+ this.addToTop(new DrawCardAction(AbstractDungeon.player, 1));
+ if (card.cardID.equals(VoidCard.ID) || card.cardID.equals(IntoTheVoid.ID)) {
+ this.flash();
+ this.addToTop(new GainEnergyAction(1));
+ }
+ }
+ }
+ }
+
+ public void atTurnStart() {
+ this.counter = 0;
+ this.grayscale = false;
+ }
+
+ public void onVictory() {
+ this.counter = -1;
+ this.grayscale = false;
}
@Override
diff --git a/src/main/java/sneckomod/OffclassHelper.java b/src/main/java/sneckomod/OffclassHelper.java
index 69b8fb5b3..013b592df 100644
--- a/src/main/java/sneckomod/OffclassHelper.java
+++ b/src/main/java/sneckomod/OffclassHelper.java
@@ -26,7 +26,7 @@ public static void addToLists(AbstractUnknownCard c, ArrayList> predList = new ArrayList<>();
ArrayList> listList = new ArrayList<>();
diff --git a/src/main/java/sneckomod/SneckoMod.java b/src/main/java/sneckomod/SneckoMod.java
index 69d9f8760..2e3fa55e4 100644
--- a/src/main/java/sneckomod/SneckoMod.java
+++ b/src/main/java/sneckomod/SneckoMod.java
@@ -1,6 +1,10 @@
package sneckomod;
+import automaton.AutomatonChar;
import automaton.AutomatonMod;
+import automaton.cards.Deprecate;
+import automaton.cards.Invalidate;
+import automaton.cards.Undervolt;
import basemod.BaseMod;
import basemod.ReflectionHacks;
import basemod.abstracts.CustomCard;
@@ -9,6 +13,10 @@
import basemod.eventUtil.EventUtils;
import basemod.helpers.RelicType;
import basemod.interfaces.*;
+import champ.ChampChar;
+import champ.cards.*;
+import collector.CollectorChar;
+import collector.cards.*;
import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
@@ -19,7 +27,14 @@
import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.cards.colorless.Madness;
+import com.megacrit.cardcrawl.cards.blue.BiasedCognition;
+import com.megacrit.cardcrawl.cards.blue.GoForTheEyes;
+import com.megacrit.cardcrawl.cards.blue.Hyperbeam;
+import com.megacrit.cardcrawl.cards.blue.MachineLearning;
+import com.megacrit.cardcrawl.cards.colorless.*;
+import com.megacrit.cardcrawl.cards.green.*;
+import com.megacrit.cardcrawl.cards.purple.*;
+import com.megacrit.cardcrawl.cards.red.*;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -28,18 +43,33 @@
import com.megacrit.cardcrawl.events.exordium.Sssserpent;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.random.Random;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.PrismaticShard;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
import downfall.cards.OctoChoiceCard;
import downfall.downfallMod;
import downfall.events.Serpent_Evil;
+import downfall.relics.BrokenWingStatue;
import downfall.util.CardIgnore;
import downfall.util.TextureLoader;
+import expansioncontent.cards.Chronoboost;
+import expansioncontent.cards.DashGenerateEvil;
+import expansioncontent.cards.PeekPages;
+import expansioncontent.cards.SuperLivingWall;
import expansioncontent.patches.CardColorEnumPatch;
import expansioncontent.patches.CenterGridCardSelectScreen;
+import gremlin.cards.*;
+import guardian.cards.*;
+import hermit.cards.*;
+import hermit.characters.hermit;
import hermit.util.Wiz;
import javassist.CtClass;
import javassist.Modifier;
import javassist.NotFoundException;
import org.clapper.util.classutil.*;
+import slimebound.cards.*;
+import slimebound.cards.Dissolve;
+import slimebound.patches.AbstractCardEnum;
import sneckomod.cards.*;
import sneckomod.cards.unknowns.*;
import sneckomod.events.BackToBasicsSnecko;
@@ -52,7 +82,10 @@
import sneckomod.potions.MuddlingPotion;
import sneckomod.potions.OffclassReductionPotion;
import sneckomod.relics.*;
+import sneckomod.util.ArchetypeHelper;
import sneckomod.util.SneckoSilly;
+import theHexaghost.TheHexaghost;
+import theHexaghost.cards.*;
import java.io.File;
import java.net.URISyntaxException;
@@ -63,6 +96,8 @@
import static com.megacrit.cardcrawl.cards.AbstractCard.CardType.*;
import static downfall.downfallMod.sneckoNoModCharacters;
import static downfall.patches.EvilModeCharacterSelect.evilMode;
+import static sneckomod.util.ColorfulCardReward.TEXT;
+import static theHexaghost.HexaMod.GHOSTWHEELCARD;
@SuppressWarnings({"ConstantConditions", "unused", "WeakerAccess"})
@SpireInitializer
@@ -73,7 +108,8 @@ public class SneckoMod implements
EditCharactersSubscriber,
PostInitializeSubscriber,
StartGameSubscriber,
- PostUpdateSubscriber {
+ PostUpdateSubscriber,
+ AddAudioSubscriber {
public static final String SHOULDER1 = "sneckomodResources/images/char/shoulder.png";
public static final String SHOULDER2 = "sneckomodResources/images/char/shoulderR.png";
public static final String CORPSE = "sneckomodResources/images/char/corpse.png";
@@ -97,6 +133,10 @@ public class SneckoMod implements
public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags RNG;
@SpireEnum
public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags BANNEDFORSNECKO;
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags OVERFLOW;
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags MUDDLED;
public static Random identifyRng;
@@ -160,6 +200,7 @@ public class SneckoMod implements
private CustomUnlockBundle unlocks3;
private CustomUnlockBundle unlocks4;
+
public SneckoMod() {
BaseMod.subscribe(this);
@@ -170,7 +211,6 @@ public SneckoMod() {
ATTACK_S_ART, SKILL_S_ART, POWER_S_ART, CARD_ENERGY_S,
ATTACK_L_ART, SKILL_L_ART, POWER_L_ART,
CARD_ENERGY_L, TEXT_ENERGY);
-
}
public static void loadJokeCardImage(AbstractCard card, String img) {
@@ -178,7 +218,7 @@ public static void loadJokeCardImage(AbstractCard card, String img) {
((AbstractSneckoCard) card).betaArtPath = img;
}
Texture cardTexture;
- cardTexture = hermit.util.TextureLoader.getTexture(getModID() + "Resources/images/betacards/" + img);
+ cardTexture = downfall.util.TextureLoader.getTexture("sneckomodResources/images/betacards/" + img);
cardTexture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
int tw = cardTexture.getWidth();
int th = cardTexture.getHeight();
@@ -186,6 +226,15 @@ public static void loadJokeCardImage(AbstractCard card, String img) {
ReflectionHacks.setPrivate(card, AbstractCard.class, "jokePortrait", cardImg);
}
+
+ public static String makeImagePath(String resourcePath) {
+ return getModID() + "Resources/images/" + resourcePath;
+ }
+
+ public static String makeAudioPath(String resourcePath) {
+ return getModID() + "Resources/audio/" + resourcePath;
+ }
+
public static String makeCardPath(String resourcePath) {
return getModID() + "Resources/images/cards/" + resourcePath;
}
@@ -262,6 +311,12 @@ private static void autoAddCards()
// }
}
}
+ // THE SUPER IMPORTANT GIFT ARRAY
+ ArrayList> incomingGiftsList = new ArrayList<>();
+ //
+
+
+
@Deprecated
public static AbstractCard getOffClassCard() {
@@ -274,26 +329,255 @@ public static AbstractCard getRandomAnyColorCard() {
if (simplePossibilities == null) {
simplePossibilities = new ArrayList<>();
for (AbstractCard q : CardLibrary.getAllCards()) {
- if (!q.hasTag(AbstractCard.CardTags.STARTER_STRIKE) && !q.hasTag(AbstractCard.CardTags.STARTER_DEFEND) && q.color != AbstractCard.CardColor.CURSE && q.type != CURSE && q.type != STATUS && !q.hasTag(AbstractCard.CardTags.HEALING) && q.rarity != AbstractCard.CardRarity.SPECIAL) {
+ if (!q.hasTag(AbstractCard.CardTags.STARTER_STRIKE) && !q.hasTag(AbstractCard.CardTags.STARTER_DEFEND) && !q.hasTag(BANNEDFORSNECKO) &&
+ q.color != AbstractCard.CardColor.CURSE && q.type != CURSE && q.type != STATUS &&
+ !q.hasTag(AbstractCard.CardTags.HEALING) && q.rarity != AbstractCard.CardRarity.SPECIAL) {
simplePossibilities.add(q.cardID);
}
}
}
- return CardLibrary.getCopy(Wiz.getRandomItem(simplePossibilities, AbstractDungeon.cardRandomRng));
+
+ String selectedCardID = Wiz.getRandomItem(simplePossibilities, AbstractDungeon.cardRandomRng);
+ return CardLibrary.getCopy(selectedCardID);
}
- //TODO Make rarity matter in Offclass card gen.
+ //removed to-do here, rarity is not relevant due to how gift generation works in a limited pool
+
public static AbstractCard getOffClassCardMatchingPredicate(Predicate q) {
ArrayList possList = new ArrayList<>(CardLibrary.getAllCards());
- possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.STARTER_STRIKE) || c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.color == AbstractDungeon.player.getCardColor() || c.color == AbstractCard.CardColor.CURSE || c.type == CURSE || c.rarity == AbstractCard.CardRarity.SPECIAL || c.type == STATUS || !q.test(c) || c.hasTag(AbstractCard.CardTags.HEALING) || c.hasTag(BANNEDFORSNECKO));
- if (!pureSneckoMode && AbstractDungeon.player instanceof TheSnecko)
+ possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.STARTER_STRIKE) || c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.color == AbstractDungeon.player.getCardColor() || c.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE || c.color == AbstractCard.CardColor.CURSE || c.type == CURSE || c.rarity == AbstractCard.CardRarity.SPECIAL || c.rarity == AbstractCard.CardRarity.BASIC || c.type == STATUS || !q.test(c) || c.hasTag(BANNEDFORSNECKO) || c.hasTag(GHOSTWHEELCARD));
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.HEALING));
+ }
+ if ((!pureSneckoMode && !AbstractDungeon.player.hasRelic(PrismaticShard.ID) && AbstractDungeon.player instanceof TheSnecko));
possList.removeIf(c -> !validColors.contains(c.color));
- return possList.get(AbstractDungeon.cardRandomRng.random(possList.size() - 1)).makeCopy();
+
+ possList.removeIf(c -> c.color == AbstractDungeon.player.getCardColor());
+
+ possList.removeIf(c -> c.color == CardColorEnumPatch.CardColorPatch.BOSS);
+
+ possList.removeIf(c -> c.color == AbstractCard.CardColor.COLORLESS);
+
+ possList.removeIf(c -> c.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE);
+
+ if (possList.size() == 0 && ((!pureSneckoMode && !AbstractDungeon.player.hasRelic(PrismaticShard.ID) || !(AbstractDungeon.player instanceof TheSnecko)))) {
+ possList.add(new Madness());
+ }
+
+ return possList.get(AbstractDungeon.miscRng.random(possList.size() - 1)).makeCopy();
+ }
+
+
+ //may God forgive me for this great sin.
+ public static AbstractCard getOffClassCardMatchingPredicateDebuff(Predicate q) {
+ ArrayList possList = new ArrayList<>(CardLibrary.getAllCards());
+ possList.removeIf(c -> (!(ArchetypeHelper.appliesDebuff(c) ||
+ // Ironclad Cards
+ (c.cardID.equals(Disarm.ID) ||
+ // Silent Cards
+ c.cardID.equals(PiercingWail.ID) ||
+ c.cardID.equals(Catalyst.ID) ||
+ c.cardID.equals(NoxiousFumes.ID) ||
+ c.cardID.equals(Envenom.ID) ||
+ c.cardID.equals(Malaise.ID) ||
+ //Defect Cards
+ c.cardID.equals(GoForTheEyes.ID) ||
+ // Watcher Cards
+ c.cardID.equals(CrushJoints.ID) ||
+ c.cardID.equals(SashWhip.ID) ||
+ c.cardID.equals(Indignation.ID) ||
+ c.cardID.equals(WaveOfTheHand.ID) ||
+ //Colorless Cards
+ c.cardID.equals(Trip.ID) ||
+ c.cardID.equals(Blind.ID) ||
+ c.cardID.equals(DarkShackles.ID) ||
+ c.cardID.equals(SadisticNature.ID) ||
+ //Gremlins Cards
+ c.cardID.equals(Jeer.ID) ||
+ c.cardID.equals(Pickpocket.ID) ||
+ c.cardID.equals(Heckle.ID) ||
+ c.cardID.equals(ToeStub.ID) ||
+ //Champ Cards
+ c.cardID.equals(ViciousMockery.ID) ||
+ c.cardID.equals(Taunt.ID) ||
+ c.cardID.equals(FaceSlap.ID) ||
+ c.cardID.equals(SetATrap.ID) ||
+ c.cardID.equals(CheapShot.ID) ||
+ //Slime Boss Cards
+ c.cardID.equals(LivingWall.ID) ||
+ c.cardID.equals(ItLooksTasty.ID) ||
+ c.cardID.equals(SplitLicking.ID) ||
+ c.cardID.equals(Gluttony.ID) ||
+ c.cardID.equals(HungryTackle.ID) ||
+ c.cardID.equals(DisruptingSlam.ID) ||
+ c.cardID.equals(Nibble.ID) ||
+ c.cardID.equals(Dissolve.ID) ||
+ c.cardID.equals(Recollect.ID) ||
+ c.cardID.equals(Recycling.ID) ||
+ c.cardID.equals(WasteNot.ID) ||
+ //Boss Card Pool
+ c.cardID.equals(SuperLivingWall.ID) ||
+ c.cardID.equals(DashGenerateEvil.ID) ||
+ c.cardID.equals(expansioncontent.cards.GoopSpray.ID) ||
+ c.cardID.equals(expansioncontent.cards.YouAreMine.ID) ||
+ c.cardID.equals(expansioncontent.cards.FaceSlap.ID) ||
+ //Collector Cards
+ c.cardID.equals(YouAreMine.ID) ||
+ c.cardID.equals(SapStrength.ID) ||
+ c.cardID.equals(CursedWail.ID) ||
+ c.cardID.equals(SeedOfDoubt.ID) ||
+ c.cardID.equals(ThornWhip.ID) ||
+ c.cardID.equals(Arrogance.ID) ||
+ c.cardID.equals(Invigorate.ID) ||
+ c.cardID.equals(ItMattersNot.ID) ||
+ c.cardID.equals(Billow.ID) ||
+ c.cardID.equals(BindingCall.ID) ||
+ c.cardID.equals(CantTouchThis.ID) ||
+ c.cardID.equals(RotwoodKindling.ID) ||
+ c.cardID.equals(Suffering.ID) ||
+ c.cardID.equals(DarkLordForm.ID) ||
+ c.cardID.equals(Darkstorm.ID) ||
+ c.cardID.equals(Goodbye.ID) ||
+ c.cardID.equals(Condemn.ID) ||
+ c.cardID.equals(InevitableDemise.ID) ||
+ c.cardID.equals(BlackBindings.ID) ||
+ c.cardID.equals(MiniCurse.ID) ||
+ c.cardID.equals(Finalize.ID) ||
+ c.cardID.equals(InflictAgony.ID) ||
+ c.cardID.equals(LanternFlare.ID) ||
+ //Hexa Cards
+ c.cardID.equals(Sear.ID) ||
+ c.cardID.equals(HeatMetal.ID) ||
+ c.cardID.equals(BurningTouch.ID) ||
+ c.cardID.equals(Firestarter.ID) ||
+ c.cardID.equals(FlamesFromBeyond.ID) ||
+ c.cardID.equals(SpectralSpark.ID) ||
+ c.cardID.equals(GhostflameInferno.ID) ||
+ c.cardID.equals(Incineration.ID) ||
+ c.cardID.equals(LingeringShades.ID) ||
+ c.cardID.equals(VolcanoVisage.ID) ||
+ //Guardian Cards
+ c.cardID.equals(SentryBeam.ID) ||
+ c.cardID.equals(Gem_Purple.ID) ||
+ c.cardID.equals(Gem_Crimson.ID) ||
+ //Hermit Cards
+ c.cardID.equals(Brawl.ID) ||
+ c.cardID.equals(RoundhouseKick.ID) ||
+ //Automaton Cards
+ c.cardID.equals(Deprecate.ID) ||
+ c.cardID.equals(Invalidate.ID) ||
+ c.cardID.equals(Undervolt.ID) ||
+ //Snecko Cards
+ c.cardID.equals(Deception.ID) ||
+ c.cardID.equals(MakeshiftBlade.ID) ||
+ c.cardID.equals(Belittle.ID) ||
+ c.cardID.equals(PoisonParadise.ID) ||
+ c.cardID.equals(AceOfWands.ID))
+
+ ) || (c.hasTag(AbstractCard.CardTags.STARTER_STRIKE) || c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.color == AbstractDungeon.player.getCardColor() || c.color == AbstractCard.CardColor.CURSE || c.type == CURSE || c.rarity == AbstractCard.CardRarity.SPECIAL || c.rarity == AbstractCard.CardRarity.BASIC || c.type == STATUS || !q.test(c) || c.hasTag(BANNEDFORSNECKO) || c.hasTag(GHOSTWHEELCARD))
+ || (
+ //False Positives
+ c.cardID.equals(SwordThrow.ID) ||
+ c.cardID.equals(HyperBeam_Guardian.ID) ||
+ c.cardID.equals(HoleUp.ID) ||
+ c.cardID.equals(Quickdraw.ID) ||
+ c.cardID.equals(Gestalt.ID) ||
+ c.cardID.equals(OverwhelmingPower.ID) ||
+ c.cardID.equals(RadiantFlame.ID) ||
+ c.cardID.equals(DecasProtection.ID) ||
+ c.cardID.equals(BulletTime.ID) ||
+ c.cardID.equals(WraithForm.ID) ||
+ c.cardID.equals(AdrenalArmor.ID) ||
+ c.cardID.equals(BattleTrance.ID) ||
+ c.cardID.equals(Berserk.ID) ||
+ c.cardID.equals(Flex.ID) ||
+ c.cardID.equals(BiasedCognition.ID) ||
+ c.cardID.equals(Hyperbeam.ID) ||
+ c.cardID.equals(Fasting.ID) ||
+ c.cardID.equals(Erupt.ID) ||
+ c.cardID.equals(MachineLearning.ID) ||
+ c.cardID.equals(GremlinMeal.ID) ||
+ c.cardID.equals(FollowThrough.ID) ||
+ //Really Bad Offclass cards
+ c.cardID.equals(ChargedBarrage.ID)
+ ))
+ );
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.HEALING));
+ }
+ if ((!pureSneckoMode && !AbstractDungeon.player.hasRelic(PrismaticShard.ID) && AbstractDungeon.player instanceof TheSnecko));
+ possList.removeIf(c -> !validColors.contains(c.color));
+
+ possList.removeIf(c -> (
+ //crossmod restriction pls work
+ c.color != AbstractCard.CardColor.RED &&
+ c.color != AbstractCard.CardColor.GREEN &&
+ c.color != AbstractCard.CardColor.BLUE &&
+ c.color != AbstractCard.CardColor.PURPLE &&
+ c.color != AbstractCard.CardColor.COLORLESS &&
+ c.color != CardColorEnumPatch.CardColorPatch.BOSS &&
+ //Downfall Characters
+ c.color != hermit.Enums.COLOR_YELLOW &&
+ //Act 1 Bosses
+ c.color != AbstractCardEnum.SLIMEBOUND &&
+ c.color != guardian.patches.AbstractCardEnum.GUARDIAN &&
+ c.color != TheHexaghost.Enums.GHOST_GREEN &&
+ //Act 2 Bosses
+ c.color != ChampChar.Enums.CHAMP_GRAY &&
+ c.color != AutomatonChar.Enums.BRONZE_AUTOMATON &&
+ c.color != CollectorChar.Enums.COLLECTOR &&
+ //Bonus Characters
+ c.color != TheSnecko.Enums.SNECKO_CYAN &&
+ c.color != gremlin.patches.AbstractCardEnum.GREMLIN)
+
+ &&
+ //doesn't detect debuff application
+ (!ArchetypeHelper.appliesDebuff(c) ||
+ //detects debuff application, BUT is not targeted at an enemy
+ (ArchetypeHelper.appliesDebuff(c) &&
+ c.target != AbstractCard.CardTarget.ENEMY &&
+ c.target != AbstractCard.CardTarget.SELF_AND_ENEMY &&
+ c.target != AbstractCard.CardTarget.ALL_ENEMY)
+ ));
+
+
+ //PLEASE WORK
+ possList.removeIf(c -> c.color == AbstractDungeon.player.getCardColor());
+ possList.removeIf(c -> c.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE);
+
+ possList.removeIf(c -> c.color == CardColorEnumPatch.CardColorPatch.BOSS);
+
+ possList.removeIf(c -> c.color == AbstractCard.CardColor.COLORLESS);
+
+ if (possList.size() == 0 && ((!pureSneckoMode && !AbstractDungeon.player.hasRelic(PrismaticShard.ID) || !(AbstractDungeon.player instanceof TheSnecko)))) {
+ possList.add(new Madness());
+ }
+
+ return possList.get(AbstractDungeon.miscRng.random(possList.size() - 1)).makeCopy();
}
+
+
public static AbstractCard getSpecificClassCard(AbstractCard.CardColor color) {
ArrayList possList = new ArrayList<>(CardLibrary.getAllCards());
- possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.STARTER_STRIKE) || c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.color != color || c.type == CURSE || c.type == STATUS || c.rarity == AbstractCard.CardRarity.SPECIAL || c.hasTag(AbstractCard.CardTags.HEALING) || c.hasTag(BANNEDFORSNECKO));
+
+ if (color != CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE) {
+ possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.STARTER_STRIKE) || c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.color != color || c.type == CURSE || c.type == STATUS || c.rarity == AbstractCard.CardRarity.SPECIAL || c.hasTag(BANNEDFORSNECKO) || c.hasTag(GHOSTWHEELCARD));
+ }
+
+ if (color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE) {
+ ArrayList allCollecteds = Wiz.getCardsMatchingPredicate(c -> c.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE && c.rarity != AbstractCard.CardRarity.SPECIAL && !c.hasTag(AbstractCard.CardTags.HEALING), true);
+ return (allCollecteds.remove(AbstractDungeon.cardRandomRng.random(allCollecteds.size() - 1)));
+ }
+
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ possList.removeIf(c -> c.hasTag(AbstractCard.CardTags.HEALING));
+ }
+
+ if (possList.size() == 0) {
+ possList.add(new Madness());
+ }
+
return possList.get(AbstractDungeon.cardRandomRng.random(possList.size() - 1)).makeCopy();
}
@@ -318,6 +602,7 @@ public void receiveEditRelics() {
BaseMod.addRelicToCustomPool(new SleevedAce(), TheSnecko.Enums.SNECKO_CYAN);
BaseMod.addRelicToCustomPool(new SuperSneckoSoul(), TheSnecko.Enums.SNECKO_CYAN);
BaseMod.addRelicToCustomPool(new UnknownEgg(), TheSnecko.Enums.SNECKO_CYAN);
+ BaseMod.addRelicToCustomPool(new CrystallizedMud(), TheSnecko.Enums.SNECKO_CYAN);
BaseMod.addRelic(new SuperSneckoEye(), RelicType.SHARED);
BaseMod.addRelic(new SneckoTalon(), RelicType.SHARED);
BaseMod.addRelic(new BlankCard(), RelicType.SHARED);
@@ -351,36 +636,43 @@ public void receiveEditCards() {
public void receiveSetUnlocks() {
downfallMod.registerUnlockSuite(
- Memorize.ID,
+ SoulDraw.ID,
+ Restock.ID,
PureSnecko.ID,
- Rotation.ID,
- UnknownColorless.ID,
- UnknownStrength.ID,
- UnknownDexterity.ID,
+ LatchOn.ID,
+ SerpentineSleuth.ID,
+ SerpentsNest.ID,
- MixItUp.ID,
- Transmogrify.ID,
- GlitteringGambit.ID,
+ TrashCan.ID,
+ TrashToTreasure.ID,
+ OverwhelmingPresence.ID,
- RareBoosterPack.ID,
- SleevedAce.ID,
+ SneckoBoss.ID,
+ CheapStock.ID,
CleanMud.ID,
- SuperSneckoEye.ID,
- UnknownEgg.ID,
- BlankCard.ID,
+ GlitteringGambit.ID,
+ SneckoTalon.ID,
+ Jackpot.ID,
TheSnecko.Enums.THE_SNECKO
);
}
+ @Override
+ public void receiveAddAudio() {
+ BaseMod.addAudio(makeID("BUS"), makeAudioPath("bus.ogg"));
+ BaseMod.addAudio(makeID("SHOTGUN"), makeAudioPath("shotgun.ogg"));
+ }
+
public void addPotions() {
BaseMod.addPotion(CheatPotion.class, Color.GRAY, Color.WHITE, Color.BLACK, CheatPotion.POTION_ID, TheSnecko.Enums.THE_SNECKO);
BaseMod.addPotion(DiceRollPotion.class, Color.CYAN, Color.WHITE, Color.BLACK, DiceRollPotion.POTION_ID, TheSnecko.Enums.THE_SNECKO);
BaseMod.addPotion(OffclassReductionPotion.class, Color.CYAN, Color.CORAL, Color.MAROON, OffclassReductionPotion.POTION_ID, TheSnecko.Enums.THE_SNECKO);
+ // BaseMod.addPotion(MuddlingPotion.class, Color.CYAN, Color.CORAL, Color.MAROON, OffclassReductionPotion.POTION_ID, TheSnecko.Enums.THE_SNECKO);
// BanSharedContentPatch.registerRunLockedPotion(TheSnecko.Enums.THE_SNECKO, MuddlingPotion.POTION_ID);
if (Loader.isModLoaded("widepotions")) {
@@ -455,8 +747,6 @@ public void receivePostInitialize() {
BaseMod.addEvent(new AddEventParams.Builder(Serpent_Snecko.ID, Serpent_Snecko.class) //Event ID//
//Event Character//
.playerClass(TheSnecko.Enums.THE_SNECKO)
- //Event Spawn Condition//
- .spawnCondition(() -> !evilMode)
//Event ID to Override//
.overrideEvent(Sssserpent.ID)
//Event Type//
@@ -466,8 +756,6 @@ public void receivePostInitialize() {
BaseMod.addEvent(new AddEventParams.Builder(Serpent_Snecko.ID, Serpent_Snecko.class) //Event ID//
//Event Character//
.playerClass(TheSnecko.Enums.THE_SNECKO)
- //Event Spawn Condition//
- .spawnCondition(() -> evilMode)
//Event ID to Override//
.overrideEvent(Serpent_Evil.ID)
//Event Type//
@@ -502,7 +790,7 @@ public static void resetUnknownsLists() {
}
validColors.clear();
for (AbstractCard.CardColor c : AbstractCard.CardColor.values()) {
- if (c != AbstractCard.CardColor.CURSE && c != AbstractCard.CardColor.COLORLESS)
+ if (c != AbstractCard.CardColor.CURSE && c != AbstractCard.CardColor.COLORLESS && c != CardColorEnumPatch.CardColorPatch.BOSS && c != CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE)
validColors.add(c);
}
OffclassHelper.updateAllUnknownReplacements();
@@ -553,7 +841,7 @@ public static void findAWayToTriggerThisAtGameStart() {
colorChoices = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
for (AbstractCard.CardColor r : AbstractCard.CardColor.values()) {
if (r != AbstractCard.CardColor.CURSE && r != AbstractDungeon.player.getCardColor() && r != AbstractCard.CardColor.COLORLESS && r != CardColorEnumPatch.CardColorPatch.BOSS && r != CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE && (!sneckoNoModCharacters || allowedColors.contains(r.name()))) {
- if (BaseMod.getBackColor(r) != null) {
+ if (1==1) {
String s = getClassFromColor(r);
AbstractCard q = playerStartCardForEventFromColor(r);
@@ -583,6 +871,7 @@ public static void updateAllUnknownReplacements() {
@Override
public void receivePostUpdate() {
+ gifted = false;
if (!SneckoMod.openedStarterScreen) {
if (CardCrawlGame.isInARun() && downfallMod.readyToDoThing) {
SneckoMod.findAWayToTriggerThisAtGameStart();
@@ -606,4 +895,21 @@ public void receivePostUpdate() {
}
}
}
+
+ public static boolean gifted = false;
+
+ public static ArrayList> incomingPicks = new ArrayList<>();
+
+ public static void addGift(ArrayList incomingGift) {
+ incomingPicks.add(incomingGift);
+ }
+
+ public static void nextGift() {
+ System.out.println("Next called" + incomingPicks.size());
+ if (incomingPicks.size() > 0 && !gifted) {
+ gifted = true;
+ System.out.println(incomingPicks.get(0));
+ AbstractDungeon.cardRewardScreen.open(incomingPicks.remove(0), null, TEXT[2]);
+ }
+ }
}
diff --git a/src/main/java/sneckomod/TheSnecko.java b/src/main/java/sneckomod/TheSnecko.java
index b97b34fa2..9278b30e4 100644
--- a/src/main/java/sneckomod/TheSnecko.java
+++ b/src/main/java/sneckomod/TheSnecko.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.EnergyManager;
import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.cutscenes.CutscenePanel;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.helpers.FontHelper;
@@ -19,6 +20,8 @@
import com.megacrit.cardcrawl.helpers.ScreenShake;
import com.megacrit.cardcrawl.localization.CharacterStrings;
import com.megacrit.cardcrawl.screens.CharSelectInfo;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.scene.DefectVictoryNumberEffect;
import reskinContent.patches.CharacterSelectScreenPatches;
import reskinContent.reskinContent;
import sneckomod.cards.Defend;
@@ -27,8 +30,10 @@
import sneckomod.cards.TailWhip;
import sneckomod.cards.unknowns.*;
import sneckomod.relics.SneckoSoul;
+import sneckomod.vfx.SneckoVictoryNumberEffect;
import java.util.ArrayList;
+import java.util.List;
import static sneckomod.SneckoMod.*;
import static sneckomod.TheSnecko.Enums.SNECKO_CYAN;
@@ -112,14 +117,13 @@ public ArrayList getStartingDeck() {
retVal.add(Strike.ID);
retVal.add(Strike.ID);
retVal.add(Strike.ID);
+ retVal.add(Strike.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(TailWhip.ID);
retVal.add(SnekBite.ID);
- retVal.add(Unknown.ID);
- retVal.add(Unknown.ID);
return retVal;
}
@@ -207,6 +211,24 @@ public Texture getCustomModeCharacterButtonImage() {
*/
+
+ //this is a total meme ending lol
+ @Override
+ public List getCutscenePanels() {
+ List panels = new ArrayList();
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko1.png", "ATTACK_MAGIC_BEAM_SHORT"));
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko2.png"));
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko3.png"));
+ return panels;
+ }
+
+ @Override
+ public void updateVictoryVfx(ArrayList effects) {
+ if (effects.stream().filter(e -> e instanceof SneckoVictoryNumberEffect).count() < 8)
+ effects.add(new SneckoVictoryNumberEffect());
+ }
+
+
@Override
public String getSpireHeartText() {
return TEXT[1];
diff --git a/src/main/java/sneckomod/actions/AceOfWandsAction.java b/src/main/java/sneckomod/actions/AceOfWandsAction.java
new file mode 100644
index 000000000..4acb666a3
--- /dev/null
+++ b/src/main/java/sneckomod/actions/AceOfWandsAction.java
@@ -0,0 +1,38 @@
+package sneckomod.actions;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.cards.CardGroup.CardGroupType;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.powers.watcher.WaveOfTheHandPower;
+import sneckomod.patches.WaveOfTheHandPatch;
+import java.util.Iterator;
+
+public class AceOfWandsAction extends AbstractGameAction {
+
+private AbstractPlayer p;
+
+//Credit to Alex for this old code to prevent a softlock with AceOfWands / Queen of Pentacles, obviously
+
+public AceOfWandsAction(int amount) {
+ this.p = AbstractDungeon.player;
+ this.setValues(this.p, AbstractDungeon.player, amount);
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.duration = Settings.ACTION_DUR_MED;
+ this.amount = amount;
+}
+
+ public void update() {
+ if (AbstractDungeon.player.hasPower(WaveOfTheHandPower.POWER_ID)) {
+ WaveOfTheHandPatch.isActive = 1;
+ }
+ this.addToTop(new GainBlockAction(p, p, amount));
+ this.isDone = true;
+ this.tickDuration();
+}
+ }
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/BabySneckoAttackAction.java b/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
index 46fd71ae4..c890c21d5 100644
--- a/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
+++ b/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
@@ -21,7 +21,7 @@ public BabySneckoAttackAction(AbstractMonster m, BabySnecko b) {
public void update() {
this.b.baby.state.setAnimation(0, "boop", false);
this.b.baby.state.addAnimation(0, "idle", true, 0.0f);
- AbstractDungeon.actionManager.addToBottom(new PseudoDamageRandomEnemyAction(m, new DamageInfo(AbstractDungeon.player, 5, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
+ AbstractDungeon.actionManager.addToBottom(new PseudoDamageRandomEnemyAction(m, new DamageInfo(AbstractDungeon.player, 9, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
this.isDone = true;
}
diff --git a/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java b/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java
new file mode 100644
index 000000000..01a5cbeb4
--- /dev/null
+++ b/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java
@@ -0,0 +1,45 @@
+package sneckomod.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import expansioncontent.expansionContentMod;
+import sneckomod.SneckoMod;
+
+import java.util.ArrayList;
+
+public class BabySneckoMuddleAction extends AbstractGameAction {
+
+ @Override
+ public void update () {
+ ArrayList validCards = new ArrayList<>();
+
+ // filter valid cards based on cost and tags
+ for (AbstractCard card : AbstractDungeon.player.hand.group) {
+ System.out.println("DEBUG: Baby Snecko checking card: " + card);
+ if ((card.costForTurn <= 0 || card.hasTag(SneckoMod.SNEKPROOF) || card.cost != card.costForTurn) || card.freeToPlay() || card.freeToPlayOnce) {
+ System.out.println("DEBUG: Card found invalid, costs: " + card.costForTurn);
+ continue; // Skip invalid cards
+ }
+ System.out.println("DEBUG: Card found valid, costs: " + card.costForTurn);
+ validCards.add(card);
+ }
+
+ // if there are valid cards, muddle two at random
+ if (!validCards.isEmpty()) {
+ // if there's only one valid card, still muddle it
+ int cardsToPick = Math.min(2, validCards.size());
+ ArrayList chosenCards = new ArrayList<>();
+
+ for (int i = 0; i < cardsToPick; i++) {
+ AbstractCard randomCard = validCards.get(AbstractDungeon.cardRandomRng.random(validCards.size() - 1));
+ System.out.println("DEBUG: Decided to Muddle: " + randomCard + " which costs: " + randomCard.costForTurn);
+ AbstractDungeon.actionManager.addToBottom(new MuddleAction(randomCard));
+ validCards.remove(randomCard); // Avoid selecting the same card again
+ chosenCards.add(randomCard);
+ }
+ }
+
+ this.isDone = true;
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/DrawOffclassAction.java b/src/main/java/sneckomod/actions/DrawOffclassAction.java
new file mode 100644
index 000000000..e9722005f
--- /dev/null
+++ b/src/main/java/sneckomod/actions/DrawOffclassAction.java
@@ -0,0 +1,45 @@
+package sneckomod.actions;
+
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.FetchAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import hermit.util.Wiz;
+import sneckomod.actions.MuddleAction;
+
+import java.util.stream.Collectors;
+
+public class DrawOffclassAction extends AbstractGameAction {
+ private int draw;
+ private AbstractPlayer p;
+
+ public DrawOffclassAction(int amount) {
+ draw = amount;
+ p = AbstractDungeon.player;
+ }
+
+ @Override
+ public void update() {
+ int count = 0;
+
+ // fully loaded code
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ tmp.group.addAll(AbstractDungeon.player.drawPile.group.stream()
+ .filter(c -> c.color != AbstractDungeon.player.getCardColor())
+ .limit(draw)
+ .collect(Collectors.toList()));
+
+ for (AbstractCard c : tmp.group) {
+ if (Wiz.hand().size() < BaseMod.MAX_HAND_SIZE) {
+ addToBot(new FetchAction(Wiz.p().drawPile, card -> card == c));
+ count++;
+ if (count >= draw) break;
+ }
+ }
+ isDone = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/DrawThenMuddleAction.java b/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
index 7b20090df..409c0c884 100644
--- a/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
+++ b/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
@@ -50,4 +50,4 @@ public void update() {
addToTop(new DrawCardAction(p, bruh));
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MemorizeAction.java b/src/main/java/sneckomod/actions/MemorizeAction.java
deleted file mode 100644
index d0ac07872..000000000
--- a/src/main/java/sneckomod/actions/MemorizeAction.java
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
-package sneckomod.actions;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.cards.colorless.Madness;
-import com.megacrit.cardcrawl.cards.tempCards.Shiv;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.CardLibrary;
-import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
-import slimebound.actions.MakeTempCardInHandActionReduceCost;
-import sneckomod.SneckoMod;
-import sneckomod.cards.unknowns.AbstractUnknownCard;
-import sneckomod.cards.unknowns.Unknown;
-import sneckomod.patches.UnknownExtraUiPatch;
-
-import java.util.ArrayList;
-
-public class MemorizeAction extends AbstractGameAction {
- private static final String[] EXTENDED_DESCRIPTION = CardCrawlGame.languagePack.getCardStrings(SneckoMod.makeID("Memorize")).EXTENDED_DESCRIPTION;
- private AbstractPlayer p;
-
- private ArrayList cannotMemorize = new ArrayList<>();
-
- public MemorizeAction() {
- this.actionType = ActionType.CARD_MANIPULATION;// 22
- this.p = AbstractDungeon.player;// 23
- this.duration = Settings.ACTION_DUR_FAST;// 24
- }// 26
-
- public void update() {
- if (this.duration == Settings.ACTION_DUR_FAST) {// 30
-
- for (AbstractCard c : AbstractDungeon.player.hand.group) {
- c.update();
- if (UnknownExtraUiPatch.parentCard.get(c) == null) {
- cannotMemorize.add(c);
- }
- }
- for (AbstractCard c : cannotMemorize) {
- p.hand.group.remove(c);
- }
-
-
- if (this.p.hand.group.size() >= 1) {// 74
- AbstractDungeon.handCardSelectScreen.open(EXTENDED_DESCRIPTION[0], 1, false, false);// 75
- this.tickDuration();// 76
- return;// 77
- }
-
- }
-
- if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {// 87
- for (AbstractCard c : AbstractDungeon.handCardSelectScreen.selectedCards.group) {
- AbstractCard c3 = c.makeCopy();
- for (AbstractCard c2 : p.masterDeck.group) {
- if (c2.uuid == UnknownExtraUiPatch.parentCard.get(c).uuid) {
- if (c2.upgraded) c3.upgrade();
- p.masterDeck.removeCard(c2);
- break;
- }
- }
-
-
- AbstractDungeon.effectsQueue.add(new ShowCardAndObtainEffect(c3, (float) Settings.WIDTH * .75F, (float) Settings.HEIGHT / 2.0F));
-
- AbstractDungeon.topLevelEffects.add(new com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect(
-
- (AbstractCard) UnknownExtraUiPatch.parentCard.get(c), com.megacrit.cardcrawl.core.Settings.WIDTH * 0.35F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2));
-
-
- p.hand.addToTop(c);// 106
-
- UnknownExtraUiPatch.parentCard.set(c, null);
- }
-
- this.returnCards();// 95
- AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;// 96
- AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();// 97
- this.isDone = true;// 98
- }
- this.tickDuration();// 101
- }// 102
-
- private void returnCards () {
- for (AbstractCard c : cannotMemorize) {
- this.p.hand.addToTop(c);// 106
- }
- this.p.hand.refreshHandLayout();// 108
- }// 109
-
- }
diff --git a/src/main/java/sneckomod/actions/MuddleAction.java b/src/main/java/sneckomod/actions/MuddleAction.java
index 2f12207bf..aa4ba3cca 100644
--- a/src/main/java/sneckomod/actions/MuddleAction.java
+++ b/src/main/java/sneckomod/actions/MuddleAction.java
@@ -2,15 +2,21 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
+import gremlin.relics.WizardHat;
import slimebound.SlimeboundMod;
import sneckomod.SneckoMod;
+import sneckomod.cards.RiskySword;
+import sneckomod.powers.BlunderGuardPower;
import sneckomod.powers.MudshieldPower;
import sneckomod.relics.CleanMud;
import sneckomod.relics.CrystallizedMud;
+import sneckomod.relics.LoadedDie;
import java.util.ArrayList;
@@ -30,29 +36,89 @@ public MuddleAction(AbstractCard bruhCard) {
public void update() {
isDone = true;
+ if (card instanceof RiskySword) {
+ // Cast the card to RiskySword and call the onMuddled method
+ ((RiskySword) card).onMuddledSword();
+ }
if (card.cost >= 0 && !card.hasTag(SneckoMod.SNEKPROOF)) {// 32
if (AbstractDungeon.player.hasPower(MudshieldPower.POWER_ID)) {
AbstractDungeon.player.getPower(MudshieldPower.POWER_ID).onSpecificTrigger();
}
card.superFlash();
ArrayList numList = new ArrayList<>();
- if (!AbstractDungeon.player.hasRelic(CrystallizedMud.ID)) {
+ // if (!AbstractDungeon.player.hasRelic(CrystallizedMud.ID)) {
if (card.costForTurn != 0) numList.add(0);
- }
+ // }
if (card.costForTurn != 1) numList.add(1);
if (card.costForTurn != 2) numList.add(2);
- if (!AbstractDungeon.player.hasRelic(CleanMud.ID)) {
+ //if (!AbstractDungeon.player.hasRelic(CleanMud.ID)) {
if (!this.no3) {
if (card.costForTurn != 3) numList.add(3);
}
- }
+ //}
int newCost = numList.get(AbstractDungeon.cardRandomRng.random(numList.size() - 1));// 33
- //SlimeboundMod.logger.info("muddling " + card.name + " base " + card.cost + " new " + newCost);
- if (card.costForTurn != newCost) {// 34
- card.setCostForTurn(newCost);
+ int truecost = newCost;
+
+ System.out.println("DEBUG: Cost: " + newCost);
+
+ if ((
+ ((newCost == 3) && AbstractDungeon.player.hasRelic(CleanMud.ID))
+ || ((newCost == 0) && (AbstractDungeon.player.hasRelic(CrystallizedMud.ID)))
+ )) {
+
+ System.out.println("DEBUG: Cost is 0 or 3: " + newCost);
+ CleanMud cleanMudInstance = new CleanMud();
+ if (AbstractDungeon.player.hasRelic(CleanMud.ID) && (newCost == 3)) {
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, cleanMudInstance));
+ AbstractDungeon.player.getRelic(CleanMud.ID).onTrigger();
+ }
+
+ CrystallizedMud crystallizedMudInstance = new CrystallizedMud();
+ if (AbstractDungeon.player.hasRelic(CrystallizedMud.ID) && (newCost == 0)) {
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, crystallizedMudInstance));
+ AbstractDungeon.player.getRelic(CrystallizedMud.ID).onTrigger();
+ }
+
+ ArrayList numListMud = new ArrayList<>();
+ if (!AbstractDungeon.player.hasRelic(CrystallizedMud.ID)) {
+ if (card.costForTurn != 0) numListMud.add(0);
+ }
+ if (card.costForTurn != 1) numListMud.add(1);
+ if (card.costForTurn != 2) numListMud.add(2);
+ if (!AbstractDungeon.player.hasRelic(CleanMud.ID)) {
+ if (!this.no3) {
+ if (card.costForTurn != 3) numListMud.add(3);
+ }
+ }
+
+ int newCosts = numListMud.get(AbstractDungeon.cardRandomRng.random(numListMud.size() - 1));// 33
+ truecost = newCosts;
+ System.out.println("DEBUG: Modified (?) Cost: " + truecost);
+ }
+
+
+ System.out.println("DEBUG: Final Cost: " + truecost);
+
+ if (card.costForTurn != truecost) {
+ card.setCostForTurn(truecost);
+ }
+
+ if (AbstractDungeon.player.hasPower(BlunderGuardPower.POWER_ID)){
+ if ((card.costForTurn == 3)) {
+ AbstractDungeon.player.getPower(BlunderGuardPower.POWER_ID).onSpecificTrigger();
+ }
+ }
+
+ LoadedDie loadedDieInstance = new LoadedDie();
+ if (AbstractDungeon.player.hasRelic(LoadedDie.ID)) {
+ addToBot(new GainBlockAction(AbstractDungeon.player, 1));
+ loadedDieInstance.flash();
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, loadedDieInstance));
+ AbstractDungeon.player.getRelic(LoadedDie.ID).onTrigger();
}
card.freeToPlayOnce = false;// 39
}
}
-}
+
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MuddleHandAction.java b/src/main/java/sneckomod/actions/MuddleHandAction.java
index a5f372ffe..e5af17fc4 100644
--- a/src/main/java/sneckomod/actions/MuddleHandAction.java
+++ b/src/main/java/sneckomod/actions/MuddleHandAction.java
@@ -34,4 +34,4 @@ public void update() {
this.tickDuration();// 38
}
}// 34 39
-}
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MuddleMarkedAction.java b/src/main/java/sneckomod/actions/MuddleMarkedAction.java
new file mode 100644
index 000000000..3a84634d8
--- /dev/null
+++ b/src/main/java/sneckomod/actions/MuddleMarkedAction.java
@@ -0,0 +1,97 @@
+package sneckomod.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import slimebound.SlimeboundMod;
+import sneckomod.SneckoMod;
+import sneckomod.cards.Cower;
+import sneckomod.cards.RiskySword;
+import sneckomod.powers.BlunderGuardPower;
+import sneckomod.powers.MudshieldPower;
+import sneckomod.relics.CleanMud;
+import sneckomod.relics.CrystallizedMud;
+import sneckomod.relics.LoadedDie;
+
+import java.util.ArrayList;
+
+public class MuddleMarkedAction extends AbstractGameAction {
+
+ private AbstractCard card;
+ private boolean no3;
+
+ public MuddleMarkedAction(AbstractCard bruhCard, boolean modified) {
+ card = bruhCard;
+ this.no3 = modified;
+ }
+
+ public MuddleMarkedAction(AbstractCard bruhCard) {
+ this(bruhCard, false);
+ }
+
+ public void update() {
+ isDone = true;
+
+ if ((card instanceof RiskySword)) {
+ ((RiskySword) card).onMuddledSword();
+ }
+
+ if (card.cost >= 0 && !card.hasTag(SneckoMod.SNEKPROOF)) {
+ if (AbstractDungeon.player.hasPower(MudshieldPower.POWER_ID)) {
+ AbstractDungeon.player.getPower(MudshieldPower.POWER_ID).onSpecificTrigger();
+ }
+
+ LoadedDie loadedDieInstance = new LoadedDie();
+ if (AbstractDungeon.player.hasRelic(LoadedDie.ID)) {
+ addToBot(new GainBlockAction(AbstractDungeon.player, 1));
+ loadedDieInstance.flash();
+ AbstractDungeon.player.getRelic(LoadedDie.ID).onTrigger();
+ }
+
+ card.superFlash();
+ ArrayList numList = new ArrayList<>();
+
+ if (!AbstractDungeon.player.hasRelic(CrystallizedMud.ID)) {
+ numList.add(0);
+ }
+
+ if (card.costForTurn > 1) numList.add(1);
+ if (card.costForTurn > 2) numList.add(2);
+ if (card.costForTurn > 3 && !AbstractDungeon.player.hasRelic(CleanMud.ID) && !this.no3) numList.add(3);
+
+ if (numList.isEmpty()) {
+ numList.add(1);
+ }
+
+ int newCost = numList.get(AbstractDungeon.cardRandomRng.random(numList.size() - 1));
+
+ if (((newCost == 3) && AbstractDungeon.player.hasRelic(CleanMud.ID))){
+ ArrayList numListMud = new ArrayList<>();
+ if (!AbstractDungeon.player.hasRelic(CrystallizedMud.ID) && (card.costForTurn != 1)){
+ numListMud.add(0);
+ }
+
+ CleanMud cleanMudInstance = new CleanMud();
+ if (AbstractDungeon.player.hasRelic(CleanMud.ID) && (newCost == 3)) {
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, cleanMudInstance));
+ //cleanMudInstance.flash();
+ AbstractDungeon.player.getRelic(CleanMud.ID).onTrigger();
+ }
+
+ if (card.costForTurn > 1) numListMud.add(1);
+ if (card.costForTurn > 2) numListMud.add(2);
+ newCost = numListMud.get(AbstractDungeon.cardRandomRng.random(numListMud.size() - 1));
+ }
+
+ int truecost = newCost;
+
+ if (card.costForTurn != truecost) {
+ card.setCostForTurn(truecost);
+ }
+
+ card.freeToPlayOnce = false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MuddleRandomCardAction.java b/src/main/java/sneckomod/actions/MuddleRandomCardAction.java
index 4ac88b9aa..a01d44d3c 100644
--- a/src/main/java/sneckomod/actions/MuddleRandomCardAction.java
+++ b/src/main/java/sneckomod/actions/MuddleRandomCardAction.java
@@ -62,4 +62,4 @@ public void update() {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/NoApplyRandomDamageAction.java b/src/main/java/sneckomod/actions/NoApplyRandomDamageAction.java
deleted file mode 100644
index 6ee3921af..000000000
--- a/src/main/java/sneckomod/actions/NoApplyRandomDamageAction.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package sneckomod.actions;
-
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.utility.WaitAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
-import sneckomod.SneckoMod;
-import sneckomod.cards.AbstractSneckoCard;
-
-public class NoApplyRandomDamageAction extends AbstractGameAction {
-
- private static final float DURATION = 0.01F;
- private DamageInfo info;
- private int numTimes;
- private int min;
- private int max;
- private AbstractSneckoCard source;
- private int dmg;
-
- public NoApplyRandomDamageAction(AbstractCreature target, int min, int max, int numTimes, AttackEffect fx, AbstractSneckoCard source, DamageInfo.DamageType type) {
- if (min > max) {
- this.min = max;
- this.max = min;
- } else {
- this.min = min;
- this.max = max;
- }
-
- dmg = AbstractSneckoCard.getRandomNum(min, max, source);
-
- this.source = source;
- this.info = new DamageInfo(AbstractDungeon.player, dmg, type);
- this.target = target;
- this.actionType = ActionType.DAMAGE;
- this.attackEffect = fx;
- this.duration = DURATION;
- this.numTimes = numTimes;
- }
-
- public void update() {
- if (this.target == null) {
- this.isDone = true;
- return;
- }
- if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
- AbstractDungeon.actionManager.clearPostCombatActions();
- this.isDone = true;
- return;
- }
- if (this.target.currentHealth > 0) {
- AbstractDungeon.effectList.add(
- new FlashAtkImgEffect(
- this.target.hb.cX, this.target.hb.cY, this.attackEffect
- )
- );
-
- float tmp = info.output;
- /*
- for (AbstractPower p : target.powers) {
- tmp = p.atDamageReceive(tmp, info.type);
- if (info.base != (int) tmp) {
- info.isModified = true;
- }
- }
- for (AbstractPower p : target.powers) {
- tmp = p.atDamageFinalReceive(tmp, info.type);
- if (info.base != (int) tmp) {
- info.isModified = true;
- }
- }
- */
- info.output = MathUtils.floor(tmp);
- if (info.output < 0) {
- info.output = 0;
- }
-
- this.target.damage(this.info);
- /*
- AbstractDungeon.actionManager.addToBottom(
- new DamageAction(
- this.target,
- this.info,
- this.attackEffect
- )
- );
- */
- if ((this.numTimes > 1) && (!AbstractDungeon.getMonsters().areMonstersBasicallyDead())) {
- this.numTimes--;
- AbstractDungeon.actionManager.addToTop(
- new NoApplyRandomDamageAction(
- AbstractDungeon.getMonsters().getRandomMonster(true),
- min,
- max,
- this.numTimes,
- attackEffect,
- source,
- info.type
- )
- );
- }
- AbstractDungeon.actionManager.addToTop(new WaitAction(0.2F));
- }
- this.isDone = true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/NopeAction.java b/src/main/java/sneckomod/actions/NopeAction.java
index 521ef5c04..96dc96499 100644
--- a/src/main/java/sneckomod/actions/NopeAction.java
+++ b/src/main/java/sneckomod/actions/NopeAction.java
@@ -1,93 +1,68 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package sneckomod.actions;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.CardLibrary;
-import slimebound.actions.MakeTempCardInHandActionReduceCost;
import sneckomod.SneckoMod;
-import java.util.ArrayList;
-
public class NopeAction extends AbstractGameAction {
private static final String[] EXTENDED_DESCRIPTION = CardCrawlGame.languagePack.getCardStrings(SneckoMod.makeID("Nope")).EXTENDED_DESCRIPTION;
private AbstractPlayer p;
- private boolean reduction;
- public NopeAction(boolean reduceCost) {
- this.actionType = ActionType.CARD_MANIPULATION;// 22
- this.p = AbstractDungeon.player;// 23
- this.duration = Settings.ACTION_DUR_FAST;// 24
- this.reduction = reduceCost;
- }// 26
+ public NopeAction() {
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.p = AbstractDungeon.player;
+ this.duration = Settings.ACTION_DUR_FAST;
+ }
public void update() {
- if (this.duration == Settings.ACTION_DUR_FAST) {// 30
-
- if (this.p.hand.group.size() > 1) {// 74
- AbstractDungeon.handCardSelectScreen.open(EXTENDED_DESCRIPTION[0], 1, false, false);// 75
- this.tickDuration();// 76
- return;// 77
+ if (this.duration == Settings.ACTION_DUR_FAST) {
+ if (this.p.hand.group.size() > 1) {
+ AbstractDungeon.handCardSelectScreen.open(EXTENDED_DESCRIPTION[0], 1, false, false);
+ this.tickDuration();
+ return;
}
- if (this.p.hand.group.size() == 1) {// 78
+ if (this.p.hand.group.size() == 1) {
AbstractCard c = p.hand.getTopCard();
- p.hand.moveToExhaustPile(c);
- AbstractCard.CardType q = c.type;
- AbstractCard card;
-
- if (c.type == AbstractCard.CardType.CURSE) {
- card = AbstractDungeon.returnRandomCurse();
- } else if (c.type == AbstractCard.CardType.STATUS) {
- card = SneckoMod.getRandomStatus().makeCopy();
- } else {
- card = SneckoMod.getSpecificClassCard(c.color);
+ if (isCardInvalid(c)) {
+ this.isDone = true;
+ return;
}
- if (reduction) {
- this.addToBot(new MakeTempCardInHandActionReduceCost(card));// 34
- } else {
- this.addToBot(new MakeTempCardInHandAction(card));
- }
-
- this.isDone = true;// 82
+ //p.hand.moveToExhaustPile(c);
+ AbstractCard card = SneckoMod.getSpecificClassCard(c.color);
+ this.addToBot(new MakeTempCardInHandAction(card));
+ this.isDone = true;
}
}
- if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {// 87
+ if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {
for (AbstractCard c : AbstractDungeon.handCardSelectScreen.selectedCards.group) {
- p.hand.moveToExhaustPile(c);
- AbstractCard card = null;
- if (c.type == AbstractCard.CardType.CURSE) {
- card = AbstractDungeon.returnRandomCurse();
- } else if (c.type == AbstractCard.CardType.STATUS) {
- card = SneckoMod.getRandomStatus().makeCopy();
- } else {
- card = SneckoMod.getSpecificClassCard(c.color);
+ if (isCardInvalid(c)) {
+ continue;
}
- if (reduction) {
- this.addToBot(new MakeTempCardInHandActionReduceCost(card));// 34
- } else {
- this.addToBot(new MakeTempCardInHandAction(card));
- }
+ p.hand.moveToExhaustPile(c);
+ AbstractCard card = SneckoMod.getSpecificClassCard(c.color);
+ this.addToBot(new MakeTempCardInHandAction(card));
}
- AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;// 96
- AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();// 97
- this.isDone = true;// 98
+ AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;
+ AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();
+ this.isDone = true;
}
- this.tickDuration();// 101
- }// 102
+ this.tickDuration();
+ }
-}
+ private boolean isCardInvalid(AbstractCard card) {
+ p.hand.moveToExhaustPile(card);
+ return card.color == AbstractCard.CardColor.COLORLESS && card.rarity == AbstractCard.CardRarity.SPECIAL
+ || card.type == AbstractCard.CardType.STATUS
+ || card.type == AbstractCard.CardType.CURSE;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/PureSneckoAction.java b/src/main/java/sneckomod/actions/PureSneckoAction.java
deleted file mode 100644
index 8f07c2d18..000000000
--- a/src/main/java/sneckomod/actions/PureSneckoAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package sneckomod.actions;
-
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import slimebound.actions.MakeTempCardInHandActionReduceCost;
-import sneckomod.SneckoMod;
-
-
-public class PureSneckoAction extends AbstractGameAction {
- public AbstractPlayer p;
- private boolean up;
-
- public PureSneckoAction(AbstractPlayer p, boolean upgraded) {
- this.p = p;
- this.up = upgraded;
-
-
- }
-
- public void update() {
-
- int handSize = 0;
-
- for (AbstractCard c : p.hand.group) {
- if (c.color != AbstractDungeon.player.getCardColor()) {
- handSize++;
- AbstractDungeon.actionManager.addToBottom(new ExhaustSpecificCardAction(c, p.hand, true));
- }
- }
-
- for (int i = 0; i < handSize; i++) {
- if (this.up) {
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandActionReduceCost(SneckoMod.getOffClassCard()));
- } else {
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(SneckoMod.getOffClassCard()));
- }
-
- }
- this.isDone = true;
- }
-
-}
-
-
-
diff --git a/src/main/java/sneckomod/actions/RandomDamageAction.java b/src/main/java/sneckomod/actions/RandomDamageAction.java
deleted file mode 100644
index 2da5adb4b..000000000
--- a/src/main/java/sneckomod/actions/RandomDamageAction.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package sneckomod.actions;
-
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.utility.WaitAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.powers.AbstractPower;
-import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
-import sneckomod.cards.AbstractSneckoCard;
-
-public class RandomDamageAction extends AbstractGameAction {
-
- private static final float DURATION = 0.01F;
- private DamageInfo info;
- private int numTimes;
- private int min;
- private int max;
- private int dmg;
-
- public RandomDamageAction(AbstractCreature target, int min, int max, int numTimes, AttackEffect fx) {
- if (min > max) {
- this.min = max;
- this.max = min;
- } else {
- this.min = min;
- this.max = max;
- }
-
- if (this.max != this.min) {
- dmg = AbstractSneckoCard.getRandomNum(min, max);
- } else {
- dmg = this.max;
- }
- this.info = new DamageInfo(AbstractDungeon.player, dmg);
- this.target = target;
- this.actionType = AbstractGameAction.ActionType.DAMAGE;
- this.attackEffect = fx;
- this.duration = DURATION;
- this.numTimes = numTimes;
- }
-
- public void update() {
- if (this.target == null) {
- this.isDone = true;
- return;
- }
- if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
- AbstractDungeon.actionManager.clearPostCombatActions();
- this.isDone = true;
- return;
- }
- if (this.target.currentHealth > 0) {
- AbstractDungeon.effectList.add(
- new FlashAtkImgEffect(
- this.target.hb.cX, this.target.hb.cY, this.attackEffect
- )
- );
-
- float tmp = info.output;
- for (AbstractPower p : target.powers) {
- tmp = p.atDamageReceive(tmp, info.type);
- if (info.base != (int) tmp) {
- info.isModified = true;
- }
- }
- for (AbstractPower p : target.powers) {
- tmp = p.atDamageFinalReceive(tmp, info.type);
- if (info.base != (int) tmp) {
- info.isModified = true;
- }
- }
- info.output = MathUtils.floor(tmp);
- if (info.output < 0) {
- info.output = 0;
- }
-
- this.target.damage(this.info);
- /*
- AbstractDungeon.actionManager.addToBottom(
- new DamageAction(
- this.target,
- this.info,
- this.attackEffect
- )
- );
- */
- if ((this.numTimes > 1) && (!AbstractDungeon.getMonsters().areMonstersBasicallyDead())) {
- this.numTimes--;
- AbstractDungeon.actionManager.addToTop(
- new RandomDamageAction(
- AbstractDungeon.getMonsters().getRandomMonster(true),
- min,
- max,
- this.numTimes,
- attackEffect
- )
- );
- }
- AbstractDungeon.actionManager.addToTop(new WaitAction(0.2F));
- }
- this.isDone = true;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/SerpentIdolAction.java b/src/main/java/sneckomod/actions/SerpentIdolAction.java
index 886d77451..e24fa2cff 100644
--- a/src/main/java/sneckomod/actions/SerpentIdolAction.java
+++ b/src/main/java/sneckomod/actions/SerpentIdolAction.java
@@ -1,5 +1,6 @@
package sneckomod.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.AbstractCard.CardRarity;
@@ -32,7 +33,7 @@ public void update() {
disCard.setCostForTurn(0);// 36
disCard.current_x = -1000.0F * Settings.scale;// 38
- if (AbstractDungeon.player.hand.size() < 10) {// 39
+ if (AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {// 39
AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 40
} else {
AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));// 44
@@ -79,4 +80,4 @@ private ArrayList generateCardChoices() {
return derp;// 87
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/SoulExchangeAction.java b/src/main/java/sneckomod/actions/SoulExchangeAction.java
deleted file mode 100644
index 318badd28..000000000
--- a/src/main/java/sneckomod/actions/SoulExchangeAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
-package sneckomod.actions;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ExhaustAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import sneckomod.SneckoMod;
-
-public class SoulExchangeAction extends AbstractGameAction {
- private static final String[] EXTENDED_DESCRIPTION = CardCrawlGame.languagePack.getCardStrings(SneckoMod.makeID("SoulExchange")).EXTENDED_DESCRIPTION;
- private AbstractPlayer p;
-
- public SoulExchangeAction() {
- this.actionType = ActionType.CARD_MANIPULATION;// 22
- this.p = AbstractDungeon.player;// 23
- this.duration = Settings.ACTION_DUR_FAST;// 24
- }// 26
-
- public void update() {
- if (this.duration == Settings.ACTION_DUR_FAST) {// 30
-
- if (this.p.hand.group.size() > 1) {// 74
- AbstractDungeon.handCardSelectScreen.open(EXTENDED_DESCRIPTION[0], 1, false, false);// 75
- this.tickDuration();// 76
- return;// 77
- }
-
- if (this.p.hand.group.size() == 1) {// 78
- AbstractCard c = p.hand.getTopCard();
- p.hand.moveToExhaustPile(c);
- this.isDone = true;// 82
- }
- }
-
- if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {// 87
- for (AbstractCard c : AbstractDungeon.handCardSelectScreen.selectedCards.group) {
- p.hand.moveToExhaustPile(c);
- addToBot(new ExhaustAction(p.hand.size(), true, false));
- for (int i = 0; i < p.hand.size(); i++) {
- if (c.type != AbstractCard.CardType.STATUS && c.type != AbstractCard.CardType.CURSE) {
- AbstractCard card = SneckoMod.getSpecificClassCard(c.color);
- this.addToBot(new MakeTempCardInHandAction(card, true));// 34
- } else if (c.type == AbstractCard.CardType.STATUS) {
- AbstractCard card = SneckoMod.getRandomStatus();
- this.addToBot(new MakeTempCardInHandAction(card, true));// 34
- } else {
- AbstractCard card = AbstractDungeon.returnRandomCurse();
- this.addToBot(new MakeTempCardInHandAction(card, true));// 34
- }
- }
-
-
- }
-
- AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;// 96
- AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();// 97
- this.isDone = true;// 98
- }
- this.tickDuration();// 101
- }// 102
-}
diff --git a/src/main/java/sneckomod/actions/SuperSneckoSoulAction.java b/src/main/java/sneckomod/actions/SuperSneckoSoulAction.java
new file mode 100644
index 000000000..003a51c5a
--- /dev/null
+++ b/src/main/java/sneckomod/actions/SuperSneckoSoulAction.java
@@ -0,0 +1,34 @@
+package sneckomod.actions;
+
+import basemod.BaseMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import sneckomod.actions.MuddleAction;
+
+public class SuperSneckoSoulAction extends AbstractGameAction {
+
+ public SuperSneckoSoulAction() {
+ }
+
+ @Override
+ public void update() {
+ // Check if the player's hand size is below the maximum hand size
+ if (AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {
+ addToBot(new DrawCardAction(1, new AbstractGameAction() {
+ @Override
+ public void update() {
+ // Ensure there is a card in hand to muddle
+ if (AbstractDungeon.player.hand.size() > 0) {
+ AbstractCard drawnCard = AbstractDungeon.player.hand.getTopCard();
+ addToTop(new MuddleAction(drawnCard)); // Muddle the drawn card
+ }
+ isDone = true;
+ }
+ }));
+ }
+
+ isDone = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/AbstractSneckoCard.java b/src/main/java/sneckomod/cards/AbstractSneckoCard.java
index 5a3be685f..3def4804e 100644
--- a/src/main/java/sneckomod/cards/AbstractSneckoCard.java
+++ b/src/main/java/sneckomod/cards/AbstractSneckoCard.java
@@ -3,6 +3,7 @@
import basemod.abstracts.CustomCard;
import basemod.helpers.TooltipInfo;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -10,13 +11,13 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import hermit.cards.AbstractDynamicCard;
import hermit.util.TextureLoader;
import sneckomod.SneckoMod;
import sneckomod.TheSnecko;
@@ -25,27 +26,28 @@
import sneckomod.relics.LoadedDie;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import static sneckomod.SneckoMod.getModID;
import static sneckomod.SneckoMod.makeCardPath;
-public abstract class AbstractSneckoCard extends CustomCard {
-
- protected String[] unknownUpgrade = CardCrawlGame.languagePack.getUIString(makeID("Unknown")).TEXT;
- protected String[] unknownNames = CardCrawlGame.languagePack.getUIString(makeID("UnknownNames")).TEXT;
+public abstract class AbstractSneckoCard extends CustomCard implements OnObtainCard {
protected final CardStrings cardStrings;
- public String betaArtPath;
protected final String NAME;
protected final String DESCRIPTION;
- protected String UPGRADE_DESCRIPTION;
protected final String[] EXTENDED_DESCRIPTION;
+ public String betaArtPath;
public int silly;
public int baseSilly;
public boolean upgradedSilly;
public boolean isSillyModified;
+ protected String[] unknownUpgrade = CardCrawlGame.languagePack.getUIString(makeID("Unknown")).TEXT;
+ protected String[] unknownNames = CardCrawlGame.languagePack.getUIString(makeID("UnknownNames")).TEXT;
+ protected String UPGRADE_DESCRIPTION;
public AbstractSneckoCard(final String id, final int cost, final CardType type, final CardRarity rarity, final CardTarget target) {
@@ -74,7 +76,7 @@ public AbstractSneckoCard(final String id, final int cost, final CardType type,
initializeDescription();
}
- public AbstractSneckoCard(final String id, final String img, final int cost, final CardType type, final CardRarity rarity, final CardTarget target, boolean IsClass) {
+ public AbstractSneckoCard(final String id, final String img, final int cost, final CardType type, final CardRarity rarity, final CardTarget target, boolean IsClass) {
super(id, "ERROR", getCorrectPlaceholderImage(img),
cost, "ERROR", type, TheSnecko.Enums.SNECKO_CYAN, rarity, target);
cardStrings = CardCrawlGame.languagePack.getCardStrings("sneckomod:Unknown0Cost");
@@ -117,69 +119,77 @@ public static String getCorrectPlaceholderImage(String id) {
return makeCardPath(id.replaceAll((getModID() + ":"), "")) + ".png";
}
- public static int getRandomNum(int min, int max) {
- int a, b, sum;
- if (min > max) {
- a = max;
- b = min;
- } else {
- a = min;
- b = max;
- }
- if (a != b) {
- sum = AbstractDungeon.cardRandomRng.random(a, b);
- } else {
- sum = b;
- }
- return sum;
- }
-
-
- public static int getRandomNum(int a, int b, AbstractSneckoCard source) {
- int min, max;
- if (a > b) {
- max = a;
- min = b;
- if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
- min++;
- } else if (b > a) {
- max = b;
- min = a;
- if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
- min++;
- } else {
- max = b;
- min = a;
- if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
- max++;
- }
-
- if (AbstractDungeon.player.hasPower(CheatPower.POWER_ID)) {
- AbstractPower q = AbstractDungeon.player.getPower(CheatPower.POWER_ID);
- q.flash();
- return max;
- }
- if (AbstractDungeon.player.hasRelic(D8.ID)) {
- //SlimeboundMod.logger.info("min/max check passed D8 relic check");
- if (source != null) {
- //SlimeboundMod.logger.info("min/max check passed card source check");
- D8 d8relic = (D8) AbstractDungeon.player.getRelic(D8.ID);
- if (d8relic.card.uuid == source.uuid)
- //SlimeboundMod.logger.info("min/max check passed card source = bottled card check");
- return max;
- }
- }
-
- if (min != max) {
- return AbstractDungeon.cardRandomRng.random(min, max);
- }
- return max;
- }
+// public static int getRandomNum(int min, int max) {
+// int a, b, sum;
+// if (min > max) {
+// a = max;
+// b = min;
+// } else {
+// a = min;
+// b = max;
+// }
+// if (a != b) {
+// sum = AbstractDungeon.cardRandomRng.random(a, b);
+// } else {
+// sum = b;
+// }
+// return sum;
+// }
+
+
+// public static int getRandomNum(int a, int b, AbstractSneckoCard source) {
+// int min, max;
+// if (a > b) {
+// max = a;
+// min = b;
+// if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
+// min++;
+// } else if (b > a) {
+// max = b;
+// min = a;
+// if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
+// min++;
+// } else {
+// max = b;
+// min = a;
+// if (AbstractDungeon.player.hasRelic(LoadedDie.ID))
+// max++;
+// }
+//
+// if (AbstractDungeon.player.hasPower(CheatPower.POWER_ID)) {
+// AbstractPower q = AbstractDungeon.player.getPower(CheatPower.POWER_ID);
+// q.flash();
+// return max;
+// }
+// if (AbstractDungeon.player.hasRelic(D8.ID)) {
+// //SlimeboundMod.logger.info("min/max check passed D8 relic check");
+// if (source != null) {
+// //SlimeboundMod.logger.info("min/max check passed card source check");
+// D8 d8relic = (D8) AbstractDungeon.player.getRelic(D8.ID);
+// if (d8relic.card.uuid == source.uuid)
+// //SlimeboundMod.logger.info("min/max check passed card source = bottled card check");
+// return max;
+// }
+// }
+//
+// if (min != max) {
+// return AbstractDungeon.cardRandomRng.random(min, max);
+// }
+// return max;
+// }
public static String makeID(String name) {
return getModID() + ":" + name;
}
+ public static String getCharList() {
+ StringBuilder s = new StringBuilder();
+ for (CardColor c : SneckoMod.validColors) {
+ s.append(" NL ").append(SneckoMod.getClassFromColor(c));
+ }
+ return s.toString();
+ }
+
protected void atb(AbstractGameAction action) {
addToBot(action);
}
@@ -259,6 +269,8 @@ public void displayUpgrades() {
}
}
+ public void onObtainCard() {
+ }
void upgradeSilly(int amount) {
baseSilly += amount;
@@ -266,14 +278,6 @@ void upgradeSilly(int amount) {
upgradedSilly = true;
}
- public static String getCharList() {
- StringBuilder s = new StringBuilder();
- for (CardColor c : SneckoMod.validColors) {
- s.append(" NL ").append(SneckoMod.getClassFromColor(c));
- }
- return s.toString();
- }
-
@Override
public List getCustomTooltips() {
List tips = new ArrayList<>();
@@ -281,8 +285,7 @@ public List getCustomTooltips() {
if (this.rawDescription.contains(name)) {
if (SneckoMod.validColors.size() > 3) {
tips.add(new TooltipInfo(unknownUpgrade[0], unknownUpgrade[5]));
- }
- else if (SneckoMod.validColors.isEmpty()) {
+ } else if (SneckoMod.validColors.isEmpty()) {
tips.add(new TooltipInfo(unknownUpgrade[0], unknownUpgrade[4]));
} else {
tips.add(new TooltipInfo(unknownUpgrade[0], unknownUpgrade[2] + unknownUpgrade[3] + getCharList()));
@@ -292,6 +295,87 @@ else if (SneckoMod.validColors.isEmpty()) {
return tips;
}
+
+ public boolean isOverflowActive(AbstractCard source) { // Adjusted to take a card parameter
+ boolean OVERFLOW = false; // Reset overflow state
+
+ // Only check for overflow if the card has the OVERFLOW tag
+ if (source.hasTag(SneckoMod.OVERFLOW)) {
+ // Check if there are more than 5 cards in hand
+ if (AbstractDungeon.player.hand.size() > 5 || (AbstractDungeon.player.hasPower(CheatPower.POWER_ID))) {
+ OVERFLOW = true;
+ }
+
+ // If the card purges on use, immediately return false
+ if ((source instanceof TyphoonFang && source.purgeOnUse)) {
+ return false; // If the card purges on use, it cannot cause overflow
+ }
+
+ // Check for the D8 relic
+ if (AbstractDungeon.player.hasRelic(D8.ID)) {
+ D8 d8Relic = (D8) AbstractDungeon.player.getRelic(D8.ID);
+ if (d8Relic != null && d8Relic.card != null) {
+ if (d8Relic.card.uuid.equals(source.uuid)) {
+ OVERFLOW = true; // Set overflow if the D8 card is the same as the source card
+ }
+ }
+ }
+ }
+ return OVERFLOW; // Return true or false
+ }
+
+
+ public void atBattleStart() {
+// overrides moment
+ }
+
+
+ public int findSuitinHand() {
+ Set uniqueColors = new HashSet<>(); // check without status, curse, collectible, colorless common
+
+ for (AbstractCard card : AbstractDungeon.player.hand.group) {
+ if (
+ (card.color == AbstractCard.CardColor.COLORLESS && card.rarity == AbstractCard.CardRarity.SPECIAL)) {
+ continue;
+ }
+
+ uniqueColors.add(card.color);
+ }
+
+ return uniqueColors.size(); // number colors in hand, hopefully
+ }
+
+ public int getUniqueSuitsPlayedThisTurn() {
+ Set uniqueColors = new HashSet<>(); // another one of these
+
+ for (AbstractCard card : AbstractDungeon.actionManager.cardsPlayedThisTurn) {
+ if ((
+ !(card.color == AbstractCard.CardColor.COLORLESS && card.rarity == AbstractCard.CardRarity.SPECIAL))) {
+
+ uniqueColors.add(card.color);
+ }
+ }
+
+ return uniqueColors.size(); // number colors played per turn hopefully
+ }
+
+ public void onMuddledSword() {
+ // help
+ }
+
+ @Override
+ public void triggerOnGlowCheck() { // glowing overflow cards that hopefully work with the D8
+ if (this.hasTag(SneckoMod.OVERFLOW)) {
+ if (isOverflowActive(this)) {
+ this.glowColor = AbstractDynamicCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ } else {
+ this.glowColor = AbstractDynamicCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
+ } else {
+ this.glowColor = AbstractDynamicCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
+ }
+
@Override
protected Texture getPortraitImage() {
if (Settings.PLAYTESTER_ART_MODE || UnlockTracker.betaCardPref.getBoolean(this.cardID, false)) {
diff --git a/src/main/java/sneckomod/cards/AceOfWands.java b/src/main/java/sneckomod/cards/AceOfWands.java
new file mode 100644
index 000000000..070279285
--- /dev/null
+++ b/src/main/java/sneckomod/cards/AceOfWands.java
@@ -0,0 +1,88 @@
+package sneckomod.cards;
+
+import automaton.cards.Undervolt;
+import collector.cards.Billow;
+import collector.cards.CursedWail;
+import collector.cards.DarkLordForm;
+import collector.cards.IllTakeThat;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.green.Choke;
+import com.megacrit.cardcrawl.cards.green.PiercingWail;
+import com.megacrit.cardcrawl.cards.purple.TalkToTheHand;
+import com.megacrit.cardcrawl.cards.red.Disarm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import hermit.cards.HighCaliber;
+import slimebound.cards.TongueLash;
+import sneckomod.SneckoMod;
+import sneckomod.powers.AceOfWandsPower;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class AceOfWands extends AbstractSneckoCard {
+
+ public final static String ID = makeID("AceOfWands");
+
+ //stupid intellij stuff POWER, SELF, RARE
+
+ private static int SOFTLOCK = 0;
+ //Queen of Pentacles
+
+ public AceOfWands() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 4;
+ isEthereal = true;
+ SneckoMod.loadJokeCardImage(this, "AceOfWands.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ SOFTLOCK = 0;
+ return false;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new AceOfWandsPower(this.magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicateDebuff(c -> (!c.hasTag(SneckoMod.BANNEDFORSNECKO)));
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ isEthereal = false;
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Amass.java b/src/main/java/sneckomod/cards/Amass.java
new file mode 100644
index 000000000..8c37cd258
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Amass.java
@@ -0,0 +1,79 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class Amass extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Amass");
+ private static final int COST = 3;
+ private static final int BASE_BLOCK = 12;
+ private static final int MAGIC = 1;
+ private static final int UPGRADE_MAGIC = 1;
+
+ public Amass() {
+ super(ID, COST, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ SneckoMod.loadJokeCardImage(this, "Amass.png");
+ baseMagicNumber = magicNumber = MAGIC;
+ baseBlock = BASE_BLOCK;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.applyPowers();
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
+ }
+
+ @Override
+ public void applyPowers() {
+ int realBaseBlock = this.baseBlock;
+
+ // Calculate total energy cost of cards in hand
+ int totalEnergyCost = 0;
+ for (AbstractCard card : AbstractDungeon.player.hand.group) {
+ totalEnergyCost += card.costForTurn;
+ }
+
+ // Increase baseBlock by (total energy cost * magicNumber)
+ this.baseBlock += totalEnergyCost * this.magicNumber;
+ super.applyPowers();
+
+ // Reset baseBlock to avoid permanent modification
+ this.baseBlock = realBaseBlock;
+ this.isBlockModified = this.block != this.baseBlock;
+ }
+
+ @Override
+ public void calculateCardDamage(AbstractMonster mo) {
+ int realBaseBlock = this.baseBlock;
+
+ // Calculate total energy cost of cards in hand
+ int totalEnergyCost = 0;
+ for (AbstractCard card : AbstractDungeon.player.hand.group) {
+ totalEnergyCost += card.costForTurn;
+ }
+
+ // Increase baseBlock by (total energy cost * magicNumber)
+ this.baseBlock += totalEnergyCost * this.magicNumber;
+ super.calculateCardDamage(mo);
+
+ // Reset baseBlock to avoid permanent modification
+ this.baseBlock = realBaseBlock;
+ this.isBlockModified = this.block != this.baseBlock;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(4);
+ // upgradeMagicNumber(UPGRADE_MAGIC);
+ // rawDescription = UPGRADE_DESCRIPTION;
+ // initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Behold.java b/src/main/java/sneckomod/cards/Behold.java
new file mode 100644
index 000000000..9e4bdd3fd
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Behold.java
@@ -0,0 +1,43 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class Behold extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Behold");
+
+ private static final int BASE_DAMAGE = 6;
+ private static final int EXTRA_DAMAGE = 2;
+
+ public Behold() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = BASE_DAMAGE;
+ baseMagicNumber = magicNumber = EXTRA_DAMAGE;
+ this.tags.add(SneckoMod.OVERFLOW);
+ SneckoMod.loadJokeCardImage(this, "Behold.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ if (isOverflowActive(this)) {
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Shiv(), magicNumber));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(3);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Belittle.java b/src/main/java/sneckomod/cards/Belittle.java
new file mode 100644
index 000000000..db3511e47
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Belittle.java
@@ -0,0 +1,100 @@
+package sneckomod.cards;
+
+import automaton.cards.Undervolt;
+import collector.cards.Billow;
+import collector.cards.CursedWail;
+import collector.cards.IllTakeThat;
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.green.Choke;
+import com.megacrit.cardcrawl.cards.green.PiercingWail;
+import com.megacrit.cardcrawl.cards.purple.TalkToTheHand;
+import com.megacrit.cardcrawl.cards.red.Disarm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import com.megacrit.cardcrawl.vfx.combat.IntimidateEffect;
+import hermit.cards.HighCaliber;
+import slimebound.cards.TongueLash;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+import sneckomod.util.ArchetypeHelper;
+
+import java.util.ArrayList;
+
+public class Belittle extends AbstractSneckoCard implements OnObtainCard {
+
+ public static final String ID = makeID("Belittle");
+
+ // Card constants
+ private static final int MAGIC = 9;
+ private static final int UPGRADE_MAGIC = 3;
+
+ public Belittle() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "Belittle.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new AbstractGameAction() {
+ @Override
+ public void update() {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("MONSTER_SNECKO_GLARE"));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new IntimidateEffect(p.hb.cX, p.hb.cY), 0.5F));
+ isDone = true;
+ for (AbstractPower q : m.powers) {
+ if (q.type == AbstractPower.PowerType.DEBUFF) {
+ atb(new LoseHPAction(m, p, magicNumber, AttackEffect.BLUNT_LIGHT));
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicateDebuff(c -> (c.rarity == AbstractCard.CardRarity.UNCOMMON));
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/BeyondArmor.java b/src/main/java/sneckomod/cards/BeyondArmor.java
new file mode 100644
index 000000000..d1844fc68
--- /dev/null
+++ b/src/main/java/sneckomod/cards/BeyondArmor.java
@@ -0,0 +1,102 @@
+package sneckomod.cards;
+
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.FetchAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import hermit.relics.Spyglass;
+import hermit.util.Wiz;
+import sneckomod.SneckoMod;
+import sneckomod.actions.DrawOffclassAction;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+import java.util.stream.Collectors;
+
+public class BeyondArmor extends AbstractSneckoCard {
+
+ public final static String ID = makeID("BeyondArmor");
+
+ private static final int BLOCK = 5;
+ private static final int UPG_BLOCK = 3;
+ private static final int MAGIC = 2;
+ private static int SOFTLOCK = 0;
+
+ public BeyondArmor() {
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ magicNumber = baseMagicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "BeyondArmor.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+
+ addToBot(new GainBlockAction(p, p, this.block));
+ this.addToBot(new DrawOffclassAction(magicNumber));
+// int count = 0;
+//
+// // fully loaded code
+// CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+// tmp.group.addAll(AbstractDungeon.player.drawPile.group.stream()
+// .filter(c -> c.color != this.color)
+// .limit(magicNumber)
+// .collect(Collectors.toList()));
+//
+// for (AbstractCard c : tmp.group) {
+// if (Wiz.hand().size() < BaseMod.MAX_HAND_SIZE+1) {
+// addToBot(new FetchAction(Wiz.p().drawPile, card -> card == c));
+// count++;
+// if (count >= magicNumber) break;
+// }
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.COMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy()); // Use makeCopy() to ensure a new instance
+ }
+ }
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/BlunderGuard.java b/src/main/java/sneckomod/cards/BlunderGuard.java
new file mode 100644
index 000000000..368408318
--- /dev/null
+++ b/src/main/java/sneckomod/cards/BlunderGuard.java
@@ -0,0 +1,41 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.powers.BigGunsBlockPower;
+import sneckomod.powers.BigGunsStrengthPower;
+
+public class BlunderGuard extends AbstractSneckoCard {
+
+ public final static String ID = makeID("BlunderGuard");
+
+ //stupid intellij stuff POWER, SELF, RARE
+ private static final int BASE_SILLY = 6;
+ private static final int UPG_SILLY = 2;
+ private static final int MAGIC = 2;
+ private static final int UPGRADE_MAGIC = 1;
+
+ public BlunderGuard() {
+ super(ID, 0, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ baseSilly = silly = 6;
+ SneckoMod.loadJokeCardImage(this, "BlunderGuard.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new BigGunsBlockPower(this.silly));
+ applyToSelf(new BigGunsStrengthPower(this.magicNumber));
+ // atb(new GainEnergyAction(1));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeSilly(UPG_SILLY);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Blunderbus.java b/src/main/java/sneckomod/cards/Blunderbus.java
new file mode 100644
index 000000000..08fba5ee1
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Blunderbus.java
@@ -0,0 +1,343 @@
+package sneckomod.cards;
+
+import basemod.ReflectionHacks;
+import collector.util.Wiz;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.math.MathUtils;
+import com.esotericsoftware.spine.Bone;
+import com.esotericsoftware.spine.Skeleton;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.ScreenShake;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import com.megacrit.cardcrawl.vfx.combat.VerticalImpactEffect;
+import downfall.util.TextureLoader;
+import hermit.patches.EnumPatch;
+import sneckomod.SneckoMod;
+
+public class Blunderbus extends AbstractSneckoCard {
+
+ public final static String ID = SneckoMod.makeID("Blunderbus");
+
+ private static final int DAMAGE = 8;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int BASE_HITS = 1;
+
+ public Blunderbus() {
+ super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "Blunderbus.png");
+
+ // Initialize multiDamage for all enemies
+ isMultiDamage = true;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ Wiz.actB(() -> {
+ int additionalHits = 0;
+ if (this.costForTurn >= 3)
+ additionalHits++;
+ for (AbstractCard card : AbstractDungeon.player.hand.group)
+ if (card.costForTurn >= 3 && card != this)
+ additionalHits++;
+
+ AbstractMonster mo = Wiz.getEnemies().get(0);
+ if (mo == null) return;
+ for (int i = 0; i < BASE_HITS + additionalHits; i++) {
+ if (Settings.PLAYTESTER_ART_MODE || UnlockTracker.betaCardPref.getBoolean(cardID, false)) {
+ Wiz.forAllMonstersLiving(mo2 -> Wiz.vfxTop(new CreatureFlyEffect(mo2)));
+ att(new DamageAllEnemiesAction(p, multiDamage, damageTypeForTurn, AbstractGameAction.AttackEffect.BLUNT_HEAVY, true));
+ Wiz.vfxTop(new VerticalImpactEffect(mo.hb.cX + mo.hb.width / 4.0F, mo.hb.cY - mo.hb.height / 4.0F), BlunderbusEffect.STALL_DURATION);
+ Wiz.vfxTop(new BlunderbusEffect(mo), BlunderbusEffect.DURATION - 0.3f);
+ att(new SFXAction(SneckoMod.makeID("BUS")));
+ } else {
+ for (int j = 0; j < 3; j++) {
+ Wiz.vfxTop(new FlashAtkImgEffect(mo.hb.cX + MathUtils.random(-100f, 100f) * Settings.scale, mo.hb.cY + MathUtils.random(-100f, 100f) * Settings.scale, AbstractGameAction.AttackEffect.BLUNT_LIGHT, true), 0.02f);
+ att(new SFXAction("BLUNT_FAST", 0.02f));
+ }
+ att(new DamageAllEnemiesAction(p, multiDamage, damageTypeForTurn, AbstractGameAction.AttackEffect.BLUNT_HEAVY, true));
+ Wiz.vfxTop(new BlunderbussEffect(mo), BlunderbussEffect.DURATION / 2f - 0.05f);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+
+ private static class BlunderbussEffect extends AbstractGameEffect {
+ private static float DURATION = 0.8f;
+ private static float JUMP_HEIGHT = 250f * Settings.scale;
+
+ private boolean fired;
+ private AbstractMonster target;
+
+ public BlunderbussEffect(AbstractMonster target) {
+ this.target = target;
+ duration = DURATION;
+ }
+
+ public void update() {
+ duration -= Gdx.graphics.getDeltaTime();
+ float progress = 1f - duration / DURATION;
+ if (duration <= 0f) {
+ AbstractDungeon.player.animY = 0f;
+ isDone = true;
+ return;
+ }
+ AbstractDungeon.player.animY = (float)Math.sin(progress * Math.PI) * JUMP_HEIGHT;
+ if (progress >= 0.5f && !fired) {
+ fired = true;
+ CardCrawlGame.sound.play(SneckoMod.makeID("SHOTGUN"));
+ float x = AbstractDungeon.player.hb.x + AbstractDungeon.player.hb.width;
+ float y = AbstractDungeon.player.animY + AbstractDungeon.player.drawY;
+ if (target != null)
+ for (int i = 0; i < 10; i++)
+ AbstractDungeon.effectsQueue.add(new ShotgunPelletEffect(x, y, target.hb.cY));
+ for (int i = 0; i < 15; i++)
+ AbstractDungeon.effectsQueue.add(new ShotgunSmokeEffect(x, y));
+ }
+ }
+
+ public void render(SpriteBatch sb) {}
+ public void dispose() {}
+
+
+ private static class ShotgunPelletEffect extends AbstractGameEffect {
+ private static TextureAtlas.AtlasRegion IMG = new TextureAtlas.AtlasRegion(TextureLoader.getTexture(SneckoMod.makeImagePath("vfx/shotgunpellet.png")), 0, 0, 64, 64);
+ private static final float DURATION = 0.2f;
+
+ private float x, y, startX, startY, endX, endY;
+
+ public ShotgunPelletEffect(float startX, float startY, float endY) {
+ duration = DURATION;
+ color = Color.WHITE.cpy();
+ this.startX = startX;
+ this.startY = startY;
+ x = startX;
+ y = startY;
+ this.endX = Settings.WIDTH + MathUtils.random(128f, 500f) * Settings.scale;
+ this.endY = endY + MathUtils.random(-400f, 400f) * Settings.scale;
+ }
+
+ public void update() {
+ duration -= Gdx.graphics.getDeltaTime();
+ float progress = 1f - duration / DURATION;
+ x = startX + (endX - startX) * progress;
+ y = startY + (endY - startY) * progress;
+ if (duration <= 0f)
+ isDone = true;
+ }
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(color);
+ sb.draw(IMG, x - 32f, y - 32f, 64f * scale, 64f * scale);
+ }
+
+ public void dispose() {}
+ }
+
+ private static class ShotgunSmokeEffect extends AbstractGameEffect {
+ private static final float DURATION = 0.45f;
+ private static final float OPACITY = 0.9f;
+ private static final float FINAL_SCALE = 0.3f;
+ private float x, y;
+ private float xVel = MathUtils.random(0f, 200f) * Settings.scale;
+ private float yVel = MathUtils.random(-100f, 100f) * Settings.scale;
+ private float rotationalVel = MathUtils.random(-50f, 50f);
+ private float startScale;
+ private boolean shook = false;
+ private TextureAtlas.AtlasRegion img;
+
+ public ShotgunSmokeEffect(float x, float y) {
+ this.x = x;
+ this.y = y;
+ duration = DURATION;
+ rotation = MathUtils.random(0f, 360f);
+ scale *= MathUtils.random(0.75f, 1.25f);
+ startScale = scale;
+ color = new Color(0.95f, 0.95f, 0.95f, OPACITY);
+
+ img = MathUtils.randomBoolean(0.5f) ? ImageMaster.EXHAUST_L : ImageMaster.EXHAUST_S;
+ }
+
+ public void update() {
+ if (!shook) {
+ shook = true;
+ CardCrawlGame.screenShake.shake(ScreenShake.ShakeIntensity.LOW, ScreenShake.ShakeDur.SHORT, false);
+ }
+ color.a = (duration / DURATION) * OPACITY;
+ scale = startScale * (FINAL_SCALE + (duration / DURATION) * (1f - FINAL_SCALE));
+ rotation += rotationalVel * Gdx.graphics.getDeltaTime();
+ x += xVel * Gdx.graphics.getDeltaTime();
+ y += yVel * Gdx.graphics.getDeltaTime();
+ duration -= Gdx.graphics.getDeltaTime();
+ if (duration < 0f)
+ isDone = true;
+ }
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(color);
+ sb.draw(img, x, y, img.packedWidth / 2.0F, img.packedHeight / 2.0F, img.packedWidth, img.packedHeight, scale, scale, rotation);
+ }
+
+ public void dispose() {}
+ }
+ }
+
+ private static class BlunderbusEffect extends AbstractGameEffect {
+ private static TextureAtlas.AtlasRegion IMG = new TextureAtlas.AtlasRegion(TextureLoader.getTexture(SneckoMod.makeImagePath("vfx/bus.png")), 0, 0, 1000, 400);
+ private static float DURATION = 0.6f,
+ STALL_DURATION = 0.2f;
+
+ private float x = -500 * scale, y = AbstractDungeon.floorY + 100f * scale, targetX, timeStalled;
+
+ public BlunderbusEffect(AbstractMonster target) {
+ targetX = target.hb.cX - 400f * scale;
+ duration = DURATION;
+ }
+
+ public void update() {
+ if (duration > 0f)
+ duration = Math.max(duration - Gdx.graphics.getDeltaTime(), 0f);
+ else if (duration == 0f) {
+ timeStalled += Gdx.graphics.getDeltaTime();
+ if (timeStalled > STALL_DURATION)
+ duration = -0.01f;
+ } else
+ duration -= Gdx.graphics.getDeltaTime();
+
+ x = targetX + (-400f * scale - targetX) * (duration / DURATION);
+ isDone = x > Settings.WIDTH + 600f * scale;
+ }
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(Color.WHITE);
+ sb.draw(IMG, x - 500f, y - 200f, 500, 200, 1000, 400, scale, scale, rotation);
+ }
+
+ public void dispose() {}
+ }
+
+ public static class CreatureFlyEffect extends AbstractGameEffect {
+ private static final float ACCELERATION = -2000f;
+ private static final float SMOKE_GAP = 0.05f;
+ public AbstractCreature target;
+ private Bone rootBone;
+ private float initialRotation;
+ private float y = 0f;
+ private float vel = MathUtils.random(1200f, 1800f);
+ private float wholeDuration = vel * 2f / -ACCELERATION;
+ private float timer = 0f;
+ private float smokeTimer = SMOKE_GAP;
+
+ public CreatureFlyEffect(AbstractCreature target) {
+ this.target = target;
+ if (target != null) {
+ Skeleton skeleton = ReflectionHacks.getPrivate(target, AbstractCreature.class, "skeleton");
+ if (skeleton != null) {
+ rootBone = skeleton.getRootBone();
+ }
+ }
+ }
+
+ public void update() {
+ if (target == null) {
+ isDone = true;
+ return;
+ }
+ for (AbstractGameEffect effect : AbstractDungeon.effectList) {
+ if (effect == this)
+ break;
+ else if (effect instanceof CreatureFlyEffect && ((CreatureFlyEffect)effect).target == target)
+ return;
+ }
+ if (timer == 0f && rootBone != null)
+ initialRotation = rootBone.getRotation();
+ while (smokeTimer >= SMOKE_GAP) {
+ smokeTimer -= SMOKE_GAP;
+ AbstractDungeon.effectsQueue.add(new RumbleSmokeEffect(target.hb.cX, target.animY + target.drawY));
+ }
+ y += vel * Gdx.graphics.getDeltaTime() * Settings.scale;
+ vel += ACCELERATION * Gdx.graphics.getDeltaTime();
+ timer += Gdx.graphics.getDeltaTime();
+ smokeTimer += Gdx.graphics.getDeltaTime();
+ if (y <= 0f) {
+ target.animY = 0;
+ if (rootBone != null)
+ rootBone.setRotation(initialRotation);
+ isDone = true;
+ } else {
+ target.animY = y;
+ if (rootBone != null)
+ rootBone.setRotation(initialRotation + Math.min(timer / wholeDuration, 1f) * 360f);
+ }
+ }
+
+ public void render(SpriteBatch sb) {}
+ public void dispose() {}
+
+ private static class RumbleSmokeEffect extends AbstractGameEffect {
+ private static float DURATION = 0.6f;
+ private static float OPACITY = 0.5f;
+ private static float FINAL_SCALE = 0.3f;
+ private float x, y;
+ private float rotationalVel = MathUtils.random(-50f, 50f);
+ private float startScale;
+ private boolean shook = false;
+ private TextureAtlas.AtlasRegion img;
+
+ public RumbleSmokeEffect(float x, float y) {
+ this.x = x;
+ this.y = y;
+ renderBehind = true;
+ duration = DURATION;
+ rotation = MathUtils.random(0f, 360f);
+ scale *= MathUtils.random(0.5f, 1.5f);
+ startScale = scale;
+ color = new Color(0.7f, 0.7f, 0.7f, OPACITY);
+ img = MathUtils.randomBoolean(0.5f) ? ImageMaster.EXHAUST_L : ImageMaster.EXHAUST_S;
+ }
+
+ public void update() {
+ if (!shook) {
+ shook = true;
+ CardCrawlGame.screenShake.shake(ScreenShake.ShakeIntensity.LOW, ScreenShake.ShakeDur.SHORT, false);
+ }
+ color.a = (duration / DURATION) * OPACITY;
+ scale = startScale * (FINAL_SCALE + (duration / DURATION) * (1f - FINAL_SCALE));
+ rotation += rotationalVel * Gdx.graphics.getDeltaTime();
+ duration -= Gdx.graphics.getDeltaTime();
+ if (duration < 0f)
+ isDone = true;
+ }
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(color);
+ sb.draw(img, x, y, img.packedWidth / 2.0F, img.packedHeight / 2.0F, img.packedWidth, img.packedHeight, scale, scale, rotation);
+ }
+
+ public void dispose() {}
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/CheapStock.java b/src/main/java/sneckomod/cards/CheapStock.java
index 87d430c4a..5c57e79ca 100644
--- a/src/main/java/sneckomod/cards/CheapStock.java
+++ b/src/main/java/sneckomod/cards/CheapStock.java
@@ -2,28 +2,29 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.powers.CheapStockPower;
import sneckomod.SneckoMod;
+import sneckomod.powers.CheapStockPower;
public class CheapStock extends AbstractSneckoCard {
public final static String ID = makeID("CheapStock");
- //stupid intellij stuff POWER, SELF, UNCOMMON
-
public CheapStock() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
SneckoMod.loadJokeCardImage(this, "CheapStock.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new CheapStockPower(1));
+ applyToSelf(new CheapStockPower(this.magicNumber));
}
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeBaseCost(1);
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Cheat.java b/src/main/java/sneckomod/cards/Cheat.java
index f267fcb05..157e5dfed 100644
--- a/src/main/java/sneckomod/cards/Cheat.java
+++ b/src/main/java/sneckomod/cards/Cheat.java
@@ -2,9 +2,12 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
import sneckomod.SneckoMod;
import sneckomod.powers.CheatPower;
+@Deprecated
+@CardIgnore
public class Cheat extends AbstractSneckoCard {
public final static String ID = makeID("Cheat");
@@ -12,7 +15,8 @@ public class Cheat extends AbstractSneckoCard {
//stupid intellij stuff SKILL, SELF, RARE
public Cheat() {
- super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
+ // super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
tags.add(SneckoMod.SNEKPROOF);
exhaust = true;
SneckoMod.loadJokeCardImage(this, "Cheat.png");
diff --git a/src/main/java/sneckomod/cards/CobraCoil.java b/src/main/java/sneckomod/cards/CobraCoil.java
new file mode 100644
index 000000000..3a58a791b
--- /dev/null
+++ b/src/main/java/sneckomod/cards/CobraCoil.java
@@ -0,0 +1,85 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ConstrictedPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class CobraCoil extends AbstractSneckoCard {
+
+ public static final String ID = makeID("CobraCoil");
+
+ private static final int DAMAGE = 20;
+ private static final int UPGRADE_DAMAGE = 4;
+ private static final int MAGIC = 10;
+ private static final int UPG_MAGIC = 2;
+ private static final int COST = 4;
+ private static int SOFTLOCK = 0;
+
+ public CobraCoil() {
+ super(ID, COST, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "CobraCoil.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HEAVY));
+ applyToEnemy(m, new ConstrictedPower(m, p, magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.type == AbstractCard.CardType.ATTACK && c.rarity == AbstractCard.CardRarity.RARE);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/ComboString.java b/src/main/java/sneckomod/cards/ComboString.java
new file mode 100644
index 000000000..61c6e8c92
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ComboString.java
@@ -0,0 +1,102 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class ComboString extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("ComboString");
+
+ // Card constants
+ private static final int DAMAGE = 7;
+ private static final int UPGRADE_DAMAGE = 2;
+ private static final int COST = 1;
+
+ private static int SOFTLOCK = 0;
+
+ public ComboString() {
+ super(ID, COST, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "ComboString.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ int offclassCardsPlayed = (int) AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .filter(card -> card.color != AbstractDungeon.player.getCardColor())
+ .count();
+
+ for (int i = 0; i < offclassCardsPlayed; i++) {
+ addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+
+ int offclassCardsPlayed = (int) AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .filter(card -> card.color != AbstractDungeon.player.getCardColor())
+ .count();
+
+ updateDescription(offclassCardsPlayed);
+ }
+
+ private void updateDescription(int offclassCardsPlayed) {
+ this.rawDescription = cardStrings.DESCRIPTION + EXTENDED_DESCRIPTION[0] + offclassCardsPlayed + EXTENDED_DESCRIPTION[1];
+ initializeDescription();
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.UNCOMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Cower.java b/src/main/java/sneckomod/cards/Cower.java
new file mode 100644
index 000000000..6550a3c05
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Cower.java
@@ -0,0 +1,54 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.cards.HoleUp;
+import slimebound.cards.SlimeCrush;
+import sneckomod.SneckoMod;
+
+public class Cower extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Cower");
+
+ private static final int BLOCK = 14;
+ private static final int UPG_BLOCK = 4;
+ private static final int MAGIC = 2;
+ private static final int UPG_MAGIC = 0;
+
+ public Cower() {
+ super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ SneckoMod.loadJokeCardImage(this, "Cower.png");
+ magicNumber = baseMagicNumber = MAGIC;
+ this.exhaust = true;
+ this.cardsToPreview = new HoleUp();
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
+ AbstractCard g = new HoleUp();
+ if (this.upgraded) {
+ g.upgrade();
+ }
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(g));
+
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ AbstractCard q = new HoleUp();
+ q.upgrade();
+ cardsToPreview = q;
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/CrystalBoomerang.java b/src/main/java/sneckomod/cards/CrystalBoomerang.java
new file mode 100644
index 000000000..0a676eb04
--- /dev/null
+++ b/src/main/java/sneckomod/cards/CrystalBoomerang.java
@@ -0,0 +1,64 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.SelectCardsCenteredAction;
+import sneckomod.SneckoMod;
+
+public class CrystalBoomerang extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("CrystalBoomerang");
+ private static final int COST = 1;
+ private static final int BLOCK = 5;
+ private static final int UPGRADE_BLOCK = 3;
+
+ public static final String[] TEXT;
+
+ public CrystalBoomerang() {
+ super(ID, COST, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ SneckoMod.loadJokeCardImage(this, "CrystalBoomerang.png");
+ baseBlock = BLOCK;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!p.discardPile.isEmpty()) {
+ this.addToBot(new SelectCardsCenteredAction(
+
+ p.discardPile.group,
+ 1,
+ TEXT[0],
+
+ (selectedCards) -> {
+
+ AbstractCard selecteda = selectedCards.get(0);
+ p.discardPile.removeCard(selecteda);
+ p.hand.addToHand(selecteda);
+ selecteda.lighten(false);
+ selecteda.unhover();
+ selecteda.applyPowers();
+
+ if (selecteda.color != p.getCardColor()) {
+ this.addToTop(new GainBlockAction(p, p, this.block));
+ }
+ }
+ ));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPGRADE_BLOCK);
+ }
+ }
+
+ static {
+ TEXT = CardCrawlGame.languagePack.getUIString("BetterToHandAction").TEXT;
+ }
+
+}
diff --git a/src/main/java/sneckomod/cards/DangerNoodle.java b/src/main/java/sneckomod/cards/DangerNoodle.java
index eff998e75..af452cb26 100644
--- a/src/main/java/sneckomod/cards/DangerNoodle.java
+++ b/src/main/java/sneckomod/cards/DangerNoodle.java
@@ -1,57 +1,90 @@
package sneckomod.cards;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
-import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import downfall.downfallMod;
import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
+import sneckomod.relics.UnknownEgg;
import java.util.ArrayList;
-public class DangerNoodle extends AbstractSneckoCard {
+public class DangerNoodle extends AbstractSneckoCard implements OnObtainCard {
- public final static String ID = makeID("DangerNoodle");
+ public static final String ID = makeID("DangerNoodle");
- //stupid intellij stuff ATTACK, ENEMY, RARE
-
- private static final int DAMAGE = 9;
- private static final int UPG_DAMAGE = 3;
+ private static final int DAMAGE = 14;
+ private static final int UPG_DAMAGE = 4;
+ private static int SOFTLOCK = 0;
public DangerNoodle() {
- super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
SneckoMod.loadJokeCardImage(this, "DangerNoodle.png");
}
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, makeInfo(), AbstractGameAction.AttackEffect.BLUNT_HEAVY);
- atb(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- ArrayList myList = new ArrayList<>();
- for (AbstractCard q : p.hand.group) {
- if (q.color != AbstractDungeon.player.getCardColor()) {
- myList.add(q);
+
+ addToBot(new SelectCardsInHandAction(1, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
}
}
- for (AbstractCard q : myList) {
- att(new ExhaustSpecificCardAction(q, p.hand));
- }
- for (AbstractCard q : myList) {
- att(new DamageAction(m, makeInfo(), AttackEffect.BLUNT_HEAVY));
- }
+ ));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.cost >= 3);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
}
- });
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
}
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeDamage(UPG_DAMAGE);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/Deception.java b/src/main/java/sneckomod/cards/Deception.java
new file mode 100644
index 000000000..bf6e0e5d3
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Deception.java
@@ -0,0 +1,43 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.red.Shockwave;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class Deception extends AbstractSneckoCard {
+
+ public final static String ID = makeID("Deception");
+
+ //stupid intellij stuff SKILL, SELF, COMMON
+
+ //this is definitely one of the cards of all time - blue
+
+ private static final int BLOCK = 7;
+ private static final int UPG_BLOCK = 4;
+
+ private static final int MAGIC = 1;
+ private static final int UPG_MAGIC = 1;
+
+ public Deception() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ SneckoMod.loadJokeCardImage(this, "Deception.png");
+ this.cardsToPreview = new Shockwave();
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ addToBot(new MakeTempCardInHandAction(new Shockwave(), 1));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/DefensiveFlair.java b/src/main/java/sneckomod/cards/DefensiveFlair.java
index cd2b7937b..86e18ebfc 100644
--- a/src/main/java/sneckomod/cards/DefensiveFlair.java
+++ b/src/main/java/sneckomod/cards/DefensiveFlair.java
@@ -4,7 +4,14 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
public class DefensiveFlair extends AbstractSneckoCard {
@@ -13,10 +20,12 @@ public class DefensiveFlair extends AbstractSneckoCard {
//stupid intellij stuff SKILL, SELF, UNCOMMON
private static final int BLOCK = 8;
- private static final int UPG_BLOCK = 2;
+ private static final int UPG_BLOCK = 1;
- private static final int MAGIC = 1;
+ private static final int MAGIC = 2;
private static final int UPG_MAGIC = 1;
+ private static int SOFTLOCK = 0;
+
public DefensiveFlair() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
@@ -25,6 +34,19 @@ public DefensiveFlair() {
SneckoMod.loadJokeCardImage(this, "DefensiveFlair.png");
}
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
@Override
protected void applyPowersToBlock() {
int realBaseBlock = this.baseBlock;
@@ -37,6 +59,26 @@ protected void applyPowersToBlock() {
this.isBlockModified = block != baseBlock;
}
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.UNCOMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
public void use(AbstractPlayer p, AbstractMonster m) {
blck();
}
diff --git a/src/main/java/sneckomod/cards/DiceBlock.java b/src/main/java/sneckomod/cards/DiceBlock.java
index b88a5ef99..0a1ad8d80 100644
--- a/src/main/java/sneckomod/cards/DiceBlock.java
+++ b/src/main/java/sneckomod/cards/DiceBlock.java
@@ -1,49 +1,36 @@
package sneckomod.cards;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
-import sneckomod.actions.MuddleAction;
-import sneckomod.cards.unknowns.AbstractUnknownCard;
public class DiceBlock extends AbstractSneckoCard {
- public final static String ID = makeID("DiceBlock");
+ public static final String ID = SneckoMod.makeID("DiceBlock");
+
+ private static final int BASE_BLOCK = 5;
+ private static final int UPG_BASE_BLOCK = 2;
public DiceBlock() {
- super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 10; //Min Block
- baseBlock = 15; //Max Block
- tags.add(SneckoMod.RNG);
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = BASE_BLOCK;
SneckoMod.loadJokeCardImage(this, "DiceBlock.png");
+ this.tags.add(SneckoMod.OVERFLOW);
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new GainBlockAction(p, getRandomNum(magicNumber, block, this)));
+ blck();
+ if (isOverflowActive(this)) {
+ blck();
+ }
}
@Override
- protected void applyPowersToBlock() {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_BLOCK = baseBlock;
- baseBlock = CURRENT_MAGIC_NUMBER;
- super.applyPowersToBlock();
- magicNumber = block;
- isMagicNumberModified = block != baseBlock;
-
- baseBlock = CURRENT_BLOCK;
- super.applyPowersToBlock();
- isBlockModified = baseBlock != block;
- }
-
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(4);
- upgradeBlock(4);
+ upgradeBlock(UPG_BASE_BLOCK);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/DiceBoulder.java b/src/main/java/sneckomod/cards/DiceBoulder.java
index eb69f0ebf..5a996d054 100644
--- a/src/main/java/sneckomod/cards/DiceBoulder.java
+++ b/src/main/java/sneckomod/cards/DiceBoulder.java
@@ -1,72 +1,40 @@
package sneckomod.cards;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.actions.common.ModifyBlockAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.actions.ReduceCostActionFixed;
import sneckomod.SneckoMod;
-import sneckomod.actions.NoApplyRandomDamageAction;
+
public class DiceBoulder extends AbstractSneckoCard {
public final static String ID = makeID("DiceBoulder");
+ private static final int BASE_BLOCK = 7;
+ private static final int UPG_BLOCK = 1;
+ private static final int MAGIC = 4;
+ private static final int UPGRADE_MAGIC = 1;
public DiceBoulder() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseMagicNumber = magicNumber = 1; //Min damage
- baseDamage = 27; //Max damage
- tags.add(SneckoMod.RNG);
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ baseBlock = BASE_BLOCK;
+ baseSilly = silly = 1;
SneckoMod.loadJokeCardImage(this, "DiceBoulder.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new NoApplyRandomDamageAction(m, magicNumber, damage, 1, AbstractGameAction.AttackEffect.BLUNT_HEAVY, this, DamageInfo.DamageType.NORMAL));
- }
-
- @Override
- public void applyPowers() {
- int maxDamage = baseDamage;
- baseDamage = baseMagicNumber;
- super.applyPowers();
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = isDamageModified;
-
- baseDamage = maxDamage;
- super.applyPowers();
- }
-
- @Override
- public void calculateCardDamage(final AbstractMonster mo) {
- int maxDamage = baseDamage;
- baseDamage = baseMagicNumber;
- super.calculateCardDamage(mo); // takes baseDamage and applies things like Strength or Pen Nib to set damage
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = isDamageModified;
-
- // repeat so damage holds the second condition's damage
- baseDamage = maxDamage;
- super.calculateCardDamage(mo);
+ blck();
+ this.addToBot(new ModifyBlockAction(this.uuid, this.magicNumber));
+ this.addToBot(new ReduceCostActionFixed(this.uuid, 1));
}
- @Override
- public boolean canUpgrade() {
- return true;
- }
-
- @Override
- public AbstractCard makeCopy() {
- return new DiceBoulder();
- }
public void upgrade() {
- this.upgradeDamage(3 + timesUpgraded);
- upgradeMagicNumber(6 + timesUpgraded);
- ++this.timesUpgraded;
- this.upgraded = true;
- this.name = cardStrings.NAME + "+" + this.timesUpgraded;
- this.initializeTitle();
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/DiceCrush.java b/src/main/java/sneckomod/cards/DiceCrush.java
index 833828590..da6bbdfc0 100644
--- a/src/main/java/sneckomod/cards/DiceCrush.java
+++ b/src/main/java/sneckomod/cards/DiceCrush.java
@@ -1,65 +1,41 @@
package sneckomod.cards;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
-import sneckomod.actions.NoApplyRandomDamageAction;
public class DiceCrush extends AbstractSneckoCard {
public final static String ID = makeID("DiceCrush");
+ //stupid intellij stuff ATTACK, ENEMY, BASIC
+
+ private static final int DAMAGE = 18;
+ private static final int MAGIC = 2;
+ private static final int UPG_DAMAGE = 4;
+
public DiceCrush() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseMagicNumber = magicNumber = 12; // Min Damage
- baseDamage = 18; //Max Damage
- tags.add(SneckoMod.RNG);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
SneckoMod.loadJokeCardImage(this, "DiceCrush.png");
+ this.tags.add(SneckoMod.OVERFLOW);
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new NoApplyRandomDamageAction(m, magicNumber, damage, 1, AbstractGameAction.AttackEffect.SMASH, this, DamageInfo.DamageType.NORMAL));
- }
-
- @Override
- public void applyPowers() {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_DMG = baseDamage;
- baseDamage = CURRENT_MAGIC_NUMBER;
- super.applyPowers(); // takes baseDamage and applies things like Strength or Pen Nib to set damage
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = magicNumber != baseMagicNumber;
-
- // repeat so damage holds the second condition's damage
- baseDamage = CURRENT_DMG;
- super.applyPowers();
- isDamageModified = baseDamage != damage;
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ if (isOverflowActive(this)) {
+ atb(new DrawCardAction(magicNumber));
+ }
}
- @Override
- public void calculateCardDamage(final AbstractMonster mo) {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_DMG = baseDamage;
- baseDamage = CURRENT_MAGIC_NUMBER;
- super.calculateCardDamage(mo); // takes baseDamage and applies things like Strength or Pen Nib to set damage
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = magicNumber != baseMagicNumber;
-
- // repeat so damage holds the second condition's damage
- baseDamage = CURRENT_DMG;
- super.calculateCardDamage(mo);
- isDamageModified = baseDamage != damage;
- }
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(4);
- upgradeDamage(4);
+ upgradeDamage(UPG_DAMAGE);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/DragonsHoard.java b/src/main/java/sneckomod/cards/DragonsHoard.java
new file mode 100644
index 000000000..0285d3b57
--- /dev/null
+++ b/src/main/java/sneckomod/cards/DragonsHoard.java
@@ -0,0 +1,39 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
+import sneckomod.SneckoMod;
+
+public class DragonsHoard extends AbstractSneckoCard {
+
+ public final static String ID = makeID("DragonsHoard");
+
+ private static final int MAGIC = 3;
+
+ public DragonsHoard() {
+ super(ID, 3, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ isEthereal = true;
+ SneckoMod.loadJokeCardImage(this, "DragonsHoard.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new VFXAction(p, new InflameEffect(p), 1.0F));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, this.magicNumber), this.magicNumber));
+ this.addToBot(new ApplyPowerAction(p, p, new DexterityPower(p, this.magicNumber), this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ isEthereal = false;
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/FlashInThePan.java b/src/main/java/sneckomod/cards/FlashInThePan.java
new file mode 100644
index 000000000..43dac128b
--- /dev/null
+++ b/src/main/java/sneckomod/cards/FlashInThePan.java
@@ -0,0 +1,48 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DiscardAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
+import sneckomod.SneckoMod;
+
+public class FlashInThePan extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("FlashInThePan");
+
+ private static final int BLOCK = 13;
+ private static final int COST = 2;
+ private static final int UPG_BLOCK = 3;
+
+ public FlashInThePan() {
+ super(ID, COST, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ SneckoMod.loadJokeCardImage(this, "FlashInThePan.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+
+ int handSize = p.hand.size();
+ if (handSize > 0) {
+ addToBot(new DiscardAction(p, p, handSize, false));
+ }
+
+ if (handSize > 1) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DrawCardNextTurnPower(p, handSize - 1), handSize - 1));
+ }
+ }
+
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/FourOfAKind.java b/src/main/java/sneckomod/cards/FourOfAKind.java
new file mode 100644
index 000000000..1881c4917
--- /dev/null
+++ b/src/main/java/sneckomod/cards/FourOfAKind.java
@@ -0,0 +1,2 @@
+//deprecated
+//was rare - 1 - if you played 4 unique colors this turn, gain 1 intangible. exhaust
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/GildedShield.java b/src/main/java/sneckomod/cards/GildedShield.java
new file mode 100644
index 000000000..113de80bf
--- /dev/null
+++ b/src/main/java/sneckomod/cards/GildedShield.java
@@ -0,0 +1,33 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
+
+public class GildedShield extends AbstractSneckoCard {
+
+ public static final String ID = makeID("GildedShield");
+
+ public GildedShield() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 8;
+ this.returnToHand = true;
+ SneckoMod.loadJokeCardImage(this, "GildedShield.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new GainBlockAction(p, p, this.block));
+ addToBot(new MuddleAction(this));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(3);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/GlitteringGambit.java b/src/main/java/sneckomod/cards/GlitteringGambit.java
index 5de27a90a..7d35e691f 100644
--- a/src/main/java/sneckomod/cards/GlitteringGambit.java
+++ b/src/main/java/sneckomod/cards/GlitteringGambit.java
@@ -1,38 +1,83 @@
package sneckomod.cards;
+import com.evacipated.cardcrawl.mod.stslib.fields.cards.AbstractCard.SoulboundField;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
import sneckomod.SneckoMod;
-import sneckomod.actions.ChangeGoldAction;
-public class GlitteringGambit extends AbstractSneckoCard {
+import java.util.ArrayList;
+public class GlitteringGambit extends AbstractSneckoCard {
public final static String ID = makeID("GlitteringGambit");
- //stupid intellij stuff SKILL, SELF, RARE
-
- private static final int MAGIC = -10;
- private static final int UPG_MAGIC = 10;
+ private static final int MAGIC = 150;
+ private static int SOFTLOCK = 0;
public GlitteringGambit() {
- super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, -2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
- tags.add(SneckoMod.SNEKPROOF);
- exhaust = true;
+ isEthereal = false;
tags.add(CardTags.HEALING);
- tags.add(SneckoMod.RNG);
+ tags.add(expansionContentMod.UNPLAYABLE);
SneckoMod.loadJokeCardImage(this, "GlitteringGambit.png");
+ SoulboundField.soulbound.set(this, true);
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard existingCard : cardsList) {
+ if (existingCard.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new ChangeGoldAction((int) Math.ceil((getRandomNum(magicNumber, 30, this)))));
}
+ @Override
+ public void onObtainCard() {
+ AbstractDungeon.player.gainGold(this.magicNumber);
+ for (int i = 0; i < 1; i++)
+ displayCardRewards(AbstractCard.CardRarity.RARE, "Special Bonus Card!");
+ }
+
+ private void displayCardRewards(AbstractCard.CardRarity rarity, String rewardText) {
+ ArrayList cardsToReward = new ArrayList<>();
+
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == rarity);
+ if (newCard != null && !cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ AbstractCard cardCopy = newCard.makeCopy();
+ cardCopy.upgrade();
+ cardsToReward.add(cardCopy);
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ }
+
+ @Override
+ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ return false;
+ }
+
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(UPG_MAGIC);
+ isEthereal = true;
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/ImmovableObject.java b/src/main/java/sneckomod/cards/ImmovableObject.java
new file mode 100644
index 000000000..9ee209f16
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ImmovableObject.java
@@ -0,0 +1,61 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
+import sneckomod.SneckoMod;
+
+@Deprecated
+@CardIgnore
+
+public class ImmovableObject extends AbstractSneckoCard {
+
+ public static final String ID = makeID("ImmovableObject");
+
+ private static final int COST = 2;
+ private static final int BLOCK = 10;
+ private static final int UPG_BLOCK = 3;
+ private static final int MAGIC = 12;
+ private static final int UPG_MAGIC = -2;
+
+ public ImmovableObject() {
+ super(ID, COST, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
+ baseBlock = BLOCK;
+ magicNumber = baseMagicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "ImmovableObject.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new GainBlockAction(p, p, block));
+
+ int totalCost = 0;
+ for (AbstractCard card : p.hand.group) {
+ totalCost += card.costForTurn;
+ }
+
+ if (totalCost > magicNumber) {
+ addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ p.addBlock(block);
+ isDone = true;
+ }
+ });
+ addToBot(new ExhaustSpecificCardAction(this, p.hand)); // Exhaust this card
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/ImprovisedAttack.java b/src/main/java/sneckomod/cards/ImprovisedAttack.java
index 221093579..533f9081b 100644
--- a/src/main/java/sneckomod/cards/ImprovisedAttack.java
+++ b/src/main/java/sneckomod/cards/ImprovisedAttack.java
@@ -4,16 +4,20 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
import sneckomod.SneckoMod;
import sneckomod.actions.MuddleAction;
+@Deprecated
+@CardIgnore
public class ImprovisedAttack extends AbstractSneckoCard {
public final static String ID = makeID("ImprovisedAttack");
public static AbstractCard storage;
public ImprovisedAttack() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
+ // super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 9;
SneckoMod.loadJokeCardImage(this, "ImprovisedAttack.png");
}
diff --git a/src/main/java/sneckomod/cards/ImprovisedGuard.java b/src/main/java/sneckomod/cards/ImprovisedGuard.java
index 0de5c230c..b84536d89 100644
--- a/src/main/java/sneckomod/cards/ImprovisedGuard.java
+++ b/src/main/java/sneckomod/cards/ImprovisedGuard.java
@@ -4,9 +4,12 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
import sneckomod.SneckoMod;
import sneckomod.actions.MuddleAction;
+@Deprecated
+@CardIgnore
public class ImprovisedGuard extends AbstractSneckoCard {
public final static String ID = makeID("ImprovisedGuard");
diff --git a/src/main/java/sneckomod/cards/InertBlade.java b/src/main/java/sneckomod/cards/InertBlade.java
new file mode 100644
index 000000000..05fead4f6
--- /dev/null
+++ b/src/main/java/sneckomod/cards/InertBlade.java
@@ -0,0 +1,64 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
+
+public class InertBlade extends AbstractSneckoCard {
+
+ public static final String ID = makeID("InertBlade");
+
+ private static final int DAMAGE = 10;
+ private static final int UPG_DAMAGE = 3;
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
+ private static final int ENERGY_GAIN = 1;
+ private static final int UPG_ENERGY = 1;
+ private static final int COST = 0;
+
+ private int energypayout;
+
+ public InertBlade() {
+ super(ID, COST, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ magicNumber = baseMagicNumber = MAGIC;
+ energypayout = ENERGY_GAIN;
+ SneckoMod.loadJokeCardImage(this, "InertBlade.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HEAVY));
+
+ // Check the card's costForTurn and apply conditional effects
+ if (this.costForTurn >= 1) {
+ addToBot(new DrawCardAction(p, magicNumber));
+ }
+ if (this.costForTurn >= 2) {
+ addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ }
+ if (this.costForTurn >= 3) {
+ addToBot(new GainEnergyAction(energypayout));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ upgradeMagicNumber(UPG_MAGIC);
+ energypayout += UPG_ENERGY;
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/IronFang.java b/src/main/java/sneckomod/cards/IronFang.java
index dab14f1dd..27da2c155 100644
--- a/src/main/java/sneckomod/cards/IronFang.java
+++ b/src/main/java/sneckomod/cards/IronFang.java
@@ -2,80 +2,49 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
import sneckomod.SneckoMod;
-import sneckomod.actions.NoApplyRandomDamageAction;
public class IronFang extends AbstractSneckoCard {
- public final static String ID = makeID("IronFang");
+ public final static String ID = SneckoMod.makeID("IronFang");
- public IronFang() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseDamage = 9;
- baseBlock = 9;
- baseMagicNumber = magicNumber = 3;
- baseSilly = silly = 3;
- tags.add(SneckoMod.RNG);
- SneckoMod.loadJokeCardImage(this, "IronFang.png");
- }
-
- @Override
- protected void applyPowersToBlock() {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_BLOCK = baseBlock;
- baseBlock = CURRENT_MAGIC_NUMBER;
- super.applyPowersToBlock();
- magicNumber = block;
- isMagicNumberModified = block != baseBlock;
- baseBlock = CURRENT_BLOCK;
- super.applyPowersToBlock();
- }
-
- @Override
- public void applyPowers() {
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.applyPowers();
- silly = damage;
- isSillyModified = damage != baseDamage;
+ private static final int DAMAGE = 6;
+ private static final int UPGRADE_DAMAGE = 3;
- baseDamage = CURRENT_DAMAGE;
- super.applyPowers();
- }
-
- @Override
- public void calculateCardDamage(final AbstractMonster m) {
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.calculateCardDamage(m);
- silly = damage;
- isSillyModified = damage != baseDamage;
+ private static final int MAGIC = 1; // Weak application
+ private static final int COST = 1;
- baseDamage = CURRENT_DAMAGE;
- super.calculateCardDamage(m);
+ public IronFang() {
+ super(ID, COST, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
+ baseDamage = DAMAGE;
+ this.isMultiDamage = true;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "IronFang.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new GainBlockAction(p, getRandomNum(magicNumber, block, this)));
- atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));// 117
- atb(new NoApplyRandomDamageAction(m, silly, damage, 1, AbstractGameAction.AttackEffect.NONE, this, DamageInfo.DamageType.NORMAL));
-
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
+ if (!monster.isDead && !monster.isDying) {
+ addToBot(new ApplyPowerAction(monster, p, new WeakPower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ addToBot(new VFXAction(new BiteEffect(monster.hb.cX, monster.hb.cY), 0.1F));
+ }
+ }
}
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeSilly(2);
- upgradeDamage(2);
- upgradeMagicNumber(2);
- upgradeBlock(2);
+ upgradeDamage(UPGRADE_DAMAGE);
}
}
}
diff --git a/src/main/java/sneckomod/cards/Jackpot.java b/src/main/java/sneckomod/cards/Jackpot.java
new file mode 100644
index 000000000..5853f6e2d
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Jackpot.java
@@ -0,0 +1,36 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class Jackpot extends AbstractSneckoCard {
+
+ public final static String ID = makeID("Jackpot");
+
+ //stupid intellij stuff SKILL, SELF, UNCOMMON
+ private static final int MAGIC = 2;
+ private static final int UPGRADE_MAGIC = 1;
+
+ public Jackpot() {
+ super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ exhaust = true;
+ this.selfRetain = true;
+ SneckoMod.loadJokeCardImage(this, "Jackpot.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new GainEnergyAction(magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Lacerate.java b/src/main/java/sneckomod/cards/Lacerate.java
new file mode 100644
index 000000000..1c178dd36
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Lacerate.java
@@ -0,0 +1,69 @@
+package sneckomod.cards;
+
+import champ.cards.Strike;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.green.CripplingPoison;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import sneckomod.SneckoMod;
+import sneckomod.powers.LacerateDebuff;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class Lacerate extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Lacerate");
+
+ private static final int DAMAGE = 8;
+ private static final int COST = 1;
+ private static final int UPGRADE_MAGIC = 1;
+ private static final int MAGIC = 3;
+
+ public Lacerate() {
+ super(ID, COST, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ this.cardsToPreview = new CripplingPoison();
+ SneckoMod.loadJokeCardImage(this, "Lacerate.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new DamageAction(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_VERTICAL));
+ addToBot(new ApplyPowerAction(m, p, new LacerateDebuff(m, magicNumber), magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ AbstractCard r = new CripplingPoison();
+
+ for (AbstractRelic relic : AbstractDungeon.player.relics) {
+ relic.onPreviewObtainCard(r);
+ }
+
+ cardsToReward.add(r.makeCopy());
+ SneckoMod.addGift(cardsToReward);
+ }
+
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(3);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/LaserEyes.java b/src/main/java/sneckomod/cards/LaserEyes.java
new file mode 100644
index 000000000..fd6164e1d
--- /dev/null
+++ b/src/main/java/sneckomod/cards/LaserEyes.java
@@ -0,0 +1,45 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
+import sneckomod.SneckoMod;
+
+public class LaserEyes extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("SnekBeam");
+
+ private static final int COST = 3;
+ private static final int DAMAGE = 15;
+ private static final int UPGRADE_DAMAGE = 5;
+
+ public LaserEyes() {
+ super(ID, COST, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "SnekBeam.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new SFXAction("ATTACK_HEAVY"));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new MindblastEffect(p.dialogX, p.dialogY, p.flipHorizontal), 0.1F));
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
+
+ addToBot(new GainEnergyAction(1));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE); // Increase base damage by 5 (to 20)
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/LastStrike.java b/src/main/java/sneckomod/cards/LastStrike.java
new file mode 100644
index 000000000..ce39a1a38
--- /dev/null
+++ b/src/main/java/sneckomod/cards/LastStrike.java
@@ -0,0 +1,160 @@
+package sneckomod.cards;
+
+import automaton.cards.goodstatus.IntoTheVoid;
+import collector.cards.BramblesparKindling;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.watcher.ExpungeVFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import hermit.cards.HighCaliber;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+
+public class LastStrike extends AbstractSneckoCard {
+ public static final String ID = SneckoMod.makeID("LastStrike");
+
+ // Constants
+ private static final int BASE_DAMAGE = 9;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static int SOFTLOCK = 0;
+
+ // Strike tracking
+ private HashSet uniqueStrikeIDs;
+ private boolean hasPlayedOnce;
+
+ public LastStrike() {
+ super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ baseDamage = BASE_DAMAGE;
+ tags.add(CardTags.STRIKE);
+ SneckoMod.loadJokeCardImage(this, "LastStrike.png");
+
+ resetMultiplierTracking();
+ }
+
+ private void resetMultiplierTracking() {
+ uniqueStrikeIDs = new HashSet<>();
+ hasPlayedOnce = false;
+ }
+
+ @Override
+ public void atBattleStart() {
+ resetMultiplierTracking();
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ // Calculate multiplier for this use
+ int uniqueStrikesCount = calculateDamageMultiplier(!hasPlayedOnce);
+
+ // Apply damage based on multiplier
+ for (int i = 0; i < uniqueStrikesCount + 1; ++i) {
+ this.addToBot(new ExpungeVFXAction(m));
+ this.addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
+ }
+
+ // Track LastStrike after first play to exclude itself in future calculations
+ if (!hasPlayedOnce) {
+ uniqueStrikeIDs.add(this.cardID);
+ hasPlayedOnce = true;
+ }
+
+ updateDescription(uniqueStrikesCount);
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+
+ // Calculate the multiplier without including this card if not yet played
+ int uniqueStrikesCount = calculateDamageMultiplier(!hasPlayedOnce);
+
+ // Update the description to show the multiplier dynamically
+ updateDescription(uniqueStrikesCount);
+ }
+
+ private int calculateDamageMultiplier(boolean excludeThisCard) {
+ uniqueStrikeIDs.clear();
+
+ // Track unique Strike cards played this combat
+ for (AbstractCard card : AbstractDungeon.actionManager.cardsPlayedThisCombat) {
+ if (card.hasTag(CardTags.STRIKE)
+ && (!excludeThisCard || card != this)) {
+ uniqueStrikeIDs.add(card.cardID);
+ }
+ }
+ return uniqueStrikeIDs.size();
+ }
+
+ private void updateDescription(int uniqueStrikesCount) {
+ this.rawDescription = cardStrings.DESCRIPTION + EXTENDED_DESCRIPTION[0] + uniqueStrikesCount + EXTENDED_DESCRIPTION[1];
+ initializeDescription();
+ }
+
+ @Override
+ public void onMoveToDiscard() {
+ if(upgraded){
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ }
+ else {
+ this.rawDescription = cardStrings.DESCRIPTION;
+ }
+ this.initializeDescription();
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(
+ c -> c.rarity != CardRarity.BASIC && (c.hasTag(CardTags.STRIKE) || c.cardID.equals(HighCaliber.ID) || c.cardID.equals(BramblesparKindling.ID))
+ );
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ private boolean cardListDuplicate(ArrayList cardsToReward, AbstractCard newCard) {
+ for (AbstractCard card : cardsToReward) {
+ if (card.cardID.equals(newCard.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/LatchOn.java b/src/main/java/sneckomod/cards/LatchOn.java
new file mode 100644
index 000000000..b1e3bdbb7
--- /dev/null
+++ b/src/main/java/sneckomod/cards/LatchOn.java
@@ -0,0 +1,50 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+import sneckomod.SneckoMod;
+
+public class LatchOn extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("LatchOn");
+
+ // Card constants
+ private static final int DAMAGE = 7;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int COST = 1;
+
+ public LatchOn() {
+ super(ID, COST, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL);
+ baseDamage = DAMAGE;
+ this.isMultiDamage = true;
+ SneckoMod.loadJokeCardImage(this, "LatchOn.png");
+ this.cardsToPreview = new ViperEssence();
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new SFXAction("ATTACK_HEAVY"));
+ this.addToBot(new VFXAction(p, new CleaveEffect(), 0.1F));
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
+ AbstractCard viperEssence = new ViperEssence();
+ addToBot(new MakeTempCardInHandAction(viperEssence, 1));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/LilGuardian.java b/src/main/java/sneckomod/cards/LilGuardian.java
new file mode 100644
index 000000000..24d91849c
--- /dev/null
+++ b/src/main/java/sneckomod/cards/LilGuardian.java
@@ -0,0 +1,44 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.DiscardSpecificCardAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class LilGuardian extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("LilGuardian");
+ private static final int COST = 1;
+ private static final int BLOCK = 7;
+ private static final int UPGRADE_BLOCK = 2;
+
+ public LilGuardian() {
+ super(ID, COST, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ SneckoMod.loadJokeCardImage(this, "LilGuardian.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new GainBlockAction(p, p, block));
+ }
+
+ @Override
+ public void triggerOnCardPlayed(AbstractCard card) {
+ if (card.costForTurn >= 2 && AbstractDungeon.player.hand.contains(this)) {
+ addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, block));
+ addToBot(new DiscardSpecificCardAction(this, AbstractDungeon.player.hand));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPGRADE_BLOCK);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/LuckyBreak.java b/src/main/java/sneckomod/cards/LuckyBreak.java
new file mode 100644
index 000000000..93ebe3602
--- /dev/null
+++ b/src/main/java/sneckomod/cards/LuckyBreak.java
@@ -0,0 +1,55 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+
+public class LuckyBreak extends AbstractSneckoCard {
+
+ public final static String ID = makeID("LuckyBreak");
+
+ //stupid intellij stuff SKILL, SELF, COMMON
+
+ private static final int BLOCK = 8;
+ private static final int UPG_BLOCK = 3;
+
+ private static final int MAGIC = 1;
+ // private static final int UPG_MAGIC = 1;
+ private static final int BASE_DRAW = 0;
+
+ public LuckyBreak() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "LuckyBreak.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ int additionalHits = 0;
+
+ if (this.costForTurn >= 2) {
+ additionalHits++;
+ }
+
+ for (AbstractCard card : AbstractDungeon.player.hand.group) {
+ if (card.costForTurn >= 2 && card != this) {
+ additionalHits++;
+ }
+ }
+ int totalHits = BASE_DRAW + additionalHits;
+ addToBot(new DrawCardAction(p, totalHits));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPG_BLOCK);
+ // upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/MakeshiftBlade.java b/src/main/java/sneckomod/cards/MakeshiftBlade.java
new file mode 100644
index 000000000..b2aa1910f
--- /dev/null
+++ b/src/main/java/sneckomod/cards/MakeshiftBlade.java
@@ -0,0 +1,108 @@
+package sneckomod.cards;
+
+import automaton.cards.Undervolt;
+import collector.cards.Billow;
+import collector.cards.CursedWail;
+import collector.cards.IllTakeThat;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.green.Choke;
+import com.megacrit.cardcrawl.cards.green.PiercingWail;
+import com.megacrit.cardcrawl.cards.purple.TalkToTheHand;
+import com.megacrit.cardcrawl.cards.red.Disarm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import slimebound.cards.TongueLash;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class MakeshiftBlade extends AbstractSneckoCard {
+ // todo: try to make this one glow later
+ public static final String ID = SneckoMod.makeID("MakeshiftBlade");
+
+ // Card constants
+ private static final int DAMAGE = 9;
+ private static final int COST = 1;
+ private static final int MAGIC = 3; // Initial debuff requirement
+ private static final int UPGRADE_MAGIC = -1; // Reduces debuff requirement by 1
+ private static int SOFTLOCK = 0;
+
+
+ public MakeshiftBlade() {
+ super(ID, COST, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ baseSilly = silly = 3;
+ SneckoMod.loadJokeCardImage(this, "MakeshiftBlade.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ System.out.println("DEBUG: Checking for duplicate: " + card.name);
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ System.out.println("DEBUG: Duplicate detected: " + card.name);
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ System.out.println("DEBUG: No Duplicate detected: " + card.name);
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.SLASH_HEAVY));
+ if (m != null && m.powers.stream().filter(power -> power.type == AbstractPower.PowerType.DEBUFF).count() >= magicNumber) {
+ addToBot(new DrawCardAction(p, this.silly));
+ }
+ }
+
+ @Override
+ public void onObtainCard() {
+ System.out.println("DEBUG: Took Makeshift Blade.");
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicateDebuff(c -> (c.rarity != AbstractCard.CardRarity.RARE));
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ System.out.println("DEBUG: Card generated: " + newCard.name);
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ System.out.println("DEBUG: Card added: " + newCard.name);
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeDamage(4);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/MarkedCard.java b/src/main/java/sneckomod/cards/MarkedCard.java
new file mode 100644
index 000000000..777018cd8
--- /dev/null
+++ b/src/main/java/sneckomod/cards/MarkedCard.java
@@ -0,0 +1,51 @@
+package sneckomod.cards;
+
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
+import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleMarkedAction;
+
+public class MarkedCard extends AbstractSneckoCard {
+
+ public final static String ID = makeID("MarkedCard");
+
+ //stupid intellij stuff SKILL, SELF, COMMON
+
+ private static final int MAGIC = 1;
+
+ public MarkedCard() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ SneckoMod.loadJokeCardImage(this, "MarkedCard.png");
+ baseMagicNumber = magicNumber = MAGIC;
+ this.selfRetain = true;
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new SelectCardsInHandAction(magicNumber, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleMarkedAction(card));
+ }
+ }
+ ));
+ }
+
+ // public void upgradeAction(AbstractPlayer p, AbstractMonster m){
+ // AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
+ // }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/MasterEye.java b/src/main/java/sneckomod/cards/MasterEye.java
index a66a0630b..5200e1489 100644
--- a/src/main/java/sneckomod/cards/MasterEye.java
+++ b/src/main/java/sneckomod/cards/MasterEye.java
@@ -2,17 +2,21 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import com.megacrit.cardcrawl.powers.ConfusionPower;
import com.megacrit.cardcrawl.powers.DrawPower;
+import downfall.util.CardIgnore;
+import sneckomod.SneckoMod;
+@Deprecated
+@CardIgnore
public class MasterEye extends AbstractSneckoCard {
public final static String ID = makeID("MasterEye");
public MasterEye() {
- super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 3, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
rawDescription = UPGRADE_DESCRIPTION;
+ tags.add(SneckoMod.SNEKPROOF);
initializeDescription();
SneckoMod.loadJokeCardImage(this, "MasterEye.png");
}
@@ -25,7 +29,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeBaseCost(1);
+ upgradeBaseCost(2);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Medusa.java b/src/main/java/sneckomod/cards/Medusa.java
new file mode 100644
index 000000000..56105dbd9
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Medusa.java
@@ -0,0 +1,122 @@
+package sneckomod.cards;
+
+import automaton.cards.Undervolt;
+import collector.cards.CursedWail;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.green.Choke;
+import com.megacrit.cardcrawl.cards.purple.TalkToTheHand;
+import com.megacrit.cardcrawl.cards.red.Disarm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import hermit.cards.HighCaliber;
+import sneckomod.SneckoMod;
+import sneckomod.powers.LacerateDebuff;
+import sneckomod.powers.ToxicPersonalityPower;
+import sneckomod.powers.VenomDebuff;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class Medusa extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Medusa");
+
+ private static final int DAMAGE = 6;
+ private static final int UPG_DAMAGE = 2;
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
+ private static int SOFTLOCK = 0;
+
+ public Medusa() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "Medusa.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));
+
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
+ addToBot(new ApplyPowerAction(m, p, new VenomDebuff(m, magicNumber), magicNumber));
+
+ // Check if the target has LacerateDebuff and apply additional Venom equal to its amount
+ if (m.hasPower(LacerateDebuff.POWER_ID) && !m.hasPower("Artifact")) {
+ AbstractPower lacerate = m.getPower(LacerateDebuff.POWER_ID);
+ if (lacerate != null) {
+ int additionalVenomAmount = lacerate.amount;
+ this.addToBot(new ApplyPowerAction(m, p, new VenomDebuff(m, additionalVenomAmount), additionalVenomAmount));
+ }
+ }
+
+ // Check if the player has Toxic Personality power and the target does not have Artifact
+ if (AbstractDungeon.player.hasPower(ToxicPersonalityPower.POWER_ID) && !m.hasPower("Artifact")) {
+ ToxicPersonalityPower toxicPersonalityPower =
+ (ToxicPersonalityPower) AbstractDungeon.player.getPower(ToxicPersonalityPower.POWER_ID);
+
+ if (toxicPersonalityPower != null) {
+ toxicPersonalityPower.onActivateCall(m);
+
+ // Re-check LacerateDebuff after Toxic Personality activation and apply Venom if needed
+ if (m.hasPower(LacerateDebuff.POWER_ID) && !m.hasPower("Artifact")) {
+ AbstractPower lacerate = m.getPower(LacerateDebuff.POWER_ID);
+ int additionalVenomAmount = lacerate.amount;
+ this.addToBot(new ApplyPowerAction(m, p, new VenomDebuff(m, additionalVenomAmount), additionalVenomAmount));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicateDebuff(c -> (c.rarity == AbstractCard.CardRarity.COMMON));
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Memorize.java b/src/main/java/sneckomod/cards/Memorize.java
deleted file mode 100644
index c64d67672..000000000
--- a/src/main/java/sneckomod/cards/Memorize.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package sneckomod.cards;
-
-import com.evacipated.cardcrawl.mod.stslib.fields.cards.AbstractCard.FleetingField;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-import sneckomod.actions.MemorizeAction;
-import sneckomod.patches.UnknownExtraUiPatch;
-
-public class Memorize extends AbstractSneckoCard {
-
- public final static String ID = makeID("Memorize");
-
- //stupid intellij stuff SKILL, SELF, COMMON
-
- public Memorize() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
- tags.add(CardTags.HEALING);
- FleetingField.fleeting.set(this, true);
- SneckoMod.loadJokeCardImage(this, "Memorize.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new MemorizeAction());
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- selfRetain = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
- }
- }
-
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
-
- for (AbstractCard c : AbstractDungeon.player.hand.group) {
- c.update();
- if (UnknownExtraUiPatch.parentCard.get(c) != null) {
- return super.canUse(p, m);
- }
- }
-
-
- return false;
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Mesmerize.java b/src/main/java/sneckomod/cards/Mesmerize.java
new file mode 100644
index 000000000..6a8299d04
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Mesmerize.java
@@ -0,0 +1,52 @@
+package sneckomod.cards;
+
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.IntimidateEffect;
+import downfall.downfallMod;
+import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
+
+import static collector.util.Wiz.forAllMonstersLiving;
+
+public class Mesmerize extends AbstractSneckoCard {
+
+ public static final String ID = makeID("Mesmerize");
+
+ public Mesmerize() {
+ super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseMagicNumber = magicNumber = 2;
+ this.exhaust = true;
+ SneckoMod.loadJokeCardImage(this, "Mesmerize.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("MONSTER_SNECKO_GLARE"));
+ this.addToBot(new VFXAction(p, new IntimidateEffect(p.hb.cX, p.hb.cY), 1.0F));
+ forAllMonstersLiving(q -> applyToEnemy(q, new StrengthPower(q, -magicNumber)));
+ addToBot(new SelectCardsInHandAction(1, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
+ }
+ }
+ ));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/MintCondition.java b/src/main/java/sneckomod/cards/MintCondition.java
new file mode 100644
index 000000000..8aa2c07c4
--- /dev/null
+++ b/src/main/java/sneckomod/cards/MintCondition.java
@@ -0,0 +1,41 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
+import sneckomod.SneckoMod;
+
+public class MintCondition extends AbstractSneckoCard {
+
+ public final static String ID = makeID("MintCondition");
+
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
+
+ //this is a show-off clone
+
+ public MintCondition() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ this.tags.add(SneckoMod.OVERFLOW);
+ SneckoMod.loadJokeCardImage(this, "MintCondition.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (isOverflowActive(this)) {
+ this.addToBot(new VFXAction(p, new InflameEffect(p), 1.0F));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, this.magicNumber), this.magicNumber));
+ }
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPG_MAGIC);
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/MixItUp.java b/src/main/java/sneckomod/cards/MixItUp.java
index 9143bed38..c27b0a964 100644
--- a/src/main/java/sneckomod/cards/MixItUp.java
+++ b/src/main/java/sneckomod/cards/MixItUp.java
@@ -1,49 +1 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ObtainPotionAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.helpers.PotionHelper;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-import com.megacrit.cardcrawl.potions.AbstractPotion;
-import com.megacrit.cardcrawl.potions.PotionSlot;
-
-public class MixItUp extends AbstractSneckoCard {
- public final static String ID = makeID("MixItUp");
-
- public MixItUp() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = 5;
- this.magicNumber = this.baseMagicNumber = 2;
- exhaust = true;
- tags.add(CardTags.HEALING);
- SneckoMod.loadJokeCardImage(this, "MixItUp.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- for (AbstractPotion q : p.potions) {
- if (!(q instanceof PotionSlot)) {
- p.removePotion(q);
- att(new ObtainPotionAction(PotionHelper.getRandomPotion()));
- }
- }
- }
- });
- for (int i = 0; i < this.magicNumber; i++) {
- dmg(m, makeInfo(), AbstractGameAction.AttackEffect.BLUNT_LIGHT);
- }
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeMagicNumber(1);
- }
- }
-}
\ No newline at end of file
+//deprecated
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/MorePower.java b/src/main/java/sneckomod/cards/MorePower.java
deleted file mode 100644
index 510f77a3d..000000000
--- a/src/main/java/sneckomod/cards/MorePower.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-import sneckomod.powers.UnknownUpgradedPostCombatPower;
-
-public class MorePower extends AbstractSneckoCard {
-
- public final static String ID = makeID("MorePower");
-
- //stupid intellij stuff POWER, SELF, UNCOMMON
-
- public MorePower() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
- tags.add(CardTags.HEALING);
- SneckoMod.loadJokeCardImage(this, "MorePower.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new UnknownUpgradedPostCombatPower(1));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBaseCost(0);
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Mudshield.java b/src/main/java/sneckomod/cards/Mudshield.java
index dc942b99a..485219872 100644
--- a/src/main/java/sneckomod/cards/Mudshield.java
+++ b/src/main/java/sneckomod/cards/Mudshield.java
@@ -12,8 +12,9 @@ public class Mudshield extends AbstractSneckoCard {
//stupid intellij stuff POWER, SELF, RARE
public Mudshield() {
- super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+
SneckoMod.loadJokeCardImage(this, "Mudshield.png");
}
@@ -24,9 +25,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
upgradeName();
- isInnate = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Nope.java b/src/main/java/sneckomod/cards/Nope.java
index 735afffbc..95d06cbb0 100644
--- a/src/main/java/sneckomod/cards/Nope.java
+++ b/src/main/java/sneckomod/cards/Nope.java
@@ -2,7 +2,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.monsters.city.Snecko;
import sneckomod.SneckoMod;
import sneckomod.actions.NopeAction;
@@ -12,19 +11,24 @@ public class Nope extends AbstractSneckoCard {
//stupid intellij stuff SKILL, SELF, COMMON
+ private static final int BLOCK = 7;
+ private static final int UPG_BLOCK = 3;
+
public Nope() {
- super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = BLOCK;
SneckoMod.loadJokeCardImage(this, "Nope.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new NopeAction(upgraded));
+ blck();
+ atb(new NopeAction());
}
public void upgrade() {
if (!upgraded) {
upgradeName();
+ upgradeBlock(UPG_BLOCK);
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/sneckomod/cards/OtherworldlySlash.java b/src/main/java/sneckomod/cards/OtherworldlySlash.java
new file mode 100644
index 000000000..3c26d6893
--- /dev/null
+++ b/src/main/java/sneckomod/cards/OtherworldlySlash.java
@@ -0,0 +1,96 @@
+package sneckomod.cards;
+
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import hermit.cards.AbstractDynamicCard;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class OtherworldlySlash extends AbstractSneckoCard implements OnObtainCard {
+
+ public final static String ID = makeID("OtherworldlySlash");
+
+ private static final int DAMAGE = 7;
+ private static final int UPG_DAMAGE = 2;
+ private static int SOFTLOCK = 0;
+
+ public OtherworldlySlash() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "OtherworldlySlash.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ // Deal initial damage
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ boolean playedOffClassCard = AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .anyMatch(card -> card.color != this.color);
+
+ if (playedOffClassCard) {
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ }
+ }
+
+ @Override
+ public void triggerOnGlowCheck() { // it glows now.
+ boolean playedOffClassCard = AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .anyMatch(card -> card.color != this.color);
+ if (playedOffClassCard) {
+ this.glowColor = AbstractDynamicCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ } else {
+ this.glowColor = AbstractDynamicCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.COMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/OverwhelmingPresence.java b/src/main/java/sneckomod/cards/OverwhelmingPresence.java
new file mode 100644
index 000000000..769f9d650
--- /dev/null
+++ b/src/main/java/sneckomod/cards/OverwhelmingPresence.java
@@ -0,0 +1,28 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.powers.OverwhelmingPresencePower;
+
+public class OverwhelmingPresence extends AbstractSneckoCard {
+
+ public final static String ID = makeID("OverwhelmingPresence");
+
+ public OverwhelmingPresence() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
+ SneckoMod.loadJokeCardImage(this, "OverwhelmingPresence.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new OverwhelmingPresencePower(p, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(0);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/PerpetualSerpent.java b/src/main/java/sneckomod/cards/PerpetualSerpent.java
new file mode 100644
index 000000000..f387c7c8b
--- /dev/null
+++ b/src/main/java/sneckomod/cards/PerpetualSerpent.java
@@ -0,0 +1,41 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class PerpetualSerpent extends AbstractSneckoCard {
+
+ public static final String ID = makeID("PerpetualSerpent");
+
+ private static final int DAMAGE = 20;
+ private static final int UPG_DAMAGE = 5;
+ private static final int MAGIC = 2;
+
+ public PerpetualSerpent() {
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "PerpetualSerpent.png");
+ this.tags.add(SneckoMod.OVERFLOW);
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_HEAVY);
+
+ if (isOverflowActive(this)) {
+ addToBot(new GainEnergyAction(MAGIC));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/PoisonParadise.java b/src/main/java/sneckomod/cards/PoisonParadise.java
new file mode 100644
index 000000000..22235689a
--- /dev/null
+++ b/src/main/java/sneckomod/cards/PoisonParadise.java
@@ -0,0 +1,28 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.powers.FountainPower;
+
+public class PoisonParadise extends AbstractSneckoCard {
+
+ public final static String ID = SneckoMod.makeID("PoisonParadise");
+
+ public PoisonParadise() {
+ super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 4;
+ SneckoMod.loadJokeCardImage(this, "PoisonParadise.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new FountainPower(this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(2);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/PowerShot.java b/src/main/java/sneckomod/cards/PowerShot.java
new file mode 100644
index 000000000..07022d71b
--- /dev/null
+++ b/src/main/java/sneckomod/cards/PowerShot.java
@@ -0,0 +1,42 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.utility.DiscardToHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.util.Wiz;
+import sneckomod.SneckoMod;
+
+public class PowerShot extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("PowerShot");
+ private static final int DAMAGE = 5;
+ private static final int UPGRADE_DAMAGE = 2;
+
+ public PowerShot() {
+ super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ SneckoMod.loadJokeCardImage(this, "PowerShot.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
+ }
+
+ public void triggerOnCardPlayed(AbstractCard c) {
+ if (c.type == CardType.POWER)
+ Wiz.atb(new DiscardToHandAction(this));
+ }
+
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/PureSnecko.java b/src/main/java/sneckomod/cards/PureSnecko.java
index 2fd9e4058..a465f9988 100644
--- a/src/main/java/sneckomod/cards/PureSnecko.java
+++ b/src/main/java/sneckomod/cards/PureSnecko.java
@@ -1,32 +1,65 @@
package sneckomod.cards;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
-import sneckomod.actions.PureSneckoAction;
+import sneckomod.actions.MuddleAction;
+
+import java.util.ArrayList;
public class PureSnecko extends AbstractSneckoCard {
- public final static String ID = makeID("PureSnecko");
+ public final static String ID = SneckoMod.makeID("PureSnecko");
+
+ //I'm sorry but this card just HAD to be changed, the action still exists though
- //stupid intellij stuff SKILL, SELF, UNCOMMON
+ // SKILL, SELF, UNCOMMON
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
public PureSnecko() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+
SneckoMod.loadJokeCardImage(this, "PureSnecko.png");
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
- // if (upgraded) atb(new DrawCardAction(1));
- atb(new PureSneckoAction(p, upgraded));
+ // Create a list to track the cards that are drawn
+ ArrayList preHand = new ArrayList<>(p.hand.group); // Store current cards in hand before drawing
+
+ // Draw cards based on magicNumber
+ addToBot(new DrawCardAction(magicNumber, new AbstractGameAction() {
+ @Override
+ public void update() {
+ ArrayList drawnCards = new ArrayList<>();
+
+ // Identify which cards were added to the hand
+ for (AbstractCard card : p.hand.group) {
+ if (!preHand.contains(card)) {
+ drawnCards.add(card); // These are the newly drawn cards
+ }
+ }
+
+ // Muddle the newly drawn cards
+ for (AbstractCard card : drawnCards) {
+ addToBot(new MuddleAction(card)); // Automatically Muddle the drawn card
+ }
+ isDone = true;
+ }
+ }));
}
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
+ upgradeMagicNumber(UPG_MAGIC); // Increase the number of cards drawn when upgraded
initializeDescription();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/QuickBite.java b/src/main/java/sneckomod/cards/QuickBite.java
index ad0596511..23bebbbe8 100644
--- a/src/main/java/sneckomod/cards/QuickBite.java
+++ b/src/main/java/sneckomod/cards/QuickBite.java
@@ -3,12 +3,16 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
import sneckomod.actions.MuddleRandomCardAction;
+import java.util.ArrayList;
+
public class QuickBite extends AbstractSneckoCard {
public final static String ID = makeID("QuickBite");
@@ -16,28 +20,42 @@ public class QuickBite extends AbstractSneckoCard {
//stupid intellij stuff ATTACK, ENEMY, COMMON
private static final int DAMAGE = 9;
- private static final int UPG_DAMAGE = 3;
-
- private static final int MAGIC = 0;
- private static final int UPG_MAGIC = 1;
+ private static final int UPG_DAMAGE = 1;
public QuickBite() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
- tags.add(SneckoMod.RNG);
+ baseMagicNumber = magicNumber = 1;
SneckoMod.loadJokeCardImage(this, "QuickBite.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));// 117
dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
- int x = getRandomNum(magicNumber, 2, this);
+ //atb(new MuddleRandomCardAction(1, true));
+ // Create a list to track the cards that are drawn
+ ArrayList preHand = new ArrayList<>(p.hand.group); // Store current cards in hand before drawing
+
+ // Draw cards based on magicNumber
+ addToBot(new DrawCardAction(magicNumber, new AbstractGameAction() {
+ @Override
+ public void update() {
+ ArrayList drawnCards = new ArrayList<>();
- if (x > 0)
- atb(new DrawCardAction(x));
+ // Identify which cards were added to the hand
+ for (AbstractCard card : p.hand.group) {
+ if (!preHand.contains(card)) {
+ drawnCards.add(card); // These are the newly drawn cards
+ }
+ }
- atb(new MuddleRandomCardAction(1, true));
+ // Muddle the newly drawn cards
+ for (AbstractCard card : drawnCards) {
+ addToBot(new MuddleAction(card)); // Automatically Muddle the drawn card
+ }
+ isDone = true;
+ }
+ }));
}
@@ -45,7 +63,9 @@ public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeDamage(UPG_DAMAGE);
- upgradeMagicNumber(UPG_MAGIC);
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/QuickMove.java b/src/main/java/sneckomod/cards/QuickMove.java
index 293427268..09b72fe7c 100644
--- a/src/main/java/sneckomod/cards/QuickMove.java
+++ b/src/main/java/sneckomod/cards/QuickMove.java
@@ -1,41 +1,47 @@
package sneckomod.cards;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
import sneckomod.SneckoMod;
-import sneckomod.actions.MuddleRandomCardAction;
public class QuickMove extends AbstractSneckoCard {
- public final static String ID = makeID("QuickMove");
-
- //stupid intellij stuff SKILL, SELF, COMMON
-
- private static final int BLOCK = 8;
- private static final int UPG_BLOCK = 2;
+ public static final String ID = SneckoMod.makeID("QuickMove");
+ private static final int BASE_BLOCK = 7;
+ private static final int UPG_BLOCK = 3;
private static final int MAGIC = 1;
- private static final int UPG_MAGIC = 1;
+ //private static final int UPG_MAGIC = 1;
public QuickMove() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = BLOCK;
baseMagicNumber = magicNumber = MAGIC;
+ baseBlock = BASE_BLOCK;
+ tags.add(SneckoMod.OVERFLOW);
SneckoMod.loadJokeCardImage(this, "QuickMove.png");
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
blck();
- atb(new MuddleRandomCardAction(magicNumber, true));
+ if (isOverflowActive(this)) {
+ for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
+ if ((!monster.isDead) && (!monster.isDying) && !monster.halfDead) {
+ atb(new ApplyPowerAction(monster, p, new VulnerablePower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+ }
}
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeBlock(UPG_BLOCK);
- upgradeMagicNumber(UPG_MAGIC);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/RainOfDice.java b/src/main/java/sneckomod/cards/RainOfDice.java
index b2ec76f5f..e05c9e103 100644
--- a/src/main/java/sneckomod/cards/RainOfDice.java
+++ b/src/main/java/sneckomod/cards/RainOfDice.java
@@ -1,65 +1,71 @@
package sneckomod.cards;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import sneckomod.SneckoMod;
import sneckomod.actions.MuddleAction;
-import sneckomod.actions.NoApplyRandomDamageAction;
-import sneckomod.powers.MuddleDrawnCardsPower;
public class RainOfDice extends AbstractSneckoCard {
- public final static String ID = makeID("RainOfDice");
+ public static final String ID = SneckoMod.makeID("RainOfDice");
+
+ private static final int BASE_DAMAGE = 6;
+ private static final int UPGRADE_DAMAGE = 2;
public RainOfDice() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseSilly = silly = 6;
- baseDamage = 12;
- this.returnToHand = true;
- tags.add(SneckoMod.RNG);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = BASE_DAMAGE;
+ exhaust = true;
SneckoMod.loadJokeCardImage(this, "RainOfDice.png");
}
@Override
public void applyPowers() {
super.applyPowers();
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.applyPowers();
- silly = damage;
- isSillyModified = damage != baseDamage;
-
- baseDamage = CURRENT_DAMAGE;
- super.applyPowers();
}
@Override
public void calculateCardDamage(final AbstractMonster m) {
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.calculateCardDamage(m);
- silly = damage;
- isSillyModified = damage != baseDamage;
-
- baseDamage = CURRENT_DAMAGE;
+ int originalBaseDamage = baseDamage;
super.calculateCardDamage(m);
+ baseDamage = originalBaseDamage;
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new NoApplyRandomDamageAction(AbstractDungeon.getMonsters().getRandomMonster(true), silly, damage, 1, AbstractGameAction.AttackEffect.BLUNT_LIGHT, this, DamageInfo.DamageType.NORMAL));
- atb(new MuddleAction(this));
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
+
+ addToBot(new SelectCardsInHandAction(1, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
+ }
+ }
+ ));
+ AbstractCard g = new RainOfDice();
+ if (this.upgraded) {
+ g.upgrade();
+ }
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(g));
}
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeSilly(3);
- upgradeDamage(3);
+ upgradeDamage(UPGRADE_DAMAGE);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/Restock.java b/src/main/java/sneckomod/cards/Restock.java
index 5551ff575..08ad27c78 100644
--- a/src/main/java/sneckomod/cards/Restock.java
+++ b/src/main/java/sneckomod/cards/Restock.java
@@ -5,24 +5,26 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleHandAction;
public class Restock extends AbstractSneckoCard {
public final static String ID = makeID("Restock");
//stupid intellij stuff SKILL, SELF, RARE
+ private static final int MAGIC = 6;
public Restock() {
super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
- tags.add(SneckoMod.RNG);
- this.exhaust = true;
+ baseMagicNumber = magicNumber = MAGIC;
+ exhaust = true;
SneckoMod.loadJokeCardImage(this, "Restock.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
atb(new DiscardAction(p, p, p.hand.size(), true));
- atb(new DrawCardAction(getRandomNum(5, 10, this)));
+ atb(new DrawCardAction(magicNumber));
+ atb(new MuddleHandAction()); // it's 12% cooler now.
}
public void upgrade() {
diff --git a/src/main/java/sneckomod/cards/RiskySword.java b/src/main/java/sneckomod/cards/RiskySword.java
new file mode 100644
index 000000000..c3cffce35
--- /dev/null
+++ b/src/main/java/sneckomod/cards/RiskySword.java
@@ -0,0 +1,46 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import sneckomod.SneckoMod;
+
+public class RiskySword extends AbstractSneckoCard {
+
+ public final static String ID = makeID("RiskySword");
+
+ private static final int DAMAGE = 8;
+ private static final int MAGIC = 8;
+ private static final int UPGRADE_DAMAGE = 2;
+ private static final int UPGRADE_MAGIC = 2;
+
+ public RiskySword() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "RiskySword.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_DIAGONAL);
+ }
+
+ @Override
+ public void onMuddledSword() {
+ flash();
+ baseDamage += magicNumber;
+ applyPowers();
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/Rotation.java b/src/main/java/sneckomod/cards/Rotation.java
index 86d19adf9..c27b0a964 100644
--- a/src/main/java/sneckomod/cards/Rotation.java
+++ b/src/main/java/sneckomod/cards/Rotation.java
@@ -1,55 +1 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.DiscardSpecificCardAction;
-import com.megacrit.cardcrawl.actions.common.DrawCardAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-
-import java.util.ArrayList;
-
-public class Rotation extends AbstractSneckoCard {
-
- public final static String ID = makeID("Rotation");
-
- public Rotation() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 0;
- tags.add(SneckoMod.SNEKPROOF);
- SneckoMod.loadJokeCardImage(this, "Rotation.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- int x = 0;
- ArrayList cardsToDiscard = new ArrayList<>();
- for (AbstractCard q : p.hand.group) {
- if (q.color != AbstractDungeon.player.getCardColor()) {
- cardsToDiscard.add(q);
- x++;
- }
- }
- x += magicNumber;
- att(new DrawCardAction(x));
- for (AbstractCard q : cardsToDiscard) {
- att(new DiscardSpecificCardAction(q));
- }
- }
- });
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeMagicNumber(1);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
- }
- }
-}
\ No newline at end of file
+//deprecated
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/RoundaboutSwing.java b/src/main/java/sneckomod/cards/RoundaboutSwing.java
new file mode 100644
index 000000000..a07187ebc
--- /dev/null
+++ b/src/main/java/sneckomod/cards/RoundaboutSwing.java
@@ -0,0 +1,39 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.PutOnDeckAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
+import sneckomod.SneckoMod;
+
+public class RoundaboutSwing extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("RoundaboutSwing");
+
+ private static final int DAMAGE = 10;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int MAGIC = 2;
+
+ public RoundaboutSwing() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ magicNumber = baseMagicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "RoundaboutSwing.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ this.addToBot(new PutOnDeckAction(p, p, 1, false));
+ applyToSelf(new DrawCardNextTurnPower(p, magicNumber));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/SaveForLater.java b/src/main/java/sneckomod/cards/SaveForLater.java
new file mode 100644
index 000000000..70a544e8e
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SaveForLater.java
@@ -0,0 +1,45 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.powers.CoalescencePower;
+import sneckomod.SneckoMod;
+
+public class SaveForLater extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("SaveForLater");
+
+ private static final int MAGIC = 1;
+ private static final int DAMAGE = 8;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int UPGRADE_MAGIC = 1;
+
+ public SaveForLater() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "SaveForLater.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ this.addToBot(new ApplyPowerAction(p, p, new CoalescencePower(p, magicNumber), magicNumber));
+ }
+
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/SerpentBottle.java b/src/main/java/sneckomod/cards/SerpentBottle.java
new file mode 100644
index 000000000..b12d89b2d
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SerpentBottle.java
@@ -0,0 +1,56 @@
+package sneckomod.cards;
+
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
+import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
+
+public class SerpentBottle extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("SerpentBottle");
+
+ private static final int MAGIC = 1;
+ private static final int UPG_MAGIC = 1;
+ private static final int BASE_SILLY = 2;
+
+ //snecko adrenaline
+
+ public SerpentBottle() {
+ super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ baseSilly = silly = 2;
+ SneckoMod.loadJokeCardImage(this, "SerpentBottle.png");
+ exhaust = true;
+ //tags.add(SneckoMod.SNEKPROOF);
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+
+ addToBot(new DrawCardAction(p, this.silly));
+
+ addToBot(new SelectCardsInHandAction(magicNumber, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
+ }
+ }
+ ));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPG_MAGIC);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/SerpentIdol.java b/src/main/java/sneckomod/cards/SerpentIdol.java
index 616a83d60..d6fb4a4d3 100644
--- a/src/main/java/sneckomod/cards/SerpentIdol.java
+++ b/src/main/java/sneckomod/cards/SerpentIdol.java
@@ -14,8 +14,8 @@ public class SerpentIdol extends AbstractSneckoCard {
public SerpentIdol() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
exhaust = true;
- tags.add(SneckoMod.SNEKPROOF);
SneckoMod.loadJokeCardImage(this, "SerpentIdol.png");
+ magicNumber = baseMagicNumber = 3;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/sneckomod/cards/SerpentMind.java b/src/main/java/sneckomod/cards/SerpentMind.java
index ed8d1cb02..31aa71a3c 100644
--- a/src/main/java/sneckomod/cards/SerpentMind.java
+++ b/src/main/java/sneckomod/cards/SerpentMind.java
@@ -1,36 +1,80 @@
package sneckomod.cards;
import basemod.helpers.BaseModCardTags;
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
import sneckomod.SneckoMod;
import sneckomod.powers.SerpentMindPower;
+import sneckomod.relics.UnknownEgg;
-public class SerpentMind extends AbstractSneckoCard {
+import java.util.ArrayList;
+
+public class SerpentMind extends AbstractSneckoCard implements OnObtainCard {
public final static String ID = makeID("SerpentMind");
//stupid intellij stuff POWER, SELF, RARE
private static final int MAGIC = 1;
+ private static int SOFTLOCK = 0;
public SerpentMind() {
super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
-
tags.add(BaseModCardTags.FORM);
- tags.add(SneckoMod.SNEKPROOF);
+ isEthereal = true;
SneckoMod.loadJokeCardImage(this, "SerpentMind.png");
}
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new SerpentMindPower(1));
+ applyToSelf(new SerpentMindPower(magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.RARE);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (newCard != null && !cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ AbstractCard cardCopy = newCard.makeCopy();
+ cardsToReward.add(cardCopy);
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
}
public void upgrade() {
if (!upgraded) {
- tags.remove(SneckoMod.SNEKPROOF);
upgradeName();
+ isEthereal = false;
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/sneckomod/cards/SerpentineSleuth.java b/src/main/java/sneckomod/cards/SerpentineSleuth.java
new file mode 100644
index 000000000..5ae9a3fd6
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SerpentineSleuth.java
@@ -0,0 +1,78 @@
+package sneckomod.cards;
+
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.powers.SerpentineSleuthPower;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class SerpentineSleuth extends AbstractSneckoCard implements OnObtainCard {
+
+ public final static String ID = makeID("SerpentineSleuth");
+
+ //stupid intellij stuff POWER, SELF, RARE
+ private static int SOFTLOCK = 0;
+
+ public SerpentineSleuth() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
+ isEthereal = true;
+ SneckoMod.loadJokeCardImage(this, "SerpentineSleuth.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ SOFTLOCK = 0;
+ return false;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new SerpentineSleuthPower(this.magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.type == AbstractCard.CardType.POWER && c.rarity == AbstractCard.CardRarity.RARE);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ //isEthereal = false;
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SerpentsNest.java b/src/main/java/sneckomod/cards/SerpentsNest.java
new file mode 100644
index 000000000..453fe7820
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SerpentsNest.java
@@ -0,0 +1,74 @@
+package sneckomod.cards;
+
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.powers.SerpentsNestPower;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class SerpentsNest extends AbstractSneckoCard implements OnObtainCard {
+
+ public final static String ID = makeID("SerpentsNest");
+
+ private static int SOFTLOCK = 0;
+ //stupid intellij stuff POWER, SELF, RARE
+
+ public SerpentsNest() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 9;
+
+ SneckoMod.loadJokeCardImage(this, "SerpentsNest.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new SerpentsNestPower(this.magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.type == AbstractCard.CardType.POWER && c.rarity == AbstractCard.CardRarity.UNCOMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(3);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Serpentscale.java b/src/main/java/sneckomod/cards/Serpentscale.java
new file mode 100644
index 000000000..b1e37318c
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Serpentscale.java
@@ -0,0 +1,51 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import downfall.downfallMod;
+import sneckomod.SneckoMod;
+
+public class Serpentscale extends AbstractSneckoCard {
+
+ public final static String ID = makeID("Serpentscale");
+
+ // Card constants
+ private static final int DAMAGE = 9;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
+
+ public Serpentscale() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ this.tags.add(SneckoMod.OVERFLOW);
+ SneckoMod.loadJokeCardImage(this, "Serpentscale.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
+
+ if (!isOverflowActive(this)) {
+ addToBot(new ApplyPowerAction(p, p, new PlatedArmorPower(p, 1), 1));
+ }
+ if (isOverflowActive(this)) {
+ addToBot(new ApplyPowerAction(p, p, new PlatedArmorPower(p, magicNumber), magicNumber));
+ }
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBlock(UPGRADE_DAMAGE);
+ upgradeMagicNumber(UPG_MAGIC);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SlitherStrike.java b/src/main/java/sneckomod/cards/SlitherStrike.java
deleted file mode 100644
index b30a14903..000000000
--- a/src/main/java/sneckomod/cards/SlitherStrike.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ReduceCostForTurnAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-
-public class SlitherStrike extends AbstractSneckoCard {
-
- public final static String ID = makeID("SlitherStrike");
-
- //stupid intellij stuff ATTACK, ENEMY, UNCOMMON
-
- private static final int DAMAGE = 9;
- private static final int UPG_DAMAGE = 3;
-
- public SlitherStrike() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = DAMAGE;
- tags.add(CardTags.STRIKE);
- SneckoMod.loadJokeCardImage(this, "SlitherStrike.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_DIAGONAL);
- atb(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- for (AbstractCard q : p.hand.group) {
- if (q.color != AbstractDungeon.player.getCardColor()) {
- addToTop(new ReduceCostForTurnAction(q, 1));
- q.superFlash();
- }
- }
- }
- });
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeDamage(UPG_DAMAGE);
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SlitherThrough.java b/src/main/java/sneckomod/cards/SlitherThrough.java
new file mode 100644
index 000000000..f03b382f0
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SlitherThrough.java
@@ -0,0 +1,91 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ReduceCostForTurnAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class SlitherThrough extends AbstractSneckoCard {
+
+ public final static String ID = makeID("SlitherThrough");
+
+ //stupid intellij stuff ATTACK, ENEMY, UNCOMMON
+
+ private static final int DAMAGE = 14;
+ private static final int UPG_DAMAGE = 4;
+ private static final int MAGIC = 1;
+ private static int SOFTLOCK = 0;
+
+ public SlitherThrough() {
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "SlitherThrough.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 20) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_DIAGONAL);
+ atb(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ for (AbstractCard q : p.hand.group) {
+ if (q.color != AbstractDungeon.player.getCardColor()) {
+ addToTop(new ReduceCostForTurnAction(q, magicNumber));
+ q.superFlash();
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.UNCOMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SnakeEyes.java b/src/main/java/sneckomod/cards/SnakeEyes.java
new file mode 100644
index 000000000..f9cd5297e
--- /dev/null
+++ b/src/main/java/sneckomod/cards/SnakeEyes.java
@@ -0,0 +1,81 @@
+package sneckomod.cards;
+
+import com.evacipated.cardcrawl.mod.stslib.cards.interfaces.OnObtainCard;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import sneckomod.SneckoMod;
+import sneckomod.powers.SnakeEyesPower;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class SnakeEyes extends AbstractSneckoCard implements OnObtainCard {
+
+
+ ///Snake Eyes
+ public final static String ID = makeID("SnakeEyes");
+
+ private static final int MAGIC = 1;
+ private static final int UPG_MAGIC = 1;
+ private static int SOFTLOCK = 0;
+
+ public SnakeEyes() {
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "SnakeEyes.png");
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ SOFTLOCK = 0;
+ return false;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new SnakeEyesPower(magicNumber));
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.type == AbstractCard.CardType.SKILL && c.rarity == AbstractCard.CardRarity.RARE);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(UPG_MAGIC);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/SnakeSap.java b/src/main/java/sneckomod/cards/SnakeSap.java
index 427904c96..c27b0a964 100644
--- a/src/main/java/sneckomod/cards/SnakeSap.java
+++ b/src/main/java/sneckomod/cards/SnakeSap.java
@@ -1,72 +1 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-import sneckomod.actions.NoApplyRandomDamageAction;
-
-public class SnakeSap extends AbstractSneckoCard {
-
- public final static String ID = makeID("SnakeSap");
-
- //stupid intellij stuff ATTACK, ENEMY, UNCOMMON
-
- private static final int DAMAGE = 3;
- private static final int MAGIC = 3;
- private static final int UPG_MAGIC = 1;
-
- public SnakeSap() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
- baseSilly = silly = 1;
- exhaust = true;
- tags.add(SneckoMod.SNEKPROOF);
- tags.add(SneckoMod.RNG);
- SneckoMod.loadJokeCardImage(this, "SnakeSap.png");
- }
-
- @Override
- public void applyPowers() {
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.applyPowers();
- silly = damage;
- isSillyModified = damage != baseDamage;
-
- baseDamage = CURRENT_DAMAGE;
- super.applyPowers();
- }
-
- @Override
- public void calculateCardDamage(final AbstractMonster m) {
- int CURRENT_SILLY = baseSilly;
- int CURRENT_DAMAGE = baseDamage;
- baseDamage = CURRENT_SILLY;
- super.calculateCardDamage(m);
- silly = damage;
- isSillyModified = damage != baseDamage;
-
- baseDamage = CURRENT_DAMAGE;
- super.calculateCardDamage(m);
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new NoApplyRandomDamageAction(m, silly, damage, 1, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL, this, DamageInfo.DamageType.NORMAL));
- int x = getRandomNum(1, magicNumber, this);
- if (x > 0)
- atb(new GainEnergyAction(x));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeMagicNumber(UPG_MAGIC);
- upgradeDamage(1);
- }
- }
-}
\ No newline at end of file
+//deprecated
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SnekBeam.java b/src/main/java/sneckomod/cards/SnekBeam.java
deleted file mode 100644
index 69998f064..000000000
--- a/src/main/java/sneckomod/cards/SnekBeam.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
-import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
-import sneckomod.cards.unknowns.AbstractUnknownCard;
-
-import static com.megacrit.cardcrawl.cards.red.PerfectedStrike.countCards;
-
-public class SnekBeam extends AbstractSneckoCard {
-
- public final static String ID = makeID("SnekBeam");
-
- //stupid intellij stuff ATTACK, ALL_ENEMY, UNCOMMON
-
- private static final int DAMAGE = 0;
-
- public SnekBeam() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseDamage = DAMAGE;
- isMultiDamage = true;
- this.exhaust = true;
- SneckoMod.loadJokeCardImage(this, "SnekBeam.png");
- }
-
- public static int countCards() {
- int i = 0;
- for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
- if (c instanceof AbstractUnknownCard) {
- i++;
- }
- }
- return i;
- }
-
- public void calculateCardDamage(AbstractMonster mo) {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += countCards();
- super.calculateCardDamage(mo);
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- this.rawDescription = upgraded ? UPGRADE_DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[1] :
- UPGRADE_DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[0];
- this.initializeDescription();
- }
-
- public void applyPowers() {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += countCards();
- super.applyPowers();
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- this.rawDescription = upgraded ? UPGRADE_DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[1] :
- UPGRADE_DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[0];
- this.initializeDescription();
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new VFXAction(new MindblastEffect(p.dialogX, p.dialogY, p.flipHorizontal)));
- allDmg(AbstractGameAction.AttackEffect.FIRE);
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- exhaust = false;
- rawDescription = cardStrings.UPGRADE_DESCRIPTION;
- initializeDescription();
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SnekBite.java b/src/main/java/sneckomod/cards/SnekBite.java
index b9d22334c..ee0b88af4 100644
--- a/src/main/java/sneckomod/cards/SnekBite.java
+++ b/src/main/java/sneckomod/cards/SnekBite.java
@@ -1,37 +1,59 @@
package sneckomod.cards;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
-import sneckomod.actions.MuddleRandomCardAction;
+import downfall.downfallMod;
+import sneckomod.SneckoMod;
+import sneckomod.actions.MuddleAction;
public class SnekBite extends AbstractSneckoCard {
public final static String ID = makeID("SnekBite");
+ // Card constants
+ private static final int DAMAGE = 8;
+ private static final int MAGIC = 1;
+ private static final int UPGRADE_DAMAGE = 1;
+ private static final int UPGRADE_MAGIC = 1;
+
+
public SnekBite() {
super(ID, 1, CardType.ATTACK, CardRarity.BASIC, CardTarget.ENEMY);
- baseDamage = 7;
- baseMagicNumber = magicNumber = 1;
+ baseDamage = DAMAGE;
+ baseMagicNumber = magicNumber = MAGIC;
SneckoMod.loadJokeCardImage(this, "SnekBite.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));// 117
+ atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));
dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
- atb(new MuddleRandomCardAction(magicNumber, true));
+
+ // muddle is no longer random here
+ addToBot(new SelectCardsInHandAction(magicNumber, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
+ }
+ }
+ ));
}
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeDamage(2);
- upgradeMagicNumber(1);
+ upgradeDamage(UPGRADE_DAMAGE);
+ upgradeMagicNumber(UPGRADE_MAGIC);
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
}
-}
\ No newline at end of file
+
+}
diff --git a/src/main/java/sneckomod/cards/SoulCleanse.java b/src/main/java/sneckomod/cards/SoulCleanse.java
index 31235b7d4..c27b0a964 100644
--- a/src/main/java/sneckomod/cards/SoulCleanse.java
+++ b/src/main/java/sneckomod/cards/SoulCleanse.java
@@ -1,34 +1 @@
-package sneckomod.cards;
-
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.monsters.city.Snecko;
-import sneckomod.SneckoMod;
-import sneckomod.actions.MuddleHandAction;
-
-public class SoulCleanse extends AbstractSneckoCard {
-
- public final static String ID = makeID("SoulCleanse");
-
- //stupid intellij stuff SKILL, SELF, UNCOMMON
-
- public SoulCleanse() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
- exhaust = true;
- SneckoMod.loadJokeCardImage(this, "SoulCleanse.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new MuddleHandAction(true));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
- this.exhaust = false;
- }
- }
-}
\ No newline at end of file
+//deprecated
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SoulDraw.java b/src/main/java/sneckomod/cards/SoulDraw.java
index 614d74258..f3d6472b1 100644
--- a/src/main/java/sneckomod/cards/SoulDraw.java
+++ b/src/main/java/sneckomod/cards/SoulDraw.java
@@ -1,8 +1,10 @@
package sneckomod.cards;
+import basemod.helpers.CardModifierManager;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.cardmods.PropertiesMod;
import sneckomod.OffclassHelper;
import sneckomod.SneckoMod;
@@ -13,16 +15,21 @@ public class SoulDraw extends AbstractSneckoCard {
public final static String ID = makeID("SoulDraw");
public SoulDraw() {
- super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
exhaust = true;
- tags.add(SneckoMod.SNEKPROOF);
SneckoMod.loadJokeCardImage(this, "SoulDraw.png");
}
+
+ // coffee blast reprint because
public void use(AbstractPlayer p, AbstractMonster m) {
+
ArrayList cards = OffclassHelper.getXRandomOffclassCards(magicNumber);
for (AbstractCard c : cards) {
+ if (!c.selfRetain) {
+ CardModifierManager.addModifier(c, new PropertiesMod(PropertiesMod.supportedProperties.RETAIN, false));
+ }
makeInHand(c);
}
}
@@ -30,7 +37,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(1);
+ upgradeBaseCost(0);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/SoulExchange.java b/src/main/java/sneckomod/cards/SoulExchange.java
index 62859dcec..dcc2b1589 100644
--- a/src/main/java/sneckomod/cards/SoulExchange.java
+++ b/src/main/java/sneckomod/cards/SoulExchange.java
@@ -1,58 +1,33 @@
package sneckomod.cards;
-import basemod.BaseMod;
-import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
-import com.megacrit.cardcrawl.actions.common.DrawCardAction;
-import com.megacrit.cardcrawl.actions.common.ExhaustAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
-
-import java.util.ArrayList;
+import sneckomod.actions.MuddleHandAction;
public class SoulExchange extends AbstractSneckoCard {
- public final static String ID = makeID("SoulExchange");
+ public static final String ID = SneckoMod.makeID("SoulExchange");
- //stupid intellij stuff SKILL, SELF, RARE
+ private static final int COST = 1;
public SoulExchange() {
- super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
- baseMagicNumber = magicNumber = 1;
+ super(ID, COST, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ this.selfRetain = true;
+ this.exhaust = true;
SneckoMod.loadJokeCardImage(this, "SoulExchange.png");
}
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new DrawCardAction(magicNumber));
- atb(new SelectCardsInHandAction(1, EXTENDED_DESCRIPTION[0], (cards) -> {
- AbstractCard q = cards.get(0);
- CardColor c = q.color;
- ArrayList coloredCards = new ArrayList<>();
- for (AbstractCard r : CardLibrary.getAllCards()) {
- if (r.color == c && r.rarity != CardRarity.SPECIAL && r.rarity != CardRarity.BASIC && !r.hasTag(CardTags.HEALING)) {
- coloredCards.add(r);
- }
- }
- int x = p.hand.size();
- if (!coloredCards.isEmpty())
- for (int i = 0; i < x; i++) {
- att(new MakeTempCardInHandAction(coloredCards.get(AbstractDungeon.cardRandomRng.random(0, coloredCards.size() - 1))));
- }
- att(new ExhaustAction(BaseMod.MAX_HAND_SIZE, true, false));
- }));
+ addToBot(new MuddleHandAction());
}
+ @Override
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(1);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeBaseCost(0);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/sneckomod/cards/SoulRoll.java b/src/main/java/sneckomod/cards/SoulRoll.java
index 41d56784e..97a642cc1 100644
--- a/src/main/java/sneckomod/cards/SoulRoll.java
+++ b/src/main/java/sneckomod/cards/SoulRoll.java
@@ -1,38 +1,54 @@
package sneckomod.cards;
-import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import sneckomod.SneckoMod;
-import sneckomod.actions.MuddleHandAction;
+import sneckomod.actions.MuddleAction;
public class SoulRoll extends AbstractSneckoCard {
public final static String ID = makeID("SoulRoll");
//stupid intellij stuff SKILL, SELF, COMMON
+ private static final int BLOCK = 3;
+ private static final int UPGRADE_BLOCK = 3;
+ private static final int MAGIC = 1;
public SoulRoll() {
- super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
+ super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
SneckoMod.loadJokeCardImage(this, "SoulRoll.png");
+ baseBlock = BLOCK;
+ baseMagicNumber = magicNumber = MAGIC;
+ exhaust = true;
+ this.selfRetain = true;
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new MuddleHandAction());
- if (upgraded) upgradeAction(p,m);
+ addToBot(new GainBlockAction(p, p, block));
+ addToBot(new SelectCardsInHandAction(magicNumber, BaseMod.getKeywordProper("sneckomod:muddle"),
+ (AbstractCard c) -> true,
+ (cards) -> {
+ for (AbstractCard card : cards) {
+ addToBot(new MuddleAction(card));
+ }
+ }
+ ));
}
- public void upgradeAction(AbstractPlayer p, AbstractMonster m){
- AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
- }
+ // public void upgradeAction(AbstractPlayer p, AbstractMonster m){
+ // AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
+ // }
public void upgrade() {
if (!upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeBlock(UPGRADE_BLOCK);
+
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/TailWhip.java b/src/main/java/sneckomod/cards/TailWhip.java
index 837b0d3f2..36c08fc3a 100644
--- a/src/main/java/sneckomod/cards/TailWhip.java
+++ b/src/main/java/sneckomod/cards/TailWhip.java
@@ -12,33 +12,42 @@ public class TailWhip extends AbstractSneckoCard {
//stupid intellij stuff ATTACK, ENEMY, BASIC
private static final int DAMAGE = 10;
- private static final int MAGIC = 0;
+ private static final int MAGIC = 1;
private static final int UPG_MAGIC = 1;
+ private static final int UPG_DAMAGE = 2;
public TailWhip() {
super(ID, 2, CardType.ATTACK, CardRarity.BASIC, CardTarget.ENEMY);
baseDamage = DAMAGE;
baseMagicNumber = magicNumber = MAGIC;
SneckoMod.loadJokeCardImage(this, "TailWhip.png");
- this.tags.add(SneckoMod.RNG);
+ this.tags.add(SneckoMod.OVERFLOW);
}
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, makeInfo(), AbstractGameAction.AttackEffect.SLASH_HEAVY);
- int x = getRandomNum(magicNumber, 2, this);
+ int x = 0;
+ // this is probably bad practice but it works
+ if (isOverflowActive(this)) {
+ x = magicNumber;
+ }
if (x > 0)
applyToEnemy(m, autoWeak(m, x));
- int y = getRandomNum(magicNumber, 2, this);
+ int y = 0;
+ if (isOverflowActive(this)) {
+ y = magicNumber;
+ }
if (y > 0)
applyToEnemy(m, autoVuln(m, y));
// atb(new MuddleHandAction());
}
+
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeDamage(3);
upgradeMagicNumber(UPG_MAGIC);
+ upgradeDamage(UPG_DAMAGE);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/ThrowingCards.java b/src/main/java/sneckomod/cards/ThrowingCards.java
new file mode 100644
index 000000000..4f664d752
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ThrowingCards.java
@@ -0,0 +1,52 @@
+package sneckomod.cards;
+
+import automaton.actions.EasyXCostAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.FTL;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.cards.HoleUp;
+import sneckomod.SneckoMod;
+
+public class ThrowingCards extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("ThrowingCards");
+
+ public ThrowingCards() {
+ super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ cardsToPreview = new FTL();
+ exhaust = true;
+ baseMagicNumber = magicNumber = 0;
+ SneckoMod.loadJokeCardImage(this, "ThrowingCards.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new EasyXCostAction(this, (effect, params) -> {
+ for (int i = 0; i < effect + params[0]; i++) {
+ AbstractCard g = new FTL();
+ if (this.upgraded) {
+ g.upgrade();
+ }
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(g));
+ }
+ return true;
+ }, magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ AbstractCard q = new FTL();
+ q.upgrade();
+ cardsToPreview = q;
+ upgradeName();
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/ToothAndClaw.java b/src/main/java/sneckomod/cards/ToothAndClaw.java
new file mode 100644
index 000000000..6b66f4aaa
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ToothAndClaw.java
@@ -0,0 +1,89 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.green.CripplingPoison;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import sneckomod.SneckoMod;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
+
+public class ToothAndClaw extends AbstractSneckoCard {
+
+ public final static String ID = makeID("ToothAndClaw");
+ private static int SOFTLOCK = 0;
+ // this card exists
+
+ public ToothAndClaw() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 6;
+ SneckoMod.loadJokeCardImage(this, "ToothAndClaw.png");
+ this.cardsToPreview = new Shiv();
+ }
+
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));// 117
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
+ for (int i = 0; i < findSuitinHand(); i++) {
+ AbstractCard s = new Shiv();
+ if (this.upgraded) {
+ s.upgrade();
+ }
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(s));
+ }
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.UNCOMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy());
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ //upgradeDamage(2);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ this.cardsToPreview.upgrade();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/ToxicPersonality.java b/src/main/java/sneckomod/cards/ToxicPersonality.java
new file mode 100644
index 000000000..542335856
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ToxicPersonality.java
@@ -0,0 +1,75 @@
+//Toxic Personality - Whenever you apply a debuff to an enemy, apply !M! Venom.
+
+//This was using an old version of Venom but honestly it was just too simple and too strong at the same time.
+
+//Queen of Pentacles was just cooler.
+
+//package sneckomod.cards;
+//
+//import com.megacrit.cardcrawl.cards.AbstractCard;
+//import com.megacrit.cardcrawl.characters.AbstractPlayer;
+//import com.megacrit.cardcrawl.monsters.AbstractMonster;
+//import downfall.util.CardIgnore;
+//import sneckomod.SneckoMod;
+//import sneckomod.powers.ToxicPersonalityPower;
+//
+//import java.util.ArrayList;
+
+//@Deprecated
+//@CardIgnore
+//public class ToxicPersonality extends AbstractSneckoCard {
+//
+// public final static String ID = makeID("ToxicPersonality");
+//
+// //stupid intellij stuff POWER, SELF, RARE
+//
+// private static final int MAGIC = 5;
+// private static final int UPG_MAGIC = 2;
+//
+// public ToxicPersonality() {
+// super(ID, 2, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
+// baseMagicNumber = magicNumber = MAGIC;
+// SneckoMod.loadJokeCardImage(this, "AceOfWands.png");
+// }
+//
+// public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+// for (AbstractCard alreadyHave : cardsList) {
+// if (alreadyHave.cardID.equals(card.cardID)) {
+// return true;
+// }
+// }
+// return false;
+// }
+//
+// public void use(AbstractPlayer p, AbstractMonster m) {
+// applyToSelf(new ToxicPersonalityPower(magicNumber));
+// }
+//
+// @Override
+// public void onObtainCard() {
+// ArrayList cardsToReward = new ArrayList<>();
+// while (cardsToReward.size() < 3) {
+// AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(
+// c -> (c.rarity == AbstractCard.CardRarity.UNCOMMON || c.rarity == AbstractCard.CardRarity.RARE) &&
+// ((((c.rawDescription.contains("Apply") || c.rawDescription.contains("apply") || c.rawDescription.contains("applies")
+// || c.rawDescription.contains("Lick") || c.rawDescription.contains("Debuff") || c.rawDescription.contains("Steal")
+// || c.name.contains("Disarm") || c.name.contains("Choke") || c.name.contains("Talk to the Hand") || c.name.contains("Cursed Wail")
+// || c.name.contains("Undervolt")) || c.name.contains("Dark Lord Form")))));
+//
+//
+//
+// if (!cardListDuplicate(cardsToReward, newCard)) {
+// cardsToReward.add(newCard.makeCopy());
+// }
+// }
+//
+// SneckoMod.addGift(cardsToReward);
+// ;
+// }
+//
+// public void upgrade() {
+// if (!upgraded) {
+// upgradeName();
+// upgradeMagicNumber(UPG_MAGIC);
+// }
+// }}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Transmogrify.java b/src/main/java/sneckomod/cards/Transmogrify.java
index 0b2778db5..d657cde0f 100644
--- a/src/main/java/sneckomod/cards/Transmogrify.java
+++ b/src/main/java/sneckomod/cards/Transmogrify.java
@@ -7,16 +7,19 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.RelicLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.relics.Circlet;
import downfall.cards.OctoChoiceCard;
+import downfall.util.CardIgnore;
import downfall.util.SelectCardsCenteredAction;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Locale;
+@Deprecated
+@CardIgnore
public class Transmogrify extends AbstractSneckoCard {
public final static String ID = makeID("Transmogrify");
@@ -24,7 +27,8 @@ public class Transmogrify extends AbstractSneckoCard {
//stupid intellij stuff SKILL, SELF, RARE
public Transmogrify() {
- super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
+ // super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
tags.add(CardTags.HEALING);
SneckoMod.loadJokeCardImage(this, "Transmogrify.png");
@@ -111,8 +115,7 @@ public void update() {
AbstractDungeon.getCurrRoom().spawnRelicAndObtain(Settings.WIDTH / 2F, Settings.HEIGHT / 2F, returnTrueRandomScreenlessRelic(q.tier));
}
});
- }
- else {
+ } else {
AbstractRelic q2 = eligibleRelicsList.get(1);
ArrayList cardChoices = new ArrayList<>();
cardChoices.add(new OctoChoiceCard(q.relicId, q.name, getCorrectPlaceholderImage(ID), EXTENDED_DESCRIPTION[2] + q.name + EXTENDED_DESCRIPTION[3] + q.tier.name().toLowerCase(Locale.ROOT) + EXTENDED_DESCRIPTION[4], CardColor.COLORLESS));
diff --git a/src/main/java/sneckomod/cards/TrashCan.java b/src/main/java/sneckomod/cards/TrashCan.java
new file mode 100644
index 000000000..479627d9e
--- /dev/null
+++ b/src/main/java/sneckomod/cards/TrashCan.java
@@ -0,0 +1,35 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.powers.TrashCanPower;
+
+public class TrashCan extends AbstractSneckoCard {
+
+ public final static String ID = makeID("TrashCan");
+
+ //stupid intellij stuff POWER, SELF, UNCOMMON
+
+ public TrashCan() {
+ super(ID, 0, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ isInnate = false;
+ SneckoMod.loadJokeCardImage(this, "TrashCan.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(
+ new ApplyPowerAction(p, p, new TrashCanPower(p, p, 1), 1));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ isInnate = true;
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ upgradeName();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/TrashToTreasure.java b/src/main/java/sneckomod/cards/TrashToTreasure.java
index 675d480e5..a8c83eeb9 100644
--- a/src/main/java/sneckomod/cards/TrashToTreasure.java
+++ b/src/main/java/sneckomod/cards/TrashToTreasure.java
@@ -10,22 +10,24 @@ public class TrashToTreasure extends AbstractSneckoCard {
public final static String ID = makeID("TrashToTreasure");
//stupid intellij stuff SKILL, SELF, UNCOMMON
+ private static final int BASE_BLOCK = 9;
public TrashToTreasure() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(SneckoMod.SNEKPROOF);
- this.exhaust = true;
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
SneckoMod.loadJokeCardImage(this, "TrashToTreasure.png");
+ baseBlock = BASE_BLOCK;
+ exhaust = true;
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
atb(new RecycleAction());
}
public void upgrade() {
if (!upgraded) {
upgradeName();
- this.exhaust = false;
+ exhaust = false;
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/sneckomod/cards/Tsunami.java b/src/main/java/sneckomod/cards/Tsunami.java
new file mode 100644
index 000000000..64abf2383
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Tsunami.java
@@ -0,0 +1,28 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+import sneckomod.powers.BlunderGuardPower;
+
+public class Tsunami extends AbstractSneckoCard {
+
+ public final static String ID = makeID("Tsunami");
+
+ public Tsunami() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 4;
+ SneckoMod.loadJokeCardImage(this, "Tsunami.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new BlunderGuardPower(this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/TyphoonFang.java b/src/main/java/sneckomod/cards/TyphoonFang.java
new file mode 100644
index 000000000..0e840eb50
--- /dev/null
+++ b/src/main/java/sneckomod/cards/TyphoonFang.java
@@ -0,0 +1,49 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import sneckomod.SneckoMod;
+import sneckomod.powers.TyphoonPlusPower;
+import sneckomod.powers.TyphoonPower;
+
+public class TyphoonFang extends AbstractSneckoCard {
+
+ public final static String ID = makeID("TyphoonFang");
+
+ //stupid intellij stuff ATTACK, ENEMY, BASIC
+
+ // this card was a herculean effort to code
+
+ private static final int DAMAGE = 12;
+
+ public TyphoonFang() {
+ super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ // baseMagicNumber = magicNumber = MAGIC;
+ SneckoMod.loadJokeCardImage(this, "TyphoonFang.png");
+ this.tags.add(SneckoMod.OVERFLOW);
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new VFXAction(new BiteEffect(m.hb.cX, m.hb.cY), 0.3F));// reused snek bite animation
+ dmg(m, makeInfo(), AbstractGameAction.AttackEffect.NONE);
+ if (isOverflowActive(this) && !this.purgeOnUse) {
+ if (!upgraded) {
+ applyToSelf(new TyphoonPower(1));
+ }
+ if (upgraded) {
+ applyToSelf(new TyphoonPlusPower(1));
+ }
+ }
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(4);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/UnendingSupply.java b/src/main/java/sneckomod/cards/UnendingSupply.java
index 8bee69807..3c864b1b9 100644
--- a/src/main/java/sneckomod/cards/UnendingSupply.java
+++ b/src/main/java/sneckomod/cards/UnendingSupply.java
@@ -12,7 +12,8 @@ public class UnendingSupply extends AbstractSneckoCard {
//stupid intellij stuff POWER, SELF, UNCOMMON
public UnendingSupply() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ isInnate = false;
SneckoMod.loadJokeCardImage(this, "UnendingSupply.png");
}
@@ -22,8 +23,11 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
+ isInnate = true;
upgradeName();
- upgradeBaseCost(0);
+ // upgradeBaseCost(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/UnlimitedRolls.java b/src/main/java/sneckomod/cards/UnlimitedRolls.java
index 12afa25b9..2113481e3 100644
--- a/src/main/java/sneckomod/cards/UnlimitedRolls.java
+++ b/src/main/java/sneckomod/cards/UnlimitedRolls.java
@@ -4,10 +4,13 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
import expansioncontent.cardmods.ExhaustMod;
import sneckomod.SneckoMod;
import sneckomod.powers.UnlimitedRollsPower;
+@Deprecated
+@CardIgnore
public class UnlimitedRolls extends AbstractSneckoCard {
public final static String ID = makeID("UnlimitedRolls");
@@ -15,7 +18,8 @@ public class UnlimitedRolls extends AbstractSneckoCard {
//stupid intellij stuff POWER, SELF, RARE
public UnlimitedRolls() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
+ // super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
AbstractCard q = new SoulRoll();
CardModifierManager.addModifier(q, new ExhaustMod());
q.initializeDescription();
diff --git a/src/main/java/sneckomod/cards/ViperEssence.java b/src/main/java/sneckomod/cards/ViperEssence.java
new file mode 100644
index 000000000..deefd5fb8
--- /dev/null
+++ b/src/main/java/sneckomod/cards/ViperEssence.java
@@ -0,0 +1,37 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
+import sneckomod.SneckoMod;
+
+public class ViperEssence extends AbstractSneckoCard {
+
+ public final static String ID = makeID("ViperEssence");
+
+ private static final int MAGIC = 1;
+ private static final int UPG_MAGIC = 1;
+
+ public ViperEssence() {
+ super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF, CardColor.COLORLESS);
+ SneckoMod.loadJokeCardImage(this, "ViperEssence.png");
+ baseMagicNumber = magicNumber = MAGIC;
+ isEthereal = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new VFXAction(p, new InflameEffect(p), 1.0F));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, this.magicNumber), this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(UPG_MAGIC);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Whack.java b/src/main/java/sneckomod/cards/Whack.java
new file mode 100644
index 000000000..fd99d1ea7
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Whack.java
@@ -0,0 +1,53 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.purple.Wallop;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.cards.HoleUp;
+import sneckomod.SneckoMod;
+
+public class Whack extends AbstractSneckoCard {
+
+ public static final String ID = SneckoMod.makeID("Whack");
+
+ private static final int DAMAGE = 9;
+ private static final int UPGRADE_DAMAGE = 3;
+ private static final int COST = 1;
+
+ public Whack() {
+ super(ID, COST, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ this.exhaust = true;
+ this.cardsToPreview = new Wallop();
+ SneckoMod.loadJokeCardImage(this, "Whack.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HEAVY));
+ AbstractCard g = new Wallop();
+ if (this.upgraded) {
+ g.upgrade();
+ }
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(g));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ AbstractCard q = new Wallop();
+ q.upgrade();
+ cardsToPreview = q;
+ upgradeName();
+ upgradeDamage(UPGRADE_DAMAGE);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/WideAngle.java b/src/main/java/sneckomod/cards/WideAngle.java
new file mode 100644
index 000000000..480109c7f
--- /dev/null
+++ b/src/main/java/sneckomod/cards/WideAngle.java
@@ -0,0 +1,40 @@
+package sneckomod.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
+
+public class WideAngle extends AbstractSneckoCard {
+
+ public final static String ID = makeID("WideAngle");
+
+ private static final int COST = 3;
+ private static final int DAMAGE = 18;
+ private static final int UPGRADE_DMG = 6;
+
+ public WideAngle() {
+ super(ID, COST, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ this.baseDamage = DAMAGE;
+ this.isMultiDamage = true;
+ this.selfRetain = true;
+ SneckoMod.loadJokeCardImage(this, "WideAngle.png");
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeDamage(UPGRADE_DMG);
+ }
+ }
+}
diff --git a/src/main/java/sneckomod/cards/WideSting.java b/src/main/java/sneckomod/cards/WideSting.java
index a71e98dfa..7e04716bc 100644
--- a/src/main/java/sneckomod/cards/WideSting.java
+++ b/src/main/java/sneckomod/cards/WideSting.java
@@ -1,14 +1,22 @@
package sneckomod.cards;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
import com.megacrit.cardcrawl.actions.common.UpgradeSpecificCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.FrozenEgg2;
+import com.megacrit.cardcrawl.relics.MoltenEgg2;
+import com.megacrit.cardcrawl.relics.ToxicEgg2;
import sneckomod.SneckoMod;
-import sneckomod.actions.NoApplyRandomDamageAction;
+import sneckomod.relics.UnknownEgg;
+
+import java.util.ArrayList;
public class WideSting extends AbstractSneckoCard {
@@ -16,68 +24,65 @@ public class WideSting extends AbstractSneckoCard {
//stupid intellij stuff ATTACK, ALL, COMMON
- private static final int DAMAGE = 12;
- private static final int MAGIC = 7;
+ private static final int DAMAGE = 7;
+ private static final int UPG_DAMAGE = 3;
+
+ private static int SOFTLOCK = 0;
public WideSting() {
- super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL);
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
SneckoMod.loadJokeCardImage(this, "WideSting.png");
}
- @Override
- public void applyPowers() {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_DMG = baseDamage;
- baseDamage = CURRENT_MAGIC_NUMBER;
- super.applyPowers(); // takes baseDamage and applies things like Strength or Pen Nib to set damage
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = magicNumber != baseMagicNumber;
-
- // repeat so damage holds the second condition's damage
- baseDamage = CURRENT_DMG;
- super.applyPowers();
- }
-
- @Override
- public void calculateCardDamage(final AbstractMonster mo) {
- int CURRENT_MAGIC_NUMBER = baseMagicNumber;
- int CURRENT_DMG = baseDamage;
- baseDamage = CURRENT_MAGIC_NUMBER;
- super.calculateCardDamage(mo); // takes baseDamage and applies things like Strength or Pen Nib to set damage
-
- magicNumber = damage; // magic number holds the first condition's modified damage, so !M! will work
- isMagicNumberModified = magicNumber != baseMagicNumber;
-
- // repeat so damage holds the second condition's damage
- baseDamage = CURRENT_DMG;
- super.calculateCardDamage(mo);
+ public static boolean cardListDuplicate(ArrayList cardsList, AbstractCard card) {
+ for (AbstractCard alreadyHave : cardsList) {
+ if (alreadyHave.cardID.equals(card.cardID) && (SOFTLOCK < 100)) {
+ SOFTLOCK++;
+ return true;
+ }
+ }
+ if (SOFTLOCK >= 100) {
+ System.out.println("SOFTLOCK DETECTED!!!");
+ }
+ return false;
}
public void use(AbstractPlayer p, AbstractMonster m) {
- for (AbstractMonster q : monsterList()) {
- atb(new NoApplyRandomDamageAction(q, magicNumber, damage, 1, AbstractGameAction.AttackEffect.LIGHTNING, this, DamageInfo.DamageType.NORMAL));
- }
- atb(new AbstractGameAction() {
- @Override
- public void update() {
- isDone = true;
- for (AbstractCard q : p.hand.group) {
- if (q.color != AbstractDungeon.player.getCardColor()) {
- atb(new UpgradeSpecificCardAction(q));
- // atb(new MuddleAction(q));
- }
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+
+ for (AbstractCard q : p.hand.group) {
+ if (q.color != AbstractDungeon.player.getCardColor()) {
+ atb(new UpgradeSpecificCardAction(q));
+ // atb(new MuddleAction(q));
}
}
- });
+ }
+
+ @Override
+ public void onObtainCard() {
+ ArrayList cardsToReward = new ArrayList<>();
+ while (cardsToReward.size() < 3) {
+ AbstractCard newCard = SneckoMod.getOffClassCardMatchingPredicate(c -> c.rarity == AbstractCard.CardRarity.COMMON);
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ r.onPreviewObtainCard(newCard);
+ }
+
+ if (!cardListDuplicate(cardsToReward, newCard)) {
+ SOFTLOCK = 0;
+ cardsToReward.add(newCard.makeCopy()); // Use makeCopy() to ensure a new instance
+ }
+ }
+
+ SneckoMod.addGift(cardsToReward);
+ ;
}
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeBaseCost(1);
+ upgradeDamage(UPG_DAMAGE);
}
}
}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/Yearn.java b/src/main/java/sneckomod/cards/Yearn.java
new file mode 100644
index 000000000..ba33006e9
--- /dev/null
+++ b/src/main/java/sneckomod/cards/Yearn.java
@@ -0,0 +1,55 @@
+package sneckomod.cards;
+
+import basemod.helpers.CardModifierManager;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
+import expansioncontent.cardmods.PropertiesMod;
+import sneckomod.SneckoMod;
+
+@Deprecated
+@CardIgnore
+public class Yearn extends AbstractSneckoCard {
+
+ public final static String ID = makeID("Yearn");
+
+ //stupid intellij stuff SKILL, SELF, COMMON
+
+ private static final int MAGIC = 2;
+
+ public Yearn() {
+ super(ID, 2, CardType.SKILL, CardRarity.SPECIAL, CardTarget.NONE);
+ baseMagicNumber = magicNumber = MAGIC;
+ exhaust = true;
+ SneckoMod.loadJokeCardImage(this, "Yearn.png");
+ }
+
+ // code taken from hoard but modified
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new DrawCardAction(magicNumber, new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ for (AbstractCard q : DrawCardAction.drawnCards) {
+ q.superFlash(Color.GREEN.cpy());
+ PropertiesMod mod = new PropertiesMod();
+ if (!q.selfRetain)
+ mod.addProperty(PropertiesMod.supportedProperties.RETAIN, false);
+ if (!mod.bonusPropertiesForThisTurn.isEmpty())
+ CardModifierManager.addModifier(q, mod);
+ }
+ }
+ }));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/cards/unknowns/AbstractUnknownCard.java b/src/main/java/sneckomod/cards/unknowns/AbstractUnknownCard.java
index 5e80e97bd..4dd982d47 100644
--- a/src/main/java/sneckomod/cards/unknowns/AbstractUnknownCard.java
+++ b/src/main/java/sneckomod/cards/unknowns/AbstractUnknownCard.java
@@ -17,13 +17,11 @@
import com.megacrit.cardcrawl.helpers.input.InputHelper;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
-import guardian.patches.BottledStasisPatch;
import sneckomod.SneckoMod;
import sneckomod.TheSnecko;
import sneckomod.cards.AbstractSneckoCard;
import sneckomod.patches.UnknownExtraUiPatch;
-import javax.smartcardio.Card;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.function.Predicate;
@@ -31,22 +29,51 @@
public abstract class AbstractUnknownCard extends AbstractSneckoCard implements StartupCard, CustomSavable {
+ public static final float IMPULSE_AMOUNT = 0.15f;
+ public static final float MAX_IMPULSE = 0.5f;
+ public static final float SCROLL_ROTATION_DELAY = 4.0f;
+ public static float rotationDelay;
+ public static AbstractCard lastPreviewed;
+ public static ArrayList unknownReplacements = new ArrayList<>();
+ public static ArrayList unknown0CostReplacements = new ArrayList<>();
+ public static ArrayList unknown1CostReplacements = new ArrayList<>();
+ public static ArrayList unknown2CostReplacements = new ArrayList<>();
+ public static ArrayList unknown3CostReplacements = new ArrayList<>();
+ public static ArrayList unknownBlockReplacements = new ArrayList<>();
+ public static ArrayList> unknownClassReplacements = new ArrayList<>();
+ public static ArrayList unknownColorlessReplacements = new ArrayList<>();
+ public static ArrayList unknownCommonAttackReplacements = new ArrayList<>();
+ public static ArrayList unknownCommonSkillReplacements = new ArrayList<>();
+ public static ArrayList unknownDexterityReplacements = new ArrayList<>();
+ public static ArrayList unknownExhaustReplacements = new ArrayList<>();
+ public static ArrayList unknownRareAttackReplacements = new ArrayList<>();
+ public static ArrayList unknownRarePowerReplacements = new ArrayList<>();
+ public static ArrayList unknownRareSkillReplacements = new ArrayList<>();
+ public static ArrayList unknownStrengthReplacements = new ArrayList<>();
+ public static ArrayList unknownStrikeReplacements = new ArrayList<>();
+ public static ArrayList unknownUncommonAttackReplacements = new ArrayList<>();
+ public static ArrayList unknownUncommonPowerReplacements = new ArrayList<>();
+ public static ArrayList unknownUncommonSkillReplacements = new ArrayList<>();
+ public static ArrayList unknownVulnerableReplacements = new ArrayList<>();
+ public static ArrayList unknownWeakReplacements = new ArrayList<>();
+ public static ArrayList unknownXCostReplacements = new ArrayList<>();
+ public static ArrayList unknownDrawReplacements = new ArrayList<>();
+ public static ArrayList unknownBossReplacements = new ArrayList<>();
public AbstractCard lastUnknownRoll;
-
+ public float rotationTimer;
+ public float scrollImpulse;
public AbstractUnknownCard(final String id, final CardType type, final CardRarity rarity) {
super(id, -2, type, rarity, CardTarget.NONE);
tags.add(CardTags.HEALING);
purgeOnUse = true;
cardsToPreview = CardLibrary.cards.get("Madness");
}
-
public AbstractUnknownCard(final String id, final CardType type, final CardRarity rarity, CardColor color) {
super(id, -2, type, rarity, CardTarget.NONE, color);
tags.add(CardTags.HEALING);
purgeOnUse = true;
cardsToPreview = CardLibrary.cards.get("Madness");
}
-
public AbstractUnknownCard(final String id, final String img, final CardType type, final CardRarity rarity, boolean IsClass) {
super(id, img, -2, type, rarity, CardTarget.NONE, IsClass);
tags.add(CardTags.HEALING);
@@ -68,40 +95,48 @@ public AbstractUnknownCard(final String id, final String img, final CardType typ
cardsToPreview = CardLibrary.cards.get("Madness");
}
+ public static void updateReplacements(ArrayList> funkyPredicates, ArrayList> funkyLists) {
+ boolean validCard;
+
+ for (AbstractCard c : CardLibrary.getAllCards()) {
+ if (!c.isSeen)
+ UnlockTracker.markCardAsSeen(c.cardID);
+ validCard = !c.hasTag(CardTags.STARTER_STRIKE) && !c.hasTag(CardTags.STARTER_DEFEND) && c.type != CardType.STATUS && c.color != CardColor.CURSE && c.type != CardType.CURSE && c.rarity != CardRarity.SPECIAL && !c.hasTag(SneckoMod.BANNEDFORSNECKO);
+
+ if (AbstractDungeon.player != null && validCard) {
+ validCard = c.color != AbstractDungeon.player.getCardColor();
+ } else if (AbstractDungeon.player == null && validCard) {
+ validCard = c.color != TheSnecko.Enums.SNECKO_CYAN;
+ }
+
+ for (int i = 0; i < funkyPredicates.size(); i++) {
+ Predicate funkyPredicate = funkyPredicates.get(i);
+ if (funkyPredicate.test(c) && (SneckoMod.pureSneckoMode || (SneckoMod.validColors.contains(c.color) || (AbstractDungeon.player != null && AbstractDungeon.player.chosenClass != TheSnecko.Enums.THE_SNECKO)) || i >= 22)) {
+ if (validCard) {
+ ArrayList s = funkyLists.get(funkyPredicates.indexOf(funkyPredicate));
+ if (s == null) {
+ s = new ArrayList<>();
+ }
+ s.add(c.cardID);
+ }
+ }
+ }
+ }
+
+ // Sort the card lists so the preview shows them in order
+ for (ArrayList cardList : funkyLists) {
+ cardList.sort((lhs, rhs) -> {
+ AbstractCard rCard = CardLibrary.getCard(lhs);
+ AbstractCard lCard = CardLibrary.getCard(rhs);
+ return (lCard.color.name() + lCard.rarity.ordinal() + lCard.name).compareTo(rCard.color.name() + rCard.rarity.ordinal() + rCard.name);
+ });
+ }
+ }
+
public TextureAtlas.AtlasRegion getOverBannerTex() {
return SneckoMod.overBannerAnything;
}
- public float rotationTimer;
- public float scrollImpulse;
- public static float rotationDelay;
- public static AbstractCard lastPreviewed;
-
- public static ArrayList unknownReplacements = new ArrayList<>();
- public static ArrayList unknown0CostReplacements = new ArrayList<>();
- public static ArrayList unknown1CostReplacements = new ArrayList<>();
- public static ArrayList unknown2CostReplacements = new ArrayList<>();
- public static ArrayList unknown3CostReplacements = new ArrayList<>();
- public static ArrayList unknownBlockReplacements = new ArrayList<>();
- public static ArrayList> unknownClassReplacements = new ArrayList<>();
- public static ArrayList unknownColorlessReplacements = new ArrayList<>();
- public static ArrayList unknownCommonAttackReplacements = new ArrayList<>();
- public static ArrayList unknownCommonSkillReplacements = new ArrayList<>();
- public static ArrayList unknownDexterityReplacements = new ArrayList<>();
- public static ArrayList unknownExhaustReplacements = new ArrayList<>();
- public static ArrayList unknownRareAttackReplacements = new ArrayList<>();
- public static ArrayList unknownRarePowerReplacements = new ArrayList<>();
- public static ArrayList unknownRareSkillReplacements = new ArrayList<>();
- public static ArrayList unknownStrengthReplacements = new ArrayList<>();
- public static ArrayList