diff --git a/pom.example b/pom.example
new file mode 100644
index 0000000000..8da2d3c0d5
--- /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 caa26f6ffe..0000000000
--- 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 84689b733b..202317fdef 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 5d35a064c1..3a62f6b564 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 98dccdb7d5..dc19568d2e 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 205131d381..5d82eaf26a 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 6de4a8f731..e462f0d3bf 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 a4806361b7..0c864b6f66 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 44e6a70797..8e8490eed5 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 ac5abdc850..fe89a4b7b6 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 b42e788b4e..df1e4556f9 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 0449fc1c55..9c2bd8c724 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 a0bbaaf818..de496a0b57 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 27cd1a8107..88005efe3d 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 88afab87b8..527e8f016a 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 358ef09861..83acd3c1e6 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 59c19db0b7..685eb5439c 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 4bad8e3dbf..220a407d06 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 ecf17a327e..e0f4f35af9 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 dd77d9c788..daa414d391 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 9b2765f4c9..74617a8ee1 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 07be5379e0..1dbb46ac06 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 91558ffd8e..d2e2cf6a5c 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 d748c24794..e712679329 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 58d06ebdfd..08b5349c13 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 902a5cc409..4bd39ea14e 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 e66aaf0af1..4bd874cc4d 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 3d396eabb6..e94b9414ab 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 5d8c20bb72..38ef802d28 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 f213a5c025..86d421a8f3 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 9d410c2c4d..d95b813cc8 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 00c6a0d95e..739687809e 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 9a9fc58161..4c00029b14 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 655b3edb27..4a54aaf998 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 a3944a4012..5706cabfec 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 d3dab71d9e..50f3263150 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 c4e845646e..9c542db0f8 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 d0062097c7..260bfbfe5c 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 791264f938..55c7a74809 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 72264c57b5..8493a4b004 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 b7d7c30159..01d9e82a8d 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 fecaac1c4c..af76067bb9 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 0522838b22..a7514e15ba 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 791b15f0d1..4dcf8b3bd2 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 cd88d4a7cf..51ece75fd1 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 c6bd06f19c..f5e8237a32 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 fa76cb8d1b..5a01b98292 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 c24a3fb80e..dcf171eee3 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 c9011fd094..11e33eca5e 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 0000000000..81fd900a2a
--- /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 d66dd2e13c..ef6c2738b2 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 42ed18723c..50962371c6 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 1a9cc4c95e..854fe84a48 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 e9b542f8ba..2159ebc1d3 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 65548f8fea..326b544134 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 e5def7e19a..7ac1c8e2b9 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 5e0395e195..3e5b367a99 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 d7c492c179..67cfee8c2d 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 f58c918ced..de45270767 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 85db1fa48a..b04daa29c8 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 4513510187..8e60b4af94 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 3c2fb14255..c0b9fdbf0e 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 b3b42e9037..2363490709 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 d6ab08ef06..1cbdcbc3de 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 309507a38c..dddb0298e4 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 19f4f9bad6..181f8d1cf4 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 91a82ac495..1f4c865e6c 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 de2817ebab..6e81bd4995 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 c5a9234b56..09fc441a78 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 c771aad223..4843c543df 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 04890aee72..3452db76f4 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 8b49e4e176..f9386868cc 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 8e7562e54e..b6bc7b719f 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 f759d0809c..597a1b6c0c 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 1f5c3d0a04..bf01e39cc2 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 b1856e81d3..565eb40a9c 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 19ec9fb0b4..fc23ccce2b 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 d7d43ec4f1..8fc5612746 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 a74d9a5075..89adcee434 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 491c1ae83c..2cd2e10003 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 1bd9cbc81f..481d51272d 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 0000000000..c0e191c2dd
--- /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 f7d79830a2..397181c298 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 9acaaa8762..ca36f62233 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 4023d4cd3d..6417f65b39 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 f2f14d10ad..b63c8b3b29 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 8e9bee0532..66b1d74200 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 b85c9876bf..6ac6e9994d 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 4bfdf6106a..2697864ead 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 e896037f59..e03cfa1013 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 8089a6699c..9a6fc12a58 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 0063fada77..530b1812a0 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 f45436e61a..dadc7b05cc 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 0000000000..eafbe47cdc
--- /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 0270ef5994..c7dfcda3af 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 edefa83da7..83a53dd67b 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 4b4bb3a538..defaaa54bc 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 f19700d4c3..ee4b95d177 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 51e527b5eb..6414f7246e 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 9a53285f83..13425f499e 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 63cc7c0dce..84ff7f8e04 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 02e96bc59b..ee352c9f6c 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 1513951830..bdf84b65ee 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 ab6448e8e7..9ffbd779e9 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 0000000000..7cc3ff5982
--- /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 cbece2c182..e0a5e40fd0 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 f14dbda52b..85cb707345 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 0000000000..d295b7fcf3
--- /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 424128a0bd..3ac723ed08 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 c6e4d0d426..99bc18ed1a 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 28ed1dbaf2..77b5c9dce2 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 b1dfe27388..9d7603489c 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 0747a52a25..89eaf66097 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 28d46f4739..f944bfbd9d 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 bd5783da7d..a0e03a9d6e 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 35280de235..a7b9eb0898 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 0c488d00c9..c7db0aa834 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 2db4ba2b96..f1023735b9 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 3c7118057f..3747b2168b 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 0bc9bd3bd9..bf3b69bea0 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 7203511032..0d40045f2b 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 cbf1fb9af3..41e2057b65 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 ed747cc5e0..02cd4a490a 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 d2d8c0a870..c649a772a4 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 fc014f72c5..e3f502f561 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 6558ccd977..a54bedf969 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 59976623d3..46e3a36184 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 5788016054..468fd4708d 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 0000000000..0d12768fcc
--- /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 8f4a0980f3..471fd61423 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 0000000000..254088b252
--- /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 254e93b4e6..a56a489e8a 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 0000000000..88595c48a5
--- /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 ebc5920145..76c580a4ac 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 b828a4d27f..524eabc8a9 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 0000000000..fe19245767
--- /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 12e432cf8f..e9045d5d36 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 30a631febb..111161efb2 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 c5d1117d2f..89cf0968d6 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 3b5417299b..722e75b220 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 8a27884656..da00338a28 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 043367b03e..863372d030 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 f4fe6eb6ae..418a84b069 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 4fa37a18fa..934eaf0c06 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 a2a0d5ab1d..ca3ea5548e 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 dd53fd391d..a9a0de968b 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 8616662114..a85859f4ff 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 cffd46023a..614bcf5da3 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 38e582d3cb..ae9097ff86 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 0000000000..84c1227249
--- /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 3d7b6ba6c4..d5cb20d621 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 49ce8fff62..ba09a2a72f 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 0000000000..71f2f3e24d
--- /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 0000000000..431a63541f
--- /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 38a4abd978..4dc1ec0795 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 78cc566936..2ed5cc3c3b 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 20f5ed2517..9e0a2a7816 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 0000000000..064a0d8715
--- /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 0000000000..e73642c84a
--- /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 ad5140cce5..06ec13cb8b 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 0000000000..8993a1b282
--- /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 f21033c122..05efc0336e 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 ec818a647d..05729c506a 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 fa43325786..551915d0fc 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 41682923c8..fd19b20d4f 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 fb618c953b..6c1b60c0fa 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 017a8d536f..f1e75be601 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 ac6d1316c2..e2ab37974f 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 eb0984832f..861b82a0bf 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 9a408c7077..fb219d826b 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 8468e486d8..a66674f858 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 154668feb9..e2008c14cd 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 7cf05acb62..7ef5e5a268 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 b99896da71..a3c8d87ece 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 ceaf54584e..4205502e27 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 f1782f87a0..e77dfd3198 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 bdf358a5d7..6542e440d8 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 d99a8566f9..120235cda1 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 e4ff04c918..25accdc9d4 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 0d23b66e4e..549ae4bd31 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 df7cdbb448..4d6ffe521e 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 bade643e6a..4ec49280eb 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 d3589333c9..35c3e294b0 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 bb9c7826f1..c7d697a0aa 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 d3b833d574..f055658e59 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 e9f35c68b8..69718f6ce5 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 9b60124c7a..a164267974 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 7f17b0babf..40815c4671 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 d22ec80194..0e46a1f37a 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 197792caa9..badf4b9681 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 7e53c23236..881120ed02 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 37c377b557..d7eb4e2d0d 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 1e2b53a8c5..acc0f334ee 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 64a584312b..3ecc48c410 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 1a3bad59b2..ab81cc879f 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 01641844b8..b58587209e 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 48f72a56c1..4dc0e2fe99 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 a21d324385..69c18d8a95 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 b53cd9dbe5..3c2f760618 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 69c2eb3376..fc26524de3 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 dbe775ae57..184724628a 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 6fff104e41..4a92c67f43 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 d961e798f2..be2448eca0 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 ac84ff89be..6d301e406d 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 a98d5413de..b8d70e034f 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 2f395616e3..db212a3ac4 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 d6292f174e..473b48e113 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 5bb8afc5e1..b8cf071d16 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 b02016809e..931c549d31 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 fce9cfc4f5..84bcad8442 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 a3c6c1ffec..024f766af3 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 d5ec5ff8e8..9268a77411 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 b1f18d3675..c55bfeb280 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 0da4f443fd..bf8efc906a 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 cc156d63db..bcf9a37339 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 ed6d8a0e73..8eb0174977 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 690eeea0f6..9eb53cb1bb 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 4f726b3192..5e3e9d53cb 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 e3a0e183e2..66b3915522 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 ad00ccf1ab..75fd42ba7f 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 4e6638ba22..8a8b072256 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 d7cf212395..7063c36f32 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 432ce81dbe..627fe2141d 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 d2fadf7368..b1f6f043f5 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 12bd4a6fa0..19cbf21e13 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 26613624ca..f7ddb066c7 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 ff3ae90439..575a33d062 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 c1117caa9c..b40ba5c010 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 af548bd1d1..cf5d1953d6 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 d162966cd6..517a59198d 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 0a5c584011..e82d124bdd 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 64c76f91f0..d2decc6c0c 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 2a6593fadb..eee05bb0ec 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 7ed96a205f..0bb418dcaf 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 350f6e3724..c88433c197 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 80389c7f86..b825689473 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 dc8d83ec37..24730eb10c 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 947e704506..71aaf604db 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 e178e664e1..f86c600e6f 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 2f6023fdba..2c67318426 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 7ae4ee3878..56fd7f63fd 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 de146b43bf..9aef93510a 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 efe680e03b..d03a50a664 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 41f64a79ec..c60464efd3 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 72a58b1a48..cada35714c 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 39bb24500f..0887b04a50 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 1455b2e4a3..b9e2ed98a3 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 36262eb489..3dab233759 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 38ef18955f..d818b2118c 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 c6bb0aa782..b6f9c59a2e 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 8d687503bc..32f10b43a7 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 60a25c04b5..36f54e6cf3 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 60c49a9215..eab930ec7f 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 d0a26e6786..953739a505 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 5380b5bb6f..2dd2767fe9 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 9d7c6e32a9..3a84d3cf68 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 d5ee2e6158..c2a599fd84 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 2b5edd90d9..38f859a425 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 7e52acb052..c68c97359d 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 3532684d8b..55457c7ffd 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 5de15a25a8..044f187072 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 cdd0e4f98e..1d9265edc8 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 a733879e1f..30f521515e 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 e55835f5cd..fe966784e9 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 40ac7b915b..f3d2a9cbdb 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 6286f7d038..4f3a9be61f 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 d51f8f3a6e..5b50258c9d 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 e86633584a..3b0806ade9 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 dacb4f6bbd..8a61128df4 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 e207857192..0b1c6dbab3 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 c861a723ac..31d31f1e2a 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 d7c2221436..3f7c48bd10 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 ebe5290541..242d199c77 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 2ca39b3689..1132e5be06 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 a6154253d2..3ed4ad8121 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 92027b8593..c3c4440fce 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 ef987f58ae..e7d01632c0 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 ea3d4b0b30..0b823ff906 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 46cc0f04ec..0d39447fc5 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 1443f299f5..ea5d3730b9 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 149cbc8a28..e442084ed6 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 538989366b..8038526bec 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 c00242a6b6..6d63a70f8e 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 2e3439da99..981277f0f6 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 22a9f29979..9c6f2ffe18 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 8537eea28a..e1972d0e05 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 32cb31ed33..ee4905c970 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 292b1d49f5..3b81a0d122 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 26d5a25a8b..434f0f7181 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 1cba35b405..1067ceb61f 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 03b2dfbe57..108b7c8808 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 d0a9149195..ef9e2ddd06 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 2dce28b100..5fa57bf322 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 c06a9ac507..e200eba84d 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 c0ecba74cb..39deeb58f7 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 4728b0c836..8cd2220e2c 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 60f1b772ca..db5e59aee4 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 0000000000..3be5c63a65
--- /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 c85a1fbf23..682c50d664 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 b8d07942d1..45d19685af 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 b950886567..85ff561660 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 e8e448960c..d6c12268d5 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 e3225fe523..b9ab7c32f9 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 bca017c889..4572944f4d 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 9531e04203..dbcad3e9c6 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 10cf63d2d7..ca6e24a27c 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 6d02122509..58666e2b95 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 c86a4785a0..2bd41ae2b2 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 2f3ae9c3f8..2c3c433a48 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 8a689a3482..7a441a4814 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 5838fb79cb..d8d76764b4 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 4c4629038a..5d684d69e5 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 fa3f098cd5..6bde00a8a5 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 aba58ceee9..f780e7d83f 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 5a6dd90131..ea7930455a 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 1fb8dfcb90..573cff15e1 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 e1177442eb..ad43d3483c 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 d0ad51034f..89db651552 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 cf037eb486..aafb986949 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 fb1ab82944..7e28ff9678 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 0231d1fdaa..416d0628c4 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 e4a70a0f0b..5fe7c8f31b 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 4b0f102f2e..6d16b2960e 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 3bb45d118c..95069e6a55 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 15ad54a089..4302e27245 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 52caa2ffb5..6527fe7548 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 1f33753b8e..2052298d20 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 fa9c1911e5..700ab5dbdb 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 4e00e70ac9..bee017f487 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 a52a363ee6..0e6dd35807 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 0000000000..91aa913093
--- /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 0000000000..d605e82194
--- /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 0000000000..c54dc71993
--- /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 1da78aebc2..63520f84d1 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 01a28248fc..87447ef0aa 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 ca69a3ddc7..d0e8857150 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 efff7c1c71..068914335d 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 1a8f64018f..3e0ec11769 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 0000000000..2f5ed3d6ec
--- /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 58302a79af..39282a7006 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 913ec8f687..22cf21d026 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 a5bcbc1f9e..aac6512886 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 40b633a7ef..fdf03ca119 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 0000000000..5a14d84863
--- /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 0000000000..0498267d86
--- /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 d082663e28..3b7e2f19e0 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 089dd12e69..4f10daf85f 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 2f0e1c46a4..7a97df7855 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 1e7ca3ea36..e8ce07c705 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 1c1799bf81..952415d62b 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 0000000000..258b3f96c0
--- /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 0000000000..791307e6ee
--- /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 0000000000..8a7901b326
--- /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 0000000000..4486b5e01a
--- /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 0000000000..74192fb718
--- /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 7ca066a193..5471f4229b 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 075368b7cc..2d21b74414 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 0000000000..f6c3490ab8
--- /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 1d5ed2b9a3..534cf180cf 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 0000000000..ef88d896a7
--- /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 0000000000..9b07b23d1c
--- /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 0000000000..58ed76c41b
--- /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 a2560622d0..a7b942ad09 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 cbfe9b576a..4fac405edd 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 7b552443af..dea7fc7358 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 4278fa4264..95b3bdaed4 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 775bad848b..96292def4a 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 0000000000..668fe13493
--- /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 0000000000..f60b12072c
--- /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 0000000000..b9a2d4356d
--- /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 079575cb58..62355b7d1c 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 621cc46914..e12299101a 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 d2acbfddf1..b6ea4c936b 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 0000000000..71991160a1
--- /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 0000000000..edc104509f
--- /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 0000000000..da947be53c
--- /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 038f7feadb..fe5e625d75 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 0000000000..0a50d89847
--- /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 103c4833c3..5b9fbbd743 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 a6553552e8..741f77af6b 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 91790dedb1..8f948d4f9b 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 4598554efa..e34fa4728c 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 d1fddf5da7..953cd35ea4 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 0000000000..9d58284871
--- /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 0000000000..77eef538ee
--- /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 0000000000..c9ce7a5a8a
--- /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 45d55d2901..0000000000
--- 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 2786c00139..ba06ac922f 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 0000000000..655c8aacc2
--- /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 4c6a48963e..634845a593 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 891627f6fa..7af1b8b695 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 0000000000..42fd64ebfc
--- /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 0000000000..04b989ee51
--- /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 0000000000..6fe496bce0
--- /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 0000000000..d7dc0a8c5d
--- /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 0000000000..5c191ef271
--- /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 0000000000..bd7c1a348c
--- /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 0000000000..c67fbfbca8
--- /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 0000000000..ad76ad3f49
--- /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 0000000000..c3c1b2d35b
--- /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 0000000000..73e1f837e8
--- /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 0000000000..acbb5e5ff4
--- /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 83c98f32c6..fb80250deb 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 aeb909b1b7..0000000000
--- 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 ce5133c7d7..0000000000
--- 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 b2a7384ba5..0000000000
--- 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 9175c03dff..e97fb22149 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 2ba8d99f36..0000000000
--- 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 0ebbbc3fb1..0000000000
--- 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 85936aa9d9..e8cc19fc53 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 7f4855977e..d15ce691c5 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 0000000000..417c8c4c78
--- /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 0000000000..46b92bc431
--- /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 0000000000..1222993a2b
--- /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 0000000000..c1618835d2
--- /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 0a123ae32a..969ac02142 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 6df7b2331c..f493d8e2f9 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 3050448400..ebcda8b5be 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 388588121e..d4b8a26767 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 f6d3cd6959..7dae122884 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 04c48fc90a..39fd40bf47 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 63bd2ab877..29d81f4de8 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 b75287fb92..d60223d378 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 fef88f2e0d..383671f4a8 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 626337f7af..164acdfcae 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 a219ad56bb..53c46e0254 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 ca4a1ca4b5..e5dd62efb4 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 bc0e4e7b43..c13309547a 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 eb4c5b96c8..d396ea6fad 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 df23db363d..75cccd608a 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 2ae4efcd35..6ec46368b1 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 99cd5d4b90..4a7e638d65 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 fc19aff313..c96c9ef449 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 2902688194..58fceed5ef 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 ee208a1afe..61a2188c3d 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 0d54b77c45..f939f29a85 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 827d3cec3b..630d790d8b 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 e08f5008aa..30eaffb413 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 eeaa71cfdb..3b3b6d6429 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 987993615f..e9b73427bd 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 54583d0460..65f48f7cd5 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 d904ac53ce..e185137ad0 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 e4a8099f4e..c6f2d14122 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 f0f69b2978..8ac79a8f12 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 cec499d559..ae71d7cc87 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 9774d16f98..0a35384939 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 2bad36b60f..473f65d95f 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 9050366ec9..efd4af090d 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 2a0253b40e..973a50ad01 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 ef6722e1a3..4995f647b3 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 992aa98829..9acd832278 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 5b6dda159b..35914a4fb2 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 cfff00c40a..ecb1b5a69d 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 9b1f8e51ab..6ff480b3ae 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 8615c39581..b67b2d83c5 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 8e1e1edb5f..5139244d80 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 b012b6f196..49e9971c8f 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 a62d0f98d5..2512d2619b 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 7531fd91d9..73cbbb040a 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 6d45c8d260..7ca7d878f3 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 7635e51928..3fa4c71f41 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 291d77455a..3ad25d7899 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 8c6aacdf92..8544a880cb 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 0000000000..3ebec1fdb6
--- /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 1db793e3ba..d9b9ea5b68 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 015dd22ce5..968ce5ab90 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 2466d19326..89d23be0fc 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 7a31f84409..8e96609d0d 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 e9270b2222..7ea3ac2e34 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 3db29c8daf..a3800f5046 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 c23dc86a79..a0ced8543e 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 06419d751a..b4a995ef38 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 877282d180..f760ace71f 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 088be48085..18d2fcb40f 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 bdd07338a2..6216f705ff 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 a7d2a919f1..a4732937b0 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 3a1c8442ba..1e86fdb663 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 194af614c0..de728b4597 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 3467767244..505fe93161 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 b1a81239b8..ed2620a116 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 388eb84b87..47506ab533 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 fd312b464a..8cb27b5705 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 bcef66384a..a3985a4f9e 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 2ebf429871..2a3ba704ba 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 cd96009ec4..088be64cc7 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 ecc8ff6e65..09a2bdfa58 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 3e88d1b90b..2ea6c8317c 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 4856102d3b..7bd7db69f4 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 b9ded72969..ce80c143d0 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 d4eb525dee..2554b4be7c 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 7c057bf368..ec8ae0160f 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 bd98806505..d178625a4d 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 89fd8fd497..a0416d671c 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 fd0d1209c8..8c854efe70 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 76c154b7f3..3a7c13477c 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 57c36d5191..1c284e570a 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 e9e0b02d3b..51bcf9293e 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 6c44c8a62f..aca494e772 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 b089dce3b3..cee34c6523 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 8af11e2667..c7c2a243b7 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 b50b5b8009..78a87b406e 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 e518b5bb6e..696c49cfef 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 e3befbfbee..d33fedc486 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 67743124ab..412e532fe9 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 705c8d03e9..173fac988f 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 4df8100fb6..7ac0e11376 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 faf6b50c05..23db49bc83 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 4c23221d71..e828222c85 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 00259c82e6..a6b98af69e 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 e7b40e217b..0de6997221 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 94d5f5a604..355219a59a 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 db6641b78f..1287478a0f 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 564e67bf99..ad65604f20 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 70b9bdd3f0..852cf8850f 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 314695959b..d9dcfd624c 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 f8e81bf25e..6e283145de 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 1bf65b5beb..8f144deed1 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 3eada92420..e2c1ca6a04 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 4662f8c055..74b7e491c8 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 a8b0190339..5db26f4f9e 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 812946fd03..6ea0b7a696 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 08091632c4..1d974407e2 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 89c5ca517b..5590f714e2 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 55b4461b7b..924405f8eb 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 41d748c53c..551aa8641c 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 f564e701ba..cf705317e8 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 a5df0a0a77..b9587fe5fc 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 e4c76ac32b..f61510be94 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 511b4f8a26..cd3b7bf27e 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 ee8e288cbd..3a3887f3c3 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 446856cb83..b15f5945a6 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 b3bb810da0..fdfe0a28bf 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 db16b72820..0d52ae8ff8 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 41a31a90bd..edf051165f 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 5de897f1af..0000000000
--- 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 1ac9c3ccda..411310e77b 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 45825da74b..e6866fb8eb 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 2f3695c4a4..cf6d0e4676 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 bbe08b4195..b514e22207 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 41bdd8ca14..bfaec69e1b 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 0000000000..0c2521b51c
--- /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 2ea8ae822a..523f772abe 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 23efd5e70a..35d6d494a4 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 8edd6b4d93..aa43697e44 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 1cf27b284b..8100f24e81 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 7f64831913..02dd6c2160 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 99df0800d7..f83a173f50 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 d780bf397b..65a97d9a4b 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 2580cc3d6f..01cabccbd5 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 31bf061f73..4c85b3241f 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 a86e6adc10..bd690e2ec1 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 7505b87f2f..30c700955e 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 6b2a6081d5..274cb76f2e 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 9f5f78e202..a23227fe0c 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 d869e52e70..c49a17ef96 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 3680490a16..09124b9b9d 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 6a1c831042..c4e2eb8114 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 6cbe1fba12..45efcfead3 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 96ff154f2e..86cb54b511 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 328a60d982..b2369fb5a1 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 4db0dae4c5..78158689de 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 19987752ea..1a6ba6ec90 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 27bfe7934a..4033a517d7 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 0000000000..f2d9ef2576
--- /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 90f70d14ad..13f0c2f39c 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 f49f62d34a..3f69c24be7 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 f37cda5181..bad22e3fef 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 bf838d9a01..108221cb5f 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 2556671a88..94a041c814 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 317a80c498..4efdf9c0cd 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 2463b9199a..69e0cacc76 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 caa740cefd..e07314ce5f 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 d6013cecd6..b4f6cfa234 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 ca59673ade..ae15943257 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 449857bae0..db0e5cbcf8 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 d735a9c7ac..e30ded9cda 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 7eec9a10b6..b6bd920341 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 b1aae0dc30..621edee7ba 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 5cb54e2a41..a669b379a3 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 1a56904888..9101daebae 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 12a970c1da..401e75e42e 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 b673ffa28a..877621cc5e 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 2b6bcc260f..09ce33ace0 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 5155352c84..b3c47d8a72 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 2ec58fdb6d..a1acc33f6a 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 ac89491761..b65edaf9d8 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 86ffbec3ec..de1e93e627 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 3ef6f059fd..88b4ece6ee 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 5c84d38162..33f5c5f171 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 115e363a8c..d91d42ee06 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 3a069bf58a..1aba14af96 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 f3bc03db02..c2852a9aeb 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 6d0f5270cb..47e5352d54 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 bd37baf0d6..aa4d419c7c 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 afd068512b..dcea2c1ca5 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 494581ecb9..b9793a5ccd 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 c514cbf013..24d8047f79 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 f5a5c118c3..c77821453b 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 ce271aa361..93c04d3289 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 357f88b767..dfb30ab3bf 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 a20f7d2cad..8a986ba1a6 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 c9c2e8577e..83fd65f5c1 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 226de3bb2c..206b249d15 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 975616dd15..22c64c5816 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 a95da1e5cb..f01a4bd8e0 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 69b8fb5b34..013b592df8 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 69d9f87601..2e3fa55e4f 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 b97b34fa29..9278b30e44 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 0000000000..4acb666a38
--- /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 46fd71ae45..c890c21d5c 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 0000000000..01a5cbeb4f
--- /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 0000000000..e9722005f9
--- /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 7b20090df5..409c0c884c 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 d0ac07872b..0000000000
--- 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 2f12207bf9..aa4ba3cca9 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 a5f372ffe8..e5af17fc4a 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 0000000000..3a84634d8d
--- /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 4ac88b9aa7..a01d44d3ce 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 6ee3921afc..0000000000
--- 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 521ef5c043..96dc964998 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 8f07c2d185..0000000000
--- 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 2da5adb4bc..0000000000
--- 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 886d774514..e24fa2cff3 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 318badd288..0000000000
--- 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 0000000000..003a51c5ad
--- /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 5a3be685f6..3def4804eb 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 0000000000..0702792855
--- /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 0000000000..8c37cd2581
--- /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 0000000000..9e4bdd3fd6
--- /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 0000000000..db3511e47c
--- /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 0000000000..d1844fc683
--- /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 0000000000..368408318b
--- /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 0000000000..08fba5ee1b
--- /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 87d430c4a2..5c57e79cab 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 f267fcb05c..157e5dfedb 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 0000000000..3a58a791b3
--- /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 0000000000..61c6e8c925
--- /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 0000000000..6550a3c05c
--- /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 0000000000..0a676eb046
--- /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 eff998e75a..af452cb26c 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 0000000000..bf6e0e5d3f
--- /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 cd2b7937b0..86e18ebfc1 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 b88a5ef99b..0a1ad8d807 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 eb69f0ebf0..5a996d054a 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 833828590d..da6bbdfc08 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 0000000000..0285d3b57e
--- /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 0000000000..43dac128be
--- /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 0000000000..1881c49178
--- /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 0000000000..113de80bf1
--- /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 5de27a90ad..7d35e691f7 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 0000000000..9ee209f162
--- /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 221093579c..533f9081bd 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 0de5c230c2..b84536d890 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 0000000000..05fead4f61
--- /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 dab14f1dd5..27da2c1556 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 0000000000..5853f6e2d1
--- /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 0000000000..1c178dd36b
--- /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 0000000000..fd6164e1d9
--- /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 0000000000..ce39a1a383
--- /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 0000000000..b1e3bdbb79
--- /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 0000000000..24d91849c4
--- /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 0000000000..93ebe3602a
--- /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 0000000000..b2aa1910fb
--- /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 0000000000..777018cd8c
--- /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 a66a0630b9..5200e14893 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 0000000000..56105dbd97
--- /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 c64d67672f..0000000000
--- 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 0000000000..6a8299d042
--- /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 0000000000..8aa2c07c49
--- /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 9143bed38f..c27b0a964f 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 510f77a3d6..0000000000
--- 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 dc942b99a9..485219872e 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 735afffbc0..95d06cbb00 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 0000000000..3c26d6893a
--- /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 0000000000..769f9d6503
--- /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 0000000000..f387c7c8be
--- /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 0000000000..22235689af
--- /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 0000000000..07022d71b5
--- /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 2fd9e4058c..a465f9988f 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 ad05965117..23bebbbe84 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 293427268b..09b72fe7c1 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 b2ec76f5fd..e05c9e1033 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 5551ff5750..08ad27c78a 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 0000000000..c3cffce353
--- /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 86d19adf94..c27b0a964f 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 0000000000..a07187ebc3
--- /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 0000000000..70a544e8e8
--- /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 0000000000..b12d89b2d8
--- /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 616a83d606..d6fb4a4d33 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 ed8d1cb028..31aa71a3cf 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 0000000000..5ae9a3fd65
--- /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 0000000000..453fe78208
--- /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 0000000000..b1e37318c3
--- /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 b30a14903c..0000000000
--- 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 0000000000..f03b382f0c
--- /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 0000000000..f9cd5297e5
--- /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 427904c967..c27b0a964f 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 69998f0646..0000000000
--- 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 b9d22334c2..ee0b88af4b 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 31235b7d4e..c27b0a964f 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 614d74258c..f3d6472b12 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 62859dcec4..dcc2b15898 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 41d56784e7..97a642cc1c 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 837b0d3f26..36c08fc3a3 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 0000000000..4f664d7525
--- /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 0000000000..6b66f4aaad
--- /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 0000000000..542335856f
--- /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 0b2778db52..d657cde0fd 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 0000000000..479627d9ec
--- /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 675d480e56..a8c83eeb9d 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 0000000000..64abf23832
--- /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 0000000000..0e840eb509
--- /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 8bee69807f..3c864b1b92 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 12afa25b94..2113481e39 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 0000000000..deefd5fb85
--- /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 0000000000..fd99d1ea7f
--- /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 0000000000..480109c7fc
--- /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 a71e98dfa0..7e04716bc4 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 0000000000..ba33006e9b
--- /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 5e80e97bd0..4dd982d47d 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