diff --git a/pom.xml.example b/pom.xml.example
deleted file mode 100644
index caa26f6ff..000000000
--- a/pom.xml.example
+++ /dev/null
@@ -1,142 +0,0 @@
-
- 4.0.0
-
- mod-group-name
- EvilWithin
- EvilWithin
- 0.1.0
-
-
- Downfall is a full-featured Expansion for Slay the Spire, including a new campaign, four new heroes to play, new relics, new cards, new potions, and more. \n \n The Heart demands that this endless cycle of slaughter be finished. Answer the call as a Villain, and see to the defense of the Spire. \n \n This mod is a combination modpack which includes the former mods known as Slimebound Mod, Guardian Mod, and Playable Snecko, along with a ton of new content, a new character, and much more.
-
-
-
-
- //Change below line to your Steam installation directory
- D:/SteamLibrary/
-
- ${steamFolder}steamapps/workshop/content/646570/
- ${steamFolder}steamapps/common/SlayTheSpire/
- 2.0
- 3.8.0
- UTF-8
-
-
-
-
- com.megacrit.cardcrawl
- SlayTheSpire
- ${SlayTheSpire.version}
- system
- ${stsPath}desktop-1.0.jar
-
-
- com.evacipated.cardcrawl
- ModTheSpire
- ${ModTheSpire.version}
- system
- ${workshopFolder}1605060445/ModTheSpire.jar
-
-
- basemod
- basemod
- 5.17.0
- system
- ${workshopFolder}1605833019/BaseMod.jar
-
-
- come.evacipated.cardcrawl
- stslib
- 1.17.2
- system
- ${workshopFolder}1609158507/StSLib.jar
-
-
- actlikeit
- actlikeit
- 1.0.0
- system
- ${workshopFolder}1934902042/actlikeit.jar
-
-
- com.megacrit.cardcrawl.mod
- WidePotions
- 0.4
- system
- ${workshopFolder}2368513093/WidePotions.jar
-
-
- quickRestart
- quickRestart
- 2.0.5
- system
- ${workshopFolder}1805046408/quickRestart.jar
-
-
- chronoMods
- TogetherManager
- 2.2
- system
- ${workshopFolder}2395241968/Spire with Friends.jar
-
-
-
-
- ${project.artifactId}
-
-
- src/main/resources
- false
-
- ModTheSpire.json
-
-
-
- src/main/resources
- true
-
- ModTheSpire.json
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.3.0
-
-
- **/*.psd
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.7.0
-
- 1.8
- 1.8
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- 1.8
-
-
- package
-
-
-
-
-
-
- run
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/automaton/AutomatonMod.java b/src/main/java/automaton/AutomatonMod.java
index 84689b733..202317fde 100644
--- a/src/main/java/automaton/AutomatonMod.java
+++ b/src/main/java/automaton/AutomatonMod.java
@@ -139,7 +139,6 @@ public static void loadJokeCardImage(AbstractCard card, String img) {
ReflectionHacks.setPrivate(card, AbstractCard.class, "jokePortrait", cardImg);
}
-
public static String makeCardPath(String resourcePath) {
return getModID() + "Resources/images/cards/" + resourcePath;
}
@@ -226,12 +225,13 @@ public void receiveEditRelics() {
BaseMod.addRelicToCustomPool(new BronzeCore(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new CableSpool(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelic(new DecasWashers(), RelicType.SHARED);
- BaseMod.addRelic(new DonusWashers(), RelicType.SHARED);
+ // BaseMod.addRelic(new DonusWashers(), RelicType.SHARED);
+ BaseMod.addRelicToCustomPool(new DonusWashers(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new ElectromagneticCoil(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new ProtectiveGoggles(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new Mallet(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new PlatinumCore(), AutomatonChar.Enums.BRONZE_AUTOMATON);
- BaseMod.addRelic(new MakeshiftBattery(), RelicType.SHARED);
+ BaseMod.addRelicToCustomPool(new MakeshiftBattery(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelic(new BronzeIdol(), RelicType.SHARED);
BaseMod.addRelicToCustomPool(new SilverBullet(), AutomatonChar.Enums.BRONZE_AUTOMATON);
BaseMod.addRelicToCustomPool(new BottledCode(), AutomatonChar.Enums.BRONZE_AUTOMATON);
diff --git a/src/main/java/automaton/actions/ChosenAction.java b/src/main/java/automaton/actions/ChosenAction.java
index 5d35a064c..001c41822 100644
--- a/src/main/java/automaton/actions/ChosenAction.java
+++ b/src/main/java/automaton/actions/ChosenAction.java
@@ -1,16 +1,7 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package automaton.actions;
-import automaton.FunctionHelper;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.GetAllInBattleInstances;
-import java.util.Iterator;
+
import java.util.UUID;
public class ChosenAction extends AbstractGameAction {
diff --git a/src/main/java/automaton/actions/ScryBlockStatusAction.java b/src/main/java/automaton/actions/ScryBlockStatusAction.java
index 98dccdb7d..84c6a0c18 100644
--- a/src/main/java/automaton/actions/ScryBlockStatusAction.java
+++ b/src/main/java/automaton/actions/ScryBlockStatusAction.java
@@ -11,7 +11,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
public class ScryBlockStatusAction extends AbstractGameAction {
private static final UIStrings uiStrings;
@@ -73,8 +72,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/actions/ScryEncodeCardsAction.java b/src/main/java/automaton/actions/ScryEncodeCardsAction.java
index 30b46992a..db9ba9d32 100644
--- a/src/main/java/automaton/actions/ScryEncodeCardsAction.java
+++ b/src/main/java/automaton/actions/ScryEncodeCardsAction.java
@@ -1,7 +1,6 @@
package automaton.actions;
import automaton.AutomatonMod;
-import automaton.FunctionHelper;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
diff --git a/src/main/java/automaton/cardmods/CardEffectsCardMod.java b/src/main/java/automaton/cardmods/CardEffectsCardMod.java
index 6215551ba..78dc18771 100644
--- a/src/main/java/automaton/cardmods/CardEffectsCardMod.java
+++ b/src/main/java/automaton/cardmods/CardEffectsCardMod.java
@@ -18,8 +18,6 @@
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import static automaton.FunctionHelper.WITH_DELIMITER;
-
public class CardEffectsCardMod extends BronzeCardMod {
public CardSave store;
diff --git a/src/main/java/automaton/cardmods/EncodeAndShuffleMod.java b/src/main/java/automaton/cardmods/EncodeAndShuffleMod.java
index 29cb4eadf..492cf4149 100644
--- a/src/main/java/automaton/cardmods/EncodeAndShuffleMod.java
+++ b/src/main/java/automaton/cardmods/EncodeAndShuffleMod.java
@@ -2,7 +2,6 @@
import automaton.AutomatonMod;
import basemod.abstracts.AbstractCardModifier;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
diff --git a/src/main/java/automaton/cardmods/EncodeMod.java b/src/main/java/automaton/cardmods/EncodeMod.java
index 02ed919e7..6a59c6b00 100644
--- a/src/main/java/automaton/cardmods/EncodeMod.java
+++ b/src/main/java/automaton/cardmods/EncodeMod.java
@@ -5,8 +5,6 @@
import basemod.abstracts.AbstractCardModifier;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import static automaton.FunctionHelper.WITH_DELIMITER;
-
public class EncodeMod extends BronzeCardMod {
public static String ID = "bronze:EncodeModifier";
diff --git a/src/main/java/automaton/cardmods/PlayMeTwiceCardmod.java b/src/main/java/automaton/cardmods/PlayMeTwiceCardmod.java
index 1dda150f4..378fc34e0 100644
--- a/src/main/java/automaton/cardmods/PlayMeTwiceCardmod.java
+++ b/src/main/java/automaton/cardmods/PlayMeTwiceCardmod.java
@@ -1,6 +1,5 @@
package automaton.cardmods;
-import automaton.actions.RepeatCardAction;
import basemod.abstracts.AbstractCardModifier;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
diff --git a/src/main/java/automaton/cards/AbstractBronzeCard.java b/src/main/java/automaton/cards/AbstractBronzeCard.java
index 626975e76..22881a2bc 100644
--- a/src/main/java/automaton/cards/AbstractBronzeCard.java
+++ b/src/main/java/automaton/cards/AbstractBronzeCard.java
@@ -18,7 +18,6 @@
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.localization.UIStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
diff --git a/src/main/java/automaton/cards/AlphaBuild.java b/src/main/java/automaton/cards/AlphaBuild.java
index 205131d38..5d82eaf26 100644
--- a/src/main/java/automaton/cards/AlphaBuild.java
+++ b/src/main/java/automaton/cards/AlphaBuild.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/Assembly.java b/src/main/java/automaton/cards/Assembly.java
index 326e1d215..e691b44cd 100644
--- a/src/main/java/automaton/cards/Assembly.java
+++ b/src/main/java/automaton/cards/Assembly.java
@@ -4,7 +4,6 @@
import automaton.actions.ScryEncodeCardsAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
public class Assembly extends AbstractBronzeCard {
diff --git a/src/main/java/automaton/cards/Batch.java b/src/main/java/automaton/cards/Batch.java
index 0a7e550e9..487075d66 100644
--- a/src/main/java/automaton/cards/Batch.java
+++ b/src/main/java/automaton/cards/Batch.java
@@ -1,10 +1,10 @@
package automaton.cards;
-import automaton.AutomatonMod;
import automaton.FunctionHelper;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import automaton.AutomatonMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/BetaBuild.java b/src/main/java/automaton/cards/BetaBuild.java
index 6de4a8f73..e462f0d3b 100644
--- a/src/main/java/automaton/cards/BetaBuild.java
+++ b/src/main/java/automaton/cards/BetaBuild.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/BitShift.java b/src/main/java/automaton/cards/BitShift.java
index a4806361b..0fddf0018 100644
--- a/src/main/java/automaton/cards/BitShift.java
+++ b/src/main/java/automaton/cards/BitShift.java
@@ -10,12 +10,12 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import expansioncontent.cardmods.PropertiesMod;
-import expansioncontent.cardmods.RetainCardMod;
-
-import static automaton.AutomatonMod.makeBetaCardPath;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
+import static automaton.AutomatonMod.makeBetaCardPath;
+
public class BitShift extends AbstractBronzeCard {
public final static String ID = makeID("BitShift");
@@ -23,6 +23,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/Branch.java b/src/main/java/automaton/cards/Branch.java
index 156415392..ac98dd595 100644
--- a/src/main/java/automaton/cards/Branch.java
+++ b/src/main/java/automaton/cards/Branch.java
@@ -2,25 +2,33 @@
import automaton.AutomatonMod;
import automaton.actions.AddToFuncAction;
+import awakenedOne.relics.EyeOfTheOccult;
+import awakenedOne.relics.OnAwakenRelic;
+import champ.powers.GladiatorFormPower;
+import champ.powers.ParryPower;
+import champ.relics.RageAmulet;
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.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
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.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import downfall.actions.OctoChoiceAction;
import downfall.cards.OctoChoiceCard;
import downfall.util.OctopusCard;
+import guardian.powers.RevengePower;
import java.util.ArrayList;
+import static hermit.util.Wiz.removePower;
+
public class Branch extends AbstractBronzeCard implements OctopusCard {
public final static String ID = makeID("Branch");
@@ -60,6 +68,23 @@ public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
if (upgraded) q.upgrade();
att(new AddToFuncAction(q, null));
att(new DamageAction(m, new DamageInfo(AbstractDungeon.player, card.baseDamage, card.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+
+ if (AbstractDungeon.player.hasPower(GladiatorFormPower.POWER_ID)) {
+ GladiatorFormPower revengePower = (GladiatorFormPower) AbstractDungeon.player.getPower(GladiatorFormPower.POWER_ID);
+
+ if (revengePower != null) {
+ revengePower.onSpecificTriggerBranch();
+ }
+ }
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ if (r instanceof RageAmulet) {
+ ((RageAmulet) r).onSpecificTrigger();
+ }
+ }
+
+ atb(new RemoveSpecificPowerAction(AbstractDungeon.player, AbstractDungeon.player, VigorPower.POWER_ID));
+
break;
}
case "bronze:BranchBlock": {
diff --git a/src/main/java/automaton/cards/Break.java b/src/main/java/automaton/cards/Break.java
index 44e6a7079..fcba81dfe 100644
--- a/src/main/java/automaton/cards/Break.java
+++ b/src/main/java/automaton/cards/Break.java
@@ -2,17 +2,14 @@
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;
import static automaton.AutomatonMod.makeBetaCardPath;
-import static sneckomod.SneckoMod.getRandomStatus;
-
public class Break extends AbstractBronzeCard {
public final static String ID = makeID("Break");
@@ -38,10 +35,11 @@ public void use(AbstractPlayer p, AbstractMonster m) {
@Override
public void onCompile(AbstractCard function, boolean forGameplay) {
if (forGameplay) {
-
- shuffleIn(new Burn());
- shuffleIn(new Wound());
- shuffleIn(new Slimed());
+ addToBot(new MakeTempCardInHandAction(new Dazed(), 1));
+ addToBot(new MakeTempCardInHandAction(new Slimed(), 1));
+ addToBot(new MakeTempCardInHandAction(new Wound(), 1));
+ addToBot(new MakeTempCardInHandAction(new Burn(), 1));
+ addToBot(new MakeTempCardInHandAction(new VoidCard(), 1));
}
}
diff --git a/src/main/java/automaton/cards/BugBarrage.java b/src/main/java/automaton/cards/BugBarrage.java
index ac5abdc85..fe89a4b7b 100644
--- a/src/main/java/automaton/cards/BugBarrage.java
+++ b/src/main/java/automaton/cards/BugBarrage.java
@@ -21,14 +21,14 @@ public class BugBarrage extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 7;
- private static final int UPG_DAMAGE = 3;
+ private static final int DAMAGE = 5;
+ private static final int UPG_DAMAGE = 2;
public BugBarrage() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
// exhaust = true;
- magicNumber = baseMagicNumber = 1;
+ magicNumber = baseMagicNumber = 2;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("BugBarrage.png"));
}
diff --git a/src/main/java/automaton/cards/BuggyMess.java b/src/main/java/automaton/cards/BuggyMess.java
index 18614b83c..db2251880 100644
--- a/src/main/java/automaton/cards/BuggyMess.java
+++ b/src/main/java/automaton/cards/BuggyMess.java
@@ -1,13 +1,10 @@
package automaton.cards;
import automaton.AutomatonMod;
-import automaton.cards.goodstatus.Daze;
import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.status.Dazed;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/BurnOut.java b/src/main/java/automaton/cards/BurnOut.java
index 981d2bee2..58e251680 100644
--- a/src/main/java/automaton/cards/BurnOut.java
+++ b/src/main/java/automaton/cards/BurnOut.java
@@ -6,7 +6,6 @@
import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.status.Burn;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
diff --git a/src/main/java/automaton/cards/ByteShift.java b/src/main/java/automaton/cards/ByteShift.java
index c62d3747c..f2acc1fc7 100644
--- a/src/main/java/automaton/cards/ByteShift.java
+++ b/src/main/java/automaton/cards/ByteShift.java
@@ -9,7 +9,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import expansioncontent.cardmods.PropertiesMod;
-import expansioncontent.cardmods.RetainCardMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/ChildClass.java b/src/main/java/automaton/cards/ChildClass.java
index b42e788b4..df1e4556f 100644
--- a/src/main/java/automaton/cards/ChildClass.java
+++ b/src/main/java/automaton/cards/ChildClass.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
diff --git a/src/main/java/automaton/cards/ChosenStrike.java b/src/main/java/automaton/cards/ChosenStrike.java
index 0449fc1c5..9c2bd8c72 100644
--- a/src/main/java/automaton/cards/ChosenStrike.java
+++ b/src/main/java/automaton/cards/ChosenStrike.java
@@ -20,7 +20,7 @@ public class ChosenStrike extends AbstractBronzeCard {
private static final int UPG_DAMAGE = 3;
public ChosenStrike() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE + misc;
baseMagicNumber = magicNumber = 1;
this.tags.add(CardTags.STRIKE);
@@ -32,7 +32,7 @@ public ChosenStrike() {
public void applyPowers() {
super.applyPowers();
baseDamage = DAMAGE + misc;
- if (upgraded) baseDamage += UPG_DAMAGE;
+ // if (upgraded) baseDamage += UPG_DAMAGE;
}
@Override
@@ -62,8 +62,9 @@ public void onCompilePreCardEffectEmbed(boolean forGameplay) {
}
public void upp() {
- misc += 3;
- upgradedDamage = true;
- baseDamage = DAMAGE + misc;
+ // misc += 3;
+ // upgradedDamage = true;
+ // baseDamage = DAMAGE + misc;
+ upgradeBaseCost(1);
}
}
diff --git a/src/main/java/automaton/cards/CleanCode.java b/src/main/java/automaton/cards/CleanCode.java
index a0bbaaf81..3eabccdbc 100644
--- a/src/main/java/automaton/cards/CleanCode.java
+++ b/src/main/java/automaton/cards/CleanCode.java
@@ -1,11 +1,9 @@
package automaton.cards;
import automaton.AutomatonMod;
-import automaton.powers.CleanCodePower;
import automaton.powers.RemoveNextErrorPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
public class CleanCode extends AbstractBronzeCard {
@@ -17,7 +15,7 @@ public class CleanCode extends AbstractBronzeCard {
private static final int UPG_MAGIC = 1;
public CleanCode() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("CleanCode.png"));
diff --git a/src/main/java/automaton/cards/CopyPaste.java b/src/main/java/automaton/cards/CopyPaste.java
index 27cd1a810..88005efe3 100644
--- a/src/main/java/automaton/cards/CopyPaste.java
+++ b/src/main/java/automaton/cards/CopyPaste.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.powers.CopyPastePower;
diff --git a/src/main/java/automaton/cards/DarkDash.java b/src/main/java/automaton/cards/DarkDash.java
index 88afab87b..527e8f016 100644
--- a/src/main/java/automaton/cards/DarkDash.java
+++ b/src/main/java/automaton/cards/DarkDash.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/Debug.java b/src/main/java/automaton/cards/Debug.java
index 4f74d0bc6..0b0ca3cb6 100644
--- a/src/main/java/automaton/cards/Debug.java
+++ b/src/main/java/automaton/cards/Debug.java
@@ -6,8 +6,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import static automaton.FunctionHelper.WITH_DELIMITER;
-
import static automaton.AutomatonMod.makeBetaCardPath;
public class Debug extends AbstractBronzeCard {
diff --git a/src/main/java/automaton/cards/DecaBeam.java b/src/main/java/automaton/cards/DecaBeam.java
index bcf8fcadb..bed2ac5b2 100644
--- a/src/main/java/automaton/cards/DecaBeam.java
+++ b/src/main/java/automaton/cards/DecaBeam.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import downfall.downfallMod;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -36,6 +37,12 @@ public void onCompile(AbstractCard function, boolean forGameplay) {
}
}
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ String afterlife_name = downfallMod.keywords_and_proper_names.get("plated");
+ this.keywords.add(afterlife_name);
+ }
@Override
public void upp() {
diff --git a/src/main/java/automaton/cards/DelayedGuard.java b/src/main/java/automaton/cards/DelayedGuard.java
index ecebac919..0718c3ce6 100644
--- a/src/main/java/automaton/cards/DelayedGuard.java
+++ b/src/main/java/automaton/cards/DelayedGuard.java
@@ -1,7 +1,6 @@
package automaton.cards;
import automaton.AutomatonMod;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
diff --git a/src/main/java/automaton/cards/DelayedSlice.java b/src/main/java/automaton/cards/DelayedSlice.java
index 63d94e543..cfad9c863 100644
--- a/src/main/java/automaton/cards/DelayedSlice.java
+++ b/src/main/java/automaton/cards/DelayedSlice.java
@@ -2,8 +2,6 @@
import automaton.AutomatonMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.LoseHPAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
@@ -16,6 +14,8 @@ public class DelayedSlice extends AbstractBronzeCard {
//stupid intellij stuff attack, all_enemy, common
+ //Robo-Chop
+
public DelayedSlice() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 1;
diff --git a/src/main/java/automaton/cards/Deprecate.java b/src/main/java/automaton/cards/Deprecate.java
index e9228f9c2..cecc2c42a 100644
--- a/src/main/java/automaton/cards/Deprecate.java
+++ b/src/main/java/automaton/cards/Deprecate.java
@@ -1,12 +1,8 @@
package automaton.cards;
import automaton.AutomatonMod;
-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.VulnerablePower;
-import com.megacrit.cardcrawl.powers.WeakPower;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/DigitalCarnage.java b/src/main/java/automaton/cards/DigitalCarnage.java
index 358ef0986..83acd3c1e 100644
--- a/src/main/java/automaton/cards/DigitalCarnage.java
+++ b/src/main/java/automaton/cards/DigitalCarnage.java
@@ -23,7 +23,7 @@ public class DigitalCarnage extends AbstractBronzeCard {
private static final int UPG_DAMAGE = 5;
public DigitalCarnage() {
- super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
// isEthereal = true;
baseDamage = DAMAGE;
thisEncodes();
diff --git a/src/main/java/automaton/cards/DonuBeam.java b/src/main/java/automaton/cards/DonuBeam.java
index bf6117536..864214756 100644
--- a/src/main/java/automaton/cards/DonuBeam.java
+++ b/src/main/java/automaton/cards/DonuBeam.java
@@ -12,7 +12,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import guardian.vfx.SmallLaserEffectColored;
diff --git a/src/main/java/automaton/cards/Explode.java b/src/main/java/automaton/cards/Explode.java
index 59c19db0b..1db23eb62 100644
--- a/src/main/java/automaton/cards/Explode.java
+++ b/src/main/java/automaton/cards/Explode.java
@@ -2,16 +2,14 @@
import automaton.AutomatonMod;
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.LoseHPAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.status.Burn;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
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 +25,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/FindAndReplace.java b/src/main/java/automaton/cards/FindAndReplace.java
index 7272ce486..3803ad1da 100644
--- a/src/main/java/automaton/cards/FindAndReplace.java
+++ b/src/main/java/automaton/cards/FindAndReplace.java
@@ -9,11 +9,11 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import static automaton.AutomatonMod.makeBetaCardPath;
-
import java.util.ArrayList;
import java.util.Comparator;
+import static automaton.AutomatonMod.makeBetaCardPath;
+
public class FindAndReplace extends AbstractBronzeCard {
public final static String ID = makeID("FindAndReplace");
diff --git a/src/main/java/automaton/cards/FineTuning.java b/src/main/java/automaton/cards/FineTuning.java
index 4bad8e3db..220a407d0 100644
--- a/src/main/java/automaton/cards/FineTuning.java
+++ b/src/main/java/automaton/cards/FineTuning.java
@@ -21,7 +21,7 @@ public FineTuning() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = MAGIC;
exhaust = true;
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("FineTuning.png"));
}
diff --git a/src/main/java/automaton/cards/Flail.java b/src/main/java/automaton/cards/Flail.java
index 9aae3ea5b..5f76f738c 100644
--- a/src/main/java/automaton/cards/Flail.java
+++ b/src/main/java/automaton/cards/Flail.java
@@ -2,9 +2,7 @@
import automaton.AutomatonMod;
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.powers.ArtifactPower;
diff --git a/src/main/java/automaton/cards/ForLoop.java b/src/main/java/automaton/cards/ForLoop.java
index ecf17a327..e0f4f35af 100644
--- a/src/main/java/automaton/cards/ForLoop.java
+++ b/src/main/java/automaton/cards/ForLoop.java
@@ -5,6 +5,7 @@
import automaton.powers.CloningPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
public class ForLoop extends AbstractBronzeCard {
@@ -14,7 +15,7 @@ public class ForLoop extends AbstractBronzeCard {
public ForLoop() {
super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
exhaust = true;
baseMagicNumber = magicNumber = 0;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("ForLoop.png"));
diff --git a/src/main/java/automaton/cards/ForceShield.java b/src/main/java/automaton/cards/ForceShield.java
index dd77d9c78..daa414d39 100644
--- a/src/main/java/automaton/cards/ForceShield.java
+++ b/src/main/java/automaton/cards/ForceShield.java
@@ -20,7 +20,7 @@ public class ForceShield extends AbstractBronzeCard {
private static final int UPG_BLOCK = 4;
public ForceShield() {
- super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 4, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = BLOCK;
if (CardCrawlGame.dungeon != null && AbstractDungeon.currMapNode != null) {
this.configureCostsOnNewCard();
diff --git a/src/main/java/automaton/cards/FullRelease.java b/src/main/java/automaton/cards/FullRelease.java
index 9b2765f4c..74617a8ee 100644
--- a/src/main/java/automaton/cards/FullRelease.java
+++ b/src/main/java/automaton/cards/FullRelease.java
@@ -19,7 +19,7 @@ public class FullRelease extends AbstractBronzeCard {
public FullRelease() {
- super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
thisEncodes();
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("FullRelease.png"));
}
@@ -53,6 +53,6 @@ public String getBonusChar() {
}
public void upp() {
- upgradeBaseCost(1);
+ upgradeBaseCost(0);
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/FunctionCard.java b/src/main/java/automaton/cards/FunctionCard.java
index 6b765b48c..bbb06a1c0 100644
--- a/src/main/java/automaton/cards/FunctionCard.java
+++ b/src/main/java/automaton/cards/FunctionCard.java
@@ -16,8 +16,8 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import downfall.util.CardIgnore;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import downfall.util.CardIgnore;
import sneckomod.SneckoMod;
import java.util.ArrayList;
diff --git a/src/main/java/automaton/cards/Hardcode.java b/src/main/java/automaton/cards/Hardcode.java
index 07be5379e..1dbb46ac0 100644
--- a/src/main/java/automaton/cards/Hardcode.java
+++ b/src/main/java/automaton/cards/Hardcode.java
@@ -1,4 +1,4 @@
-/*
+package automaton.cards;/*
package automaton.cards;
import automaton.AutomatonMod;
diff --git a/src/main/java/automaton/cards/HardenedForm.java b/src/main/java/automaton/cards/HardenedForm.java
index 91558ffd8..d2e2cf6a5 100644
--- a/src/main/java/automaton/cards/HardenedForm.java
+++ b/src/main/java/automaton/cards/HardenedForm.java
@@ -13,8 +13,8 @@ public class HardenedForm extends AbstractBronzeCard {
//stupid intellij stuff power, self, rare
- private static final int MAGIC = 4;
- private static final int UPG_MAGIC = 2;
+ private static final int MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
public HardenedForm() {
super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
diff --git a/src/main/java/automaton/cards/HyperBeam.java b/src/main/java/automaton/cards/HyperBeam.java
index 92d2143f9..b3b7ad3a5 100644
--- a/src/main/java/automaton/cards/HyperBeam.java
+++ b/src/main/java/automaton/cards/HyperBeam.java
@@ -4,7 +4,6 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
-import com.megacrit.cardcrawl.actions.common.ReduceCostAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -20,14 +19,14 @@ public class HyperBeam extends AbstractBronzeCard {
//stupid intellij stuff attack, all_enemy, rare
- private static final int DAMAGE = 25;
+ private static final int DAMAGE = 19;
private static final int UPG_DAMAGE = 9;
public HyperBeam() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
isMultiDamage = true;
- // selfRetain = true;
+ selfRetain = true;
// exhaust = true;
baseMagicNumber = magicNumber = 5;
cardsToPreview = new VoidCard();
@@ -49,6 +48,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeDamage(10);
+ upgradeDamage(7);
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/InfiniteLoop.java b/src/main/java/automaton/cards/InfiniteLoop.java
index d748c2479..e71267932 100644
--- a/src/main/java/automaton/cards/InfiniteLoop.java
+++ b/src/main/java/automaton/cards/InfiniteLoop.java
@@ -18,7 +18,7 @@ public class InfiniteLoop extends AbstractBronzeCard {
private boolean showCard;
public InfiniteLoop(boolean showCard) {
- super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
baseMagicNumber = magicNumber = 2;
thisEncodes();
diff --git a/src/main/java/automaton/cards/Invalidate.java b/src/main/java/automaton/cards/Invalidate.java
index d668bdeab..07ad0673c 100644
--- a/src/main/java/automaton/cards/Invalidate.java
+++ b/src/main/java/automaton/cards/Invalidate.java
@@ -1,11 +1,8 @@
package automaton.cards;
import automaton.AutomatonMod;
-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.VulnerablePower;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/ItsAFeature.java b/src/main/java/automaton/cards/ItsAFeature.java
index 58d06ebdf..08b5349c1 100644
--- a/src/main/java/automaton/cards/ItsAFeature.java
+++ b/src/main/java/automaton/cards/ItsAFeature.java
@@ -15,16 +15,15 @@ public class ItsAFeature extends AbstractBronzeCard {
public ItsAFeature() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = this.magicNumber = 3;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("ItsAFeature.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new FeaturePower(1));
+ applyToSelf(new FeaturePower(magicNumber));
}
public void upp() {
- isInnate = true;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/MinorBeam.java b/src/main/java/automaton/cards/MinorBeam.java
index 902a5cc40..4bd39ea14 100644
--- a/src/main/java/automaton/cards/MinorBeam.java
+++ b/src/main/java/automaton/cards/MinorBeam.java
@@ -16,7 +16,7 @@ public class MinorBeam extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, special
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
private static final int UPG_DAMAGE = 2;
public MinorBeam() {
diff --git a/src/main/java/automaton/cards/Mutator.java b/src/main/java/automaton/cards/Mutator.java
index e66aaf0af..4bd874cc4 100644
--- a/src/main/java/automaton/cards/Mutator.java
+++ b/src/main/java/automaton/cards/Mutator.java
@@ -20,10 +20,11 @@ public class Mutator extends AbstractBronzeCard {
public Mutator() {
super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Mutator.png"));
+ baseMagicNumber = magicNumber = 2;
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new StrengthPower(p, 1));
+ applyToSelf(new StrengthPower(p, magicNumber));
AbstractCard q = this;
atb(new SelectCardsInHandAction(1, masterUI.TEXT[6], c -> c.type == CardType.STATUS, (cards) -> {
att(new MakeTempCardInHandAction(q.makeStatEquivalentCopy(), true));
diff --git a/src/main/java/automaton/cards/NullPointer.java b/src/main/java/automaton/cards/NullPointer.java
index 521497b77..9f200e56d 100644
--- a/src/main/java/automaton/cards/NullPointer.java
+++ b/src/main/java/automaton/cards/NullPointer.java
@@ -1,15 +1,15 @@
package automaton.cards;
import automaton.AutomatonMod;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import expansioncontent.cardmods.UnplayableMod;
import basemod.helpers.CardModifierManager;
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 com.megacrit.cardcrawl.vfx.combat.ViceCrushEffect;
+import expansioncontent.cardmods.UnplayableMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/Overheat.java b/src/main/java/automaton/cards/Overheat.java
index 3d396eabb..e94b9414a 100644
--- a/src/main/java/automaton/cards/Overheat.java
+++ b/src/main/java/automaton/cards/Overheat.java
@@ -13,7 +13,7 @@ public class Overheat extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 6;
+ private static final int UPG_DAMAGE = 4;
public Overheat() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
diff --git a/src/main/java/automaton/cards/Overload.java b/src/main/java/automaton/cards/Overload.java
index 2109937f6..2199950f4 100644
--- a/src/main/java/automaton/cards/Overload.java
+++ b/src/main/java/automaton/cards/Overload.java
@@ -9,6 +9,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 automaton.AutomatonMod.makeBetaCardPath;
@@ -21,6 +22,7 @@ public class Overload extends AbstractBronzeCard {
public Overload() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Overload.png"));
}
diff --git a/src/main/java/automaton/cards/Repair.java b/src/main/java/automaton/cards/Repair.java
index 1f13dab03..146e03c80 100644
--- a/src/main/java/automaton/cards/Repair.java
+++ b/src/main/java/automaton/cards/Repair.java
@@ -6,7 +6,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/Replicate.java b/src/main/java/automaton/cards/Replicate.java
index faaa42bb3..20971689e 100644
--- a/src/main/java/automaton/cards/Replicate.java
+++ b/src/main/java/automaton/cards/Replicate.java
@@ -1,9 +1,6 @@
package automaton.cards;
import automaton.AutomatonMod;
-import automaton.cardmods.EncodeAndShuffleMod;
-import automaton.cardmods.EncodeMod;
-import basemod.helpers.CardModifierManager;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
diff --git a/src/main/java/automaton/cards/Repulsor.java b/src/main/java/automaton/cards/Repulsor.java
index 4782f7cb6..897b2a72b 100644
--- a/src/main/java/automaton/cards/Repulsor.java
+++ b/src/main/java/automaton/cards/Repulsor.java
@@ -4,7 +4,6 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.powers.ExhaustStatusesPower;
-import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
diff --git a/src/main/java/automaton/cards/Safeguard.java b/src/main/java/automaton/cards/Safeguard.java
index 5d8c20bb7..204881458 100644
--- a/src/main/java/automaton/cards/Safeguard.java
+++ b/src/main/java/automaton/cards/Safeguard.java
@@ -1,13 +1,8 @@
package automaton.cards;
import automaton.AutomatonMod;
-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.FrailPower;
-import com.megacrit.cardcrawl.powers.WeakPower;
-import guardian.powers.ExhaustStatusesPower;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -17,12 +12,12 @@ public class Safeguard extends AbstractBronzeCard {
//stupid intellij stuff skill, self, uncommon
- private static final int BLOCK = 7;
+ private static final int BLOCK = 4;
private static final int MAGIC = 2;
private static final int UPG_MAGIC = -1;
public Safeguard() {
- super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = BLOCK;
baseMagicNumber = magicNumber = MAGIC;
thisEncodes();
diff --git a/src/main/java/automaton/cards/Shell.java b/src/main/java/automaton/cards/Shell.java
index f213a5c02..86d421a8f 100644
--- a/src/main/java/automaton/cards/Shell.java
+++ b/src/main/java/automaton/cards/Shell.java
@@ -29,15 +29,16 @@ public void use(AbstractPlayer p, AbstractMonster m) {
applyToSelf(new BlurPower(p, magicNumber));
}
- @Override
- public void onCompile(AbstractCard function, boolean forGameplay) {
- if (forGameplay && upgraded) {
- applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
- }
+ @Override
+ public void onCompile(AbstractCard function, boolean forGameplay) {
+ if (forGameplay && upgraded) {
+ applyToSelf(new BlurPower(AbstractDungeon.player, magicNumber));
+ }
}
public void upp() {
+ // upgradeBaseCost(1);
rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ initializeDescription();
}
}
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/Shield.java b/src/main/java/automaton/cards/Shield.java
index 9d410c2c4..d95b813cc 100644
--- a/src/main/java/automaton/cards/Shield.java
+++ b/src/main/java/automaton/cards/Shield.java
@@ -19,6 +19,7 @@ public class Shield extends AbstractBronzeCard {
public Shield() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = BLOCK;
+ selfRetain = true;
cardsToPreview = new Slimed();
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Shield.png"));
}
diff --git a/src/main/java/automaton/cards/ShipIt.java b/src/main/java/automaton/cards/ShipIt.java
index 00c6a0d95..739687809 100644
--- a/src/main/java/automaton/cards/ShipIt.java
+++ b/src/main/java/automaton/cards/ShipIt.java
@@ -7,89 +7,60 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import java.util.Iterator;
-
public class ShipIt extends AbstractBronzeCard {
public final static String ID = makeID("ShipIt");
- //stupid intellij stuff attack, enemy, rare
-
+ // Attack card constants
private static final int DAMAGE = 5;
- private static final int MAGIC = 2;
- private static final int UPG_MAGIC = 1;
+ private static final int UPGRADE_DAMAGE = 2;
public ShipIt() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("ShipIt.png"));
}
public static int countCards() {
- int count = 0;
- Iterator var1 = AbstractDungeon.player.hand.group.iterator();
-
- AbstractCard c;
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
+ int statusCount = 0;
+ for (AbstractCard c : AbstractDungeon.player.exhaustPile.group) {
if (c.type == CardType.STATUS) {
- ++count;
+ statusCount++;
}
}
+ return statusCount;
+ }
- var1 = AbstractDungeon.player.drawPile.group.iterator();
-
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
- }
- }
+ public void applyPowers() {
+ super.applyPowers();
- var1 = AbstractDungeon.player.discardPile.group.iterator();
+ if (AbstractDungeon.player != null) {
+ this.rawDescription = cardStrings.DESCRIPTION;
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
+ int statusCount = 0;
+ for (AbstractCard c : AbstractDungeon.player.exhaustPile.group) {
+ if (c.type == CardType.STATUS) {
+ statusCount++;
+ }
}
- }
- var1 = AbstractDungeon.player.exhaustPile.group.iterator();
+ this.rawDescription = cardStrings.EXTENDED_DESCRIPTION[0] + statusCount + cardStrings.EXTENDED_DESCRIPTION[1];
- while (var1.hasNext()) {
- c = (AbstractCard) var1.next();
- if (c.type == CardType.STATUS) {
- ++count;
- }
+ this.initializeDescription();
}
-
- return count;
}
- public void calculateCardDamage(AbstractMonster mo) {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += this.magicNumber * countCards();
- super.calculateCardDamage(mo);
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- }
-
- public void applyPowers() {
- int realBaseDamage = this.baseDamage;
- this.baseDamage += this.magicNumber * countCards();
- super.applyPowers();
- this.baseDamage = realBaseDamage;
- this.isDamageModified = this.damage != this.baseDamage;
- }
-
-
+ @Override
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ int count = countCards();
+ for (int i = 0; i < count; i++) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ }
}
+ @Override
public void upp() {
- upgradeMagicNumber(UPG_MAGIC);
+ upgradeDamage(UPGRADE_DAMAGE);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/automaton/cards/ThunderWave.java b/src/main/java/automaton/cards/ThunderWave.java
index 9a9fc5816..4c00029b1 100644
--- a/src/main/java/automaton/cards/ThunderWave.java
+++ b/src/main/java/automaton/cards/ThunderWave.java
@@ -21,11 +21,11 @@ public class ThunderWave extends AbstractBronzeCard {
//stupid intellij stuff attack, all_enemy, rare
- private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 6;
+ private static final int DAMAGE = 12;
+ private static final int UPG_DAMAGE = 4;
public ThunderWave() {
- super(ID, 3, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
isMultiDamage = true;
exhaust = true;
diff --git a/src/main/java/automaton/cards/TinkerersToolbox.java b/src/main/java/automaton/cards/TinkerersToolbox.java
index 655b3edb2..4a54aaf99 100644
--- a/src/main/java/automaton/cards/TinkerersToolbox.java
+++ b/src/main/java/automaton/cards/TinkerersToolbox.java
@@ -1,16 +1,19 @@
package automaton.cards;
import automaton.AutomatonMod;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
+import gremlin.cards.Ward;
import sneckomod.SneckoMod;
import static automaton.AutomatonMod.makeBetaCardPath;
@@ -28,7 +31,7 @@ public class TinkerersToolbox extends AbstractBronzeCard {
private ArrayList cardsList = new ArrayList<>();
public TinkerersToolbox() {
- super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
selfRetain = true;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
@@ -36,6 +39,7 @@ public TinkerersToolbox() {
cardsList.add(new Batch());
cardsList.add(new Decompile());
cardsList.add(new ByteShift());
+ MultiCardPreview.add(this, new Debug(), new Batch(), new Decompile(), new ByteShift());
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("TinkerersToolbox.png"));
}
@@ -44,31 +48,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- exhaust = false;
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeBaseCost(0);
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
-}
\ No newline at end of file
+
+ }
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/Verify.java b/src/main/java/automaton/cards/Verify.java
index a3944a401..5706cabfe 100644
--- a/src/main/java/automaton/cards/Verify.java
+++ b/src/main/java/automaton/cards/Verify.java
@@ -17,7 +17,7 @@ public class Verify extends AbstractBronzeCard {
public Verify() {
super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
- // this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
tags.add(BaseModCardTags.FORM);
isEthereal = true;
AutomatonMod.loadJokeCardImage(this, makeBetaCardPath("Verify.png"));
diff --git a/src/main/java/automaton/cards/Virus.java b/src/main/java/automaton/cards/Virus.java
index d3dab71d9..50f326315 100644
--- a/src/main/java/automaton/cards/Virus.java
+++ b/src/main/java/automaton/cards/Virus.java
@@ -1,14 +1,15 @@
package automaton.cards;
import automaton.AutomatonMod;
-import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
import com.megacrit.cardcrawl.powers.FrailPower;
+import gremlin.cards.Ward;
import static com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.FIRE;
import static com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect.LIGHTNING;
@@ -19,33 +20,38 @@ public class Virus extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, uncommon
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
public Virus() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
baseDamage = DAMAGE;
cardsToPreview = new MinorBeam();
- selfRetain = true;
exhaust = true;
AutomatonMod.loadJokeCardImage(this, AutomatonMod.makeBetaCardPath("Virus.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
dmg(m, LIGHTNING);
- for (AbstractCard c:AbstractDungeon.player.hand.group){
- if (c != this) {
- atb(new ExhaustSpecificCardAction(c, AbstractDungeon.player.hand));
- AbstractCard c2 = new MinorBeam();
- if (upgraded) c2.upgrade();
- atb(new MakeTempCardInHandAction(c2));
+ int theSize = AbstractDungeon.player.hand.size();
+ if (upgraded) {
+ AbstractCard s = (new MinorBeam()).makeCopy();
+ s.upgrade();
+ if (theSize>0) {
+ this.addToTop(new MakeTempCardInHandAction(s, theSize-1));
+ }
+ } else {
+ if (theSize>0) {
+ this.addToTop(new MakeTempCardInHandAction(new MinorBeam(), theSize - 1));
}
}
- }
+ this.addToTop(new DiscardAction(AbstractDungeon.player, AbstractDungeon.player, theSize-1, false));
- public void upp() {
- cardsToPreview.upgrade();
- upgradeDamage(2);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
}
-}
\ No newline at end of file
+
+ public void upp () {
+ cardsToPreview.upgrade();
+ upgradeDamage(2);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/automaton/cards/WildBeam.java b/src/main/java/automaton/cards/WildBeam.java
index c4e845646..9c542db0f 100644
--- a/src/main/java/automaton/cards/WildBeam.java
+++ b/src/main/java/automaton/cards/WildBeam.java
@@ -21,8 +21,8 @@ public class WildBeam extends AbstractBronzeCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 9;
- private static final int UPG_DAMAGE = 3;
+ private static final int DAMAGE = 10;
+ private static final int UPG_DAMAGE = 4;
public WildBeam() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
diff --git a/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java b/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
index d0062097c..260bfbfe5 100644
--- a/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
+++ b/src/main/java/automaton/events/AccursedBlacksmithAutomaton.java
@@ -102,8 +102,8 @@ public void update()
c.upgrade();
logMetricCardUpgrade(ID, "Forge", c);
AbstractDungeon.player.bottledCardUpgradeCheck(AbstractDungeon.gridSelectScreen.selectedCards.get(0));
- AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect(c.makeStatEquivalentCopy()));
- AbstractDungeon.topLevelEffects.add(new com.megacrit.cardcrawl.vfx.UpgradeShineEffect(Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
+ AbstractDungeon.effectsQueue.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy()));
+ AbstractDungeon.topLevelEffects.add(new UpgradeShineEffect(Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
AbstractDungeon.gridSelectScreen.selectedCards.clear();
this.pickCard = false;
}
diff --git a/src/main/java/automaton/events/AncientFactory.java b/src/main/java/automaton/events/AncientFactory.java
index 791264f93..55c7a7480 100644
--- a/src/main/java/automaton/events/AncientFactory.java
+++ b/src/main/java/automaton/events/AncientFactory.java
@@ -10,10 +10,18 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
+import com.megacrit.cardcrawl.helpers.MonsterHelper;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
+import com.megacrit.cardcrawl.monsters.beyond.Deca;
+import com.megacrit.cardcrawl.monsters.beyond.Donu;
+import com.megacrit.cardcrawl.monsters.beyond.Spiker;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.relics.ChampionsBelt;
+import com.megacrit.cardcrawl.relics.CloakClasp;
+import com.megacrit.cardcrawl.relics.WristBlade;
+import slimebound.SlimeboundMod;
public class AncientFactory extends AbstractImageEvent {
public static final String ID = "bronze:AncientFactory";
@@ -51,6 +59,7 @@ protected void buttonEffect(int buttonPressed) {
case 0:
logMetric(ID, "Fought Donu");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDonu();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
@@ -67,6 +76,7 @@ protected void buttonEffect(int buttonPressed) {
case 1:
logMetric(ID, "Fought Deca");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDeca();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
@@ -82,6 +92,7 @@ protected void buttonEffect(int buttonPressed) {
case 2:
logMetric(ID, "Fought Donu and Deca");
this.screen = CurScreen.FIGHT;
+ //SlimeboundMod.logger.info("fight");
m = new ProtoDonu();
m.maxHealth = m.maxHealth / 2;
m.currentHealth = m.maxHealth;
diff --git a/src/main/java/automaton/events/BackToBasicsAutomaton.java b/src/main/java/automaton/events/BackToBasicsAutomaton.java
index 72264c57b..8493a4b00 100644
--- a/src/main/java/automaton/events/BackToBasicsAutomaton.java
+++ b/src/main/java/automaton/events/BackToBasicsAutomaton.java
@@ -42,13 +42,13 @@ public class BackToBasicsAutomaton extends AbstractImageEvent {
OPTIONSGUARDIAN = eventStringsGuardian.OPTIONS;
}
- private BackToBasicsAutomaton.CUR_SCREEN screen;
+ private CUR_SCREEN screen;
private List cardsUpgraded;
private ArrayList cardsToRemove;
public BackToBasicsAutomaton() {
super(NAME, DIALOG_1, "images/events/backToBasics.jpg");
- this.screen = BackToBasicsAutomaton.CUR_SCREEN.INTRO;
+ this.screen = CUR_SCREEN.INTRO;
this.cardsUpgraded = new ArrayList();
for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
@@ -130,7 +130,7 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.clearRemainingOptions();
}
- this.screen = BackToBasicsAutomaton.CUR_SCREEN.COMPLETE;
+ this.screen = CUR_SCREEN.COMPLETE;
break;
case COMPLETE:
this.openMap();
diff --git a/src/main/java/automaton/events/CrystalForgeAutomaton.java b/src/main/java/automaton/events/CrystalForgeAutomaton.java
index 18fd6110c..37c20d91a 100644
--- a/src/main/java/automaton/events/CrystalForgeAutomaton.java
+++ b/src/main/java/automaton/events/CrystalForgeAutomaton.java
@@ -10,12 +10,9 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.localization.EventStrings;
-import com.megacrit.cardcrawl.vfx.UpgradeShineEffect;
import com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
-import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import guardian.GuardianMod;
-import guardian.cards.*;
import java.util.ArrayList;
@@ -56,10 +53,14 @@ public CrystalForgeAutomaton() {
validCards = new ArrayList<>();
rareCards = new ArrayList<>();
- for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
if (c.hasTag(AutomatonMod.ENCODES)) {
validCards.add(c);
}
+ }
+
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
if (c.rarity == AbstractCard.CardRarity.RARE) rareCards.add(c);
}
if (validCards.size() == 0) {
diff --git a/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java b/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
index b7d7c3015..01d9e82a8 100644
--- a/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
+++ b/src/main/java/automaton/patches/DontShowFunctionInCardLibraryPatch.java
@@ -1,4 +1,4 @@
-/*package automaton.patches;
+package automaton.patches;/*package automaton.patches;
import automaton.cards.FunctionCard;
import basemod.patches.com.megacrit.cardcrawl.screens.compendium.CardLibraryScreen.EverythingFix;
diff --git a/src/main/java/automaton/patches/StatusReplacePatch.java b/src/main/java/automaton/patches/StatusReplacePatch.java
index fecaac1c4..8c4b88bb3 100644
--- a/src/main/java/automaton/patches/StatusReplacePatch.java
+++ b/src/main/java/automaton/patches/StatusReplacePatch.java
@@ -25,30 +25,27 @@ public class StatusReplacePatch {
@SpirePrefixPatch
public static SpireReturn Prefix(AbstractCard abstractCard) {
- // //SlimeboundMod.logger.info("making stat equivalent copy");
if (abstractCard.type == AbstractCard.CardType.STATUS && !(abstractCard instanceof AbstractBossCard)) {
if (AbstractDungeon.player != null && CardCrawlGame.isInARun()) {
if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
- ////SlimeboundMod.logger.info("IS STATUS!");
if (AbstractDungeon.player.hasRelic(BronzeIdol.ID)) {
if (!abstractCard.hasTag(AutomatonMod.GOOD_STATUS)) {
AbstractCard newStatus = AutomatonMod.getGoodStatus(abstractCard);
- if(AbstractDungeon.player.hasRelic(MedicalKit.ID)&&!(newStatus instanceof UsefulSlime)){
- newStatus.cost=-2;
- newStatus.costForTurn=-2;
- newStatus.isCostModified=true;
- newStatus.isCostModifiedForTurn=true;
+ if(AbstractDungeon.player.hasRelic(MedicalKit.ID)&&!(newStatus instanceof UsefulSlime)){
+ newStatus.cost=-2;
+ newStatus.costForTurn=-2;
+ newStatus.isCostModified=true;
+ newStatus.isCostModifiedForTurn=true;
+ }
+ return SpireReturn.Return(newStatus);
}
- // //SlimeboundMod.logger.info("replacing with " + newStatus.name);
- return SpireReturn.Return(newStatus);
}
}
}
}
- }
- return SpireReturn.Continue();
+ return SpireReturn.Continue();
- }
+ }
-}
+ }
\ No newline at end of file
diff --git a/src/main/java/automaton/powers/FeaturePower.java b/src/main/java/automaton/powers/FeaturePower.java
index 0522838b2..a7514e15b 100644
--- a/src/main/java/automaton/powers/FeaturePower.java
+++ b/src/main/java/automaton/powers/FeaturePower.java
@@ -1,5 +1,6 @@
package automaton.powers;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -20,12 +21,9 @@ public FeaturePower(int amount) {
@Override
public void onCardDraw(AbstractCard card) {
- if (card.type == AbstractCard.CardType.STATUS || card.type == AbstractCard.CardType.CURSE) {
+ if (card.type == AbstractCard.CardType.STATUS) {
flash();
- applyToSelf(new StrengthPower(owner, amount));
- applyToSelf(new LoseStrengthPower(owner, amount));
- applyToSelf(new DexterityPower(owner, amount));
- applyToSelf(new LoseDexterityPower(owner, amount));
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, amount));
//Imagine how much time could be saved with some kind of function that could be used to make any power temporary.
//IE: applyTempPower(new StrengthPower(owner, amount)):
//Function applies the power, then uses some abstract Java trickery to make another power, called Lose [powername]
@@ -39,8 +37,15 @@ public void onCardDraw(AbstractCard card) {
}
}
+ public void onExhaust(AbstractCard card){
+ if (card.type == AbstractCard.CardType.STATUS) {
+ flash();
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, amount));
+ }
+ }
+
@Override
public void updateDescription() {
- description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1] + amount + DESCRIPTIONS[2];
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/automaton/powers/HardenedFormPower.java b/src/main/java/automaton/powers/HardenedFormPower.java
index 791b15f0d..4dcf8b3bd 100644
--- a/src/main/java/automaton/powers/HardenedFormPower.java
+++ b/src/main/java/automaton/powers/HardenedFormPower.java
@@ -45,7 +45,7 @@ public void update() {
AbstractMonster m = AbstractDungeon.getMonsters().getRandomMonster(true);
if (m != null) {
addToTop(new GainBlockAction(owner, x));
- addToTop(new PseudoDamageRandomEnemyAction(m, new DamageInfo(owner, x, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.NONE));
+ addToTop(new PseudoDamageRandomEnemyAction(m, new DamageInfo(owner, x, DamageInfo.DamageType.THORNS), AttackEffect.NONE));
AbstractDungeon.actionManager.addToTop(new VFXAction(new com.megacrit.cardcrawl.vfx.combat.SmallLaserEffect(orbVFX.currentX + (50F * Settings.scale), orbVFX.currentY + (85F * Settings.scale), m.hb.cX, m.hb.cY), 0.1F));
AbstractDungeon.actionManager.addToTop(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
}
diff --git a/src/main/java/automaton/relics/AnalyticalCore.java b/src/main/java/automaton/relics/AnalyticalCore.java
index dd6c23abd..b854e7fcd 100644
--- a/src/main/java/automaton/relics/AnalyticalCore.java
+++ b/src/main/java/automaton/relics/AnalyticalCore.java
@@ -4,7 +4,6 @@
import automaton.cards.SpaghettiCode;
import automaton.powers.LibraryModPower;
import basemod.abstracts.CustomRelic;
-import basemod.cardmods.EtherealMod;
import basemod.helpers.CardModifierManager;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
diff --git a/src/main/java/automaton/relics/BottledCode.java b/src/main/java/automaton/relics/BottledCode.java
index cd88d4a7c..e88e900d8 100644
--- a/src/main/java/automaton/relics/BottledCode.java
+++ b/src/main/java/automaton/relics/BottledCode.java
@@ -6,6 +6,7 @@
import basemod.abstracts.CustomRelic;
import basemod.abstracts.CustomSavable;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -13,11 +14,12 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import guardian.patches.BottledStasisPatch;
import java.util.function.Predicate;
-public class BottledCode extends CustomRelic implements CustomBottleRelic, CustomSavable {
+public class BottledCode extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
public static final String ID = "bronze:BottledCode";
public static final String IMG_PATH = "bottledCode.png";
public static final String OUTLINE_IMG_PATH = "bottledCode.png";
@@ -26,7 +28,18 @@ 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
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
}
@Override
@@ -102,17 +115,51 @@ public void update() {
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
- private void setDescriptionAfterLoading() {
- this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
- tips.clear();
- tips.add(new PowerTip(name, description));
- initializeTips();
+ public void setDescriptionAfterLoading() {
+
+ boolean cardExists = false;
+
+ if (cardSelected) {
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+ }
+
+ if (!cardExists) {
+ tips.clear();
+ this.description = this.DESCRIPTIONS[4];
+ this.grayscale = true;
+ initializeTips();
+ }
+
+ if (cardExists) {
+ this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
+ this.grayscale = false;
+ tips.clear();
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ }
+ }
}
+// @Override
+// public void onRemoveCardFromMasterDeck(AbstractCard var1){
+// if (var1.uuid == card.uuid) {
+// setDescriptionAfterLoading();
+// }
+// }
+
@Override
public AbstractRelic makeCopy() {
return new BottledCode();
diff --git a/src/main/java/automaton/relics/BronzeCore.java b/src/main/java/automaton/relics/BronzeCore.java
index ed5a0f827..47cd6b34d 100644
--- a/src/main/java/automaton/relics/BronzeCore.java
+++ b/src/main/java/automaton/relics/BronzeCore.java
@@ -1,11 +1,11 @@
package automaton.relics;
import automaton.AutomatonMod;
-import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
-import downfall.util.TextureLoader;
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import downfall.util.TextureLoader;
import static automaton.AutomatonMod.makeRelicOutlinePath;
import static automaton.AutomatonMod.makeRelicPath;
@@ -17,7 +17,7 @@ public class BronzeCore extends CustomRelic implements OnCompileRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("BronzeCore.png"));
public BronzeCore() {
- super(ID, IMG, OUTLINE, RelicTier.STARTER, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.STARTER, LandingSound.CLINK);
}
boolean activated = false;
diff --git a/src/main/java/automaton/relics/BronzeIdol.java b/src/main/java/automaton/relics/BronzeIdol.java
index c6bd06f19..f5e8237a3 100644
--- a/src/main/java/automaton/relics/BronzeIdol.java
+++ b/src/main/java/automaton/relics/BronzeIdol.java
@@ -25,7 +25,7 @@ public class BronzeIdol extends CustomRelic {
private CardPowerTip card_tip = new CardPowerTip(null);
public BronzeIdol() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
card_list.add(new Daze());
card_list.add(new UsefulSlime());
card_list.add(new Ignite());
diff --git a/src/main/java/automaton/relics/DecasWashers.java b/src/main/java/automaton/relics/DecasWashers.java
index 8035e86ca..40f0c7af5 100644
--- a/src/main/java/automaton/relics/DecasWashers.java
+++ b/src/main/java/automaton/relics/DecasWashers.java
@@ -25,6 +25,9 @@ public DecasWashers() {
super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.MAGICAL);
}
+ //How many turns does this relic work for?
+ private static final int TURNS = 3;
+
public void atBattleStart() {
this.counter = 0;
this.grayscale = false;
@@ -38,7 +41,7 @@ public void atTurnStartPostDraw() {
++this.counter;
}
- if (this.counter == 3) {
+ if (this.counter == TURNS) {
this.counter = -1;
this.grayscale = true;
}
@@ -51,7 +54,7 @@ public void onVictory() {
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + TURNS + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/automaton/relics/MakeshiftBattery.java b/src/main/java/automaton/relics/MakeshiftBattery.java
index c51e8354b..a71fbb299 100644
--- a/src/main/java/automaton/relics/MakeshiftBattery.java
+++ b/src/main/java/automaton/relics/MakeshiftBattery.java
@@ -20,7 +20,7 @@ public class MakeshiftBattery extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("MakeshiftBattery.png"));
public MakeshiftBattery() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.HEAVY);
}
@Override
diff --git a/src/main/java/automaton/relics/Mallet.java b/src/main/java/automaton/relics/Mallet.java
index ec5ed4e54..5cd500800 100644
--- a/src/main/java/automaton/relics/Mallet.java
+++ b/src/main/java/automaton/relics/Mallet.java
@@ -26,7 +26,7 @@ public class Mallet extends CustomRelic {
public boolean firstTurn = false;
public Mallet() {
- super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.HEAVY);
AbstractCard q = new FineTuning();
q.upgrade();
tips.add(new CardPowerTip(q));
diff --git a/src/main/java/automaton/relics/PlatinumCore.java b/src/main/java/automaton/relics/PlatinumCore.java
index 1e980d422..f351a248a 100644
--- a/src/main/java/automaton/relics/PlatinumCore.java
+++ b/src/main/java/automaton/relics/PlatinumCore.java
@@ -17,15 +17,19 @@ public class PlatinumCore extends CustomRelic implements OnCompileRelic {
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("PlatinumCore.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("BronzeCore.png"));
+
+ //How many free functions does this relic grant?
+ private static final int FUNCTIONS = 3;
+
public PlatinumCore() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.CLINK);
counter = 0;
}
@Override
public void atBattleStart() {
- counter = 3;
+ counter = FUNCTIONS;
grayscale = false;
}
@@ -78,7 +82,7 @@ public String getUpdatedDescription() {
sb.append("[#").append(AutomatonMod.placeholderColor.toString()).append("]");
}
- return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
+ return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1] + FUNCTIONS + DESCRIPTIONS[2];
}
}
diff --git a/src/main/java/automaton/relics/ProtectiveGoggles.java b/src/main/java/automaton/relics/ProtectiveGoggles.java
index f7fa32725..379eac90f 100644
--- a/src/main/java/automaton/relics/ProtectiveGoggles.java
+++ b/src/main/java/automaton/relics/ProtectiveGoggles.java
@@ -19,15 +19,18 @@ public class ProtectiveGoggles extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("ProtectiveGoggles.png"));
public ProtectiveGoggles() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.CLINK);
}
+ //How much Block does this Relic give?
+ private static final int BLOCK = 4;
+
@Override
public void onPlayerEndTurn() {
if (FunctionHelper.doStuff) {
if (FunctionHelper.isSequenceEmpty()) {
flash();
- addToTop(new GainBlockAction(AbstractDungeon.player, 4));
+ addToTop(new GainBlockAction(AbstractDungeon.player, BLOCK));
addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
}
@@ -35,7 +38,7 @@ public void onPlayerEndTurn() {
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + BLOCK + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/automaton/relics/SilverBullet.java b/src/main/java/automaton/relics/SilverBullet.java
index 8e27a0d6a..79403ee87 100644
--- a/src/main/java/automaton/relics/SilverBullet.java
+++ b/src/main/java/automaton/relics/SilverBullet.java
@@ -20,7 +20,7 @@ public class SilverBullet extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("SilverBullet.png"));
public SilverBullet() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.CLINK);
tips.add(new CardPowerTip(new WhirlingStrike()));
}
diff --git a/src/main/java/awakenedOne/AwakenedOneChar.java b/src/main/java/awakenedOne/AwakenedOneChar.java
new file mode 100644
index 000000000..0bedcc584
--- /dev/null
+++ b/src/main/java/awakenedOne/AwakenedOneChar.java
@@ -0,0 +1,358 @@
+package awakenedOne;
+
+import awakenedOne.cards.Defend;
+import awakenedOne.cards.Hymn;
+import awakenedOne.cards.Strike;
+import awakenedOne.cards.TalonRake;
+import awakenedOne.effects.IroncladVictoryFlameEffectBlue;
+import awakenedOne.effects.ReverseAwakenedWingParticle;
+import awakenedOne.relics.RippedDoll;
+import awakenedOne.util.Wiz;
+import basemod.abstracts.CustomPlayer;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.MathUtils;
+import com.esotericsoftware.spine.AnimationState;
+import com.esotericsoftware.spine.Bone;
+import com.evacipated.cardcrawl.modthespire.lib.SpireEnum;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.EnergyManager;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.CardLibrary;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.ScreenShake;
+import com.megacrit.cardcrawl.localization.CharacterStrings;
+import com.megacrit.cardcrawl.monsters.beyond.AwakenedOne;
+import com.megacrit.cardcrawl.screens.CharSelectInfo;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.AwakenedEyeParticle;
+import com.megacrit.cardcrawl.vfx.AwakenedWingParticle;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import reskinContent.patches.CharacterSelectScreenPatches;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.makeID;
+import static awakenedOne.AwakenedOneMod.placeholderColor;
+import static hermit.characters.hermit.update_timer;
+
+public class AwakenedOneChar extends CustomPlayer {
+ public static final String ID = makeID("awakenedOne");
+ public static final CharacterStrings characterStrings = CardCrawlGame.languagePack.getCharacterString(ID);
+ private static final String[] NAMES = characterStrings.NAMES;
+ private static final String[] TEXT = characterStrings.TEXT;
+ private static final String[] orbTextures = {
+ "awakenedResources/images/mainChar/orb/layer1.png",
+ "awakenedResources/images/mainChar/orb/layer2.png",
+ "awakenedResources/images/mainChar/orb/layer3.png",
+ "awakenedResources/images/mainChar/orb/layer4.png",
+ "awakenedResources/images/mainChar/orb/layer5.png",
+ "awakenedResources/images/mainChar/orb/layer6.png",
+ "awakenedResources/images/mainChar/orb/layer1d.png",
+ "awakenedResources/images/mainChar/orb/layer2d.png",
+ "awakenedResources/images/mainChar/orb/layer3d.png",
+ "awakenedResources/images/mainChar/orb/layer4d.png",
+ "awakenedResources/images/mainChar/orb/layer5d.png",};
+ private static final Logger logger = LogManager.getLogger(AwakenedOne.class.getName());
+ private final String atlasURL = "awakenedResources/images/mainChar/awakened.atlas";
+ private final String jsonURL = "awakenedResources/images/mainChar/awakened.json";
+ public float renderscale = 1.2F;
+ public boolean animateParticles = false;
+ private float fireTimer = 0.0F;
+ private final boolean form1 = true;
+ private boolean revived = false;
+ private Bone eye;
+ private Bone back;
+ private final ArrayList wParticles = new ArrayList();
+ private final ArrayList wParticles2 = new ArrayList();
+
+
+ public AwakenedOneChar(String name, PlayerClass setClass) {
+ super(name, setClass, orbTextures, "awakenedResources/images/mainChar/orb/vfx.png", null, (String) null);
+ initializeClass(null,
+ CharacterSelectScreenPatches.characters[5].skins[CharacterSelectScreenPatches.characters[5].reskinCount].SHOULDER1,
+ CharacterSelectScreenPatches.characters[5].skins[CharacterSelectScreenPatches.characters[5].reskinCount].SHOULDER2,
+ CharacterSelectScreenPatches.characters[5].skins[CharacterSelectScreenPatches.characters[5].reskinCount].CORPSE,
+ getLoadout(), 0.0F, -30.0F, 270.0F, 310.0F, new EnergyManager(3));
+
+ this.reloadAnimation();
+
+ }
+
+ public void reloadAnimation() {
+ this.loadAnimation(atlasURL, jsonURL, 1.2F);
+
+ AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle_1", true);
+ e.setTime(e.getEndTime() * MathUtils.random());
+ this.stateData.setMix("Hit", "Idle_1", 0.3F);
+ this.stateData.setMix("Hit", "Idle_2", 0.2F);
+ this.stateData.setMix("Attack_1", "Idle_1", 0.2F);
+ this.stateData.setMix("Attack_2", "Idle_2", 0.2F);
+ this.state.getData().setMix("Idle_1", "Idle_2", 1.0F);
+ this.eye = this.skeleton.findBone("Eye");
+ Iterator var4 = this.skeleton.getBones().iterator();
+
+ while (var4.hasNext()) {
+ Bone b = (Bone) var4.next();
+ logger.info(b.getData().getName());
+ }
+
+ this.back = this.skeleton.findBone("Hips");
+
+ this.state.setAnimation(0, "Idle_1", true);
+
+ }
+
+
+ //not used
+ public void revival() {
+ revived = true;
+ animateParticles = true;
+ }
+
+ public void update() {
+
+ super.update();
+
+ animateParticles = !this.isDying && Wiz.isAwakened() && Wiz.isInCombat();
+
+ if (this.isDying || !Wiz.isInCombat()) {
+ animateParticles = false;
+ }
+
+ if (this.animateParticles) {
+ this.fireTimer -= Gdx.graphics.getDeltaTime();
+ if (this.fireTimer < 0.0F) {
+ this.fireTimer = 0.1F;
+ //todo: replace with non-leaky animation
+ AbstractDungeon.effectList.add(new AwakenedEyeParticle(this.skeleton.getX() + this.eye.getWorldX(), this.skeleton.getY() + this.eye.getWorldY()));
+ if (!this.flipHorizontal) {
+ this.wParticles.add(new ReverseAwakenedWingParticle());
+ }
+ if (this.flipHorizontal) {
+ this.wParticles2.add(new AwakenedWingParticle());
+ }
+
+ }
+ }
+
+ Iterator p = this.wParticles.iterator();
+
+ while (p.hasNext()) {
+ ReverseAwakenedWingParticle e = p.next();
+ e.update();
+ if (e.isDone) {
+ p.remove();
+ }
+ }
+
+ if (this.flipHorizontal) {
+ Iterator p2 = this.wParticles2.iterator();
+
+ while (p2.hasNext()) {
+ AwakenedWingParticle e2 = p2.next();
+ e2.update();
+ if (e2.isDone) {
+ p2.remove();
+ }
+ }
+ }
+
+ }
+
+
+ public void render(SpriteBatch sb) {
+ if (!this.isDying) {
+ Iterator var2 = this.wParticles.iterator();
+
+ ReverseAwakenedWingParticle p;
+ while (var2.hasNext()) {
+ p = (ReverseAwakenedWingParticle) var2.next();
+ if (p.renderBehind) {
+ p.render(sb, (this.skeleton.getX() - this.back.getWorldX()), this.skeleton.getY() + this.back.getWorldY());
+ }
+ }
+
+ super.render(sb);
+ var2 = this.wParticles.iterator();
+
+ while (var2.hasNext()) {
+ p = (ReverseAwakenedWingParticle) var2.next();
+ if (!p.renderBehind) {
+ p.render(sb, this.skeleton.getX() - this.back.getWorldX(), this.skeleton.getY() + this.back.getWorldY());
+ }
+ }
+
+ }
+ }
+
+ public void damage(DamageInfo info) {
+ if (info.owner != null && info.type != DamageInfo.DamageType.THORNS && info.output - this.currentBlock > 0 && skeleton.getData().findAnimation("Hit") != null) {
+ this.state.setAnimation(0, "Hit", false);
+ if (this.form1) {
+ this.state.addAnimation(0, "Idle_1", true, 0.0F);
+ } else {
+ this.state.addAnimation(0, "Idle_2", true, 0.0F);
+ }
+ }
+ super.damage(info);
+ }
+
+
+ @Override
+ public Texture getCustomModeCharacterButtonImage() {
+ return ImageMaster.loadImage(AwakenedOneMod.getModID() + "Resources/images/charSelect/leaderboard.png");
+ }
+
+
+ @Override
+ public CharSelectInfo getLoadout() {
+ return new CharSelectInfo(NAMES[0], TEXT[0],
+ 70, 70, 0, 99, 5, this, getStartingRelics(),
+ getStartingDeck(), false);
+ }
+
+ @Override
+ public ArrayList getStartingDeck() {
+ ArrayList retVal = new ArrayList<>();
+ for (int i = 0; i < 4; i++) {
+ retVal.add(Strike.ID);
+ }
+ for (int i = 0; i < 4; i++) {
+ retVal.add(Defend.ID);
+ }
+ retVal.add(TalonRake.ID);
+ retVal.add(Hymn.ID);
+ return retVal;
+ }
+
+ public ArrayList getStartingRelics() {
+ ArrayList retVal = new ArrayList<>();
+ retVal.add(RippedDoll.ID);
+ return retVal;
+ }
+
+
+ @Override
+ public void updateVictoryVfx(ArrayList effects) {
+
+ 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, 20);
+ if (spawn == 1) {
+ effects.add(new IroncladVictoryFlameEffectBlue());
+ AbstractDungeon.effectsQueue.add(new IroncladVictoryFlameEffectBlue());
+ }
+ }
+ }
+
+ @Override
+ public void doCharSelectScreenSelectEffect() {
+ if (MathUtils.randomBoolean()) {
+ CardCrawlGame.sound.play("VO_AWAKENEDONE_2", 0.3F);
+ } else {
+ CardCrawlGame.sound.play("VO_AWAKENEDONE_1", 0.3F);
+ }
+ CardCrawlGame.screenShake.shake(ScreenShake.ShakeIntensity.LOW, ScreenShake.ShakeDur.SHORT, false);
+ }
+
+ @Override
+ public String getCustomModeCharacterButtonSoundKey() {
+ if (MathUtils.randomBoolean()) {
+ return "VO_CULTIST_1A";
+ } else {
+ return "VO_CULTIST_1B";
+ }
+ }
+
+ @Override
+ public int getAscensionMaxHPLoss() {
+ return 4;
+ }
+
+ @Override
+ public AbstractCard.CardColor getCardColor() {
+ return Enums.AWAKENED_BLUE;
+ }
+
+ @Override
+ public Color getCardTrailColor() {
+ return placeholderColor.cpy();
+ }
+
+ @Override
+ public BitmapFont getEnergyNumFont() {
+ return FontHelper.energyNumFontRed;
+ }
+
+ @Override
+ public String getLocalizedCharacterName() {
+ return NAMES[0];
+ }
+
+ @Override
+ public AbstractCard getStartCardForEvent() {
+ return new TalonRake();
+ }
+
+ @Override
+ public String getTitle(PlayerClass playerClass) {
+ return NAMES[1];
+ }
+
+ @Override
+ public AbstractPlayer newInstance() {
+ return new AwakenedOneChar(name, chosenClass);
+ }
+
+ @Override
+ public Color getCardRenderColor() {
+ return placeholderColor.cpy();
+ }
+
+ @Override
+ public Color getSlashAttackColor() {
+ return placeholderColor.cpy();
+ }
+
+ @Override
+ public AbstractGameAction.AttackEffect[] getSpireHeartSlashEffect() {
+ return new AbstractGameAction.AttackEffect[]{
+ AbstractGameAction.AttackEffect.FIRE,
+ AbstractGameAction.AttackEffect.SLASH_VERTICAL,
+ AbstractGameAction.AttackEffect.SLASH_HORIZONTAL};
+ }
+
+ @Override
+ public String getSpireHeartText() {
+ return TEXT[1];
+ }
+
+ @Override
+ public String getVampireText() {
+ return TEXT[2];
+ }
+
+ public static class Enums {
+ @SpireEnum
+ public static PlayerClass AWAKENED_ONE;
+ @SpireEnum(name = "AWAKENED_BLUE")
+ public static AbstractCard.CardColor AWAKENED_BLUE;
+ @SpireEnum(name = "AWAKENED_BLUE")
+ @SuppressWarnings("unused")
+ public static CardLibrary.LibraryType LIBRARY_COLOR;
+ }
+}
diff --git a/src/main/java/awakenedOne/AwakenedOneMod.java b/src/main/java/awakenedOne/AwakenedOneMod.java
new file mode 100644
index 000000000..8f94e95e3
--- /dev/null
+++ b/src/main/java/awakenedOne/AwakenedOneMod.java
@@ -0,0 +1,380 @@
+package awakenedOne;
+
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.cards.*;
+import awakenedOne.cards.cardvars.SecondDamage;
+import awakenedOne.cards.cardvars.SecondMagicNumber;
+import awakenedOne.cards.cardvars.ThirdMagicNumber;
+import awakenedOne.events.BackToBasicsAwakened;
+import awakenedOne.events.TheNestAwakened;
+import awakenedOne.events.WingStatueAwakened;
+import awakenedOne.patches.OnCreateCardSubscriber;
+import awakenedOne.patches.OnLoseEnergyPowerPatch;
+import awakenedOne.potions.CultistsDelight;
+import awakenedOne.potions.SacramentalWine;
+import awakenedOne.potions.SneckoPowersPotion;
+import awakenedOne.relics.*;
+import awakenedOne.ui.AwakenedIcon;
+import awakenedOne.ui.OrbitingSpells;
+import awakenedOne.util.CardFilter;
+import basemod.BaseMod;
+import basemod.ReflectionHacks;
+import basemod.eventUtil.AddEventParams;
+import basemod.eventUtil.EventUtils;
+import basemod.helpers.RelicType;
+import basemod.interfaces.*;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.evacipated.cardcrawl.mod.stslib.icons.CustomIconHelper;
+import com.evacipated.cardcrawl.mod.widepotions.WidePotionsMod;
+import com.evacipated.cardcrawl.modthespire.Loader;
+import com.evacipated.cardcrawl.modthespire.lib.SpireEnum;
+import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.events.city.BackToBasics;
+import com.megacrit.cardcrawl.events.city.Nest;
+import com.megacrit.cardcrawl.events.exordium.GoldenWing;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import downfall.downfallMod;
+import downfall.util.CardIgnore;
+import javassist.CtClass;
+import javassist.Modifier;
+import javassist.NotFoundException;
+import org.clapper.util.classutil.*;
+
+import javax.crypto.SecretKeyFactory;
+import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+
+@SuppressWarnings({"ConstantConditions", "unused", "WeakerAccess"})
+@SpireInitializer
+public class AwakenedOneMod implements
+ EditCardsSubscriber,
+ EditRelicsSubscriber,
+ EditCharactersSubscriber,
+ PostInitializeSubscriber,
+ OnStartBattleSubscriber,
+ OnPlayerTurnStartSubscriber,
+ PostPlayerUpdateSubscriber,
+ SetUnlocksSubscriber {
+
+ public static final String SHOULDER1 = "awakenedResources/images/char/mainChar/shoulder.png";
+ public static final String SHOULDER2 = "awakenedResources/images/char/mainChar/shoulderR.png";
+ public static final String CORPSE = "awakenedResources/images/char/mainChar/corpse.png";
+ public static final String CARD_ENERGY_S = "awakenedResources/images/512/card_awakened_orb.png";
+ public static final String TEXT_ENERGY = "awakenedResources/images/512/card_small_orb.png";
+ private static final String ATTACK_S_ART = "awakenedResources/images/512/bg_attack_awakened.png";
+ private static final String SKILL_S_ART = "awakenedResources/images/512/bg_skill_awakened.png";
+ private static final String POWER_S_ART = "awakenedResources/images/512/bg_power_awakened.png";
+ private static final String ATTACK_L_ART = "awakenedResources/images/1024/bg_attack_awakened.png";
+ private static final String SKILL_L_ART = "awakenedResources/images/1024/bg_skill_awakened.png";
+ private static final String POWER_L_ART = "awakenedResources/images/1024/bg_power_awakened.png";
+ private static final String CARD_ENERGY_L = "awakenedResources/images/1024/card_awakened_orb.png";
+ private static final String CHARSELECT_BUTTON = "awakenedResources/images/charSelect/charButton.png";
+ private static final String CHARSELECT_PORTRAIT = "awakenedResources/images/charSelect/charBG.png";
+
+ public static Color placeholderColor = new Color(18F / 255F, 250F / 255F, 240F / 255F, 1);
+ public static Color potionLabColor = new Color(18F / 255F, 250F / 255F, 240F / 255F, 1);
+
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags DELVE;
+
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags CHANT;
+
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags ACTIVECHANT;
+
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags UP_NEXT;
+ public static boolean awakenedthiscombat = false;
+ private static String modID = "awakened";
+
+ public AwakenedOneMod() {
+ BaseMod.subscribe(this);
+
+ modID = "awakened";
+
+ BaseMod.addColor(AwakenedOneChar.Enums.AWAKENED_BLUE, placeholderColor, placeholderColor, placeholderColor,
+ placeholderColor, placeholderColor, placeholderColor, placeholderColor,
+ 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 String makeBetaCardPath(String resourcePath) {
+ String textureString = "awakenedResources/images/cards/joke/" + resourcePath;
+ FileHandle h = Gdx.files.internal(textureString);
+ if (!h.exists()) {
+ textureString = "awakenedResources/images/cards/programmerart/" + resourcePath;
+ }
+ return textureString;
+ }
+
+ public static void loadJokeCardImage(AbstractCard card, String img) {
+ if (card instanceof AbstractAwakenedCard) {
+ ((AbstractAwakenedCard) card).betaArtPath = img;
+ }
+ Texture cardTexture;
+ cardTexture = ImageMaster.loadImage(img);
+ cardTexture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
+ int tw = cardTexture.getWidth();
+ int th = cardTexture.getHeight();
+ TextureAtlas.AtlasRegion cardImg = new TextureAtlas.AtlasRegion(cardTexture, 0, 0, tw, th);
+ ReflectionHacks.setPrivate(card, AbstractCard.class, "jokePortrait", cardImg);
+ }
+
+ public static String makeCardPath(String resourcePath) {
+ return getModID() + "Resources/images/cards/" + resourcePath;
+ }
+
+ public static String makeUIPath(String resourcePath) {
+ return getModID() + "Resources/images/ui/" + resourcePath;
+ }
+
+ public static String makeRelicPath(String resourcePath) {
+ return getModID() + "Resources/images/relics/" + resourcePath;
+ }
+
+ public static String makeRelicOutlinePath(String resourcePath) {
+ return getModID() + "Resources/images/relics/outline/" + resourcePath;
+ }
+
+ public static String makePowerPath(String resourcePath) {
+ return getModID() + "Resources/images/powers/" + resourcePath;
+ }
+
+ public static String getModID() {
+ return modID;
+ }
+
+ public static void initialize() {
+ AwakenedOneMod awakenedOneMod = new AwakenedOneMod();
+ }
+
+ public static String makeID(String idText) {
+ return getModID() + ":" + idText;
+ }
+
+ private static void autoAddCards()
+ throws URISyntaxException, IllegalAccessException, InstantiationException, NotFoundException, ClassNotFoundException {
+ ClassFinder finder = new ClassFinder();
+ URL url = AwakenedOneMod.class.getProtectionDomain().getCodeSource().getLocation();
+ finder.add(new File(url.toURI()));
+
+ ClassFilter filter =
+ new AndClassFilter(
+ new NotClassFilter(new InterfaceOnlyClassFilter()),
+ new NotClassFilter(new AbstractClassFilter()),
+ new ClassModifiersClassFilter(Modifier.PUBLIC),
+ new CardFilter()
+ );
+ Collection foundClasses = new ArrayList<>();
+ finder.findClasses(foundClasses, filter);
+
+ for (ClassInfo classInfo : foundClasses) {
+ CtClass cls = Loader.getClassPool().get(classInfo.getClassName());
+ if (cls.hasAnnotation(CardIgnore.class)) {
+ continue;
+ }
+ boolean isCard = false;
+ CtClass superCls = cls;
+ while (superCls != null) {
+ superCls = superCls.getSuperclass();
+ if (superCls == null) {
+ break;
+ }
+ if (superCls.getName().equals(AbstractCard.class.getName())) {
+ isCard = true;
+ break;
+ }
+ }
+ if (!isCard) {
+ continue;
+ }
+ System.out.println(classInfo.getClassName());
+ AbstractCard card = (AbstractCard) Loader.getClassPool().getClassLoader().loadClass(cls.getName()).newInstance();
+ BaseMod.addCard(card);
+ }
+ }
+
+ /*
+ //Hex Stuff
+ public static void HexCurse(int begone, AbstractCreature m, AbstractCreature source) {
+ atb(new ApplyPowerAction(m, AbstractDungeon.player, new EnemyHexedPower(m, begone), begone));
+ }
+
+ */
+
+ public void receivePostInitialize() {
+
+ BaseMod.addEvent(new AddEventParams.Builder(TheNestAwakened.ID, TheNestAwakened.class) //Event ID//
+ //Event Spawn Condition//
+ .spawnCondition(() -> AbstractDungeon.player instanceof AwakenedOneChar)
+ //Event ID to Override//
+ .overrideEvent(Nest.ID)
+ //Event Type//
+ .eventType(EventUtils.EventType.FULL_REPLACE)
+ .create());
+
+ BaseMod.addEvent(new AddEventParams.Builder(WingStatueAwakened.ID, WingStatueAwakened.class) //Event ID//
+ //Event Spawn Condition//
+ .spawnCondition(() -> AbstractDungeon.player instanceof AwakenedOneChar)
+ //Event ID to Override//
+ .overrideEvent(GoldenWing.ID)
+ //Event Type//
+ .eventType(EventUtils.EventType.FULL_REPLACE)
+ .create());
+
+ BaseMod.addEvent(new AddEventParams.Builder(BackToBasicsAwakened.ID, BackToBasicsAwakened.class) //Event ID//
+ //Event Character//
+ .playerClass(AwakenedOneChar.Enums.AWAKENED_ONE)
+ //Existing Event to Override//
+ .overrideEvent(BackToBasics.ID)
+ //Event Type//
+ .eventType(EventUtils.EventType.FULL_REPLACE)
+ .create());
+ }
+
+ @Override
+ public void receiveEditCharacters() {
+ BaseMod.addCharacter(new AwakenedOneChar("The Awakened One", AwakenedOneChar.Enums.AWAKENED_ONE), CHARSELECT_BUTTON, CHARSELECT_PORTRAIT, AwakenedOneChar.Enums.AWAKENED_ONE);
+ addPotions();
+ }
+
+ @Override
+ public void receiveEditRelics() {
+ //add awakened one relics here
+ BaseMod.addRelicToCustomPool(new RippedDoll(), AwakenedOneChar.Enums.AWAKENED_BLUE); //starter
+ BaseMod.addRelicToCustomPool(new ShreddedDoll(), AwakenedOneChar.Enums.AWAKENED_BLUE); //starter+
+ BaseMod.addRelicToCustomPool(new WhiteRibbon(), AwakenedOneChar.Enums.AWAKENED_BLUE); //boss misc
+ BaseMod.addRelicToCustomPool(new TomeOfPortalmancy(), AwakenedOneChar.Enums.AWAKENED_BLUE); //common
+ BaseMod.addRelicToCustomPool(new ZenerDeck(), AwakenedOneChar.Enums.AWAKENED_BLUE); //uncommon
+ BaseMod.addRelicToCustomPool(new AbyssBlade(), AwakenedOneChar.Enums.AWAKENED_BLUE); //boss energy lose [e] refund
+ BaseMod.addRelicToCustomPool(new StrengthBooster(), AwakenedOneChar.Enums.AWAKENED_BLUE); //uncommon
+ BaseMod.addRelicToCustomPool(new HexxBomb(), AwakenedOneChar.Enums.AWAKENED_BLUE); //shop
+
+ BaseMod.addRelicToCustomPool(new MoonTalisman(), AwakenedOneChar.Enums.AWAKENED_BLUE); //rare relic to replace dead bird's rare #2 slot
+
+ BaseMod.addRelicToCustomPool(new EyeOfTheOccult(), AwakenedOneChar.Enums.AWAKENED_BLUE); //moved from rare to event
+
+ BaseMod.addRelicToCustomPool(new CursedBlessing(), AwakenedOneChar.Enums.AWAKENED_BLUE); //new rare relic to fill Eye of the Occult's spot
+
+ BaseMod.addRelicToCustomPool(new CurvedSword(), AwakenedOneChar.Enums.AWAKENED_BLUE);
+
+ //only obtainable through console (the "conjure blade" relic)
+ BaseMod.addRelicToCustomPool(new CurvedSwordMeme(), AwakenedOneChar.Enums.AWAKENED_BLUE);
+
+ //shared relics
+ BaseMod.addRelic(new CawingCask(), RelicType.SHARED); //rare shared
+ BaseMod.addRelic(new VioletPlumage(), RelicType.SHARED); //shop shared
+ BaseMod.addRelic(new ShardOfNowak(), RelicType.SHARED); //uncommon shared
+ BaseMod.addRelic(new MiniBlackHole(), RelicType.SHARED);//common shared
+
+ BaseMod.addRelic(new DeadBird(), RelicType.SHARED); //decided this was useful enough to be shared
+ }
+
+ public void addPotions() {
+ BaseMod.addPotion(CultistsDelight.class, Color.BLUE, Color.NAVY, Color.YELLOW, CultistsDelight.POTION_ID, AwakenedOneChar.Enums.AWAKENED_ONE);
+ BaseMod.addPotion(SacramentalWine.class, Color.NAVY, Color.VIOLET, Color.MAROON, SacramentalWine.POTION_ID, AwakenedOneChar.Enums.AWAKENED_ONE);
+ BaseMod.addPotion(SneckoPowersPotion.class, Color.CYAN, Color.TAN, Color.BLUE, SneckoPowersPotion.POTION_ID, AwakenedOneChar.Enums.AWAKENED_ONE);
+
+ if (Loader.isModLoaded("widepotions")) {
+ WidePotionsMod.whitelistSimplePotion(CultistsDelight.POTION_ID);
+ WidePotionsMod.whitelistSimplePotion(SacramentalWine.POTION_ID);
+ WidePotionsMod.whitelistSimplePotion(SneckoPowersPotion.POTION_ID);
+ }
+ }
+
+
+ // CONTENT STUFF
+
+ @Override
+ public void receiveEditCards() {
+ CustomIconHelper.addCustomIcon(AwakenedIcon.get());
+
+ BaseMod.addDynamicVariable(new SecondMagicNumber());
+ BaseMod.addDynamicVariable(new ThirdMagicNumber());
+ BaseMod.addDynamicVariable(new SecondDamage());
+
+ try {
+ autoAddCards();
+ } catch (URISyntaxException | IllegalAccessException | InstantiationException | NotFoundException |
+ ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void receiveOnBattleStart(AbstractRoom abstractRoom) {
+ awakenedthiscombat = false;
+ ConjureAction.conjuresThisCombat = 0;
+ OnLoseEnergyPowerPatch.EnergyLostThisCombat = 0;
+ OnCreateCardSubscriber.CardsCreatedThisCombat = 0;
+ OnCreateCardSubscriber.CardsCreatedThisTurn = 0;
+ ConjureAction.refreshedthisturn = false;
+ spellCards.clear();
+ OrbitingSpells.atBattleStart();
+ }
+
+ public void onVictory() {
+ ConjureAction.conjuresThisCombat = 0;
+ OnLoseEnergyPowerPatch.EnergyLostThisCombat = 0;
+ OnCreateCardSubscriber.CardsCreatedThisCombat = 0;
+ OnCreateCardSubscriber.CardsCreatedThisTurn = 0;
+ awakenedthiscombat = false;
+ spellCards.clear();
+ OrbitingSpells.empty();
+ }
+
+ @Override
+ public void receiveOnPlayerTurnStart() {
+ OnCreateCardSubscriber.VoidCreatedThisTurn = false;
+ OnCreateCardSubscriber.CardsCreatedThisTurn = 0;
+ ConjureAction.refreshedthisturn = false;
+ }
+
+ @Override
+ public void receivePostPlayerUpdate() {
+ OrbitingSpells.update();
+ }
+
+ @Override
+ public void receiveSetUnlocks() {
+ downfallMod.registerUnlockSuiteAlternating(
+
+ SplitWide.ID,
+ Primacy.ID,
+ RisingChant.ID,
+
+ TomeOfPortalmancy.ID,
+ AbyssBlade.ID,
+ HexxBomb.ID,
+
+ Ensorcelate.ID,
+ Skyward.ID,
+ BloodRite.ID,
+
+ VioletPlumage.ID,
+ DeadBird.ID,
+ ShardOfNowak.ID,
+
+ FourthDimension.ID,
+ Grimoire.ID,
+ AphoticFount.ID,
+
+ AwakenedOneChar.Enums.AWAKENED_ONE
+ );
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/AwakenedTextHelper.java b/src/main/java/awakenedOne/AwakenedTextHelper.java
new file mode 100644
index 000000000..d94781420
--- /dev/null
+++ b/src/main/java/awakenedOne/AwakenedTextHelper.java
@@ -0,0 +1,24 @@
+package awakenedOne;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class AwakenedTextHelper {
+ protected static String[] ifStr = CardCrawlGame.languagePack.getUIString("awakened:highlightChant").TEXT;
+
+ public static void colorCombos(AbstractAwakenedCard card, boolean resetColors) {
+ if (AbstractDungeon.player != null) {
+ if (card.rawDescription.contains(ifStr[0])) {
+ if ((card.trig_chant) && !resetColors) {
+ card.rawDescription = card.rawDescription.replace(ifStr[0], ifStr[1]);
+ }
+ } else if (card.rawDescription.contains(ifStr[1])) {
+ if ((!card.trig_chant) || resetColors) {
+ card.rawDescription = card.rawDescription.replace(ifStr[1], ifStr[0]);
+ }
+ }
+ }
+ card.initializeDescription();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/AddSpellCardAction.java b/src/main/java/awakenedOne/actions/AddSpellCardAction.java
new file mode 100644
index 000000000..58e16ecb2
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/AddSpellCardAction.java
@@ -0,0 +1,19 @@
+package awakenedOne.actions;
+
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+public class AddSpellCardAction extends AbstractGameAction {
+ private final AbstractCard cardToAdd;
+
+ public AddSpellCardAction(AbstractCard cardToAdd) {
+ this.cardToAdd = cardToAdd;
+ }
+
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.addSpellCard(cardToAdd);
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/AllEnemyLoseHPAction.java b/src/main/java/awakenedOne/actions/AllEnemyLoseHPAction.java
new file mode 100644
index 000000000..4f51f4b84
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/AllEnemyLoseHPAction.java
@@ -0,0 +1,53 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+
+public class AllEnemyLoseHPAction extends AbstractGameAction {
+ private static final float DURATION = 0.01F;
+
+ public AllEnemyLoseHPAction(int amount) {
+ this(amount, AttackEffect.NONE);
+ }
+
+ public AllEnemyLoseHPAction(int amount, AttackEffect effect) {
+ this.source = AbstractDungeon.player;
+ this.amount = amount;
+
+ this.actionType = ActionType.DAMAGE;
+ this.attackEffect = effect;
+ this.startDuration = this.duration = Settings.FAST_MODE ? 0.1f : DURATION;
+ }
+
+ public void update() {
+ if (this.duration == this.startDuration) {
+ for (AbstractMonster m : AbstractDungeon.getMonsters().monsters) {
+ if (!m.isDeadOrEscaped()) {
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(m.hb.cX, m.hb.cY, this.attackEffect));
+ }
+ }
+ }
+
+ this.tickDuration();
+
+ if (this.isDone) {
+ for (AbstractMonster m : AbstractDungeon.getMonsters().monsters) {
+ if (!m.isDeadOrEscaped() && !m.halfDead) {
+ m.damage(new DamageInfo(this.source, this.amount, DamageInfo.DamageType.HP_LOSS));
+ }
+ }
+
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ if (!Settings.FAST_MODE) {
+ this.addToTop(new WaitAction(0.1F));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/ConjureAction.java b/src/main/java/awakenedOne/actions/ConjureAction.java
new file mode 100644
index 000000000..cec36a281
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/ConjureAction.java
@@ -0,0 +1,150 @@
+package awakenedOne.actions;
+
+import awakenedOne.powers.IntensifyDebuffPower;
+import awakenedOne.ui.OrbitingSpells;
+import awakenedOne.util.OnConjureSubscriber;
+import awakenedOne.util.Wiz;
+import charbosses.cards.colorless.EnApotheosis;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsCenteredAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import java.util.ArrayList;
+
+import static awakenedOne.AwakenedOneMod.UP_NEXT;
+import static awakenedOne.ui.AwakenButton.awaken;
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+import static awakenedOne.util.Wiz.isAwakened;
+import static downfall.downfallMod.DeterministicConjure;
+
+public class ConjureAction extends AbstractGameAction {
+
+ public static boolean refreshedthisturn = false;
+ public static ArrayList conjuredCards = new ArrayList();
+ public static int conjuresThisCombat = 0;
+ AbstractCard pick;
+ private final boolean choose;
+ private final boolean ontop;
+ private final boolean bstudy;
+
+
+ public ConjureAction(boolean choose) {
+ this.choose = choose;
+ ontop = false;
+ bstudy = false;
+ pick = null;
+ }
+
+ public ConjureAction(boolean choose, boolean drawpile) {
+ this.choose = choose;
+ ontop = drawpile;
+ bstudy = false;
+ pick = null;
+ }
+
+ public ConjureAction(boolean choose, boolean drawpile, boolean starterrelic, AbstractCard summon) {
+ this.choose = choose;
+ ontop = drawpile;
+ bstudy = starterrelic;
+ pick = summon;
+ }
+
+ @Override
+ public void update() {
+ if (AbstractDungeon.player.hasPower(IntensifyDebuffPower.POWER_ID)) {
+ AbstractDungeon.player.getPower(IntensifyDebuffPower.POWER_ID).flash();
+ this.isDone = true;
+ return;
+ }
+ if (AbstractDungeon.player.hasPower("No Draw")) {
+ AbstractDungeon.player.getPower("No Draw").flash();
+ this.isDone = true;
+ return;
+ }
+ conjuresThisCombat += 1;
+ isDone = true;
+ conjuredCards.clear();
+ addToTop(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ if ((spellCards.isEmpty())) {
+ awaken(5);
+ OrbitingSpells.refreshSpells();
+ //On Refresh...
+// if (AbstractDungeon.player.hasPower(FeathersinksPower.POWER_ID)) {
+// for (int i = 0; i < AbstractDungeon.player.getPower(FeathersinksPower.POWER_ID).amount; i++) {
+// AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
+// }
+// }
+ refreshedthisturn = true;
+ }
+ }
+ });
+ if (!choose) {
+ AbstractCard tar = new EnApotheosis(); //dummy card
+ if (!bstudy) {
+ if (!DeterministicConjure) {
+ tar = Wiz.getRandomItem(spellCards, AbstractDungeon.cardRandomRng).makeStatEquivalentCopy();
+ }
+ if (DeterministicConjure) {
+ for (AbstractCard c : spellCards) {
+ System.out.println("DEBUG: CHECKING: " + c.name);
+ if (c.hasTag(UP_NEXT)) {
+ System.out.println("DEBUG: YES! UP NEXT: " + c.name);
+ tar = c.makeStatEquivalentCopy();
+ }
+ }
+ }
+ }
+ System.out.println("DEBUG: TARGET CARD: " + tar.name);
+ if (tar instanceof EnApotheosis) {
+ tar = spellCards.get(0);
+ }
+
+ if (bstudy) {
+ tar = pick;
+ }
+ if (isAwakened()) {
+ tar.upgrade();
+ }
+ if (!ontop) {
+ addToTop(new MakeTempCardInHandAction(tar));
+ }
+ if (ontop) {
+ addToTop(new MakeTempCardInDrawPileAction(tar, 1, false, true));
+ }
+ if (!bstudy) {
+ addToTop(new RemoveSpellCardAction(tar));
+// if (!spellCards.isEmpty()) {
+// atb(new SetUpNextSpellAction());
+// }
+ } else {
+ addToTop(new RemoveSpellCardActionSpecial(tar));
+ }
+ } else {
+ ArrayList possCards = new ArrayList<>();
+ possCards.addAll(spellCards);
+ ArrayList availableCards = new ArrayList<>();
+ while (!possCards.isEmpty()) {
+ availableCards.add(possCards.remove(AbstractDungeon.cardRandomRng.random(possCards.size() - 1)));
+ }
+ ArrayList actualChoices = new ArrayList<>();
+ availableCards.forEach(q -> actualChoices.add(q.makeStatEquivalentCopy()));
+ addToTop(new SelectCardsCenteredAction(actualChoices, "", (cards) -> {
+ AbstractCard q = cards.get(0);
+ if (isAwakened()) {
+ q.upgrade();
+ }
+ addToTop(new MakeTempCardInHandAction(q));
+ addToTop(new RemoveSpellCardAction(q));
+ }));
+ }
+ for (AbstractCard c : AbstractDungeon.player.discardPile.group) {
+ if (c instanceof OnConjureSubscriber) ((OnConjureSubscriber) c).OnConjure();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/ConjureBladeSpellPileAction.java b/src/main/java/awakenedOne/actions/ConjureBladeSpellPileAction.java
new file mode 100644
index 000000000..9e2a94383
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/ConjureBladeSpellPileAction.java
@@ -0,0 +1,45 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.tempCards.Expunger;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.ui.panels.EnergyPanel;
+
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+
+public class ConjureBladeSpellPileAction extends AbstractGameAction {
+ public int[] multiDamage;
+ private final boolean freeToPlayOnce;
+ private final AbstractPlayer p;
+ private final int energyOnUse;
+
+ public ConjureBladeSpellPileAction(AbstractPlayer p, boolean freeToPlayOnce, int energyOnUse) {
+ this.p = p;
+ this.freeToPlayOnce = freeToPlayOnce;
+ this.duration = Settings.ACTION_DUR_XFAST;
+ this.actionType = ActionType.SPECIAL;
+ this.energyOnUse = energyOnUse;
+ }
+
+ public void update() {
+ int effect = EnergyPanel.totalCount;
+ if (this.energyOnUse != -1) {
+ effect = this.energyOnUse;
+ }
+
+ if (this.p.hasRelic("Chemical X")) {
+ effect += 2;
+ this.p.getRelic("Chemical X").flash();
+ }
+
+ Expunger c = new Expunger();
+ c.setX(effect);
+ spellCards.add(c);
+ if (!this.freeToPlayOnce) {
+ this.p.energy.use(EnergyPanel.totalCount);
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/DrawPowerAction.java b/src/main/java/awakenedOne/actions/DrawPowerAction.java
new file mode 100644
index 000000000..821248e9a
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/DrawPowerAction.java
@@ -0,0 +1,78 @@
+package awakenedOne.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.cards.CardGroup;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import hermit.actions.ReduceCostActionFixed;
+
+import java.util.Iterator;
+
+public class DrawPowerAction extends AbstractGameAction {
+
+ public AbstractPlayer p;
+ public int cards_to_draw;
+
+ public DrawPowerAction(int number) {
+ this.cards_to_draw = number;
+ this.p = AbstractDungeon.player;
+ this.setValues(this.p, this.p);
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.duration = Settings.ACTION_DUR_MED;
+ }
+
+ public void update() {
+ if (this.duration == Settings.ACTION_DUR_MED) {
+ if (this.p.drawPile.isEmpty()) {
+ this.isDone = true;
+ return;
+ }
+
+ if (AbstractDungeon.player.hasPower("No Draw")) {
+ AbstractDungeon.player.getPower("No Draw").flash();
+ this.isDone = true;
+ return;
+ }
+
+ int counter = 0;
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ Iterator var2 = this.p.drawPile.group.iterator();
+
+ AbstractCard card;
+ while (var2.hasNext() && (counter < this.cards_to_draw)) {
+ card = var2.next();
+ if (card.type == AbstractCard.CardType.POWER) {
+ tmp.addToRandomSpot(card);
+ counter++;
+ }
+ }
+
+
+ if (tmp.size() == 0) {
+ this.isDone = true;
+ return;
+ }
+
+ for (int i = 0; i < counter; ++i) {
+ if (!tmp.isEmpty()) {
+ tmp.shuffle();
+ card = tmp.getBottomCard();
+ tmp.removeCard(card);
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
+ this.p.createHandIsFullDialog();
+ } else {
+ this.p.drawPile.moveToDeck(card, false);
+ this.addToTop(new DrawCardAction(1));
+ this.addToBot(new ReduceCostActionFixed(card.uuid, -1));
+ }
+ }
+ }
+ this.isDone = true;
+ }
+ this.tickDuration();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/EasyXCostAction.java b/src/main/java/awakenedOne/actions/EasyXCostAction.java
new file mode 100644
index 000000000..03c2fc3b3
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/EasyXCostAction.java
@@ -0,0 +1,55 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.ChemicalX;
+import com.megacrit.cardcrawl.ui.panels.EnergyPanel;
+
+import java.util.function.BiFunction;
+
+public class EasyXCostAction extends AbstractGameAction {
+ public BiFunction xActionUpdate;
+ public int[] params;
+ protected int baseValue;
+ protected boolean freeToPlayOnce;
+ protected int effect;
+ private boolean firstUpdate = true;
+
+ /**
+ * @param card The card played. Usually should simply be "this".
+ * @param xActionUpdate A BiFunction that receives an integer for the energy amount (includes Chem X) and any number of integer parameters in the form of an array. The return value of this function is isDone.
+ * @param params Any number of integer parameters. These will be passed to the update function to avoid possible value changes between the creation of this action and when it is updated.
+ */
+ public EasyXCostAction(AbstractCard card, BiFunction xActionUpdate, int... params) {
+ this.baseValue = card.energyOnUse;
+ this.freeToPlayOnce = card.freeToPlayOnce;
+ this.xActionUpdate = xActionUpdate;
+
+ this.params = params;
+ }
+
+ @Override
+ public void update() {
+ if (firstUpdate) {
+ effect = EnergyPanel.totalCount;
+ if (this.baseValue != -1) {
+ effect = this.baseValue;
+ }
+
+ if (AbstractDungeon.player.hasRelic(ChemicalX.ID)) {
+ effect += 2;
+ AbstractDungeon.player.getRelic(ChemicalX.ID).flash();
+ }
+
+ isDone = xActionUpdate.apply(effect, params) || duration < 0.0f;
+ firstUpdate = false;
+
+ if (!this.freeToPlayOnce) {
+ AbstractDungeon.player.energy.use(EnergyPanel.totalCount);
+ }
+ } else {
+ isDone = xActionUpdate.apply(effect, params) || duration < 0.0f;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/FollowUpPowersAction.java b/src/main/java/awakenedOne/actions/FollowUpPowersAction.java
new file mode 100644
index 000000000..b8363109b
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/FollowUpPowersAction.java
@@ -0,0 +1,29 @@
+package awakenedOne.actions;
+
+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.GainEnergyAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.AbstractCard.CardType;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.vfx.combat.MiracleEffect;
+
+public class FollowUpPowersAction extends AbstractGameAction {
+ public FollowUpPowersAction() {
+ }
+
+ public void update() {
+ if (AbstractDungeon.actionManager.cardsPlayedThisCombat.size() >= 2 && AbstractDungeon.actionManager.cardsPlayedThisCombat.get(AbstractDungeon.actionManager.cardsPlayedThisCombat.size() - 2).type == CardType.POWER) {
+ this.addToTop(new GainEnergyAction(1));
+ if (Settings.FAST_MODE) {
+ this.addToTop(new VFXAction(new MiracleEffect(Color.CYAN, Color.PURPLE, "ATTACK_MAGIC_SLOW_1"), 0.0F));
+ } else {
+ this.addToTop(new VFXAction(new MiracleEffect(Color.CYAN, Color.PURPLE, "ATTACK_MAGIC_SLOW_1"), 0.3F));
+ }
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/ForTheHexAction.java b/src/main/java/awakenedOne/actions/ForTheHexAction.java
new file mode 100644
index 000000000..11935b037
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/ForTheHexAction.java
@@ -0,0 +1,23 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class ForTheHexAction extends AbstractGameAction {
+ private final AbstractMonster m;
+
+ public ForTheHexAction(int weakAmt, AbstractMonster m) {
+ this.actionType = ActionType.WAIT;
+ this.amount = weakAmt;
+ this.m = m;
+ }
+
+ public void update() {
+ if (this.m != null && this.m.getIntentBaseDmg() >= 0) {
+ atb(new ConjureAction(false));
+ }
+ this.isDone = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/GashCawAction.java b/src/main/java/awakenedOne/actions/GashCawAction.java
new file mode 100644
index 000000000..fb132f0d4
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/GashCawAction.java
@@ -0,0 +1,91 @@
+package awakenedOne.actions;
+
+import automaton.FunctionHelper;
+import awakenedOne.cards.Caw;
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.orbs.AbstractOrb;
+import guardian.orbs.StasisOrb;
+
+import java.util.Iterator;
+
+public class GashCawAction extends AbstractGameAction {
+ private final AbstractCard card;
+
+ public GashCawAction(AbstractCard card, int amount) {
+ this.card = card;
+ this.amount = amount;
+ }
+
+ public void update() {
+ AbstractCard var10000 = this.card;
+ var10000.baseDamage += this.amount;
+ this.card.applyPowers();
+ Iterator var1 = AbstractDungeon.player.discardPile.group.iterator();
+
+ AbstractCard c;
+ while (var1.hasNext()) {
+ c = (AbstractCard) var1.next();
+ if (c instanceof Caw) {
+ c.baseDamage += this.amount;
+ c.applyPowers();
+ }
+ }
+
+ var1 = AbstractDungeon.player.drawPile.group.iterator();
+
+ while (var1.hasNext()) {
+ c = (AbstractCard) var1.next();
+ if (c instanceof Caw) {
+ c.baseDamage += this.amount;
+ c.applyPowers();
+ }
+ }
+
+ var1 = AbstractDungeon.player.hand.group.iterator();
+
+ while (var1.hasNext()) {
+ c = (AbstractCard) var1.next();
+ if (c instanceof Caw) {
+ c.baseDamage += this.amount;
+ c.applyPowers();
+ }
+ }
+
+ //Claw doesn't even hit Claws in the exhaust pile? Caw >>>> Claw, clearly.
+
+ OrbitingSpells.upgradeCaws(this.amount);
+
+ var1 = AbstractDungeon.player.exhaustPile.group.iterator();
+
+ while (var1.hasNext()) {
+ c = (AbstractCard) var1.next();
+ if (c instanceof Caw) {
+ c.baseDamage += this.amount;
+ c.applyPowers();
+ }
+ }
+
+ for (AbstractOrb o : AbstractDungeon.player.orbs) {
+ if (o instanceof StasisOrb) {
+ if (((StasisOrb) o).stasisCard instanceof Caw) {
+ ((StasisOrb) o).stasisCard.baseDamage += this.amount;
+ ((StasisOrb) o).stasisCard.applyPowers();
+ }
+ }
+ }
+
+ if (FunctionHelper.doStuff) {
+ for (AbstractCard q : FunctionHelper.held.group) {
+ if (q instanceof Caw) {
+ q.baseDamage += this.amount;
+ }
+ }
+ FunctionHelper.genPreview();
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/GrimoireAction.java b/src/main/java/awakenedOne/actions/GrimoireAction.java
new file mode 100644
index 000000000..8c79668ee
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/GrimoireAction.java
@@ -0,0 +1,62 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.helpers.GetAllInBattleInstances;
+import com.megacrit.cardcrawl.orbs.AbstractOrb;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import guardian.orbs.StasisOrb;
+
+import java.util.Iterator;
+import java.util.UUID;
+
+public class GrimoireAction extends AbstractGameAction {
+ private static final float DURATION = 0.1F;
+ private final DamageInfo info;
+ private final UUID uuid;
+ private final AbstractPlayer p;
+
+ public GrimoireAction(AbstractCreature target, DamageInfo info, UUID targetUUID) {
+ this.info = info;
+ this.setValues(target, info);
+ this.actionType = ActionType.DAMAGE;
+ this.duration = DURATION;
+ this.p = AbstractDungeon.player;
+ this.uuid = targetUUID;
+ }
+
+ @Override
+ public void update() {
+ if (this.duration == DURATION) {
+ if (this.target != null) {
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, AttackEffect.FIRE));
+ this.target.damage(this.info);
+ }
+ Iterator var1;
+ for (var1 = GetAllInBattleInstances.get(this.uuid).iterator(); var1.hasNext(); ) {
+ AbstractCard c = var1.next();
+ addToBot(new GrimoireSpecificCardAction(c, AbstractDungeon.player.limbo, true));
+ addToBot(new GrimoireSpecificCardAction(c, AbstractDungeon.player.drawPile, true));
+ addToBot(new GrimoireSpecificCardAction(c, AbstractDungeon.player.hand, true));
+ addToBot(new GrimoireSpecificCardAction(c, AbstractDungeon.player.discardPile, true));
+ }
+
+ for (AbstractOrb o : this.p.orbs) {
+ if (o instanceof StasisOrb) {
+ if (((StasisOrb) o).stasisCard.uuid == this.uuid) {
+ this.p.orbs.remove(o);
+ }
+ }
+ }
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ this.tickDuration();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/GrimoireSpecificCardAction.java b/src/main/java/awakenedOne/actions/GrimoireSpecificCardAction.java
new file mode 100644
index 000000000..39c470b0f
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/GrimoireSpecificCardAction.java
@@ -0,0 +1,33 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class GrimoireSpecificCardAction extends AbstractGameAction {
+ private final AbstractCard targetCard;
+ private final CardGroup group;
+ private final float startingDuration;
+
+ public GrimoireSpecificCardAction(AbstractCard targetCard, CardGroup group, boolean isFast) {
+ this.targetCard = targetCard;
+ this.setValues(AbstractDungeon.player, AbstractDungeon.player, this.amount);
+ this.actionType = ActionType.EXHAUST;
+ this.group = group;
+ this.startingDuration = Settings.ACTION_DUR_FAST;
+ this.duration = this.startingDuration;
+ }
+
+ public GrimoireSpecificCardAction(AbstractCard targetCard, CardGroup group) {
+ this(targetCard, group, false);
+ }
+
+ public void update() {
+ if (this.duration == this.startingDuration && this.group.contains(this.targetCard)) {
+ this.group.removeCard(targetCard);
+ }
+ this.tickDuration();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/KillEnemyAction.java b/src/main/java/awakenedOne/actions/KillEnemyAction.java
new file mode 100644
index 000000000..9cc4971f6
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/KillEnemyAction.java
@@ -0,0 +1,114 @@
+package awakenedOne.actions;
+
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ScreenShake;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.*;
+
+public class KillEnemyAction extends AbstractGameAction {
+ private static final float BLOCK_ICON_X = -14.0F * Settings.scale;
+ private static final float BLOCK_ICON_Y = -14.0F * Settings.scale;
+ private final AbstractMonster m;
+
+
+ public KillEnemyAction(AbstractMonster m) {
+ this.m = m;
+ }
+
+ @Override
+ public void update() {
+ int damage = MathUtils.random(2, 13);
+ m.currentHealth = 0;
+ while (damage < Integer.MAX_VALUE / 13) {
+ loseHP(damage);
+ damage *= 13;
+ }
+
+ m.damage(new DamageInfo(m, damage, DamageInfo.DamageType.HP_LOSS));
+ m.die(); //(hopefully) ensure death
+
+ if (AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.cleanCardQueue();
+ AbstractDungeon.effectList.add(new DeckPoofEffect(64.0F * Settings.scale, 64.0F * Settings.scale, true));
+ AbstractDungeon.effectList.add(new DeckPoofEffect((float) Settings.WIDTH - 64.0F * Settings.scale, 64.0F * Settings.scale, false));
+ AbstractDungeon.overlayMenu.hideCombatPanels();
+ }
+
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ this.isDone = true;
+ }
+
+ private void loseHP(int damageAmount) {
+ boolean hadBlock = m.currentBlock != 0;
+
+ boolean weakenedToZero = damageAmount == 0;
+ damageAmount = decrementBlock(damageAmount);
+
+ if (damageAmount > 0) {
+ m.useStaggerAnimation();
+
+ if (damageAmount >= 99 && !CardCrawlGame.overkill) {
+ CardCrawlGame.overkill = true;
+ }
+
+ m.currentHealth -= damageAmount;
+ AbstractDungeon.effectList.add(new StrikeEffect(m, m.hb.cX, m.hb.cY, damageAmount));
+ if (m.currentHealth < 0) {
+ m.currentHealth = 0;
+ }
+
+ m.healthBarUpdatedEvent();
+ } else if (weakenedToZero && m.currentBlock == 0) {
+ if (hadBlock) {
+ AbstractDungeon.effectList.add(new BlockedWordEffect(m, m.hb.cX, m.hb.cY, AbstractMonster.TEXT[30]));
+ } else {
+ AbstractDungeon.effectList.add(new StrikeEffect(m, m.hb.cX, m.hb.cY, 0));
+ }
+ } else if (Settings.SHOW_DMG_BLOCK) {
+ AbstractDungeon.effectList.add(new BlockedWordEffect(m, m.hb.cX, m.hb.cY, AbstractMonster.TEXT[30]));
+ }
+ }
+
+ private int decrementBlock(int damageAmount) {
+ if (m.currentBlock > 0) {
+ CardCrawlGame.screenShake.shake(ScreenShake.ShakeIntensity.MED, ScreenShake.ShakeDur.SHORT, false);
+ if (damageAmount > m.currentBlock) {
+ damageAmount -= m.currentBlock;
+ if (Settings.SHOW_DMG_BLOCK) {
+ AbstractDungeon.effectList.add(new BlockedNumberEffect(m.hb.cX, m.hb.cY + m.hb.height / 2.0F, Integer.toString(m.currentBlock)));
+ }
+
+ m.loseBlock();
+
+ AbstractDungeon.effectList.add(new HbBlockBrokenEffect(m.hb.cX - m.hb.width / 2.0F + BLOCK_ICON_X, m.hb.cY - m.hb.height / 2.0F + BLOCK_ICON_Y));
+ CardCrawlGame.sound.play("BLOCK_BREAK");
+ } else if (damageAmount == m.currentBlock) {
+ damageAmount = 0;
+ m.loseBlock();
+ AbstractDungeon.effectList.add(new BlockedWordEffect(m, m.hb.cX, m.hb.cY, AbstractMonster.TEXT[1]));
+ } else {
+ CardCrawlGame.sound.play("BLOCK_ATTACK");
+ m.loseBlock(damageAmount);
+
+ for (int i = 0; i < 18; ++i) {
+ AbstractDungeon.effectList.add(new BlockImpactLineEffect(m.hb.cX, m.hb.cY));
+ }
+
+ if (Settings.SHOW_DMG_BLOCK) {
+ AbstractDungeon.effectList.add(new BlockedNumberEffect(m.hb.cX, m.hb.cY + m.hb.height / 2.0F, Integer.toString(damageAmount)));
+ }
+
+ damageAmount = 0;
+ }
+ }
+
+ return damageAmount;
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/ModifyMagicAction.java b/src/main/java/awakenedOne/actions/ModifyMagicAction.java
new file mode 100644
index 000000000..68c3a4312
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/ModifyMagicAction.java
@@ -0,0 +1,29 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.helpers.GetAllInBattleInstances;
+
+import java.util.UUID;
+
+public class ModifyMagicAction extends AbstractGameAction {
+ private final UUID uuid;
+
+ public ModifyMagicAction(UUID targetUUID, int amount) {
+ this.setValues(this.target, this.source, amount);
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.uuid = targetUUID;
+ }
+
+ public void update() {
+ for (AbstractCard c : GetAllInBattleInstances.get(this.uuid)) {
+ c.baseMagicNumber += this.amount;
+ if (c.baseMagicNumber < 0) {
+ c.baseMagicNumber = 0;
+ }
+ c.magicNumber = c.baseMagicNumber;
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/NihilAction.java b/src/main/java/awakenedOne/actions/NihilAction.java
new file mode 100644
index 000000000..cc8586d55
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/NihilAction.java
@@ -0,0 +1,112 @@
+package awakenedOne.actions;
+
+import awakenedOne.powers.NihilPower;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+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.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.BorderLongFlashEffect;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import com.megacrit.cardcrawl.vfx.combat.WaterDropEffect;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class NihilAction extends AbstractGameAction {
+ private final int damage;
+
+ public NihilAction(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, AttackEffect.SLASH_HEAVY));
+ 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(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) {
+ atb(new ApplyPowerAction(target, source, new NihilPower(target, tmp), tmp));
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(this.source, new OfferingEnemyEffect(target), 0.2F));
+ } else {
+ this.addToBot(new VFXAction(this.source, new OfferingEnemyEffect(target), 0.5F));
+ }
+ }
+ }
+
+
+ private static class OfferingEnemyEffect extends AbstractGameEffect {
+ private int count = 0;
+ private float timer = 0.0F;
+ private final AbstractCreature target;
+
+ public OfferingEnemyEffect(AbstractCreature target) {
+ this.target = target;
+ }
+
+ public void update() {
+ this.timer -= Gdx.graphics.getDeltaTime();
+ if (this.timer < 0.0F) {
+ this.timer += 0.3F;
+ switch (this.count) {
+ case 0:
+ CardCrawlGame.sound.playA("ATTACK_FIRE", -0.5F);
+ CardCrawlGame.sound.playA("BLOOD_SPLAT", -0.75F);
+ AbstractDungeon.effectsQueue.add(new BorderLongFlashEffect(new Color(1.0F, 0.1F, 0.1F, 1.0F)));
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX, target.hb.cY + 250.0F * Settings.scale));
+ break;
+ case 1:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX + 150.0F * Settings.scale, target.hb.cY - 80.0F * Settings.scale));
+ break;
+ case 2:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX - 200.0F * Settings.scale, target.hb.cY + 50.0F * Settings.scale));
+ break;
+ case 3:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX + 200.0F * Settings.scale, target.hb.cY + 50.0F * Settings.scale));
+ break;
+ case 4:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX - 150.0F * Settings.scale, target.hb.cY - 80.0F * Settings.scale));
+ }
+
+ ++this.count;
+ if (this.count == 6) {
+ this.isDone = true;
+ }
+ }
+
+ }
+
+ public void render(SpriteBatch sb) {
+ }
+
+ public void dispose() {
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/NukeCardAction.java b/src/main/java/awakenedOne/actions/NukeCardAction.java
new file mode 100644
index 000000000..a832f3552
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/NukeCardAction.java
@@ -0,0 +1,60 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustSpecificCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.orbs.AbstractOrb;
+import guardian.orbs.StasisOrb;
+
+
+public class NukeCardAction extends AbstractGameAction {
+ public AbstractCard card;
+
+
+ public NukeCardAction(AbstractCard card) {
+ this.card = card;
+ this.duration = this.startDuration = Settings.ACTION_DUR_XFAST;
+ }
+
+ public void update() {
+ this.isDone = true;
+ for (int i = 0; i < AbstractDungeon.player.drawPile.size(); ) {
+ AbstractCard c = AbstractDungeon.player.drawPile.group.get(i);
+ if (c.uuid == card.uuid) {
+ addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.drawPile, true));
+ }
+ }
+
+ for (int i = 0; i < AbstractDungeon.player.hand.size(); ) {
+ AbstractCard c = AbstractDungeon.player.hand.group.get(i);
+ if (c.uuid == card.uuid) {
+ addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.hand, true));
+ }
+ }
+
+ for (int i = 0; i < AbstractDungeon.player.discardPile.size(); ) {
+ AbstractCard c = AbstractDungeon.player.discardPile.group.get(i);
+ if (c.uuid == card.uuid) {
+ addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile, true));
+ }
+ }
+
+ for (int i = 0; i < AbstractDungeon.player.limbo.size(); ) {
+ AbstractCard c = AbstractDungeon.player.limbo.group.get(i);
+ if (c.uuid == card.uuid) {
+ addToBot(new ExhaustSpecificCardAction(c, AbstractDungeon.player.limbo, true));
+ }
+ }
+
+ //AAAAAAHHHHHH!!!!!!!!!
+ for (AbstractOrb o : AbstractDungeon.player.orbs) {
+ if (o instanceof StasisOrb) {
+ if (((StasisOrb) o).stasisCard.uuid == card.uuid) {
+ AbstractDungeon.player.orbs.remove(o);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/RefreshSpellsAction.java b/src/main/java/awakenedOne/actions/RefreshSpellsAction.java
new file mode 100644
index 000000000..47dbdf05b
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/RefreshSpellsAction.java
@@ -0,0 +1,12 @@
+package awakenedOne.actions;
+
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+
+public class RefreshSpellsAction extends AbstractGameAction {
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.refreshSpells();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/RemoveSpellCardAction.java b/src/main/java/awakenedOne/actions/RemoveSpellCardAction.java
new file mode 100644
index 000000000..1fcbb4fef
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/RemoveSpellCardAction.java
@@ -0,0 +1,19 @@
+package awakenedOne.actions;
+
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+public class RemoveSpellCardAction extends AbstractGameAction {
+ private final AbstractCard card;
+
+ public RemoveSpellCardAction(AbstractCard card) {
+ this.card = card;
+ }
+
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.removeSpellCard(card);
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/RemoveSpellCardActionSpecial.java b/src/main/java/awakenedOne/actions/RemoveSpellCardActionSpecial.java
new file mode 100644
index 000000000..e685b2730
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/RemoveSpellCardActionSpecial.java
@@ -0,0 +1,19 @@
+package awakenedOne.actions;
+
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+public class RemoveSpellCardActionSpecial extends AbstractGameAction {
+ private final AbstractCard card;
+
+ public RemoveSpellCardActionSpecial(AbstractCard card) {
+ this.card = card;
+ }
+
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.removeSpellCardSpecial(card);
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/RitualDaggerThreeAction.java b/src/main/java/awakenedOne/actions/RitualDaggerThreeAction.java
new file mode 100644
index 000000000..328585089
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/RitualDaggerThreeAction.java
@@ -0,0 +1,66 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.vfx.combat.FlashAtkImgEffect;
+
+import java.util.Iterator;
+import java.util.UUID;
+
+
+//unused
+//turn out that a ritual dagger that hits three times is stupid and even if it wasn't the code is annoying
+
+public class RitualDaggerThreeAction extends AbstractGameAction {
+ private final int increaseAmount;
+ private final DamageInfo info;
+ private final UUID uuid;
+
+ public RitualDaggerThreeAction(AbstractCreature target, DamageInfo info, int incAmount, UUID targetUUID) {
+ this.info = info;
+ this.setValues(target, info);
+ this.increaseAmount = incAmount;
+ this.actionType = ActionType.DAMAGE;
+ this.duration = 0.1F;
+ this.uuid = targetUUID;
+ }
+
+ public void update() {
+ if (this.duration == 0.1F && this.target != null && this.target.isDying) {
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, AttackEffect.SLASH_HORIZONTAL));
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, AttackEffect.SLASH_VERTICAL));
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, AttackEffect.SLASH_HORIZONTAL));
+ this.target.damage(this.info);
+ if ((this.target.isDying || this.target.currentHealth <= 0) && !this.target.halfDead && !this.target.hasPower("Minion")) {
+ Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+
+ AbstractCard c;
+ while (var1.hasNext()) {
+ c = (AbstractCard) var1.next();
+ if (c.uuid.equals(this.uuid)) {
+ c.misc += this.increaseAmount;
+ c.applyPowers();
+ c.baseDamage = c.misc;
+ c.isDamageModified = false;
+ }
+ }
+
+ for (var1 = GetAllInBattleInstances.get(this.uuid).iterator(); var1.hasNext(); c.baseDamage = c.misc) {
+ c = (AbstractCard) var1.next();
+ c.misc += this.increaseAmount;
+ c.applyPowers();
+ }
+ }
+
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ }
+
+ this.tickDuration();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/ScryChantAction.java b/src/main/java/awakenedOne/actions/ScryChantAction.java
new file mode 100644
index 000000000..b942c9824
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/ScryChantAction.java
@@ -0,0 +1,81 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.cards.CardGroup.CardGroupType;
+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 com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class ScryChantAction extends AbstractGameAction {
+ public static final String[] TEXT;
+ private static final UIStrings uiStrings;
+
+ static {
+ uiStrings = CardCrawlGame.languagePack.getUIString("ReprogramAction");
+ TEXT = uiStrings.TEXT;
+ }
+
+ private final float startingDuration;
+
+ public ScryChantAction(int numCards) {
+ this.amount = numCards;
+ if (AbstractDungeon.player.hasRelic("GoldenEye")) {
+ AbstractDungeon.player.getRelic("GoldenEye").flash();
+ this.amount += 2;
+ }
+
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.startingDuration = Settings.ACTION_DUR_FAST;
+ this.duration = this.startingDuration;
+ }
+
+ public void update() {
+ if (AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
+ this.isDone = true;
+ } else {
+ if (this.duration == this.startingDuration) {
+ for (AbstractPower p : AbstractDungeon.player.powers) {
+ p.onScry();
+ }
+
+ if (AbstractDungeon.player.drawPile.isEmpty()) {
+ this.isDone = true;
+ return;
+ }
+
+ CardGroup tmpGroup = new CardGroup(CardGroupType.UNSPECIFIED);
+ if (this.amount != -1) {
+ for (int i = 0; i < Math.min(this.amount, AbstractDungeon.player.drawPile.size()); ++i) {
+ tmpGroup.addToTop(AbstractDungeon.player.drawPile.group.get(AbstractDungeon.player.drawPile.size() - i - 1));
+ }
+ } else {
+ for (AbstractCard c : AbstractDungeon.player.drawPile.group) {
+ tmpGroup.addToBottom(c);
+ }
+ }
+
+ AbstractDungeon.gridSelectScreen.open(tmpGroup, this.amount, true, TEXT[0]);
+ } else if (!AbstractDungeon.gridSelectScreen.selectedCards.isEmpty()) {
+ for (int i = AbstractDungeon.gridSelectScreen.selectedCards.size() - 1; i >= 0; i--) {
+ AbstractCard c = AbstractDungeon.gridSelectScreen.selectedCards.get(i);
+ if (c.type == AbstractCard.CardType.POWER) {
+ AbstractDungeon.player.drawPile.moveToHand(c);
+ } else {
+ AbstractDungeon.player.drawPile.moveToDiscardPile(c);
+ }
+ AbstractDungeon.gridSelectScreen.selectedCards.clear();
+ }
+
+ for (AbstractCard c : AbstractDungeon.player.discardPile.group) {
+ c.triggerOnScry();
+ }
+
+ this.tickDuration();
+ }
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/SerpentIdolPowerAction.java b/src/main/java/awakenedOne/actions/SerpentIdolPowerAction.java
new file mode 100644
index 000000000..74682eef9
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/SerpentIdolPowerAction.java
@@ -0,0 +1,79 @@
+package awakenedOne.actions;
+
+import basemod.BaseMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.screens.CardRewardScreen;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndAddToDiscardEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndAddToHandEffect;
+import expansioncontent.patches.CardColorEnumPatch;
+import sneckomod.SneckoMod;
+
+import java.util.ArrayList;
+
+public class SerpentIdolPowerAction extends AbstractGameAction {
+ private boolean retrieveCard = false;
+ private final int count;
+
+ public SerpentIdolPowerAction(int count) {
+ this.actionType = ActionType.CARD_MANIPULATION;// 19
+ this.duration = Settings.ACTION_DUR_FAST;// 20
+ this.count = count;
+ }// 22
+
+ public void update() {
+ if (this.duration == Settings.ACTION_DUR_FAST) {
+ AbstractDungeon.cardRewardScreen.customCombatOpen(this.generateCardChoices(), CardRewardScreen.TEXT[1], true);
+ this.tickDuration();
+ } else {
+ if (!this.retrieveCard) {
+ if (AbstractDungeon.cardRewardScreen.discoveryCard != null) {
+ for (int i = 0; i < this.count; i++) {
+
+
+ AbstractCard disCard = AbstractDungeon.cardRewardScreen.discoveryCard.makeStatEquivalentCopy();
+ disCard.setCostForTurn(0);
+
+ disCard.current_x = -1000.0F * Settings.scale;
+ 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));
+ }
+
+ }
+ }
+
+ AbstractDungeon.cardRewardScreen.discoveryCard = null;
+
+ this.retrieveCard = true;
+ }
+ this.tickDuration();
+ }
+ }
+
+ private ArrayList generateCardChoices() {
+ ArrayList derp = new ArrayList<>();// 57
+
+ while (derp.size() != 3) {// 60
+ boolean dupe = false;// 61
+
+ AbstractCard tmp = SneckoMod.getOffClassCardMatchingPredicatePotionRng(c -> c.type == AbstractCard.CardType.POWER && !c.hasTag(SneckoMod.BANNEDFORSNECKO) && c.color != AbstractCard.CardColor.COLORLESS && c.color != CardColorEnumPatch.CardColorPatch.BOSS);
+
+ for (AbstractCard c : derp) {
+ if (c.cardID.equals(tmp.cardID)) {// 76
+ dupe = true;// 77
+ break;// 78
+ }
+ }
+
+ if (!dupe) {// 82
+ derp.add(tmp.makeCopy());// 83
+ }
+ }
+
+ return derp;// 87
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/actions/SetUpNextSpellAction.java b/src/main/java/awakenedOne/actions/SetUpNextSpellAction.java
new file mode 100644
index 000000000..45bd1f567
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/SetUpNextSpellAction.java
@@ -0,0 +1,15 @@
+package awakenedOne.actions;
+
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+
+public class SetUpNextSpellAction extends AbstractGameAction {
+ public SetUpNextSpellAction() {
+ }
+
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.setupnext();
+ }
+}
diff --git a/src/main/java/awakenedOne/actions/nukePowerAction.java b/src/main/java/awakenedOne/actions/nukePowerAction.java
new file mode 100644
index 000000000..3e7fa6163
--- /dev/null
+++ b/src/main/java/awakenedOne/actions/nukePowerAction.java
@@ -0,0 +1,67 @@
+package awakenedOne.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+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.localization.UIStrings;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static awakenedOne.util.Wiz.atb;
+
+
+public class nukePowerAction extends AbstractGameAction {
+ private static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString("ExhaustAction");
+ public static final String[] TEXT = uiStrings.TEXT;
+ private final int draw;
+
+
+ public nukePowerAction(int draw) {
+ this.draw = draw;
+ this.duration = this.startDuration = Settings.ACTION_DUR_XFAST;
+ }
+
+ public void update() {
+ ArrayList hand = AbstractDungeon.player.hand.group;
+ if (this.duration == this.startDuration) {
+ if (hand.size() != 0) {
+ if (hand.size() == 1) {
+ mopUpSelectedCard(hand.stream().collect(Collectors.toList()));
+
+ AbstractDungeon.player.hand.refreshHandLayout();
+ AbstractDungeon.player.hand.applyPowers();
+ this.isDone = true;
+ } else {
+ AbstractDungeon.handCardSelectScreen.open(TEXT[0], 1, false, false);
+ this.tickDuration();
+ }
+ } else {
+ this.isDone = true;
+ }
+ } else if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {
+ mopUpSelectedCard(AbstractDungeon.handCardSelectScreen.selectedCards.group);
+
+ AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;
+ AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();
+
+ AbstractDungeon.player.hand.refreshHandLayout();
+ AbstractDungeon.player.hand.applyPowers();
+ this.isDone = true;
+ } else {
+ this.tickDuration();
+ }
+ }
+
+ private void mopUpSelectedCard(List cards) {
+ // if (cards.get(0) instanceof VoidCard || cards.get(0) instanceof IntoTheVoid || (cards.get(0).type == AbstractCard.CardType.POWER))
+ if ((cards.get(0).type == AbstractCard.CardType.POWER)) {
+ atb(new DrawCardAction(draw));
+ }
+ AbstractDungeon.player.hand.moveToExhaustPile(cards.get(0));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cardmods/ConjureMod.java b/src/main/java/awakenedOne/cardmods/ConjureMod.java
new file mode 100644
index 000000000..868c53e8f
--- /dev/null
+++ b/src/main/java/awakenedOne/cardmods/ConjureMod.java
@@ -0,0 +1,56 @@
+package awakenedOne.cardmods;
+
+import awakenedOne.actions.ConjureAction;
+import basemod.abstracts.AbstractCardModifier;
+import basemod.helpers.CardModifierManager;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+
+import static awakenedOne.AwakenedOneMod.DELVE;
+import static awakenedOne.util.Wiz.atb;
+
+public class ConjureMod extends AbstractCardModifier {
+
+ public static String ID = "awakened:ConjureMod";
+
+ @Override
+ public String modifyDescription(String rawDescription, AbstractCard card) {
+ return rawDescription + CardCrawlGame.languagePack.getUIString("awakened:ConjureMod").TEXT[0];
+ }
+
+ @Override
+ public void onUse(AbstractCard card, AbstractCreature target, UseCardAction action) {
+ super.onUse(card, target, action);
+ atb(new ConjureAction(false));
+ }
+
+ @Override
+ public void onInitialApplication(AbstractCard card) {
+ card.tags.add(DELVE);
+ card.initializeDescription();
+ }
+
+ @Override
+ public void onRemove(AbstractCard card) {
+ card.tags.remove(DELVE);
+ card.initializeDescription();
+ }
+
+ @Override
+ public String identifier(AbstractCard card) {
+ return ID;
+ }
+
+ @Override
+ public boolean shouldApply(AbstractCard card) {
+ return !CardModifierManager.hasModifier(card, ID);
+ }
+
+ @Override
+ public AbstractCardModifier makeCopy() {
+ return new ConjureMod();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cardmods/DrainingMod.java b/src/main/java/awakenedOne/cardmods/DrainingMod.java
new file mode 100644
index 000000000..8c3b84b05
--- /dev/null
+++ b/src/main/java/awakenedOne/cardmods/DrainingMod.java
@@ -0,0 +1,55 @@
+package awakenedOne.cardmods;
+
+import basemod.abstracts.AbstractCardModifier;
+import basemod.helpers.CardModifierManager;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+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 hermit.powers.Drained;
+
+public class DrainingMod extends AbstractCardModifier {
+
+ public static String ID = "awakened:DrainingMod";
+
+ @Override
+ public String modifyDescription(String rawDescription, AbstractCard card) {
+ return rawDescription + CardCrawlGame.languagePack.getUIString("awakened:DrainingMod").TEXT[0];
+ }
+
+ @Override
+ public void onUse(AbstractCard card, AbstractCreature target, UseCardAction action) {
+ super.onUse(card, target, action);
+ this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new Drained(AbstractDungeon.player, AbstractDungeon.player, 1), 1));
+ }
+
+ @Override
+ public void onInitialApplication(AbstractCard card) {
+ card.updateCost(-1);
+ card.initializeDescription();
+ }
+
+ @Override
+ public void onRemove(AbstractCard card) {
+ card.updateCost(+1);
+ card.initializeDescription();
+ }
+
+ @Override
+ public String identifier(AbstractCard card) {
+ return ID;
+ }
+
+ @Override
+ public boolean shouldApply(AbstractCard card) {
+ return !CardModifierManager.hasModifier(card, ID);
+ }
+
+ @Override
+ public AbstractCardModifier makeCopy() {
+ return new DrainingMod();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/AbstractAwakenedCard.java b/src/main/java/awakenedOne/cards/AbstractAwakenedCard.java
new file mode 100644
index 000000000..1e24d887d
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/AbstractAwakenedCard.java
@@ -0,0 +1,281 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneChar;
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.AwakenedTextHelper;
+import awakenedOne.powers.RisingChantPower;
+import awakenedOne.relics.CursedBlessing;
+import awakenedOne.relics.WhiteRibbon;
+import basemod.abstracts.CustomCard;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.graphics.Texture;
+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.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+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;
+import hermit.util.TextureLoader;
+
+import static awakenedOne.AwakenedOneMod.ACTIVECHANT;
+import static awakenedOne.util.Wiz.atb;
+import static awakenedOne.util.Wiz.isChantActive;
+
+public abstract class AbstractAwakenedCard extends CustomCard {
+
+ protected final CardStrings cardStrings;
+ public String betaArtPath;
+
+ public int secondMagic;
+ public int baseSecondMagic = -1;
+ public boolean upgradedSecondMagic;
+ public boolean isSecondMagicModified;
+
+ public int thirdMagic;
+ public int baseThirdMagic = -1;
+ public boolean upgradedThirdMagic;
+ public boolean isThirdMagicModified;
+
+ public int secondDamage;
+ public int baseSecondDamage = -1;
+ public boolean upgradedSecondDamage;
+ public boolean isSecondDamageModified;
+
+ public boolean trig_chant = false;
+
+ public AbstractAwakenedCard(final String cardID, final int cost, final CardType type, final CardRarity rarity, final CardTarget target) {
+ this(cardID, cost, type, rarity, target, AwakenedOneChar.Enums.AWAKENED_BLUE);
+ }
+
+ public AbstractAwakenedCard(final String cardID, final int cost, final CardType type, final CardRarity rarity, final CardTarget target, final CardColor color) {
+ super(cardID, "", getCardTextureString(cardID.replace(AwakenedOneMod.getModID() + ":", ""), type),
+ cost, "", type, color, rarity, target);
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(this.cardID);
+ rawDescription = cardStrings.DESCRIPTION;
+ name = originalName = cardStrings.NAME;
+ initializeTitle();
+ initializeDescription();
+ }
+
+ public static String getCardTextureString(final String cardName, final CardType cardType) {
+ String textureString = "awakenedResources/images/cards/" + cardName + ".png";
+ FileHandle h = Gdx.files.internal(textureString);
+ if (!h.exists()) {
+ textureString = "awakenedResources/images/cards/joke/" + cardName + ".png";
+ h = Gdx.files.internal(textureString);
+ }
+ if (!h.exists()) {
+ textureString = "awakenedResources/images/cards/programmerart/" + cardName + ".png";
+ h = Gdx.files.internal(textureString);
+ }
+ if (!h.exists()) {
+ textureString = "awakenedResources/images/ui/missing.png";
+ }
+ return textureString;
+ }
+
+ @Override
+ protected Texture getPortraitImage() {
+ if (Settings.PLAYTESTER_ART_MODE || UnlockTracker.betaCardPref.getBoolean(this.cardID, false)) {
+ if (this.textureImg == null) {
+ return null;
+ } else {
+ if (betaArtPath != null) {
+ int endingIndex = betaArtPath.lastIndexOf(".");
+ String newPath = betaArtPath.substring(0, endingIndex) + "_p" + betaArtPath.substring(endingIndex);
+ System.out.println("Finding texture: " + newPath);
+ Texture portraitTexture;
+ portraitTexture = TextureLoader.getTexture(newPath);
+ return portraitTexture;
+ }
+ }
+ }
+ return super.getPortraitImage();
+ }
+
+ @Override
+ public void applyPowers() {
+ if (baseSecondDamage > -1) {
+ secondDamage = baseSecondDamage;
+
+ int tmp = baseDamage;
+ baseDamage = baseSecondDamage;
+
+ super.applyPowers();
+
+ secondDamage = damage;
+ baseDamage = tmp;
+
+ super.applyPowers();
+
+ AwakenedTextHelper.colorCombos(this, false);
+
+ isSecondDamageModified = (secondDamage != baseSecondDamage);
+ } else {
+ super.applyPowers();
+ AwakenedTextHelper.colorCombos(this, false);
+ }
+ }
+
+ @Override
+ public void calculateCardDamage(AbstractMonster mo) {
+ if (baseSecondDamage > -1) {
+ secondDamage = baseSecondDamage;
+
+ int tmp = baseDamage;
+ baseDamage = baseSecondDamage;
+
+ super.calculateCardDamage(mo);
+
+ secondDamage = damage;
+ baseDamage = tmp;
+
+ super.calculateCardDamage(mo);
+
+ isSecondDamageModified = (secondDamage != baseSecondDamage);
+ } else super.calculateCardDamage(mo);
+ }
+
+ public void resetAttributes() {
+ super.resetAttributes();
+ secondMagic = baseSecondMagic;
+ isSecondMagicModified = false;
+ thirdMagic = baseThirdMagic;
+ isThirdMagicModified = false;
+ secondDamage = baseSecondDamage;
+ isSecondDamageModified = false;
+ }
+
+ public void displayUpgrades() {
+ super.displayUpgrades();
+ if (upgradedSecondMagic) {
+ secondMagic = baseSecondMagic;
+ isSecondMagicModified = true;
+ }
+ if (upgradedThirdMagic) {
+ thirdMagic = baseThirdMagic;
+ isThirdMagicModified = true;
+ }
+ if (upgradedSecondDamage) {
+ secondDamage = baseSecondDamage;
+ isSecondDamageModified = true;
+ }
+ }
+
+ protected void upgradeSecondMagic(int amount) {
+ baseSecondMagic += amount;
+ secondMagic = baseSecondMagic;
+ upgradedSecondMagic = true;
+ }
+
+ protected void upgradeThirdMagic(int amount) {
+ baseThirdMagic += amount;
+ thirdMagic = baseThirdMagic;
+ upgradedThirdMagic = true;
+ }
+
+ protected void upgradeSecondDamage(int amount) {
+ baseSecondDamage += amount;
+ secondDamage = baseSecondDamage;
+ upgradedSecondDamage = true;
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upp();
+ if (cardStrings.UPGRADE_DESCRIPTION != null) {
+ rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ if (this.hasTag(ACTIVECHANT)) {
+ this.keywords.add("awakened:chant");
+ }
+ }
+
+ public abstract void upp();
+
+ // These shortcuts are specifically for cards. All other shortcuts that aren't specifically for cards can go in Wiz.
+ protected void dmg(AbstractMonster m, AbstractGameAction.AttackEffect fx) {
+ atb(new DamageAction(m, new DamageInfo(AbstractDungeon.player, damage, damageTypeForTurn), fx));
+ }
+
+ protected void allDmg(AbstractGameAction.AttackEffect fx) {
+ atb(new DamageAllEnemiesAction(AbstractDungeon.player, multiDamage, damageTypeForTurn, fx));
+ }
+
+ protected void altDmg(AbstractMonster m, AbstractGameAction.AttackEffect fx) {
+ atb(new DamageAction(m, new DamageInfo(AbstractDungeon.player, secondDamage, damageTypeForTurn), fx));
+ }
+
+ protected void blck() {
+ atb(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, block));
+ }
+
+ //Chant Stuff
+ public void chant() {
+ }
+
+ public void onVictory() {
+ if (this.hasTag(ACTIVECHANT)) this.tags.remove(ACTIVECHANT);
+ this.initializeDescription();
+ }
+
+ public boolean isChantActiveGlow(AbstractCard source) {
+ return !AbstractDungeon.actionManager.cardsPlayedThisCombat.isEmpty() && AbstractDungeon.actionManager.cardsPlayedThisCombat.get(AbstractDungeon.actionManager.cardsPlayedThisCombat.size() - 1).type == CardType.POWER || this.hasTag(ACTIVECHANT) || this.trig_chant;
+ }
+
+ @Override
+ public AbstractCard makeStatEquivalentCopy() {
+ AbstractCard original = super.makeStatEquivalentCopy();
+ ((AbstractAwakenedCard) original).trig_chant = this.trig_chant;
+ if (this.trig_chant) {
+ original.tags.add(ACTIVECHANT);
+ }
+ return original;
+ }
+
+ public boolean isTrig_chant() {
+ if (isChantActive() || this.hasTag(ACTIVECHANT)) {
+ this.trig_chant = true;
+ AwakenedTextHelper.colorCombos(this, false);
+ }
+ return (trig_chant);
+ }
+
+ //Whenever a Chant effect activates, do this!!!
+ public void checkOnChant() {
+ if (!this.hasTag(ACTIVECHANT)) {
+ this.tags.add(ACTIVECHANT);
+ AwakenedTextHelper.colorCombos(this, false);
+ this.initializeDescription();
+ }
+ if (AbstractDungeon.player.hasRelic(CursedBlessing.ID)) {
+ AbstractDungeon.player.getRelic(CursedBlessing.ID).onTrigger();
+ }
+ if (AbstractDungeon.player.hasRelic(WhiteRibbon.ID)) {
+ AbstractDungeon.player.getRelic(WhiteRibbon.ID).onTrigger();
+ }
+ if (AbstractDungeon.player.hasPower(RisingChantPower.POWER_ID)) {
+ AbstractDungeon.player.getPower(RisingChantPower.POWER_ID).onSpecificTrigger();
+ }
+ AwakenedTextHelper.colorCombos(this, false);
+ }
+
+ public void update() {
+ super.update();
+ }
+}
diff --git a/src/main/java/awakenedOne/cards/Altar.java b/src/main/java/awakenedOne/cards/Altar.java
new file mode 100644
index 000000000..bd5b1d639
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Altar.java
@@ -0,0 +1,43 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.actions.HandSelectAction;
+import hermit.util.Wiz;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Altar extends AbstractAwakenedCard {
+ public final static String ID = makeID(Altar.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+ public static UIStrings uiStrings = CardCrawlGame.languagePack.getUIString("ExhaustAction");
+
+ public Altar() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 5;
+ this.tags.add(AwakenedOneMod.DELVE);
+ //selfRetain = true;
+ loadJokeCardImage(this, makeBetaCardPath(Altar.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ Wiz.atb(new HandSelectAction(1, (c) -> true, list -> {
+ for (AbstractCard c : list) {
+ Wiz.p().hand.moveToExhaustPile(c);
+ }
+ list.clear();
+ }, null, uiStrings.TEXT[0], false, false, false));
+ atb(new ConjureAction(false));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/AphoticFount.java b/src/main/java/awakenedOne/cards/AphoticFount.java
new file mode 100644
index 000000000..c0455577d
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/AphoticFount.java
@@ -0,0 +1,41 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.spells.AphoticShield;
+import awakenedOne.powers.AphoticFountPower;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class AphoticFount extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(AphoticFount.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public AphoticFount() {
+ super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ AbstractCard c = new AphoticShield();
+ c.upgrade();
+ MultiCardPreview.add(this, new AphoticShield(), c);
+ baseMagicNumber = magicNumber = 4;
+ loadJokeCardImage(this, makeBetaCardPath(AphoticFount.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractCard card = new AphoticShield();
+ spellCards.add(card);
+ applyToSelf(new AphoticFountPower(false));
+ }
+
+ @Override
+ public void upp() {
+ //upgradeMagicNumber(2);
+ upgradeBaseCost(0);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/ArcaneNesting.java b/src/main/java/awakenedOne/cards/ArcaneNesting.java
new file mode 100644
index 000000000..566efe204
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/ArcaneNesting.java
@@ -0,0 +1,48 @@
+package awakenedOne.cards;
+
+import com.badlogic.gdx.graphics.Color;
+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 expansioncontent.expansionContentMod;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+
+public class ArcaneNesting extends AbstractAwakenedCard {
+ public final static String ID = makeID(ArcaneNesting.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+ private static final CardStrings strings = CardCrawlGame.languagePack.getCardStrings(ID);
+
+ public ArcaneNesting() {
+ super(ID, -2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ baseBlock = 4;
+ tags.add(expansionContentMod.UNPLAYABLE);
+ loadJokeCardImage(this, makeBetaCardPath(ArcaneNesting.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ }
+
+ @Override
+ public void triggerOnCardPlayed(AbstractCard card) {
+ if (card.type == CardType.POWER && AbstractDungeon.player.hand.contains(this)) {
+ flash(Color.BLUE.cpy());
+ blck();
+ }
+ }
+
+ @Override
+ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ cantUseMessage = cardStrings.EXTENDED_DESCRIPTION[0];
+ return false;
+ }
+
+ public void upp() {
+ //upgradeMagicNumber(1);
+ upgradeBlock(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Archmagus.java b/src/main/java/awakenedOne/cards/Archmagus.java
new file mode 100644
index 000000000..fd07f4926
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Archmagus.java
@@ -0,0 +1,27 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ArchmagusPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class Archmagus extends AbstractAwakenedCard {
+ public final static String ID = makeID(Archmagus.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Archmagus() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(Archmagus.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new ArchmagusPower(1));
+ }
+
+ public void upp() {
+ upgradeBaseCost(2);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/AwakenedForm.java b/src/main/java/awakenedOne/cards/AwakenedForm.java
new file mode 100644
index 000000000..cdddfa632
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/AwakenedForm.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ReverseRitualPower;
+import basemod.helpers.BaseModCardTags;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.CuriosityPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+import static awakenedOne.util.Wiz.applyToSelfTop;
+
+public class AwakenedForm extends AbstractAwakenedCard {
+ public final static String ID = makeID(AwakenedForm.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , 2, 1
+
+ public AwakenedForm() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ baseSecondMagic = secondMagic = 2;
+ tags.add(BaseModCardTags.FORM);
+ loadJokeCardImage(this, makeBetaCardPath(AwakenedForm.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelfTop(new CuriosityPower(p, secondMagic));
+ applyToSelf(new ReverseRitualPower(magicNumber));
+ }
+
+ @Override
+ public void upp() {
+ upgradeSecondMagic(1);
+ //upgradeMagicNumber(-1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/BirdsEye.java b/src/main/java/awakenedOne/cards/BirdsEye.java
new file mode 100644
index 000000000..37fad36ad
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/BirdsEye.java
@@ -0,0 +1,36 @@
+package awakenedOne.cards;
+
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class BirdsEye extends AbstractAwakenedCard {
+ public final static String ID = makeID(BirdsEye.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public BirdsEye() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(BirdsEye.class.getSimpleName() + ".png"));
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ OrbitingSpells.refreshSpells();
+ }
+ });
+ atb(new ConjureAction(true));
+ }
+
+ public void upp() {
+ exhaust = false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/BloodRite.java b/src/main/java/awakenedOne/cards/BloodRite.java
new file mode 100644
index 000000000..d91eb6ece
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/BloodRite.java
@@ -0,0 +1,41 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.Ceremony;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+
+public class BloodRite extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(BloodRite.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public BloodRite() {
+ super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 3;
+ this.cardsToPreview = new Ceremony();
+ loadJokeCardImage(this, makeBetaCardPath(BloodRite.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL);
+ AbstractCard c = new Ceremony();
+ if (upgraded) {
+ c.upgrade();
+ }
+ Wiz.atb(new MakeTempCardInHandAction(c, 1));
+ }
+
+ @Override
+ public void upp() {
+ cardsToPreview.upgrade();
+ upgradeDamage(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Bloodthirst.java b/src/main/java/awakenedOne/cards/Bloodthirst.java
new file mode 100644
index 000000000..0595e85d1
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Bloodthirst.java
@@ -0,0 +1,47 @@
+package awakenedOne.cards;
+
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.StarBounceEffect;
+import com.megacrit.cardcrawl.vfx.combat.ViolentAttackEffect;
+import expansioncontent.actions.BloodthirstAction;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Bloodthirst extends AbstractAwakenedCard {
+ public final static String ID = makeID(Bloodthirst.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public Bloodthirst() {
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ baseDamage = 20;
+ tags.add(CardTags.HEALING);
+ loadJokeCardImage(this, makeBetaCardPath(Bloodthirst.class.getSimpleName() + ".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, true));
+ }
+
+ public void upp() {
+ upgradeDamage(5);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Brainshock.java b/src/main/java/awakenedOne/cards/Brainshock.java
new file mode 100644
index 000000000..2940c7e75
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Brainshock.java
@@ -0,0 +1,51 @@
+package awakenedOne.cards;
+
+import awakenedOne.patches.OnLoseEnergyPowerPatch;
+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.HemokinesisEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Brainshock extends AbstractAwakenedCard {
+ public final static String ID = makeID(Brainshock.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public Brainshock() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 9;
+ this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(Brainshock.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ this.addToBot(new VFXAction(new HemokinesisEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY), 0.5F));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ }
+
+ public void calculateCardDamage(AbstractMonster mo) {
+ int realBaseDamage = this.baseDamage;
+ this.baseDamage += this.magicNumber * OnLoseEnergyPowerPatch.EnergyLostThisCombat;
+ super.calculateCardDamage(mo);
+ this.baseDamage = realBaseDamage;
+ this.isDamageModified = this.damage != this.baseDamage;
+ }
+
+
+ public void applyPowers() {
+ int realBaseDamage = this.baseDamage;
+ this.baseDamage += this.magicNumber * OnLoseEnergyPowerPatch.EnergyLostThisCombat;
+ super.applyPowers();
+ this.baseDamage = realBaseDamage;
+ this.isDamageModified = this.damage != this.baseDamage;
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Carrionmaker.java b/src/main/java/awakenedOne/cards/Carrionmaker.java
new file mode 100644
index 000000000..98dec21ed
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Carrionmaker.java
@@ -0,0 +1,64 @@
+package awakenedOne.cards;
+
+import awakenedOne.cards.tokens.spells.AbstractSpellCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class Carrionmaker extends AbstractAwakenedCard {
+ public final static String ID = makeID(Carrionmaker.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ private static final CardStrings strings = CardCrawlGame.languagePack.getCardStrings(ID);
+
+ //carrionmaker
+ public Carrionmaker() {
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseDamage = 9;
+ loadJokeCardImage(this, makeBetaCardPath(Carrionmaker.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ int count = (int) AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .filter(card -> card instanceof AbstractSpellCard)
+ .count();
+
+ for (int i = 0; i < count + 1; i++) {
+ this.addToBot(new AttackDamageRandomEnemyAction(this, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ }
+ this.initializeDescription();
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+ int count = (int) AbstractDungeon.actionManager.cardsPlayedThisTurn.stream()
+ .filter(card -> card instanceof AbstractSpellCard)
+ .count();
+ this.rawDescription = strings.DESCRIPTION;
+ this.rawDescription = this.rawDescription + strings.EXTENDED_DESCRIPTION[0] + count;
+ if (count == 1) {
+ this.rawDescription += strings.EXTENDED_DESCRIPTION[1];
+ } else {
+ this.rawDescription += strings.EXTENDED_DESCRIPTION[2];
+ }
+ this.initializeDescription();
+ }
+
+ @Override
+ public void onMoveToDiscard() {
+ this.rawDescription = strings.DESCRIPTION;
+ this.initializeDescription();
+ }
+
+
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Caw.java b/src/main/java/awakenedOne/cards/Caw.java
new file mode 100644
index 000000000..f037d23b2
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Caw.java
@@ -0,0 +1,55 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.GashCawAction;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.ClawEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Caw extends AbstractAwakenedCard {
+ public final static String ID = makeID(Caw.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Caw() {
+ super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 4;
+ this.baseMagicNumber = 4;
+ this.tags.add(AwakenedOneMod.CHANT);
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(Caw.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ CardCrawlGame.sound.playA("VO_CULTIST_1A", .3f);
+ if (m != null) {
+ this.addToBot(new VFXAction(new ClawEffect(m.hb.cX, m.hb.cY, Color.CYAN, Color.WHITE), 0.1F));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.NONE);
+
+ if (isTrig_chant()) {
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ this.addToBot(new GashCawAction(this, this.magicNumber));
+ checkOnChant();
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(1);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/ChosenVerse.java b/src/main/java/awakenedOne/cards/ChosenVerse.java
new file mode 100644
index 000000000..295f0ce6c
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/ChosenVerse.java
@@ -0,0 +1,34 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.ChosensVersePower;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+
+public class ChosenVerse extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(ChosenVerse.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public ChosenVerse() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 4;
+ baseMagicNumber = magicNumber = 2;
+ loadJokeCardImage(this, makeBetaCardPath(ChosenVerse.class.getSimpleName() + ".png"));
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ Wiz.applyToSelf(new ChosensVersePower(magicNumber, block));
+ }
+
+ @Override
+ public void upp() {
+ //upgradeMagicNumber(1);
+ upgradeBlock(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/ClarionCall.java b/src/main/java/awakenedOne/cards/ClarionCall.java
new file mode 100644
index 000000000..db013db8f
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/ClarionCall.java
@@ -0,0 +1,33 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.VoidRefundPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class ClarionCall extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(ClarionCall.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public ClarionCall() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 8;
+ loadJokeCardImage(this, makeBetaCardPath(ClarionCall.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ applyToSelf(new VoidRefundPower(p, 1));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Clutch.java b/src/main/java/awakenedOne/cards/Clutch.java
new file mode 100644
index 000000000..0f72ed586
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Clutch.java
@@ -0,0 +1,39 @@
+package awakenedOne.cards;
+
+import com.badlogic.gdx.graphics.Color;
+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 expansioncontent.actions.DrawSpecificAction;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Clutch extends AbstractAwakenedCard {
+ public final static String ID = makeID(Clutch.class.getSimpleName());
+ // intellij stuff skill, self, rare, , , , , 4, 2
+
+ public Clutch() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 9;
+ baseMagicNumber = magicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath(Clutch.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ atb(new DrawSpecificAction(magicNumber, card -> card.cost == 0));
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = AbstractDungeon.player.drawPile.group.stream().noneMatch(q -> q.cost == 0) ? Color.RED : AbstractCard.BLUE_BORDER_GLOW_COLOR;
+ }
+
+ public void upp() {
+ upgradeDamage(1);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/DarkEcho.java b/src/main/java/awakenedOne/cards/DarkEcho.java
new file mode 100644
index 000000000..0bd09b15a
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/DarkEcho.java
@@ -0,0 +1,27 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.DarkEchoPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class DarkEcho extends AbstractAwakenedCard {
+ public final static String ID = makeID(DarkEcho.class.getSimpleName());
+ // intellij stuff attack, all_enemy, rare, 18, 4, , , 2, 1
+
+ public DarkEcho() {
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseDamage = 4;
+ loadJokeCardImage(this, makeBetaCardPath(DarkEcho.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new DarkEchoPower(1));
+ }
+
+ public void upp() {
+ upgradeBaseCost(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/DarknessFalls.java b/src/main/java/awakenedOne/cards/DarknessFalls.java
new file mode 100644
index 000000000..3a6838fd8
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/DarknessFalls.java
@@ -0,0 +1,34 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.CursedStrength;
+import awakenedOne.powers.DarknessFallsPower;
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class DarknessFalls extends AbstractAwakenedCard {
+ public final static String ID = makeID(DarknessFalls.class.getSimpleName());
+
+ // intellij stuff power, self, rare, , , , , ,
+
+ public DarknessFalls() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber;
+ baseSecondMagic = secondMagic = 1;
+ loadJokeCardImage(this, makeBetaCardPath(DarknessFalls.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DarknessFallsPower(p, magicNumber)));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new CursedStrength(p, secondMagic)));
+ }
+
+ @Override
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/DeathCoil.java b/src/main/java/awakenedOne/cards/DeathCoil.java
new file mode 100644
index 000000000..4d19c9b12
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/DeathCoil.java
@@ -0,0 +1,39 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ManaburnPower;
+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.vfx.combat.HemokinesisEffect;
+import hermit.powers.Drained;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class DeathCoil extends AbstractAwakenedCard {
+ public final static String ID = makeID(DeathCoil.class.getSimpleName());
+ // intellij stuff attack, enemy, 13, 6, , , ,
+
+ public DeathCoil() {
+ super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 10;
+ baseMagicNumber = magicNumber = 4;
+ loadJokeCardImage(this, makeBetaCardPath(DeathCoil.class.getSimpleName() + ".png"));
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ this.addToTop(new VFXAction(new HemokinesisEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY), 0.5F));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ this.addToBot(new ApplyPowerAction(m, p, new ManaburnPower(m, this.magicNumber), this.magicNumber));
+ this.addToBot(new ApplyPowerAction(p, p, new Drained(p, p, 1), 1));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(2);
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Deathwish.java b/src/main/java/awakenedOne/cards/Deathwish.java
new file mode 100644
index 000000000..64c2a6063
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Deathwish.java
@@ -0,0 +1,40 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.util.CardIgnore;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+import static awakenedOne.util.Wiz.atb;
+
+@Deprecated
+@CardIgnore
+public class Deathwish extends AbstractAwakenedCard {
+ public final static String ID = makeID(Deathwish.class.getSimpleName());
+ // intellij stuff attack, all_enemy, common, 7, 3, , , ,
+
+ public Deathwish() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ AbstractCard c = new DeathCoil();
+ c.upgrade();
+ MultiCardPreview.add(this, new DeathCoil(), c);
+ this.exhaust = true;
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(Deathwish.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractCard card = new DeathCoil();
+ spellCards.add(card);
+ atb(new ConjureAction(false, false, true, new DeathCoil()));
+ }
+
+ public void upp() {
+ isInnate = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Defend.java b/src/main/java/awakenedOne/cards/Defend.java
new file mode 100644
index 000000000..40c6cf07a
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Defend.java
@@ -0,0 +1,26 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Defend extends AbstractAwakenedCard {
+ public final static String ID = makeID(Defend.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public Defend() {
+ super(ID, 1, CardType.SKILL, CardRarity.BASIC, CardTarget.SELF);
+ baseBlock = 5;
+ tags.add(CardTags.STARTER_DEFEND);
+ loadJokeCardImage(this, makeBetaCardPath(Defend.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Dejection.java b/src/main/java/awakenedOne/cards/Dejection.java
new file mode 100644
index 000000000..13f6d3751
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Dejection.java
@@ -0,0 +1,49 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+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.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.actions.HandSelectAction;
+import hermit.util.Wiz;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class Dejection extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Dejection.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public static UIStrings uiStrings = CardCrawlGame.languagePack.getUIString("ExhaustAction");
+
+ public Dejection() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 7;
+ this.baseMagicNumber = this.magicNumber = 2;
+ loadJokeCardImage(this, makeBetaCardPath(Dejection.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL);
+ Wiz.atb(new HandSelectAction(1, (c) -> true, list -> {
+ for (AbstractCard c : list) {
+ Wiz.p().hand.moveToExhaustPile(c);
+ if (c.type == CardType.POWER) {
+ Wiz.atb(new DrawCardAction(magicNumber));
+ }
+
+ }
+ list.clear();
+ }, null, uiStrings.TEXT[0], false, false, false));
+ }
+
+
+ @Override
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/DemonGlyph.java b/src/main/java/awakenedOne/cards/DemonGlyph.java
new file mode 100644
index 000000000..73e899b64
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/DemonGlyph.java
@@ -0,0 +1,56 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.DemonGlyphPower;
+import awakenedOne.util.Wiz;
+import com.badlogic.gdx.graphics.Color;
+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.FastingEffect;
+import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class DemonGlyph extends AbstractAwakenedCard {
+ public final static String ID = makeID(DemonGlyph.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public DemonGlyph() {
+ super(ID, 0, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
+ baseSecondMagic = secondMagic = 2;
+ loadJokeCardImage(this, makeBetaCardPath(DemonGlyph.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ 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));
+
+ if (p != null) {
+ this.addToBot(new VFXAction(new FastingEffect(p.hb.cX, p.hb.cY, Color.BLUE)));
+ }
+
+ if (Wiz.isAwakened()) {
+ this.addToBot(new VFXAction(p, new InflameEffect(p), 1.0F));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, secondMagic), secondMagic));
+ this.addToBot(new ApplyPowerAction(p, p, new DexterityPower(p, secondMagic), secondMagic));
+ } else {
+ applyToSelf(new DemonGlyphPower(secondMagic));
+ }
+ }
+
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = (Wiz.isAwakened()) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ public void upp() {
+ //upgradeMagicNumber(1);
+ upgradeSecondMagic(1);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/DesperatePrayer.java b/src/main/java/awakenedOne/cards/DesperatePrayer.java
new file mode 100644
index 000000000..bc11625e0
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/DesperatePrayer.java
@@ -0,0 +1,40 @@
+package awakenedOne.cards;
+
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class DesperatePrayer extends AbstractAwakenedCard {
+ public final static String ID = makeID(DesperatePrayer.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public DesperatePrayer() {
+ super(ID, 3, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(DesperatePrayer.class.getSimpleName() + ".png"));
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractCard c = AbstractDungeon.returnTrulyRandomCardInCombat(CardType.ATTACK).makeCopy();
+ c.setCostForTurn(0);
+ //if (upgraded) c.upgrade();
+ this.addToBot(new MakeTempCardInHandAction(c, true));
+ AbstractCard d = AbstractDungeon.returnTrulyRandomCardInCombat(CardType.SKILL).makeCopy();
+ d.setCostForTurn(0);
+ //if (upgraded) d.upgrade();
+ this.addToBot(new MakeTempCardInHandAction(d, true));
+ AbstractCard e = AbstractDungeon.returnTrulyRandomCardInCombat(CardType.POWER).makeCopy();
+ e.setCostForTurn(0);
+ //if (upgraded) e.upgrade();
+ this.addToBot(new MakeTempCardInHandAction(e, true));
+ }
+
+ public void upp() {
+ upgradeBaseCost(2);
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/EclipseEmbrace.java b/src/main/java/awakenedOne/cards/EclipseEmbrace.java
new file mode 100644
index 000000000..837e6c8c1
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/EclipseEmbrace.java
@@ -0,0 +1,33 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.EclipseEmbracePower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class EclipseEmbrace extends AbstractAwakenedCard {
+ public final static String ID = makeID(EclipseEmbrace.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public EclipseEmbrace() {
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(EclipseEmbrace.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new EclipseEmbracePower(1));
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ public void upp() {
+ upgradeBaseCost(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Ensorcelate.java b/src/main/java/awakenedOne/cards/Ensorcelate.java
new file mode 100644
index 000000000..f68ffc289
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Ensorcelate.java
@@ -0,0 +1,30 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.EnsorcelatePower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class Ensorcelate extends AbstractAwakenedCard {
+ public final static String ID = makeID(Ensorcelate.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Ensorcelate() {
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 8;
+ //baseMagicNumber = magicNumber = 2;
+ //this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(Ensorcelate.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ applyToSelf(new EnsorcelatePower(1));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Envision.java b/src/main/java/awakenedOne/cards/Envision.java
new file mode 100644
index 000000000..59dd1d4a2
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Envision.java
@@ -0,0 +1,30 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Envision extends AbstractAwakenedCard {
+ public final static String ID = makeID(Envision.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Envision() {
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = 4;
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(Envision.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ atb(new ConjureAction(false, true));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Extension.java b/src/main/java/awakenedOne/cards/Extension.java
new file mode 100644
index 000000000..50dcd8155
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Extension.java
@@ -0,0 +1,41 @@
+package awakenedOne.cards;
+
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class Extension extends AbstractAwakenedCard {
+ public final static String ID = makeID(Extension.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public Extension() {
+ super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 3;
+ loadJokeCardImage(this, makeBetaCardPath(Extension.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ }
+
+ @Override
+ public void triggerOnCardPlayed(AbstractCard cardPlayed) {
+ if (cardPlayed.type == CardType.POWER && AbstractDungeon.player.discardPile.contains(this)) {
+ AbstractDungeon.actionManager.addToBottom(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ AbstractDungeon.player.discardPile.moveToHand(Extension.this);
+ }
+ });
+ }
+ }
+
+ public void upp() {
+ upgradeDamage(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/FeatherVeil.java b/src/main/java/awakenedOne/cards/FeatherVeil.java
new file mode 100644
index 000000000..fa297fab4
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/FeatherVeil.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+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.StrengthPower;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class FeatherVeil extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(FeatherVeil.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public FeatherVeil() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 12;
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(FeatherVeil.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new StrengthPower(p, -magicNumber), -magicNumber));
+ }
+
+
+ @Override
+ public void upp() {
+ upgradeBlock(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/FeatherWhirl.java b/src/main/java/awakenedOne/cards/FeatherWhirl.java
new file mode 100644
index 000000000..468b7b48b
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/FeatherWhirl.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.actions.EasyXCostAction;
+import awakenedOne.cards.tokens.PlumeJab;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.att;
+
+public class FeatherWhirl extends AbstractAwakenedCard {
+ public final static String ID = makeID(FeatherWhirl.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public FeatherWhirl() {
+ super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.exhaust = true;
+ baseMagicNumber = magicNumber = 0;
+ cardsToPreview = new PlumeJab();
+ loadJokeCardImage(this, makeBetaCardPath(FeatherWhirl.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ att(new EasyXCostAction(this, (effect, params) -> {
+ Wiz.makeInHand(new PlumeJab(), effect + params[0]);
+ return true;
+ }, magicNumber));
+ }
+
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/FlareShot.java b/src/main/java/awakenedOne/cards/FlareShot.java
new file mode 100644
index 000000000..f3a47e6b7
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/FlareShot.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.FlarePower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class FlareShot extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(FlareShot.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public FlareShot() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 6;
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(FlareShot.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ applyToSelf(new FlarePower(this.magicNumber));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/FourthDimension.java b/src/main/java/awakenedOne/cards/FourthDimension.java
new file mode 100644
index 000000000..35dc085d8
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/FourthDimension.java
@@ -0,0 +1,40 @@
+package awakenedOne.cards;
+
+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 static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+import static awakenedOne.util.Wiz.atb;
+
+public class FourthDimension extends AbstractAwakenedCard {
+ public final static String ID = makeID(FourthDimension.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public FourthDimension() {
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ this.exhaust = true;
+ baseMagicNumber = magicNumber = 3;
+ this.tags.add(CardTags.HEALING);
+ loadJokeCardImage(this, makeBetaCardPath(FourthDimension.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new SelectCardsInHandAction(1, FourthDimension.class.getSimpleName(), (cards) -> {
+ for (AbstractCard q : cards) {
+ AbstractCard q2 = q.makeStatEquivalentCopy();
+ //q2.updateCost(-99);
+ for (int i = 0; i < magicNumber; i++) {
+ AbstractCard card = q2.makeStatEquivalentCopy();
+ spellCards.add(card);
+ }
+ }
+ }));
+ }
+
+ public void upp() {
+ upgradeBaseCost(0);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Gather.java b/src/main/java/awakenedOne/cards/Gather.java
new file mode 100644
index 000000000..299277d72
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Gather.java
@@ -0,0 +1,46 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.common.BetterDiscardPileToHandAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Gather extends AbstractAwakenedCard {
+ public final static String ID = makeID(Gather.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public Gather() {
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = 4;
+ magicNumber = baseMagicNumber = 2;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath("Victuals.png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ if (isTrig_chant()) {
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ //addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PlatedArmorPower(AbstractDungeon.player, magicNumber), magicNumber));
+ atb(new BetterDiscardPileToHandAction(1));
+ checkOnChant();
+ }
+
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Gloomguard.java b/src/main/java/awakenedOne/cards/Gloomguard.java
new file mode 100644
index 000000000..e49d4ad6e
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Gloomguard.java
@@ -0,0 +1,30 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ManaburnPower;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Gloomguard extends AbstractAwakenedCard {
+ public final static String ID = makeID(Gloomguard.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Gloomguard() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseBlock = 9;
+ baseMagicNumber = magicNumber = 3;
+ loadJokeCardImage(this, makeBetaCardPath(Gloomguard.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ this.addToBot(new ApplyPowerAction(m, p, new ManaburnPower(m, this.magicNumber), this.magicNumber));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Grimoire.java b/src/main/java/awakenedOne/cards/Grimoire.java
new file mode 100644
index 000000000..2c9c56a54
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Grimoire.java
@@ -0,0 +1,43 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ModifyDamageAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.ui.OrbitingSpells.spellCards;
+import static awakenedOne.util.Wiz.att;
+
+public class Grimoire extends AbstractAwakenedCard {
+ public final static String ID = makeID(Grimoire.class.getSimpleName());
+ // intellij stuff attack, enemy, uncommon, 9, 1, , , 3, 1
+
+ public Grimoire() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ this.selfRetain = true;
+ baseDamage = 7;
+ baseMagicNumber = magicNumber = 7;
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(Grimoire.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ att(new ModifyDamageAction(this.uuid, magicNumber));
+ spellCards.add(this);
+ // atb(new AddSpellCardAction(this));
+// atb(new AbstractGameAction() {
+// @Override
+// public void update() {
+// isDone = true;
+// spellCards.add(q);
+// }
+// });
+ }
+
+ public void upp() {
+ upgradeDamage(2);
+ upgradeMagicNumber(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Hatchery.java b/src/main/java/awakenedOne/cards/Hatchery.java
new file mode 100644
index 000000000..3b59f531b
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Hatchery.java
@@ -0,0 +1,39 @@
+//package awakenedOne.cards;
+//
+//import awakenedOne.AwakenedOneMod;
+//import awakenedOne.util.OnConjureSubscriber;
+//import com.megacrit.cardcrawl.actions.AbstractGameAction;
+//import com.megacrit.cardcrawl.actions.utility.DiscardToHandAction;
+//import com.megacrit.cardcrawl.characters.AbstractPlayer;
+//import com.megacrit.cardcrawl.core.CardCrawlGame;
+//import com.megacrit.cardcrawl.monsters.AbstractMonster;
+//
+//import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+//import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+//
+//public class Hatchery extends AbstractAwakenedCard implements OnConjureSubscriber {
+// public final static String ID = AwakenedOneMod.makeID(Hatchery.class.getSimpleName());
+// // intellij stuff attack, enemy, basic, 6, 3, , , ,
+//
+// public Hatchery() {
+// super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+// baseDamage = 4;
+// this.tags.add(AwakenedOneMod.DELVE);
+// loadJokeCardImage(this, makeBetaCardPath(Hatchery.class.getSimpleName() + ".png"));
+// }
+//
+// public void use(AbstractPlayer p, AbstractMonster m) {
+// CardCrawlGame.sound.playA("VO_CULTIST_1A", .3f);
+// dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+// }
+//
+// @Override
+// public void OnConjure() {
+// this.addToBot(new DiscardToHandAction(this));
+// }
+//
+// @Override
+// public void upp() {
+// upgradeDamage(2);
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Hymn.java b/src/main/java/awakenedOne/cards/Hymn.java
new file mode 100644
index 000000000..a9c8893e0
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Hymn.java
@@ -0,0 +1,40 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.Ceremony;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.powers.Drained;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+
+public class Hymn extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Hymn.class.getSimpleName());
+
+ public Hymn() {
+ super(ID, 0, CardType.SKILL, CardRarity.BASIC, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(Hymn.class.getSimpleName() + ".png"));
+ baseBlock = 4;
+ this.cardsToPreview = new Ceremony();
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ AbstractCard c = new Ceremony();
+ if (upgraded) c.upgrade();
+ Wiz.atb(new MakeTempCardInHandAction(c, 1));
+ this.addToBot(new ApplyPowerAction(p, p, new Drained(p, p, 1), 1));
+ }
+
+ @Override
+ public void upp() {
+ upgradeBlock(1);
+ cardsToPreview.upgrade();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Initiation.java b/src/main/java/awakenedOne/cards/Initiation.java
new file mode 100644
index 000000000..73eee9369
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Initiation.java
@@ -0,0 +1,41 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.Ceremony;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class Initiation extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Initiation.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public Initiation() {
+ super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = 11;
+ this.cardsToPreview = new Ceremony();
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(Initiation.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ AbstractCard c = new Ceremony();
+ if (upgraded) {
+ c.upgrade();
+ }
+ Wiz.atb(new MakeTempCardInHandAction(c, 1));
+ }
+
+
+ @Override
+ public void upp() {
+ cardsToPreview.upgrade();
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Intensify.java b/src/main/java/awakenedOne/cards/Intensify.java
new file mode 100644
index 000000000..94675c8ad
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Intensify.java
@@ -0,0 +1,33 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.powers.IntensifyDebuffPower;
+import awakenedOne.powers.IntensifyPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+import static awakenedOne.util.Wiz.att;
+
+public class Intensify extends AbstractAwakenedCard {
+ public final static String ID = makeID(Intensify.class.getSimpleName());
+ // intellij stuff skill, self, common, , , 10, 4, ,
+
+ public Intensify() {
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath("Intensify.png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ att(new ConjureAction(false));
+ applyToSelf(new IntensifyPower(1));
+ applyToSelf(new IntensifyDebuffPower(1));
+ }
+
+ public void upp() {
+ this.selfRetain = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/KnifesEdge.java b/src/main/java/awakenedOne/cards/KnifesEdge.java
new file mode 100644
index 000000000..e54278adb
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/KnifesEdge.java
@@ -0,0 +1,38 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class KnifesEdge extends AbstractAwakenedCard {
+ public final static String ID = makeID(KnifesEdge.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public KnifesEdge() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ baseSecondMagic = secondMagic = 2;
+ loadJokeCardImage(this, makeBetaCardPath(KnifesEdge.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ addToBot(new MakeTempCardInDiscardAction(new VoidCard(), magicNumber));
+ applyToSelf(new StrengthPower(p, secondMagic));
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ public void upp() {
+ upgradeSecondMagic(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/MagicStrike.java b/src/main/java/awakenedOne/cards/MagicStrike.java
new file mode 100644
index 000000000..a520f8340
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/MagicStrike.java
@@ -0,0 +1,55 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class MagicStrike extends AbstractAwakenedCard {
+ public final static String ID = makeID(MagicStrike.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public MagicStrike() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 12;
+ tags.add(CardTags.STRIKE);
+ // baseSecondMagic = secondMagic = 1;
+ loadJokeCardImage(this, makeBetaCardPath(MagicStrike.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ atb(new MakeTempCardInDiscardAction(new VoidCard(), 1));
+ //HexCurse(magicNumber, m, p);
+ //this.addToBot(new ForTheHexAction(this.magicNumber, m));
+ }
+
+// public void triggerOnGlowCheck() {
+// this.glowColor = AbstractCard.BLUE_BORDER_GLOW_COLOR.cpy();
+// Iterator var1 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+//
+// while(var1.hasNext()) {
+// AbstractMonster m = (AbstractMonster)var1.next();
+// if (!m.isDeadOrEscaped() && m.getIntentBaseDmg() == 0) {
+// this.glowColor = AbstractCard.GOLD_BORDER_GLOW_COLOR.cpy();
+// break;
+// }
+// }
+//
+// }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ public void upp() {
+ upgradeDamage(5);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Manastorm.java b/src/main/java/awakenedOne/cards/Manastorm.java
new file mode 100644
index 000000000..6770285d7
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Manastorm.java
@@ -0,0 +1,37 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.patches.EnumPatch;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class Manastorm extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(Manastorm.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Manastorm() {
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ baseDamage = 14;
+ this.tags.add(AwakenedOneMod.DELVE);
+ this.isMultiDamage = true;
+ loadJokeCardImage(this, makeBetaCardPath(Manastorm.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, EnumPatch.HERMIT_GHOSTFIRE));
+ atb(new ConjureAction(false));
+ atb(new ConjureAction(false));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/MiddenHeap.java b/src/main/java/awakenedOne/cards/MiddenHeap.java
new file mode 100644
index 000000000..5f75717c8
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/MiddenHeap.java
@@ -0,0 +1,57 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.MultiGroupSelectAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import java.util.Collections;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+import static awakenedOne.util.Wiz.att;
+
+public class MiddenHeap extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(MiddenHeap.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public MiddenHeap() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 3;
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(MiddenHeap.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ atb(new MultiGroupSelectAction(
+ cardStrings.EXTENDED_DESCRIPTION[magicNumber == 1 ? 0 : 1],
+ (cards, groups) -> {
+ Collections.reverse(cards);
+ cards.forEach(c -> att(new AbstractGameAction() {
+ public void update() {
+ isDone = true;
+ if (p.hand.size() >= BaseMod.MAX_HAND_SIZE) {
+ if (groups.get(c) == p.drawPile)
+ p.drawPile.moveToDiscardPile(c);
+ p.createHandIsFullDialog();
+ } else
+ p.hand.moveToHand(c, groups.get(c));
+ }
+ }));
+ },
+ magicNumber, false, c -> c.type == CardType.STATUS || c.type == CardType.CURSE, CardGroup.CardGroupType.DRAW_PILE, CardGroup.CardGroupType.DISCARD_PILE
+ ));
+ }
+
+ @Override
+ public void upp() {
+ upgradeBlock(1);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/MirePit.java b/src/main/java/awakenedOne/cards/MirePit.java
new file mode 100644
index 000000000..41098976d
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/MirePit.java
@@ -0,0 +1,62 @@
+package awakenedOne.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.SFXAction;
+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.GainStrengthPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.ShockWaveEffect;
+import hermit.powers.Drained;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class MirePit extends AbstractAwakenedCard {
+ public final static String ID = makeID(MirePit.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public MirePit() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseMagicNumber = magicNumber = 6;
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(MirePit.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new SFXAction("VO_AWAKENEDONE_3"));
+
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(p, new ShockWaveEffect(p.hb.cX, p.hb.cY, Settings.GREEN_TEXT_COLOR, ShockWaveEffect.ShockWaveType.CHAOTIC), 0.3F));
+ } else {
+ this.addToBot(new VFXAction(p, new ShockWaveEffect(p.hb.cX, p.hb.cY, Settings.GREEN_TEXT_COLOR, ShockWaveEffect.ShockWaveType.CHAOTIC), 1.5F));
+ }
+
+ Iterator var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+
+ AbstractMonster mo;
+ while (var3.hasNext()) {
+ mo = (AbstractMonster) var3.next();
+ this.addToBot(new ApplyPowerAction(mo, p, new StrengthPower(mo, -this.magicNumber), -this.magicNumber, true, AbstractGameAction.AttackEffect.POISON));
+ }
+
+ var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+
+ while (var3.hasNext()) {
+ mo = (AbstractMonster) var3.next();
+ if (!mo.hasPower("Artifact")) {
+ this.addToBot(new ApplyPowerAction(mo, p, new GainStrengthPower(mo, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+ this.addToBot(new ApplyPowerAction(p, p, new Drained(p, p, 1), 1));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/MoonlitVision.java b/src/main/java/awakenedOne/cards/MoonlitVision.java
new file mode 100644
index 000000000..c39fea4f4
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/MoonlitVision.java
@@ -0,0 +1,27 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.MoonlitVisionPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class MoonlitVision extends AbstractAwakenedCard {
+ public final static String ID = makeID(MoonlitVision.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public MoonlitVision() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ loadJokeCardImage(this, makeBetaCardPath(MoonlitVision.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new MoonlitVisionPower());
+ }
+
+ @Override
+ public void upp() {
+ isInnate = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Murder.java b/src/main/java/awakenedOne/cards/Murder.java
new file mode 100644
index 000000000..ea16f9747
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Murder.java
@@ -0,0 +1,81 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class Murder extends AbstractAwakenedCard {
+ public final static String ID = makeID(Murder.class.getSimpleName());
+ // intellij stuff attack, enemy, common, 8, 3, , , 3, 1
+
+ public Murder() {
+ super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ baseDamage = 4;
+ this.baseMagicNumber = 4;
+ this.magicNumber = this.baseMagicNumber;
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(Murder.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ for (int i = 0; i < this.magicNumber; i++) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1A"));
+ this.addToBot(new AttackDamageRandomEnemyAction(this, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ }
+ }
+
+ // 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)));
+// }
+// }
+//
+// 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)));
+// }
+
+// public void applyPowers() {
+// AbstractPower strength = AbstractDungeon.player.getPower("Strength");
+// if (strength != null) {
+// strength.amount *= this.magicNumber;
+// }
+//
+// super.applyPowers();
+// if (strength != null) {
+// strength.amount /= this.magicNumber;
+// }
+//
+// }
+//
+// public void calculateCardDamage(AbstractMonster mo) {
+// AbstractPower strength = AbstractDungeon.player.getPower("Strength");
+// if (strength != null) {
+// strength.amount *= this.magicNumber;
+// }
+//
+// super.calculateCardDamage(mo);
+// if (strength != null) {
+// strength.amount /= this.magicNumber;
+// }
+//
+// }
+
+ public void upp() {
+ this.exhaust = false;
+ //upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/MysticOrder.java b/src/main/java/awakenedOne/cards/MysticOrder.java
new file mode 100644
index 000000000..7eff1dd0d
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/MysticOrder.java
@@ -0,0 +1,37 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+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 static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class MysticOrder extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(MysticOrder.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public MysticOrder() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(MysticOrder.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new DrawCardAction(AbstractDungeon.player, this.magicNumber));
+ atb(new ConjureAction(false));
+ //this.addToBot(new ApplyPowerAction(p, p, new RageExhaustPower(p, this.magicNumber), this.magicNumber));
+ }
+
+
+ @Override
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Nihil.java b/src/main/java/awakenedOne/cards/Nihil.java
new file mode 100644
index 000000000..72d44a71e
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Nihil.java
@@ -0,0 +1,115 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.ManaburnPower;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.watcher.TriggerMarksAction;
+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.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.BorderLongFlashEffect;
+import com.megacrit.cardcrawl.vfx.combat.WaterDropEffect;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+
+public class Nihil extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Nihil.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public Nihil() {
+ super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.ENEMY);
+ baseMagicNumber = magicNumber = 13;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(Nihil.class.getSimpleName() + ".png"));
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(m, p, new ManaburnPower(m, this.magicNumber), this.magicNumber));
+ if (isTrig_chant()) {
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(m, new OfferingEnemyEffect(m), 0.2F));
+ } else {
+ this.addToBot(new VFXAction(m, new OfferingEnemyEffect(m), 0.5F));
+ }
+ this.addToBot(new TriggerMarksAction(this));
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ checkOnChant();
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeMagicNumber(4);
+ }
+
+ private static class OfferingEnemyEffect extends AbstractGameEffect {
+ private int count = 0;
+ private float timer = 0.0F;
+ private final AbstractCreature target;
+
+ public OfferingEnemyEffect(AbstractCreature target) {
+ this.target = target;
+ }
+
+ public void update() {
+ this.timer -= Gdx.graphics.getDeltaTime();
+ if (this.timer < 0.0F) {
+ this.timer += 0.3F;
+ switch (this.count) {
+ case 0:
+ CardCrawlGame.sound.playA("ATTACK_FIRE", -0.5F);
+ CardCrawlGame.sound.playA("BLOOD_SPLAT", -0.75F);
+ CardCrawlGame.sound.playA("ATTACK_FIRE", -0.5F);
+ CardCrawlGame.sound.playA("BLOOD_SPLAT", -0.75F);
+ CardCrawlGame.sound.playA("ATTACK_FIRE", -0.5F);
+ CardCrawlGame.sound.playA("BLOOD_SPLAT", -0.75F);
+ AbstractDungeon.effectsQueue.add(new BorderLongFlashEffect(new Color(1.0F, 0.1F, 0.1F, 1.0F)));
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX, target.hb.cY + 250.0F * Settings.scale));
+ break;
+ case 1:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX + 150.0F * Settings.scale, target.hb.cY - 80.0F * Settings.scale));
+ break;
+ case 2:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX - 200.0F * Settings.scale, target.hb.cY + 50.0F * Settings.scale));
+ break;
+ case 3:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX + 200.0F * Settings.scale, target.hb.cY + 50.0F * Settings.scale));
+ break;
+ case 4:
+ AbstractDungeon.effectsQueue.add(new WaterDropEffect(target.hb.cX - 150.0F * Settings.scale, target.hb.cY - 80.0F * Settings.scale));
+ }
+
+ ++this.count;
+ if (this.count == 6) {
+ this.isDone = true;
+ }
+ }
+
+ }
+
+ public void render(SpriteBatch sb) {
+ }
+
+ public void dispose() {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Peck.java b/src/main/java/awakenedOne/cards/Peck.java
new file mode 100644
index 000000000..dd02e8c99
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Peck.java
@@ -0,0 +1,37 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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 static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class Peck extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Peck.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Peck() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 1;
+ baseBlock = 6;
+ magicNumber = baseMagicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath(Peck.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ atb(new DrawCardAction(AbstractDungeon.player, this.magicNumber));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(1);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Planeswalk.java b/src/main/java/awakenedOne/cards/Planeswalk.java
new file mode 100644
index 000000000..e3b611f0f
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Planeswalk.java
@@ -0,0 +1,37 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+import static awakenedOne.util.Wiz.shuffleIn;
+
+public class Planeswalk extends AbstractAwakenedCard {
+ public final static String ID = makeID(Planeswalk.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Planeswalk() {
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ loadJokeCardImage(this, makeBetaCardPath(Planeswalk.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new GainEnergyAction(magicNumber));
+ shuffleIn(new VoidCard());
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Pluck.java b/src/main/java/awakenedOne/cards/Pluck.java
new file mode 100644
index 000000000..cc2a4ebdd
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Pluck.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class Pluck extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Pluck.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Pluck() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
+ baseDamage = 5;
+ this.baseMagicNumber = this.magicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath(Pluck.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new DamageAllEnemiesAction(p, multiDamage, DamageInfo.DamageType.NORMAL, AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ atb(new ConjureAction(false));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Primacy.java b/src/main/java/awakenedOne/cards/Primacy.java
new file mode 100644
index 000000000..61d2425f6
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Primacy.java
@@ -0,0 +1,27 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.PrimacyPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class Primacy extends AbstractAwakenedCard {
+ public final static String ID = makeID(Primacy.class.getSimpleName());
+ // intellij stuff power, self, uncommon, , , , , 3, 1
+
+ public Primacy() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath(Primacy.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new PrimacyPower(magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Procession.java b/src/main/java/awakenedOne/cards/Procession.java
new file mode 100644
index 000000000..1476bc9ed
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Procession.java
@@ -0,0 +1,40 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Procession extends AbstractAwakenedCard {
+ public final static String ID = makeID(Procession.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public Procession() {
+ super(ID, 0, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ baseSecondMagic = secondMagic = 3;
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(Procession.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new DrawCardAction(AbstractDungeon.player, secondMagic));
+ atb(new MakeTempCardInDrawPileAction(new VoidCard(), this.magicNumber, true, true));
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ public void upp() {
+ upgradeSecondMagic(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/ProfaneStrike.java b/src/main/java/awakenedOne/cards/ProfaneStrike.java
new file mode 100644
index 000000000..60a56e763
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/ProfaneStrike.java
@@ -0,0 +1,30 @@
+package awakenedOne.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 static awakenedOne.AwakenedOneMod.*;
+
+public class ProfaneStrike extends AbstractAwakenedCard {
+ public final static String ID = makeID(ProfaneStrike.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public ProfaneStrike() {
+ super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 7;
+ tags.add(CardTags.STRIKE);
+ loadJokeCardImage(this, makeBetaCardPath(ProfaneStrike.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ this.addToBot(new PutOnDeckAction(p, p, 1, false));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Psalm.java b/src/main/java/awakenedOne/cards/Psalm.java
new file mode 100644
index 000000000..180d831a5
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Psalm.java
@@ -0,0 +1,55 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+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.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.CleaveEffect;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class Psalm extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(Psalm.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Psalm() {
+ super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
+ loadJokeCardImage(this, makeBetaCardPath(Psalm.class.getSimpleName() + ".png"));
+ baseDamage = 10;
+
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+
+ }
+
+ 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, multiDamage, DamageInfo.DamageType.NORMAL, AbstractGameAction.AttackEffect.NONE));
+
+ Iterator var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+
+ while (var3.hasNext()) {
+ AbstractMonster mo = (AbstractMonster) var3.next();
+ this.addToBot(new ApplyPowerAction(mo, p, new WeakPower(mo, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ }
+
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ this.upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/RavenStrike.java b/src/main/java/awakenedOne/cards/RavenStrike.java
new file mode 100644
index 000000000..35db5f361
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/RavenStrike.java
@@ -0,0 +1,56 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.PlayTopCardAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.att;
+
+public class RavenStrike extends AbstractAwakenedCard {
+ public final static String ID = makeID(RavenStrike.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public RavenStrike() {
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 15;
+ tags.add(CardTags.STRIKE);
+ this.tags.add(AwakenedOneMod.CHANT);
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(RavenStrike.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ if (isTrig_chant()) {
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ att(new PlayTopCardAction(AbstractDungeon.getRandomMonster(), false));
+ }
+ });
+ checkOnChant();
+ }
+
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+
+ @Override
+ public void upp() {
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/RealityRift.java b/src/main/java/awakenedOne/cards/RealityRift.java
new file mode 100644
index 000000000..791e1803b
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/RealityRift.java
@@ -0,0 +1,77 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import basemod.BaseMod;
+import com.evacipated.cardcrawl.mod.stslib.actions.common.MultiGroupSelectAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.CardGroup;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import java.util.Collections;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+import static awakenedOne.util.Wiz.att;
+
+public class RealityRift extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(RealityRift.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public static final String[] TEXT;
+
+ static {
+ TEXT = CardCrawlGame.languagePack.getUIString("BetterToHandAction").TEXT;
+ }
+
+ public RealityRift() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(RealityRift.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new MultiGroupSelectAction(
+ cardStrings.EXTENDED_DESCRIPTION[0],
+ (cards, groups) -> {
+ Collections.reverse(cards);
+ cards.forEach(c -> att(new AbstractGameAction() {
+ public void update() {
+ isDone = true;
+ if (p.drawPile.contains(c)) {
+ addToTop(new MakeTempCardInDrawPileAction(new VoidCard(), 1, true, true));
+ } else if (p.discardPile.contains(c)) {
+ addToTop(new MakeTempCardInDiscardAction(new VoidCard(), 1));
+ }
+ if (p.hand.size() >= BaseMod.MAX_HAND_SIZE) {
+ if (groups.get(c) == p.drawPile)
+ p.drawPile.moveToDiscardPile(c);
+ p.createHandIsFullDialog();
+ } else {
+ p.hand.moveToHand(c, groups.get(c));
+ }
+ }
+ }));
+ },
+ 1, false, c -> c instanceof AbstractCard, CardGroup.CardGroupType.DRAW_PILE, CardGroup.CardGroupType.DISCARD_PILE
+ ));
+ }
+
+ @Override
+ public void upp() {
+ upgradeBaseCost(0);
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Rebirth.java b/src/main/java/awakenedOne/cards/Rebirth.java
new file mode 100644
index 000000000..742b363ec
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Rebirth.java
@@ -0,0 +1,29 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.powers.AwakenDeathPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Rebirth extends AbstractAwakenedCard {
+ public final static String ID = makeID(Rebirth.class.getSimpleName());
+ // intellij stuff skill, self, rare, , , , , 4, 2
+
+ public Rebirth() {
+ super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 8;
+ tags.add(CardTags.HEALING);
+ loadJokeCardImage(this, makeBetaCardPath(Rebirth.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new ApplyPowerAction(p, p, new AwakenDeathPower(p, p, this.magicNumber), this.magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Recitation.java b/src/main/java/awakenedOne/cards/Recitation.java
new file mode 100644
index 000000000..b6c1f59ea
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Recitation.java
@@ -0,0 +1,47 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class Recitation extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(Recitation.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public Recitation() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 6;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(Recitation.class.getSimpleName() + ".png"));
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ if (isTrig_chant()) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
+ chant();
+ }
+
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void chant() {
+ checkOnChant();
+ }
+
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/RisingChant.java b/src/main/java/awakenedOne/cards/RisingChant.java
new file mode 100644
index 000000000..4dfbc7a32
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/RisingChant.java
@@ -0,0 +1,28 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.RisingChantPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class RisingChant extends AbstractAwakenedCard {
+ public final static String ID = makeID(RisingChant.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public RisingChant() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(RisingChant.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new RisingChantPower(this.magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Scour.java b/src/main/java/awakenedOne/cards/Scour.java
new file mode 100644
index 000000000..a7a48f602
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Scour.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ManaburnPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Scour extends AbstractAwakenedCard {
+ public final static String ID = makeID(Scour.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ //Manaburn
+
+ //rework to pressure points
+
+ public Scour() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 8;
+ baseMagicNumber = magicNumber = 4;
+ loadJokeCardImage(this, makeBetaCardPath(Scour.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ this.addToBot(new ApplyPowerAction(m, p, new ManaburnPower(m, this.magicNumber), this.magicNumber));
+ }
+
+ public void upp() {
+ upgradeDamage(1);
+ upgradeMagicNumber(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/SingularityShield.java b/src/main/java/awakenedOne/cards/SingularityShield.java
new file mode 100644
index 000000000..86f6a33ae
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/SingularityShield.java
@@ -0,0 +1,33 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
+import hermit.powers.Drained;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class SingularityShield extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(SingularityShield.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public SingularityShield() {
+ super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
+ baseBlock = 8;
+ loadJokeCardImage(this, makeBetaCardPath(SingularityShield.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ Wiz.applyToSelf(new Drained(p, p, 1));
+ Wiz.applyToSelf(new NextTurnBlockPower(p, block));
+ }
+
+ @Override
+ public void upp() {
+ upgradeBlock(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Siphon.java b/src/main/java/awakenedOne/cards/Siphon.java
new file mode 100644
index 000000000..d51041df8
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Siphon.java
@@ -0,0 +1,53 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.GainStrengthPower;
+import com.megacrit.cardcrawl.powers.LoseStrengthPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Siphon extends AbstractAwakenedCard {
+ public final static String ID = makeID(Siphon.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Siphon() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 7;
+ magicNumber = baseMagicNumber = 2;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(Siphon.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ if (isTrig_chant()) {
+ this.addToBot(new ApplyPowerAction(m, p, new StrengthPower(m, -magicNumber), -magicNumber));
+ if (m != null && !m.hasPower("Artifact")) {
+ this.addToBot(new ApplyPowerAction(m, p, new GainStrengthPower(m, magicNumber), magicNumber));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ this.addToBot(new ApplyPowerAction(p, p, new LoseStrengthPower(p, magicNumber), magicNumber));
+ }
+ chant();
+ }
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void chant() {
+ checkOnChant();
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Skyward.java b/src/main/java/awakenedOne/cards/Skyward.java
new file mode 100644
index 000000000..731cf6b61
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Skyward.java
@@ -0,0 +1,50 @@
+package awakenedOne.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.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Skyward extends AbstractAwakenedCard {
+ public final static String ID = makeID(Skyward.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Skyward() {
+ super(ID, 8, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ baseBlock = 20;
+ this.magicNumber = this.baseMagicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath(Skyward.class.getSimpleName() + ".png"));
+ if (CardCrawlGame.dungeon != null && AbstractDungeon.currMapNode != null) {
+ this.configureCostsOnNewCard();
+ }
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ atb(new DrawCardAction(magicNumber));
+ }
+
+ public void configureCostsOnNewCard() {
+ for (AbstractCard c : AbstractDungeon.actionManager.cardsPlayedThisCombat) {
+ if (c.type == CardType.POWER) {
+ updateCost(-1);
+ }
+ }
+ }
+
+ public void triggerOnCardPlayed(AbstractCard c) {
+ if (c.type == CardType.POWER) {
+ this.updateCost(-1);
+ }
+ }
+
+ public void upp() {
+ upgradeBlock(4);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/SludgeBomb.java b/src/main/java/awakenedOne/cards/SludgeBomb.java
new file mode 100644
index 000000000..9a4656564
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/SludgeBomb.java
@@ -0,0 +1,49 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import java.util.Objects;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class SludgeBomb extends AbstractAwakenedCard {
+ public final static String ID = makeID(SludgeBomb.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public SludgeBomb() {
+ super(ID, 0, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
+ baseDamage = 9;
+ loadJokeCardImage(this, makeBetaCardPath(SludgeBomb.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ AbstractCard toRemove = null;
+ for (AbstractCard c : AbstractDungeon.player.exhaustPile.group) {
+ if (c instanceof VoidCard) {
+ toRemove = c;
+ break;
+ }
+ }
+ if (toRemove != null) AbstractDungeon.player.exhaustPile.removeCard(toRemove);
+ }
+
+ @Override
+ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ if (AbstractDungeon.player.exhaustPile.group.stream().noneMatch(card -> Objects.equals(card.cardID, VoidCard.ID))) {
+ cantUseMessage = cardStrings.EXTENDED_DESCRIPTION[0];
+ return false;
+ }
+ return super.canUse(p, m);
+ }
+
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
diff --git a/src/main/java/awakenedOne/cards/SongOfSorrow.java b/src/main/java/awakenedOne/cards/SongOfSorrow.java
new file mode 100644
index 000000000..c09fbfab1
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/SongOfSorrow.java
@@ -0,0 +1,36 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.SongOfSorrowPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class SongOfSorrow extends AbstractAwakenedCard {
+ public final static String ID = makeID(SongOfSorrow.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public SongOfSorrow() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = 7;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(SongOfSorrow.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new SongOfSorrowPower(magicNumber));
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.VOID.NAMES[0].toLowerCase());
+ }
+
+ @Override
+ public void upp() {
+ upgradeMagicNumber(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/SoulStrike.java b/src/main/java/awakenedOne/cards/SoulStrike.java
new file mode 100644
index 000000000..f9effcaff
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/SoulStrike.java
@@ -0,0 +1,80 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.monsters.AbstractMonster;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class SoulStrike extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(SoulStrike.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public SoulStrike() {
+ super(ID, 3, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 6;
+ this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber;
+ tags.add(CardTags.STRIKE);
+ loadJokeCardImage(this, makeBetaCardPath(SoulStrike.class.getSimpleName() + ".png"));
+
+ if (CardCrawlGame.dungeon != null && AbstractDungeon.currMapNode != null) {
+ this.configureCostsOnNewCard();
+ }
+ }
+
+ public void atTurnStart() {
+ this.resetAttributes();
+ this.applyPowers();
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ for (int i = 0; i < this.magicNumber; i++) {
+ dmg(m, AbstractGameAction.AttackEffect.SLASH_HEAVY);
+ }
+ }
+
+ public void triggerWhenDrawn() {
+ super.triggerWhenDrawn();
+ Iterator var1 = AbstractDungeon.actionManager.cardsPlayedThisTurn.iterator();
+ int powers = 0;
+ while (var1.hasNext()) {
+ AbstractCard c = (AbstractCard) var1.next();
+ if (c.type == CardType.POWER) {
+ powers++;
+ }
+ }
+ this.setCostForTurn(this.cost - powers);
+ }
+
+
+ public void configureCostsOnNewCard() {
+ Iterator var1 = AbstractDungeon.actionManager.cardsPlayedThisTurn.iterator();
+ int powers = 0;
+ while (var1.hasNext()) {
+ AbstractCard c = (AbstractCard) var1.next();
+ if (c.type == CardType.POWER) {
+ powers++;
+ }
+ }
+ this.setCostForTurn(this.cost - powers);
+ }
+
+ public void triggerOnCardPlayed(AbstractCard c) {
+ if (c.type == CardType.POWER) {
+ this.setCostForTurn(this.costForTurn - 1);
+ }
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Spellbinder.java b/src/main/java/awakenedOne/cards/Spellbinder.java
new file mode 100644
index 000000000..4ea3e4ebc
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Spellbinder.java
@@ -0,0 +1,28 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.SpellbinderPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class Spellbinder extends AbstractAwakenedCard {
+ public final static String ID = makeID(Spellbinder.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Spellbinder() {
+ super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(Spellbinder.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new SpellbinderPower(1));
+ }
+
+ public void upp() {
+ upgradeBaseCost(0);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Spellshield.java b/src/main/java/awakenedOne/cards/Spellshield.java
new file mode 100644
index 000000000..ee07b4608
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Spellshield.java
@@ -0,0 +1,27 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.SpellshieldPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import hermit.util.Wiz;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Spellshield extends AbstractAwakenedCard {
+ public final static String ID = makeID(Spellshield.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public Spellshield() {
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ loadJokeCardImage(this, makeBetaCardPath(Spellshield.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ Wiz.applyToSelf(new SpellshieldPower(magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Spew.java b/src/main/java/awakenedOne/cards/Spew.java
new file mode 100644
index 000000000..c19b647ec
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Spew.java
@@ -0,0 +1,54 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.patches.OnCreateCardSubscriber;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+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.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class Spew extends AbstractAwakenedCard {
+ public final static String ID = AwakenedOneMod.makeID(Spew.class.getSimpleName());
+ private static final int COST = 2;
+
+ public Spew() {
+ super(ID, COST, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 12;
+ loadJokeCardImage(this, makeBetaCardPath(Spew.class.getSimpleName() + ".png"));
+ }
+
+ public static boolean checkVoid() {
+ return OnCreateCardSubscriber.CardsCreatedThisTurn > 0;
+ }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ int dam = this.damage;
+ AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, dam, damageTypeForTurn), AbstractGameAction.AttackEffect.POISON));
+ if (checkVoid()) {
+ atb(new GainEnergyAction(2));
+ }
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ if (checkVoid()) {
+ this.glowColor = AbstractCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ } else {
+ this.glowColor = AbstractCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/SplitWide.java b/src/main/java/awakenedOne/cards/SplitWide.java
new file mode 100644
index 000000000..aef4716a2
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/SplitWide.java
@@ -0,0 +1,34 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.StrengthReturnPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class SplitWide extends AbstractAwakenedCard {
+ public final static String ID = makeID(SplitWide.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public SplitWide() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = 6;
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(SplitWide.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ this.addToBot(new ApplyPowerAction(m, p, new StrengthReturnPower(m, this.magicNumber), this.magicNumber));
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(2);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Strike.java b/src/main/java/awakenedOne/cards/Strike.java
new file mode 100644
index 000000000..66b577080
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Strike.java
@@ -0,0 +1,28 @@
+package awakenedOne.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Strike extends AbstractAwakenedCard {
+ public final static String ID = makeID(Strike.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public Strike() {
+ super(ID, 1, CardType.ATTACK, CardRarity.BASIC, CardTarget.ENEMY);
+ baseDamage = 6;
+ tags.add(CardTags.STARTER_STRIKE);
+ this.tags.add(CardTags.STRIKE);
+ loadJokeCardImage(this, makeBetaCardPath(Strike.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.SLASH_DIAGONAL);
+ }
+
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/TakeFlight.java b/src/main/java/awakenedOne/cards/TakeFlight.java
new file mode 100644
index 000000000..8cc135b24
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/TakeFlight.java
@@ -0,0 +1,46 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+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 static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class TakeFlight extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(TakeFlight.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public TakeFlight() {
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 12;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(TakeFlight.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ if (isTrig_chant()) {
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ applyToSelf((new BlurPower(AbstractDungeon.player, 1)));
+ checkOnChant();
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeBlock(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/TalonRake.java b/src/main/java/awakenedOne/cards/TalonRake.java
new file mode 100644
index 000000000..439e0c583
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/TalonRake.java
@@ -0,0 +1,55 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import com.badlogic.gdx.graphics.Color;
+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.RipAndTearEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class TalonRake extends AbstractAwakenedCard {
+ public final static String ID = makeID(TalonRake.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public TalonRake() {
+ super(ID, 2, CardType.ATTACK, CardRarity.BASIC, CardTarget.ENEMY);
+ baseDamage = 5;
+ //this.tags.add(AwakenedOneMod.CHANT);
+ this.tags.add(AwakenedOneMod.DELVE);
+ loadJokeCardImage(this, makeBetaCardPath(TalonRake.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ this.addToBot(new VFXAction(new RipAndTearEffect(m.hb.cX, m.hb.cY, Color.CYAN.cpy(), Color.WHITE)));
+ this.addToBot(new VFXAction(new RipAndTearEffect(m.hb.cX, m.hb.cY, Color.CYAN.cpy(), Color.WHITE)));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ atb(new ConjureAction(false));
+// if (isTrig_chant()) {
+// this.tags.add(ACTIVECHANT);
+// chant();
+// }
+ }
+
+// public void triggerOnGlowCheck() {
+// this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+// }
+
+ // @Override
+ // public void chant() {
+ // atb(new ConjureAction(false));
+ // checkOnChant();
+ // }
+
+ public void upp() {
+ upgradeDamage(2);
+ //upgradeBaseCost(0);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Thaumaturgy.java b/src/main/java/awakenedOne/cards/Thaumaturgy.java
new file mode 100644
index 000000000..02a99a54f
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Thaumaturgy.java
@@ -0,0 +1,33 @@
+package awakenedOne.cards;
+
+import awakenedOne.cards.tokens.Ceremony;
+import awakenedOne.powers.ThaumaturgyPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+import static awakenedOne.util.Wiz.applyToSelfTop;
+
+public class Thaumaturgy extends AbstractAwakenedCard {
+ public final static String ID = makeID(Thaumaturgy.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ public Thaumaturgy() {
+ super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ cardsToPreview = new Ceremony();
+ loadJokeCardImage(this, makeBetaCardPath(Thaumaturgy.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new DexterityPower(p, 1));
+ applyToSelfTop(new ThaumaturgyPower(magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/TheTower.java b/src/main/java/awakenedOne/cards/TheTower.java
new file mode 100644
index 000000000..3678d8f57
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/TheTower.java
@@ -0,0 +1,70 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.patches.OnCreateCardSubscriber;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.ExplosionSmallEffect;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.loadJokeCardImage;
+import static awakenedOne.AwakenedOneMod.makeBetaCardPath;
+
+public class TheTower extends AbstractAwakenedCard {
+
+ public final static String ID = AwakenedOneMod.makeID(TheTower.class.getSimpleName());
+ // intellij stuff attack, enemy, basic, 6, 3, , , ,
+
+ public TheTower() {
+ super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ALL_ENEMY);
+ baseDamage = 4;
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ loadJokeCardImage(this, makeBetaCardPath(TheTower.class.getSimpleName() + ".png"));
+ }
+
+ public static int countCards() {
+ return OnCreateCardSubscriber.CardsCreatedThisCombat;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ Iterator var2 = AbstractDungeon.getMonsters().monsters.iterator();
+
+ while (var2.hasNext()) {
+ AbstractMonster mo = (AbstractMonster) var2.next();
+ if (!mo.isDeadOrEscaped()) {
+ this.addToBot(new VFXAction(new ExplosionSmallEffect(mo.hb.cX, mo.hb.cY), 0.1F));
+ }
+ }
+
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
+
+ }
+
+ 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 upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Unleash.java b/src/main/java/awakenedOne/cards/Unleash.java
new file mode 100644
index 000000000..1378f47ff
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Unleash.java
@@ -0,0 +1,45 @@
+package awakenedOne.cards;
+
+import awakenedOne.patches.OnLoseEnergyPowerPatch;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Unleash extends AbstractAwakenedCard {
+ public final static String ID = makeID(Unleash.class.getSimpleName());
+ // intellij stuff skill, self, basic, , , 5, 3, ,
+
+ public Unleash() {
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 5;
+ baseMagicNumber = magicNumber = 1;
+ loadJokeCardImage(this, makeBetaCardPath("Unleash.png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ }
+
+ public void calculateCardDamage(AbstractMonster mo) {
+ int realBaseDamage = this.baseDamage;
+ this.baseDamage += this.magicNumber * OnLoseEnergyPowerPatch.EnergyLostThisCombat;
+ super.calculateCardDamage(mo);
+ this.baseDamage = realBaseDamage;
+ this.isDamageModified = this.damage != this.baseDamage;
+ }
+
+ public void applyPowers() {
+ int realBaseDamage = this.baseDamage;
+ this.baseDamage += this.magicNumber * OnLoseEnergyPowerPatch.EnergyLostThisCombat;
+ super.applyPowers();
+ this.baseDamage = realBaseDamage;
+ this.isDamageModified = this.damage != this.baseDamage;
+ }
+
+ public void upp() {
+ upgradeDamage(1);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/Victuals.java b/src/main/java/awakenedOne/cards/Victuals.java
new file mode 100644
index 000000000..52d5ffe64
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/Victuals.java
@@ -0,0 +1,42 @@
+package awakenedOne.cards;
+
+import awakenedOne.AwakenedOneMod;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Victuals extends AbstractAwakenedCard {
+ public final static String ID = makeID(Victuals.class.getSimpleName());
+ // intellij stuff skill, enemy, uncommon, , , , , 1, 1
+
+ public Victuals() {
+ super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ this.exhaust = true;
+ this.tags.add(AwakenedOneMod.CHANT);
+ loadJokeCardImage(this, makeBetaCardPath(Victuals.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (isTrig_chant()) {
+ chant();
+ }
+ }
+
+ @Override
+ public void chant() {
+ atb(new GainEnergyAction(magicNumber));
+ checkOnChant();
+ }
+
+ public void triggerOnGlowCheck() {
+ this.glowColor = isChantActiveGlow(this) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/WaveOfMiasma.java b/src/main/java/awakenedOne/cards/WaveOfMiasma.java
new file mode 100644
index 000000000..e6527f099
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/WaveOfMiasma.java
@@ -0,0 +1,36 @@
+package awakenedOne.cards;
+
+import awakenedOne.powers.ManaburnPower;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import hermit.util.Wiz;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class WaveOfMiasma extends AbstractAwakenedCard {
+ public final static String ID = makeID(WaveOfMiasma.class.getSimpleName());
+ // intellij stuff power, self, rare, , , , , ,
+
+ //Shroud of Miasma
+
+ public WaveOfMiasma() {
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseMagicNumber = magicNumber = 3;
+ baseSecondMagic = secondMagic = 9;
+ this.exhaust = true;
+ loadJokeCardImage(this, makeBetaCardPath(WaveOfMiasma.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ Wiz.forAllMonstersLiving(q -> {
+ Wiz.applyToEnemy(q, new WeakPower(q, magicNumber, false));
+ Wiz.applyToEnemy(q, new ManaburnPower(q, secondMagic));
+ });
+ }
+
+ public void upp() {
+ upgradeMagicNumber(2);
+ upgradeSecondMagic(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/cardvars/SecondDamage.java b/src/main/java/awakenedOne/cards/cardvars/SecondDamage.java
new file mode 100644
index 000000000..4af72ed78
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/cardvars/SecondDamage.java
@@ -0,0 +1,53 @@
+package awakenedOne.cards.cardvars;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import basemod.abstracts.DynamicVariable;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+import static awakenedOne.AwakenedOneMod.makeID;
+
+public class SecondDamage extends DynamicVariable {
+
+ @Override
+ public String key() {
+ return makeID("sd");
+ }
+
+ @Override
+ public boolean isModified(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).isSecondDamageModified;
+ }
+ return false;
+ }
+
+ public void setIsModified(AbstractCard card, boolean v) {
+ if (card instanceof AbstractAwakenedCard) {
+ ((AbstractAwakenedCard) card).isSecondDamageModified = v;
+ }
+ }
+
+ @Override
+ public int value(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).secondDamage;
+ }
+ return -1;
+ }
+
+ @Override
+ public int baseValue(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).baseSecondDamage;
+ }
+ return -1;
+ }
+
+ @Override
+ public boolean upgraded(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).upgradedSecondDamage;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/cardvars/SecondMagicNumber.java b/src/main/java/awakenedOne/cards/cardvars/SecondMagicNumber.java
new file mode 100644
index 000000000..34de38c52
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/cardvars/SecondMagicNumber.java
@@ -0,0 +1,53 @@
+package awakenedOne.cards.cardvars;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import basemod.abstracts.DynamicVariable;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+import static awakenedOne.AwakenedOneMod.makeID;
+
+public class SecondMagicNumber extends DynamicVariable {
+
+ @Override
+ public String key() {
+ return makeID("m2");
+ }
+
+ @Override
+ public boolean isModified(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).isSecondMagicModified;
+ }
+ return false;
+ }
+
+ @Override
+ public int value(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).secondMagic;
+ }
+ return -1;
+ }
+
+ public void setIsModified(AbstractCard card, boolean v) {
+ if (card instanceof AbstractAwakenedCard) {
+ ((AbstractAwakenedCard) card).isSecondMagicModified = v;
+ }
+ }
+
+ @Override
+ public int baseValue(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).baseSecondMagic;
+ }
+ return -1;
+ }
+
+ @Override
+ public boolean upgraded(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).upgradedSecondMagic;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/cardvars/ThirdMagicNumber.java b/src/main/java/awakenedOne/cards/cardvars/ThirdMagicNumber.java
new file mode 100644
index 000000000..0c4da3e47
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/cardvars/ThirdMagicNumber.java
@@ -0,0 +1,53 @@
+package awakenedOne.cards.cardvars;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import basemod.abstracts.DynamicVariable;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+import static awakenedOne.AwakenedOneMod.makeID;
+
+public class ThirdMagicNumber extends DynamicVariable {
+
+ @Override
+ public String key() {
+ return makeID("m3");
+ }
+
+ @Override
+ public boolean isModified(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).isThirdMagicModified;
+ }
+ return false;
+ }
+
+ @Override
+ public int value(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).thirdMagic;
+ }
+ return -1;
+ }
+
+ public void setIsModified(AbstractCard card, boolean v) {
+ if (card instanceof AbstractAwakenedCard) {
+ ((AbstractAwakenedCard) card).isThirdMagicModified = v;
+ }
+ }
+
+ @Override
+ public int baseValue(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).baseThirdMagic;
+ }
+ return -1;
+ }
+
+ @Override
+ public boolean upgraded(AbstractCard card) {
+ if (card instanceof AbstractAwakenedCard) {
+ return ((AbstractAwakenedCard) card).upgradedThirdMagic;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/meme/NotConjureBlade.java b/src/main/java/awakenedOne/cards/meme/NotConjureBlade.java
new file mode 100644
index 000000000..ecfa4b7c1
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/meme/NotConjureBlade.java
@@ -0,0 +1,68 @@
+package awakenedOne.cards.meme;
+
+import awakenedOne.actions.ConjureBladeSpellPileAction;
+import basemod.patches.com.megacrit.cardcrawl.screens.compendium.CardLibraryScreen.NoCompendium;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.purple.ConjureBlade;
+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.util.CardIgnore;
+
+@CardIgnore
+@NoCompendium
+
+public class NotConjureBlade extends ConjureBlade {
+ public static final String ID = "awakened:NotConjureBlade";
+ public static final String NAME;
+ public static final String DESCRIPTION;
+ public static final String[] EXTENDED_DESCRIPTION;
+ public static final String IMG_PATH = "purple/skill/conjure_blade";
+ 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 = -1;
+ public static String UPGRADED_DESCRIPTION;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("ConjureBlade");
+ NAME = cardStrings.NAME;
+ DESCRIPTION = cardStrings.DESCRIPTION;
+ UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+ EXTENDED_DESCRIPTION = cardStrings.EXTENDED_DESCRIPTION;
+ }
+
+
+// public NotConjureBlade() {
+// super(ID, NAME, IMG_PATH, COST, DESCRIPTION, TYPE, CardColor.PURPLE, RARITY, TARGET);
+// this.cardsToPreview = new Expunger();
+// this.exhaust = true;
+// this.tags.add(AwakenedOneMod.DELVE);
+// }
+
+ @Override
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (this.upgraded) {
+ this.addToBot(new ConjureBladeSpellPileAction(p, this.freeToPlayOnce, this.energyOnUse + 1));
+ } else {
+ this.addToBot(new ConjureBladeSpellPileAction(p, this.freeToPlayOnce, this.energyOnUse));
+ }
+ }
+
+ @Override
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+
+ @Override
+ public AbstractCard makeCopy() {
+ return new NotConjureBlade();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/Ceremony.java b/src/main/java/awakenedOne/cards/tokens/Ceremony.java
new file mode 100644
index 000000000..c776094e7
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/Ceremony.java
@@ -0,0 +1,41 @@
+package awakenedOne.cards.tokens;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+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 static awakenedOne.AwakenedOneMod.*;
+
+public class Ceremony extends AbstractAwakenedCard {
+ public final static String ID = makeID(Ceremony.class.getSimpleName());
+ // intellij stuff attack, enemy, special, 3, 2, , , ,
+
+ public Ceremony() {
+ super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF, CardColor.COLORLESS);
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ //selfRetain = true;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_power_awakened.png", "awakenedResources/images/1024/bg_power_awakened.png");
+ this.isEthereal = true;
+ this.baseSecondMagic = 2;
+ this.secondMagic = this.baseSecondMagic;
+ loadJokeCardImage(this, makeBetaCardPath(Ceremony.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new VFXAction(p, new InflameEffect(p), .1F));
+ this.addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, this.magicNumber), this.magicNumber));
+ // applyToSelf(new StrengthOverTurnsPower(1, this.magicNumber));
+ }
+
+ @Override
+ public void upp() {
+ //upgradeMagicNumber(1);
+ selfRetain = true;
+ this.isEthereal = false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/PlumeJab.java b/src/main/java/awakenedOne/cards/tokens/PlumeJab.java
new file mode 100644
index 000000000..e001a394f
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/PlumeJab.java
@@ -0,0 +1,31 @@
+package awakenedOne.cards.tokens;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class PlumeJab extends AbstractAwakenedCard {
+ public final static String ID = makeID(PlumeJab.class.getSimpleName());
+ // intellij stuff attack, enemy, special, 3, 2, , , ,
+
+ public PlumeJab() {
+ super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ALL_ENEMY, CardColor.COLORLESS);
+ baseDamage = 2;
+ loadJokeCardImage(this, makeBetaCardPath(PlumeJab.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ for (int i = 0; i < 2; ++i) {
+ this.addToBot(new AttackDamageRandomEnemyAction(this, AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ }
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/AbstractSpellCard.java b/src/main/java/awakenedOne/cards/tokens/spells/AbstractSpellCard.java
new file mode 100644
index 000000000..bca7d1c59
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/AbstractSpellCard.java
@@ -0,0 +1,71 @@
+package awakenedOne.cards.tokens.spells;
+
+import awakenedOne.cards.AbstractAwakenedCard;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.UIStrings;
+
+import java.util.Collections;
+import java.util.List;
+
+import static awakenedOne.AwakenedOneMod.makeID;
+
+public abstract class AbstractSpellCard extends AbstractAwakenedCard {
+ private static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString(makeID("SpellDescriptor"));
+
+ public AbstractSpellCard(String cardID, final int cost, CardType type, CardTarget target) {
+ super(cardID, cost, type, CardRarity.SPECIAL, target, CardColor.COLORLESS);
+ this.selfRetain = true;
+ exhaust = true;
+ }
+
+
+// @Override
+// public void applyPowers() {
+// if ((AbstractDungeon.player != null) && (AbstractDungeon.player.hasRelic(StrengthBooster.ID))) {
+//
+// int realBaseDamage = this.baseDamage;
+// this.baseDamage += StrengthBooster.AMOUNT;
+//
+// int realBaseBlock = this.baseBlock;
+// this.baseBlock += StrengthBooster.AMOUNT;
+//
+// super.applyPowers();
+//
+// this.baseDamage = realBaseDamage;
+// this.isDamageModified = this.damage != this.baseDamage;
+// this.baseBlock = realBaseBlock;
+// this.isBlockModified = this.block != this.baseBlock;
+//
+// }
+// super.applyPowers();
+// }
+//
+// public void calculateCardDamage(AbstractMonster mo) {
+// if ((AbstractDungeon.player != null) && (AbstractDungeon.player.hasRelic(StrengthBooster.ID))) {
+//
+// int realBaseDamage = this.baseDamage;
+//
+// if (AbstractDungeon.player.hasRelic(StrengthBooster.ID)) {
+// this.baseDamage += StrengthBooster.AMOUNT;
+// }
+//
+// int realBaseBlock = this.baseBlock;
+// if (AbstractDungeon.player.hasRelic(StrengthBooster.ID)) {
+// this.baseBlock += StrengthBooster.AMOUNT;
+// }
+//
+// super.calculateCardDamage(mo);
+//
+// this.baseDamage = realBaseDamage;
+// this.isDamageModified = this.damage != this.baseDamage;
+//
+// this.baseBlock = realBaseBlock;
+// this.isBlockModified = this.block != this.baseBlock;
+// }
+// }
+
+ @Override
+ public List getCardDescriptors() {
+ return Collections.singletonList(uiStrings.TEXT[0]);
+ }
+}
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/AphoticShield.java b/src/main/java/awakenedOne/cards/tokens/spells/AphoticShield.java
new file mode 100644
index 000000000..7c65ccc37
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/AphoticShield.java
@@ -0,0 +1,35 @@
+package awakenedOne.cards.tokens.spells;
+
+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.MetallicizePower;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class AphoticShield extends AbstractSpellCard {
+ public final static String ID = makeID(AphoticShield.class.getSimpleName());
+ // intellij stuff skill, self, , , , , 2, 1
+
+ public AphoticShield() {
+ super(ID, 1, CardType.SKILL, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 5;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_skill_awakened.png", "awakenedResources/images/1024/bg_skill_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(AphoticShield.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!upgraded) {
+ this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PlatedArmorPower(AbstractDungeon.player, magicNumber), magicNumber));
+ }
+ if (upgraded) {
+ this.addToBot(new ApplyPowerAction(p, p, new MetallicizePower(p, this.magicNumber), this.magicNumber));
+ }
+ }
+
+ public void upp() {
+ //upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/BurningStudy.java b/src/main/java/awakenedOne/cards/tokens/spells/BurningStudy.java
new file mode 100644
index 000000000..b30757f10
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/BurningStudy.java
@@ -0,0 +1,39 @@
+package awakenedOne.cards.tokens.spells;
+
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+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 static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.applyToSelf;
+
+public class BurningStudy extends AbstractSpellCard {
+ public final static String ID = makeID(BurningStudy.class.getSimpleName());
+ // intellij stuff skill, self, , , , , 2, 1
+
+ public BurningStudy() {
+ super(ID, 1, CardType.POWER, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_power_awakened.png", "awakenedResources/images/1024/bg_power_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(BurningStudy.class.getSimpleName() + ".png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+// 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"));
+// }
+ this.addToBot(new VFXAction(p, new InflameEffect(p), 1.0F));
+ applyToSelf(new StrengthPower(p, magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/Cryostasis.java b/src/main/java/awakenedOne/cards/tokens/spells/Cryostasis.java
new file mode 100644
index 000000000..2fe28a4ad
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/Cryostasis.java
@@ -0,0 +1,62 @@
+package awakenedOne.cards.tokens.spells;
+
+import awakenedOne.relics.EyeOfTheOccult;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+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 com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.combat.FrostOrbActivateEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class Cryostasis extends AbstractSpellCard {
+ public final static String ID = makeID(Cryostasis.class.getSimpleName());
+ // intellij stuff skill, self, , , 7, 1, 1, 1
+
+ public Cryostasis() {
+ super(ID, 1, CardType.SKILL, CardTarget.ENEMY);
+ baseBlock = 8;
+ baseMagicNumber = magicNumber = 1;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_skill_awakened.png", "awakenedResources/images/1024/bg_skill_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(Cryostasis.class.getSimpleName() + ".png"));
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+ if (AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ target = CardTarget.ALL_ENEMY;
+ }
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ CardCrawlGame.sound.play("ORB_FROST_CHANNEL", 0.1F);
+ AbstractDungeon.effectsQueue.add(new FrostOrbActivateEffect(p.hb.cX, p.hb.cY));
+ blck();
+
+ // if (upgraded) {
+ if (!AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ atb(new ApplyPowerAction(m, AbstractDungeon.player, new WeakPower(m, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.LIGHTNING));
+ }
+
+ if (AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ //AbstractDungeon.player.getRelic(EyeOfTheOccult.ID).flash();
+ 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.LIGHTNING));
+ // }
+ }
+ }
+ }
+ }
+
+
+ public void upp() {
+ upgradeBlock(2);
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/Darkleech.java b/src/main/java/awakenedOne/cards/tokens/spells/Darkleech.java
new file mode 100644
index 000000000..fc4c535a8
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/Darkleech.java
@@ -0,0 +1,56 @@
+package awakenedOne.cards.tokens.spells;
+
+import awakenedOne.relics.EyeOfTheOccult;
+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.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.VulnerablePower;
+import com.megacrit.cardcrawl.vfx.combat.GiantEyeEffect;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class Darkleech extends AbstractSpellCard {
+ public final static String ID = makeID(Darkleech.class.getSimpleName());
+ // intellij stuff skill, all_enemy, , , , , 7, 2
+
+ public Darkleech() {
+ super(ID, 1, CardType.SKILL, CardTarget.ENEMY);
+ baseMagicNumber = magicNumber = 2;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_skill_awakened.png", "awakenedResources/images/1024/bg_skill_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(Darkleech.class.getSimpleName() + ".png"));
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+ if (AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ target = CardTarget.ALL_ENEMY;
+ }
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ this.addToBot(new VFXAction(new GiantEyeEffect(m.hb.cX, m.hb.cY + 300.0F * Settings.scale, new Color(1.0F, 0.3F, 1.0F, 0.0F))));
+ this.addToBot(new ApplyPowerAction(m, p, new VulnerablePower(m, this.magicNumber, false), this.magicNumber));
+ } else {
+ Iterator var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+ while (var3.hasNext()) {
+ AbstractMonster mo = (AbstractMonster) var3.next();
+ this.addToBot(new VFXAction(new GiantEyeEffect(mo.hb.cX, mo.hb.cY + 300.0F * Settings.scale, new Color(1.0F, 0.3F, 1.0F, 0.0F))));
+ this.addToBot(new ApplyPowerAction(mo, p, new VulnerablePower(mo, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+
+ }
+
+ public void upp() {
+ upgradeMagicNumber(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/ESPSpell.java b/src/main/java/awakenedOne/cards/tokens/spells/ESPSpell.java
new file mode 100644
index 000000000..e5a666c63
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/ESPSpell.java
@@ -0,0 +1,29 @@
+package awakenedOne.cards.tokens.spells;
+
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.atb;
+
+public class ESPSpell extends AbstractSpellCard {
+ public final static String ID = makeID(ESPSpell.class.getSimpleName());
+ // intellij stuff skill, all_enemy, , , , , 7, 2
+
+ public ESPSpell() {
+ super(ID, 0, CardType.SKILL, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 1;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_skill_awakened.png", "awakenedResources/images/1024/bg_skill_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(ESPSpell.class.getSimpleName() + ".png"));
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new DrawCardAction(magicNumber));
+ }
+
+ public void upp() {
+ upgradeMagicNumber(1);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/cards/tokens/spells/Thunderbolt.java b/src/main/java/awakenedOne/cards/tokens/spells/Thunderbolt.java
new file mode 100644
index 000000000..c42dd29e2
--- /dev/null
+++ b/src/main/java/awakenedOne/cards/tokens/spells/Thunderbolt.java
@@ -0,0 +1,66 @@
+package awakenedOne.cards.tokens.spells;
+
+import awakenedOne.relics.EyeOfTheOccult;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+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 com.megacrit.cardcrawl.vfx.combat.LightningEffect;
+import com.megacrit.cardcrawl.vfx.combat.ReaperEffect;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.util.Wiz.vfx;
+
+public class Thunderbolt extends AbstractSpellCard {
+ public final static String ID = makeID(Thunderbolt.class.getSimpleName());
+ // intellij stuff attack, enemy, 13, 6, , , ,
+
+ public Thunderbolt() {
+ super(ID, 1, CardType.ATTACK, CardTarget.ENEMY);
+ baseDamage = 12;
+ this.setBackgroundTexture("awakenedResources/images/512/bg_attack_awakened.png", "awakenedResources/images/1024/bg_attack_awakened.png");
+ loadJokeCardImage(this, makeBetaCardPath(Thunderbolt.class.getSimpleName() + ".png"));
+ }
+
+ @Override
+ public void applyPowers() {
+ super.applyPowers();
+ if (AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ target = CardTarget.ALL_ENEMY;
+ }
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ CardCrawlGame.sound.playA("ORB_LIGHTNING_EVOKE", 0.9F);
+ CardCrawlGame.sound.playA("ORB_LIGHTNING_PASSIVE", -0.3F);
+ vfx(new LightningEffect(m.hb.cX, m.hb.cY));
+ dmg(m, AbstractGameAction.AttackEffect.NONE);
+ } else {
+ //AbstractDungeon.player.getRelic(EyeOfTheOccult.ID).flash();
+ this.addToBot(new VFXAction(new ReaperEffect()));
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
+ }
+
+ if (upgraded) {
+ if (!AbstractDungeon.player.hasRelic(EyeOfTheOccult.ID)) {
+ CardCrawlGame.sound.playA("ORB_LIGHTNING_EVOKE", 0.9F);
+ CardCrawlGame.sound.playA("ORB_LIGHTNING_PASSIVE", -0.3F);
+ vfx(new LightningEffect(m.hb.cX, m.hb.cY));
+ dmg(m, AbstractGameAction.AttackEffect.NONE);
+ } else {
+ //AbstractDungeon.player.getRelic(EyeOfTheOccult.ID).flash();
+ this.addToBot(new VFXAction(new ReaperEffect()));
+ this.addToBot(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+
+ }
+
+ public void upp() {
+ upgradeDamage(-6);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/effects/IroncladVictoryFlameEffectBlue.java b/src/main/java/awakenedOne/effects/IroncladVictoryFlameEffectBlue.java
new file mode 100644
index 000000000..934388a5f
--- /dev/null
+++ b/src/main/java/awakenedOne/effects/IroncladVictoryFlameEffectBlue.java
@@ -0,0 +1,80 @@
+package awakenedOne.effects;
+
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+import awakenedOne.AwakenedOneMod;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.math.Interpolation;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+
+public class IroncladVictoryFlameEffectBlue extends AbstractGameEffect {
+ private float x;
+ private float y;
+ private final float vX;
+ private final float vY;
+ private final boolean flipX = MathUtils.randomBoolean();
+ private final TextureAtlas.AtlasRegion img;
+
+ public IroncladVictoryFlameEffectBlue() {
+ this.duration = 1.0F;
+ this.startingDuration = this.duration;
+ this.renderBehind = MathUtils.randomBoolean();
+ switch (MathUtils.random(2)) {
+ case 0:
+ this.img = ImageMaster.FLAME_1;
+ break;
+ case 1:
+ this.img = ImageMaster.FLAME_2;
+ break;
+ default:
+ this.img = ImageMaster.FLAME_3;
+ }
+
+ this.x = MathUtils.random(600.0F, 1320.0F) * Settings.xScale - (float) this.img.packedWidth / 2.0F;
+ this.y = -300.0F * Settings.scale - (float) this.img.packedHeight / 2.0F;
+ if (this.x > 960.0F * Settings.xScale) {
+ this.vX = MathUtils.random(0.0F, -120.0F) * Settings.xScale;
+ } else {
+ this.vX = MathUtils.random(120.0F, 0.0F) * Settings.xScale;
+ }
+
+ this.vY = MathUtils.random(600.0F, 800.0F) * Settings.scale;
+ this.color = AwakenedOneMod.placeholderColor;
+ this.renderBehind = false;
+ this.scale = MathUtils.random(6.0F, 7.0F) * Settings.scale;
+ }
+
+ public void update() {
+ this.x += this.vX * Gdx.graphics.getDeltaTime();
+ this.y += this.vY * Gdx.graphics.getDeltaTime();
+ this.color.a = Interpolation.pow3Out.apply(0.0F, 0.8F, this.duration / this.startingDuration);
+ this.duration -= Gdx.graphics.getDeltaTime();
+ this.scale += Gdx.graphics.getDeltaTime();
+ if (this.duration < 0.0F) {
+ this.isDone = true;
+ }
+
+ }
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.color);
+ if (this.flipX && !this.img.isFlipX()) {
+ this.img.flip(true, false);
+ } else if (!this.flipX && this.img.isFlipX()) {
+ this.img.flip(true, false);
+ }
+
+ sb.draw(this.img, this.x, this.y, (float) this.img.packedWidth / 2.0F, (float) this.img.packedHeight / 2.0F, (float) this.img.packedWidth, (float) this.img.packedHeight, this.scale, this.scale, this.rotation);
+ }
+
+ public void dispose() {
+ }
+}
diff --git a/src/main/java/awakenedOne/effects/ReverseAwakenedWingParticle.java b/src/main/java/awakenedOne/effects/ReverseAwakenedWingParticle.java
new file mode 100644
index 000000000..ffebd4ca7
--- /dev/null
+++ b/src/main/java/awakenedOne/effects/ReverseAwakenedWingParticle.java
@@ -0,0 +1,93 @@
+package awakenedOne.effects;
+
+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.Interpolation;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+
+public class ReverseAwakenedWingParticle extends AbstractGameEffect {
+ private float x;
+ private float y;
+ private float tScale;
+ private final TextureAtlas.AtlasRegion img;
+
+ public ReverseAwakenedWingParticle() {
+ this.duration = 2.0F;
+ this.startingDuration = this.duration;
+ this.img = ImageMaster.THICK_3D_LINE_2;
+ this.scale = 0.01F;
+ this.rotation = -MathUtils.random(25.0F, 85.0F);
+ this.renderBehind = MathUtils.randomBoolean(0.2F);
+ if (this.renderBehind) {
+ this.tScale = MathUtils.random(0.8F, 1.2F);
+ }
+
+ this.color = new Color(0.3F, 0.3F, MathUtils.random(0.3F, 0.35F), MathUtils.random(0.5F, 0.9F));
+ int roll = MathUtils.random(0, 2);
+ if (roll == 0) {
+ this.x = MathUtils.random(-340.0F, -170.0F) * Settings.scale;
+ this.y = MathUtils.random(-20.0F, 20.0F) * Settings.scale;
+ this.tScale = MathUtils.random(0.4F, 0.5F);
+ } else if (roll == 1) {
+ this.x = MathUtils.random(-220.0F, -20.0F) * Settings.scale;
+ this.y = MathUtils.random(-40.0F, -10.0F) * Settings.scale;
+ this.tScale = MathUtils.random(0.4F, 0.5F);
+ } else {
+ this.x = MathUtils.random(-270.0F, -60.0F) * Settings.scale;
+ this.y = MathUtils.random(-30.0F, -0.0F) * Settings.scale;
+ this.tScale = MathUtils.random(0.4F, 0.7F);
+ }
+
+ this.x += 155.0F * Settings.scale;
+ this.y += 30.0F * Settings.scale;
+ this.x -= (float) (this.img.packedWidth / 2);
+ this.y -= (float) (this.img.packedHeight / 2);
+ }
+
+ public void update() {
+ this.duration -= Gdx.graphics.getDeltaTime();
+ if (this.duration < 0.0F) {
+ this.isDone = true;
+ }
+
+ if (this.duration > 1.0F) {
+ this.scale = Interpolation.bounceIn.apply(this.tScale, 0.01F, this.duration - 1.0F) * Settings.scale;
+ }
+
+ if (this.duration < 0.2F) {
+ this.color.a = Interpolation.fade.apply(0.0F, 0.5F, this.duration * 5.0F);
+ }
+
+ }
+
+ public void render(SpriteBatch sb) {
+ //this.img.flip(true, false);
+
+ }
+
+ public void render(SpriteBatch sb, float x, float y) {
+
+ // if (!this.img.isFlipX()) {
+ // this.img.flip(true, false);
+ // }
+
+ float derp = MathUtils.random(3.0F, 5.0F);
+
+ sb.setColor(new Color(0.4F, 1.0F, 1.0F, this.color.a / 2.0F));
+ sb.setBlendFunction(770, 1);
+ sb.draw(this.img, this.x + x, this.y + y, (float) this.img.packedWidth * 0.08F, (float) this.img.packedHeight / 2.0F, (float) this.img.packedWidth, (float) this.img.packedHeight, (this.scale * MathUtils.random(1.1F, 1.25F)), this.scale, this.rotation + derp + 180.0F);
+ sb.setBlendFunction(770, 771);
+ sb.setColor(this.color);
+ sb.draw(this.img, this.x + x, this.y + y, (float) this.img.packedWidth * 0.08F, (float) this.img.packedHeight / 2.0F, (float) this.img.packedWidth, (float) this.img.packedHeight, this.scale, this.scale, this.rotation + derp + 180.0F);
+ sb.setColor(new Color(0.0F, 0.0F, 0.0F, this.color.a / 5.0F));
+ sb.draw(this.img, this.x + x, this.y + y, (float) this.img.packedWidth * 0.08F, (float) this.img.packedHeight / 2.0F, (float) this.img.packedWidth, (float) this.img.packedHeight, (this.scale * 0.7F), this.scale * 0.7F, this.rotation + derp - 40.0F + 180.0F);
+ }
+
+ public void dispose() {
+ }
+}
diff --git a/src/main/java/awakenedOne/events/BackToBasicsAwakened.java b/src/main/java/awakenedOne/events/BackToBasicsAwakened.java
new file mode 100644
index 000000000..46a9a8dad
--- /dev/null
+++ b/src/main/java/awakenedOne/events/BackToBasicsAwakened.java
@@ -0,0 +1,168 @@
+package awakenedOne.events;
+
+import awakenedOne.cardmods.DrainingMod;
+import awakenedOne.cards.Strike;
+import basemod.helpers.CardModifierManager;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+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.PurgeCardEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BackToBasicsAwakened extends AbstractImageEvent {
+ public static final String ID = "awakened:BackToBasics";
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+ public static final String[] OPTIONS;
+ public static final String[] DESCRIPTIONSGUARDIAN;
+ public static final String[] OPTIONSGUARDIAN;
+ private static final EventStrings eventStrings;
+ private static final EventStrings eventStringsGuardian;
+ private static final String DIALOG_1;
+ private static final String DIALOG_2;
+ private static final String DIALOG_3;
+
+ static {
+ eventStrings = CardCrawlGame.languagePack.getEventString("Back to Basics");
+ NAME = eventStrings.NAME;
+ DESCRIPTIONS = eventStrings.DESCRIPTIONS;
+ OPTIONS = eventStrings.OPTIONS;
+ DIALOG_1 = DESCRIPTIONS[0];
+ DIALOG_2 = DESCRIPTIONS[1];
+ DIALOG_3 = DESCRIPTIONS[2];
+ eventStringsGuardian = CardCrawlGame.languagePack.getEventString("awakened:BackToBasics");
+ DESCRIPTIONSGUARDIAN = eventStringsGuardian.DESCRIPTIONS;
+ OPTIONSGUARDIAN = eventStringsGuardian.OPTIONS;
+ }
+
+ private BackToBasicsAwakened.CUR_SCREEN screen;
+ private final List cardsUpgraded;
+ private final ArrayList cardsToRemove;
+
+ public BackToBasicsAwakened() {
+ super(NAME, DIALOG_1, "images/events/backToBasics.jpg");
+ this.screen = BackToBasicsAwakened.CUR_SCREEN.INTRO;
+ this.cardsUpgraded = new ArrayList();
+
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ c.update();
+ }
+
+ cardsToRemove = new ArrayList<>();
+
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.hasTag(AbstractCard.CardTags.STARTER_STRIKE)) {
+ cardsToRemove.add(c);
+ }
+ if (c.hasTag(AbstractCard.CardTags.STARTER_DEFEND)) {
+ cardsToRemove.add(c);
+ }
+ }
+
+ AbstractCard card = new Strike();
+
+ CardModifierManager.addModifier(card, new DrainingMod());
+
+ if (cardsToRemove.size() >= 1) {
+ this.imageEventText.setDialogOption(OPTIONSGUARDIAN[0], card);
+
+ } else {
+ this.imageEventText.setDialogOption(OPTIONSGUARDIAN[1], true);
+
+ }
+
+
+ this.imageEventText.setDialogOption(OPTIONS[0]);
+ this.imageEventText.setDialogOption(OPTIONS[1]);
+
+
+ }
+
+ public void onEnterRoom() {
+ if (Settings.AMBIANCE_ON) {
+ CardCrawlGame.sound.play("EVENT_ANCIENT");
+ }
+
+ this.cardsUpgraded.clear();
+ }
+
+ public void update() {
+ super.update();
+ if (!AbstractDungeon.gridSelectScreen.selectedCards.isEmpty()) {
+ AbstractCard c = AbstractDungeon.gridSelectScreen.selectedCards.get(0);
+ AbstractDungeon.effectList.add(new PurgeCardEffect(c));
+ AbstractDungeon.player.masterDeck.removeCard(c);
+ AbstractDungeon.gridSelectScreen.selectedCards.remove(c);
+ logMetricCardRemoval(ID, "Elegance", c);
+ }
+ }
+
+ protected void buttonEffect(int buttonPressed) {
+ switch (this.screen) {
+ case INTRO:
+ if (buttonPressed == 0) {
+
+ this.imageEventText.updateBodyText(DESCRIPTIONSGUARDIAN[0]);
+
+ ArrayList cardsDrained = new ArrayList<>();
+ for (AbstractCard c : cardsToRemove) {
+ CardModifierManager.addModifier(c, new DrainingMod());
+ cardsDrained.add(c.cardID);
+ }
+ logMetricUpgradeCards(ID, "Desperation", cardsDrained);
+
+
+ this.imageEventText.updateDialogOption(0, OPTIONS[3]);
+ this.imageEventText.clearRemainingOptions();
+ } else if (buttonPressed == 1) {
+ if (CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck.getPurgeableCards()).size() > 0) {
+ this.imageEventText.updateBodyText(DIALOG_2);
+ AbstractDungeon.gridSelectScreen.open(CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck.getPurgeableCards()), 1, OPTIONS[2], false);
+ }
+
+ this.imageEventText.updateDialogOption(0, OPTIONS[3]);
+ this.imageEventText.clearRemainingOptions();
+ } else {
+ this.imageEventText.updateBodyText(DIALOG_3);
+ this.upgradeStrikeAndDefends();
+ this.imageEventText.updateDialogOption(0, OPTIONS[3]);
+ this.imageEventText.clearRemainingOptions();
+ }
+
+ this.screen = BackToBasicsAwakened.CUR_SCREEN.COMPLETE;
+ break;
+ case COMPLETE:
+ this.openMap();
+ }
+
+ }
+
+
+ private void upgradeStrikeAndDefends() {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.canUpgrade() && (c.hasTag(AbstractCard.CardTags.STARTER_DEFEND) || c.hasTag(AbstractCard.CardTags.STARTER_STRIKE))) {
+ c.upgrade();
+ this.cardsUpgraded.add(c.cardID);
+ AbstractDungeon.player.bottledCardUpgradeCheck(c);
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(c.makeStatEquivalentCopy(), MathUtils.random(0.1F, 0.9F) * (float) Settings.WIDTH, MathUtils.random(0.2F, 0.8F) * (float) Settings.HEIGHT));
+ }
+ }
+ logMetricUpgradeCards(ID, "Simplicity", cardsUpgraded);
+ }
+
+ private enum CUR_SCREEN {
+ INTRO,
+ COMPLETE;
+
+ CUR_SCREEN() {
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/events/TheNestAwakened.java b/src/main/java/awakenedOne/events/TheNestAwakened.java
new file mode 100644
index 000000000..fefc6d3f4
--- /dev/null
+++ b/src/main/java/awakenedOne/events/TheNestAwakened.java
@@ -0,0 +1,183 @@
+package awakenedOne.events;
+
+import awakenedOne.potions.CultistsDelight;
+import awakenedOne.relics.EyeOfTheOccult;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.cards.curses.Doubt;
+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.helpers.PotionHelper;
+import com.megacrit.cardcrawl.localization.EventStrings;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+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 downfall.relics.BrokenWingStatue;
+
+public class TheNestAwakened extends AbstractImageEvent {
+ public static final String ID = "awakened:Nest";
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+ public static final String[] OPTIONS;
+ private static final EventStrings eventStrings;
+
+ static {
+ eventStrings = CardCrawlGame.languagePack.getEventString(ID);
+ NAME = eventStrings.NAME;
+ DESCRIPTIONS = eventStrings.DESCRIPTIONS;
+ OPTIONS = eventStrings.OPTIONS;
+ }
+
+ private int hpAmt = 0;
+ private int goldAmt = 0;
+ private CUR_SCREEN screen;
+
+ public TheNestAwakened() {
+ super(NAME, DESCRIPTIONS[0], "images/events/theNest.jpg");
+ this.noCardsInRewards = true;
+ AbstractDungeon.getCurrRoom().rewards.clear();
+ if (AbstractDungeon.player.hasRelic(BrokenWingStatue.ID) || BrokenWingStatue.GIVEN) {
+ if ((AbstractDungeon.player.hasRelic(BrokenWingStatue.ID))) {
+ this.imageEventText.setDialogOption(OPTIONS[0]);
+ } else {
+ this.imageEventText.setDialogOption(OPTIONS[10]);
+ }
+ } else {
+ this.imageEventText.setDialogOption(OPTIONS[1], true);
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.hpAmt = MathUtils.round((float) AbstractDungeon.player.maxHealth * 0.25F);
+ } else {
+ this.hpAmt = MathUtils.round((float) AbstractDungeon.player.maxHealth * 0.20F);
+ }
+
+ this.imageEventText.setDialogOption(OPTIONS[3] + hpAmt + OPTIONS[4], new EyeOfTheOccult());
+
+ this.imageEventText.setDialogOption(OPTIONS[2]);
+
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.goldAmt = 50;
+ } else {
+ this.goldAmt = 100;
+ }
+ this.imageEventText.setDialogOption(OPTIONS[5] + goldAmt + OPTIONS[6], new Doubt());
+
+
+ this.screen = CUR_SCREEN.INTRO;
+
+ }
+
+ protected void buttonEffect(int buttonPressed) {
+ switch (this.screen) {
+ case INTRO:
+ switch (buttonPressed) {
+ case 0:
+ AbstractDungeon.player.loseRelic(BrokenWingStatue.ID);
+ this.imageEventText.updateBodyText(DESCRIPTIONS[3]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[7]);
+ this.screen = CUR_SCREEN.GIFTSTAGE1;
+ return;
+ case 1:
+ this.screen = CUR_SCREEN.COMPLETE;
+ logMetric(ID, "Took Eye of the Occult for " + hpAmt + " Max HP.");
+ this.imageEventText.updateBodyText(DESCRIPTIONS[1]);
+ CardCrawlGame.sound.play("ATTACK_DAGGER_6");
+ CardCrawlGame.sound.play("BLOOD_SPLAT");
+ AbstractDungeon.player.maxHealth -= this.hpAmt;
+
+ if (AbstractDungeon.player.currentHealth > AbstractDungeon.player.maxHealth) {
+ AbstractDungeon.player.currentHealth = AbstractDungeon.player.maxHealth;
+ }
+
+ AbstractRelic eye = new EyeOfTheOccult();
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2), eye);
+
+ this.imageEventText.updateDialogOption(0, OPTIONS[7]);
+ this.imageEventText.clearRemainingOptions();
+
+ return;
+ case 2:
+ logMetric(ID, "Took Potion");
+ this.imageEventText.updateBodyText(DESCRIPTIONS[2]);
+ this.screen = CUR_SCREEN.COMPLETE;
+ AbstractDungeon.getCurrRoom().rewards.add(new RewardItem(PotionHelper.getPotion(CultistsDelight.POTION_ID)));
+ AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
+ AbstractDungeon.combatRewardScreen.open();
+ this.imageEventText.updateDialogOption(0, OPTIONS[7]);
+ this.imageEventText.clearRemainingOptions();
+ return;
+ case 3:
+ logMetricGainGold(ID, "Donation Box", this.goldAmt);
+ this.imageEventText.updateBodyText(DESCRIPTIONS[8]);
+ this.imageEventText.updateDialogOption(0, OPTIONS[10]);
+
+ AbstractDungeon.effectList.add(new RainingGoldEffect(this.goldAmt));
+ AbstractDungeon.player.gainGold(this.goldAmt);
+
+ AbstractRelic r = AbstractDungeon.returnRandomScreenlessRelic(AbstractRelic.RelicTier.COMMON);
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2), r);
+ logMetricObtainRelic(ID, "Donation Box", r);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[10]);
+ this.imageEventText.clearRemainingOptions();
+ this.screen = CUR_SCREEN.GOLD2;
+ return;
+ }
+ break;
+
+ case GOLD2:
+ this.screen = CUR_SCREEN.COMPLETE;
+ this.imageEventText.clearAllDialogs();
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Doubt(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
+ this.imageEventText.updateBodyText(DESCRIPTIONS[9]);
+ this.imageEventText.setDialogOption(OPTIONS[7]);
+ this.imageEventText.clearRemainingOptions();
+ AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
+ return;
+ case GIFTSTAGE1:
+
+ AbstractDungeon.getCurrRoom().rewards.add(new RewardItem(PotionHelper.getPotion(CultistsDelight.POTION_ID)));
+ AbstractDungeon.effectList.add(new RainingGoldEffect(this.goldAmt));
+ AbstractDungeon.player.gainGold(this.goldAmt);
+ AbstractRelic r = AbstractDungeon.returnRandomScreenlessRelic(AbstractRelic.RelicTier.COMMON);
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2), r);
+
+ logMetricGainGold(ID, "Returned Statue", this.goldAmt);
+ logMetricObtainRelic(ID, "Returned Statue", r);
+ this.imageEventText.updateBodyText(DESCRIPTIONS[4]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[2]);
+ this.screen = CUR_SCREEN.GIFTSTAGE4;
+ return;
+ case GIFTSTAGE4:
+ this.imageEventText.updateBodyText(DESCRIPTIONS[7]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[7]);
+ this.screen = CUR_SCREEN.COMPLETE;
+ return;
+
+
+ default:
+ this.openMap();
+ }
+
+ }
+
+ private enum CUR_SCREEN {
+ INTRO,
+ GIFTSTAGE1,
+ GIFTSTAGE2,
+ GIFTSTAGE3,
+ GIFTSTAGE4,
+ GOLD2,
+ COMPLETE;
+
+ CUR_SCREEN() {
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/events/WingStatueAwakened.java b/src/main/java/awakenedOne/events/WingStatueAwakened.java
new file mode 100644
index 000000000..f2d0c685f
--- /dev/null
+++ b/src/main/java/awakenedOne/events/WingStatueAwakened.java
@@ -0,0 +1,94 @@
+package awakenedOne.events;
+
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+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 downfall.cards.curses.CurseOfBlood;
+import downfall.relics.BrokenWingStatue;
+import downfall.relics.ShatteredFragment;
+
+public class WingStatueAwakened extends AbstractImageEvent {
+ public static final String ID = "awakened:WingStatue";
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+ public static final String[] OPTIONS;
+ private static final EventStrings eventStrings;
+
+ static {
+ eventStrings = CardCrawlGame.languagePack.getEventString(ID);
+ NAME = eventStrings.NAME;
+ DESCRIPTIONS = eventStrings.DESCRIPTIONS;
+ OPTIONS = eventStrings.OPTIONS;
+ }
+
+ private final int damage;
+ private CurScreen screen;
+
+ public WingStatueAwakened() {
+ super(NAME, DESCRIPTIONS[0], "images/events/goldenWing.jpg");
+ this.screen = CurScreen.INTRO;
+
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.damage = (int) ((float) AbstractDungeon.player.maxHealth * 0.35F);
+ } else {
+ this.damage = (int) ((float) AbstractDungeon.player.maxHealth * 0.25F);
+ }
+
+ this.imageEventText.setDialogOption(OPTIONS[0], new ShatteredFragment());
+ this.imageEventText.setDialogOption(OPTIONS[2] + this.damage + OPTIONS[4], new BrokenWingStatue());
+ this.imageEventText.setDialogOption(OPTIONS[3]);
+ }
+
+ protected void buttonEffect(int buttonPressed) {
+ switch (this.screen) {
+ case INTRO:
+ switch (buttonPressed) {
+ case 0:
+ AbstractCard curse = new CurseOfBlood();
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, Settings.WIDTH * .35F, (float) (Settings.HEIGHT / 2)));
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, Settings.WIDTH * .65F, (float) (Settings.HEIGHT / 2)));
+
+ this.imageEventText.updateBodyText(DESCRIPTIONS[2]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[3]);
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new ShatteredFragment());
+ this.screen = CurScreen.RESULT;
+ logMetricObtainCardAndRelic(ID, "Destroyed Statue", curse, new ShatteredFragment());
+ return;
+ case 1:
+ this.imageEventText.updateBodyText(DESCRIPTIONS[1]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[3]);
+ AbstractDungeon.player.damage(new DamageInfo(null, (this.damage)));
+ this.screen = CurScreen.RESULT;
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new BrokenWingStatue());
+ logMetricObtainRelicAndDamage(ID, "Collected Statue", new BrokenWingStatue(), ((AbstractDungeon.ascensionLevel >= 15) ? 7 : 5));
+ return;
+ case 2:
+ this.imageEventText.updateBodyText(DESCRIPTIONS[3]);
+ this.imageEventText.clearAllDialogs();
+ this.imageEventText.setDialogOption(OPTIONS[3]);
+ this.screen = CurScreen.RESULT;
+ logMetricIgnored(ID);
+ return;
+ default:
+ return;
+ }
+ default:
+ this.openMap();
+ }
+ }
+
+ private enum CurScreen {
+ INTRO,
+ RESULT;
+
+ CurScreen() {
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/patches/FixDownfallBottlesPatch.java b/src/main/java/awakenedOne/patches/FixDownfallBottlesPatch.java
new file mode 100644
index 000000000..106636961
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/FixDownfallBottlesPatch.java
@@ -0,0 +1,130 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package awakenedOne.patches;
+
+import automaton.relics.BottledCode;
+import awakenedOne.relics.MoonTalisman;
+import champ.relics.SignatureFinisher;
+import collector.relics.BottledCollectible;
+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 guardian.relics.BottledAnomaly;
+import guardian.relics.BottledStasis;
+import guardian.relics.StasisEgg;
+import sneckomod.relics.D8;
+
+@SpirePatch(
+ clz = CardGroup.class,
+ method = "getGroupWithoutBottledCards"
+)
+
+//todo: VERY VERY BAD CODE
+public class FixDownfallBottlesPatch {
+ public FixDownfallBottlesPatch() {
+ }
+
+ public static CardGroup Postfix(CardGroup __result, CardGroup group) {
+
+// for (AbstractCard card : __result.group) {
+// if (card.hasTag(GuardianMod.GEM)) {
+// __result.group.remove(card);
+// }
+// }
+
+
+ if (AbstractDungeon.player.hasRelic(SignatureFinisher.ID)) {
+ SignatureFinisher a = (SignatureFinisher) AbstractDungeon.player.getRelic(SignatureFinisher.ID);
+ if (a.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == a.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledStasis.ID)) {
+ BottledStasis b = (BottledStasis) AbstractDungeon.player.getRelic(BottledStasis.ID);
+ if (b.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == b.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledAnomaly.ID)) {
+ BottledAnomaly crelic = (BottledAnomaly) AbstractDungeon.player.getRelic(BottledAnomaly.ID);
+ if (crelic.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == crelic.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(MoonTalisman.ID)) {
+ MoonTalisman d = (MoonTalisman) AbstractDungeon.player.getRelic(MoonTalisman.ID);
+ if (d.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == d.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledCollectible.ID)) {
+ BottledCollectible e = (BottledCollectible) AbstractDungeon.player.getRelic(BottledCollectible.ID);
+ if (e.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == e.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(D8.ID)) {
+ D8 f = (D8) AbstractDungeon.player.getRelic(D8.ID);
+ if (f.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == f.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledCode.ID)) {
+ BottledCode g = (BottledCode) AbstractDungeon.player.getRelic(BottledCode.ID);
+ if (g.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == g.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(StasisEgg.ID)) {
+ StasisEgg s = (StasisEgg) AbstractDungeon.player.getRelic(StasisEgg.ID);
+ if (s.card != null) {
+ for (AbstractCard card : __result.group) {
+ if (card.uuid == s.card.uuid) {
+ __result.group.remove(card);
+ }
+ }
+ }
+ }
+
+ return __result;
+ }
+}
diff --git a/src/main/java/awakenedOne/patches/MoonTalismanPatch.java b/src/main/java/awakenedOne/patches/MoonTalismanPatch.java
new file mode 100644
index 000000000..d132db90d
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/MoonTalismanPatch.java
@@ -0,0 +1,53 @@
+package awakenedOne.patches;
+
+import awakenedOne.cardmods.ConjureMod;
+import awakenedOne.util.Wiz;
+import basemod.helpers.CardModifierManager;
+import com.evacipated.cardcrawl.modthespire.lib.*;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import guardian.cards.AbstractGuardianCard;
+import javassist.CtBehavior;
+
+import java.util.ArrayList;
+
+@SpirePatch(cls = "com.megacrit.cardcrawl.cards.AbstractCard", method = "")
+public class MoonTalismanPatch {
+ public static SpireField inBottleTalisman = new SpireField(() -> Boolean.FALSE);
+
+ @SpirePatch(cls = "com.megacrit.cardcrawl.cards.AbstractCard", method = "makeStatEquivalentCopy")
+ public static class MakeStatEquivalentCopy {
+ public static AbstractCard Postfix(AbstractCard __result, AbstractCard __instance) {
+
+ if (Wiz.isInCombat()) {
+ //soularoid is not real, it does not exist, it cannot hurt you
+ MoonTalismanPatch.inBottleTalisman.set(__result, MoonTalismanPatch.inBottleTalisman.get(__instance));
+ }
+
+ if (!Wiz.isInCombat()) {
+ //this is consistent with how the vanilla bottles work
+ if ((CardModifierManager.hasModifier(__result, ConjureMod.ID))) {
+ CardModifierManager.removeModifiersById(__result, ConjureMod.ID, true);
+ }
+ MoonTalismanPatch.inBottleTalisman.set(__result, Boolean.FALSE);
+ }
+
+ if (__instance instanceof AbstractGuardianCard) {
+
+ ((AbstractGuardianCard) __result).socketCount = ((AbstractGuardianCard) __instance).socketCount;
+
+ ((AbstractGuardianCard) __result).sockets = new ArrayList<>(((AbstractGuardianCard) __instance).sockets);
+
+ ((AbstractGuardianCard) __result).updateDescription();
+ }
+
+ return __result;
+ }
+ }
+
+ private static class Locator extends SpireInsertLocator {
+ public int[] Locate(CtBehavior ctBehavior) throws Exception {
+ Matcher.MethodCallMatcher methodCallMatcher = new Matcher.MethodCallMatcher("com.megacrit.cardcrawl.cards.AbstractCard", "atTurnStart");
+ return LineFinder.findAllInOrder(ctBehavior, methodCallMatcher);
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/patches/MoreBottleUpgrades.java b/src/main/java/awakenedOne/patches/MoreBottleUpgrades.java
new file mode 100644
index 000000000..6bf6c3885
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/MoreBottleUpgrades.java
@@ -0,0 +1,82 @@
+package awakenedOne.patches;
+
+import automaton.relics.BottledCode;
+import awakenedOne.relics.MoonTalisman;
+import champ.relics.SignatureFinisher;
+import collector.relics.BottledCollectible;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePostfixPatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import guardian.relics.BottledAnomaly;
+import guardian.relics.BottledStasis;
+import guardian.relics.StasisEgg;
+import sneckomod.relics.D8;
+
+
+//todo: make not jank
+public class MoreBottleUpgrades {
+ @SpirePatch(clz = AbstractPlayer.class, method = "bottledCardUpgradeCheck")
+ public static class BottledCardUpgradeCheckPatch {
+ @SpirePostfixPatch
+ public static void Postfix(AbstractPlayer __instance, AbstractCard c) {
+
+ if (__instance.hasRelic(SignatureFinisher.ID)) {
+ SignatureFinisher a = (SignatureFinisher) __instance.getRelic(SignatureFinisher.ID);
+ if (a.card.uuid == c.uuid) {
+ ((SignatureFinisher) __instance.getRelic(SignatureFinisher.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(BottledStasis.ID)) {
+ BottledStasis b = (BottledStasis) __instance.getRelic(BottledStasis.ID);
+ if (b.card.uuid == c.uuid) {
+ ((BottledStasis) __instance.getRelic(BottledStasis.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(BottledAnomaly.ID)) {
+ BottledAnomaly crelic = (BottledAnomaly) __instance.getRelic(BottledAnomaly.ID);
+ if (crelic.card.uuid == c.uuid) {
+ ((BottledAnomaly) __instance.getRelic(BottledAnomaly.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(MoonTalisman.ID)) {
+ MoonTalisman e = (MoonTalisman) __instance.getRelic(MoonTalisman.ID);
+ if (e.card.uuid == c.uuid) {
+ ((MoonTalisman) __instance.getRelic(MoonTalisman.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(BottledCollectible.ID)) {
+ BottledCollectible f = (BottledCollectible) __instance.getRelic(BottledCollectible.ID);
+ if (f.card.uuid == c.uuid) {
+ ((BottledCollectible) __instance.getRelic(BottledCollectible.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(D8.ID)) {
+ D8 g = (D8) __instance.getRelic(D8.ID);
+ if (g.card.uuid == c.uuid) {
+ ((D8) __instance.getRelic(D8.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(BottledCode.ID)) {
+ BottledCode h = (BottledCode) __instance.getRelic(BottledCode.ID);
+ if (h.card.uuid == c.uuid) {
+ ((BottledCode) __instance.getRelic(BottledCode.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ if (__instance.hasRelic(StasisEgg.ID)) {
+ StasisEgg i = (StasisEgg) __instance.getRelic(StasisEgg.ID);
+ if (i.card.uuid == c.uuid) {
+ ((BottledCode) __instance.getRelic(BottledCode.ID)).setDescriptionAfterLoading();
+ }
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/patches/OnCreateCardSubscriber.java b/src/main/java/awakenedOne/patches/OnCreateCardSubscriber.java
new file mode 100644
index 000000000..6e816ba63
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/OnCreateCardSubscriber.java
@@ -0,0 +1,75 @@
+package awakenedOne.patches;
+
+import automaton.cards.goodstatus.IntoTheVoid;
+import awakenedOne.AwakenedTextHelper;
+import awakenedOne.cards.AbstractAwakenedCard;
+import awakenedOne.powers.SongOfSorrowPower;
+import com.evacipated.cardcrawl.mod.stslib.StSLib;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePostfixPatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import static awakenedOne.AwakenedOneMod.ACTIVECHANT;
+
+@SpirePatch(clz = StSLib.class, method = "onCreateCard", paramtypez = {AbstractCard.class})
+public class OnCreateCardSubscriber {
+ public static int CardsCreatedThisCombat = 0;
+ public static int CardsCreatedThisTurn = 0;
+ public static boolean VoidCreatedThisTurn = false;
+
+ @SpirePostfixPatch
+ public static void onCreateCard(AbstractCard c) {
+ CardsCreatedThisCombat++;
+ CardsCreatedThisTurn++;
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+
+ if (c instanceof VoidCard || c instanceof IntoTheVoid) {
+ if (!VoidCreatedThisTurn) {
+ // VoidCreatedThisTurn = true;
+ // if (AbstractDungeon.player.hasPower(SongOfSorrowPower.POWER_ID)) {
+ // for (int i = 0; i < AbstractDungeon.player.drawPile.size(); ) {
+ // AbstractCard q = AbstractDungeon.player.drawPile.group.get(i);
+ // if (c.uuid == q.uuid) {
+ // AbstractDungeon.player.drawPile.removeCard(c);
+ // AbstractDungeon.player.limbo.addToTop(c);
+ // atb(new ExhaustSpecificCardAction(c, AbstractDungeon.player.limbo));
+ // atb(new WaitAction(0.1F));
+ // } else {
+ // i++;
+ // }
+ // }
+ //
+ // for (int i = 0; i < AbstractDungeon.player.discardPile.size(); ) {
+ // AbstractCard q = AbstractDungeon.player.discardPile.group.get(i);
+ // if (c.uuid == q.uuid) {
+ // AbstractDungeon.player.discardPile.removeCard(c);
+ // AbstractDungeon.player.limbo.addToTop(c);
+ // atb(new ExhaustSpecificCardAction(c, AbstractDungeon.player.limbo));
+ // atb(new WaitAction(0.1F));
+ // } else {
+ // i++;
+ // }
+ // }
+ //
+ // for (int i = 0; i < AbstractDungeon.player.hand.size(); ) {
+ // AbstractCard q = AbstractDungeon.player.hand.group.get(i);
+ // if (c.uuid == q.uuid) {
+ // AbstractDungeon.player.hand.removeCard(c);
+ // AbstractDungeon.player.limbo.addToTop(c);
+ // atb(new ExhaustSpecificCardAction(q, AbstractDungeon.player.limbo));
+ // atb(new WaitAction(0.1F));
+ // }
+ if (AbstractDungeon.player.hasPower(SongOfSorrowPower.POWER_ID)) {
+ AbstractDungeon.player.getPower(SongOfSorrowPower.POWER_ID).onSpecificTrigger();
+ }
+ }
+ }
+ }
+ if (c.hasTag(ACTIVECHANT)) {
+ AwakenedTextHelper.colorCombos((AbstractAwakenedCard) c, false);
+ c.initializeDescription();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/patches/OnLoseEnergyPowerPatch.java b/src/main/java/awakenedOne/patches/OnLoseEnergyPowerPatch.java
new file mode 100644
index 000000000..e7adcf796
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/OnLoseEnergyPowerPatch.java
@@ -0,0 +1,44 @@
+package awakenedOne.patches;
+
+import awakenedOne.powers.OnLoseEnergyPower;
+import awakenedOne.relics.OnLoseEnergyRelic;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+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;
+
+@SpirePatch(
+ clz = AbstractPlayer.class,
+ method = "loseEnergy"
+)
+public class OnLoseEnergyPowerPatch {
+
+ public static int EnergyLostThisCombat = 0;
+
+ public static void Postfix(AbstractPlayer __instance, int e) {
+ EnergyLostThisCombat = EnergyLostThisCombat + e;
+ for (AbstractPower p : AbstractDungeon.player.powers) {
+ if (p instanceof OnLoseEnergyPower) {
+ ((OnLoseEnergyPower) p).LoseEnergyAction(e);
+ }
+ }
+
+ for (AbstractRelic p : AbstractDungeon.player.relics) {
+ if (p instanceof OnLoseEnergyRelic) {
+ ((OnLoseEnergyRelic) p).LoseEnergyAction(e);
+ }
+ }
+
+ for (AbstractMonster m2 : AbstractDungeon.getMonsters().monsters) {
+ if (!m2.isDead && !m2.isDying) {
+ for (AbstractPower p : m2.powers) {
+ if (p instanceof OnLoseEnergyPower) {
+ ((OnLoseEnergyPower) p).LoseEnergyAction(e);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/patches/RenderSpellCardsPost.java b/src/main/java/awakenedOne/patches/RenderSpellCardsPost.java
new file mode 100644
index 000000000..88b279fc5
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/RenderSpellCardsPost.java
@@ -0,0 +1,20 @@
+package awakenedOne.patches;
+
+import awakenedOne.AwakenedOneChar;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.powers.DemonGlyphPower;
+import awakenedOne.ui.OrbitingSpells;
+import awakenedOne.util.Wiz;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+@SpirePatch(clz = AbstractPlayer.class, method = "render")
+public class RenderSpellCardsPost {
+ public static void Postfix(AbstractPlayer obj, SpriteBatch sb) {
+ if (Wiz.isInCombat() && ((AbstractDungeon.player.chosenClass.equals(AwakenedOneChar.Enums.AWAKENED_ONE)) || Wiz.hasConjure() || ConjureAction.conjuresThisCombat > 0 || AbstractDungeon.player.hasPower(DemonGlyphPower.POWER_ID))) {
+ OrbitingSpells.postPlayerRender(sb);
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/patches/RenderSpellCardsPre.java b/src/main/java/awakenedOne/patches/RenderSpellCardsPre.java
new file mode 100644
index 000000000..97b288ed9
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/RenderSpellCardsPre.java
@@ -0,0 +1,19 @@
+//package awakenedOne.patches;
+//
+//import awakenedOne.AwakenedOneChar;
+//import awakenedOne.actions.ConjureAction;
+//import awakenedOne.ui.OrbitingSpells;
+//import awakenedOne.util.Wiz;
+//import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+//import com.megacrit.cardcrawl.characters.AbstractPlayer;
+//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+//
+//@SpirePatch(clz = AbstractPlayer.class, method = "render")
+//public class RenderSpellCardsPre {
+// public static void Prefix(AbstractPlayer obj, SpriteBatch sb) {
+// if (Wiz.isInCombat() && ((AbstractDungeon.player.chosenClass.equals(AwakenedOneChar.Enums.AWAKENED_ONE)) || Wiz.hasConjure() || ConjureAction.conjuresThisCombat > 0)) {
+// OrbitingSpells.prePlayerRender(sb);
+// }
+// }
+//}
diff --git a/src/main/java/awakenedOne/patches/VioletPlumagePatch.java b/src/main/java/awakenedOne/patches/VioletPlumagePatch.java
new file mode 100644
index 000000000..762913c9a
--- /dev/null
+++ b/src/main/java/awakenedOne/patches/VioletPlumagePatch.java
@@ -0,0 +1,45 @@
+package awakenedOne.patches;
+//
+
+import awakenedOne.cards.tokens.spells.AbstractSpellCard;
+import awakenedOne.powers.EnsorcelatePower;
+import awakenedOne.powers.IntensifyPower;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePostfixPatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import downfall.relics.BlackCandle;
+//
+////This is code from the Aspiration mod!
+////https://github.com/erasels/Aspiration-StS/blob/564c18fce53f30b105fc401fd22445aed018d178/src/main/java/aspiration/patches/cards/CardCostModificationPatches.java#L3
+
+public class VioletPlumagePatch {
+ private static boolean isIndeedWithoutADoubtInCombat() {
+ return (AbstractDungeon.player != null && AbstractDungeon.currMapNode != null && (AbstractDungeon.getCurrRoom()).phase == AbstractRoom.RoomPhase.COMBAT);
+ }
+
+ @SpirePatch(clz = AbstractCard.class, method = "freeToPlay")
+ public static class FreeToPlayPatch {
+ @SpirePostfixPatch
+ public static boolean patch(boolean __result, AbstractCard __instance) {
+ if (__result)
+ return true;
+
+ if (isIndeedWithoutADoubtInCombat() && __instance.type == AbstractCard.CardType.CURSE) {
+ if (__instance.cost != 0) {
+ return (AbstractDungeon.player.hasRelic(BlackCandle.ID));
+ }
+ }
+
+ if (isIndeedWithoutADoubtInCombat() && __instance instanceof AbstractSpellCard && (AbstractDungeon.player.hasPower(IntensifyPower.POWER_ID))) {
+ return (AbstractDungeon.player.hasPower(IntensifyPower.POWER_ID));
+ }
+
+ if (isIndeedWithoutADoubtInCombat() && __instance.type == AbstractCard.CardType.POWER && (AbstractDungeon.player.hasPower(EnsorcelatePower.POWER_ID))) {
+ return (AbstractDungeon.player.hasPower(EnsorcelatePower.POWER_ID));
+ }
+ return __result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/potions/CultistsDelight.java b/src/main/java/awakenedOne/potions/CultistsDelight.java
new file mode 100644
index 000000000..03053b76f
--- /dev/null
+++ b/src/main/java/awakenedOne/potions/CultistsDelight.java
@@ -0,0 +1,62 @@
+package awakenedOne.potions;
+
+import awakenedOne.AwakenedOneMod;
+import basemod.ReflectionHacks;
+import basemod.abstracts.CustomPotion;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+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.localization.PotionStrings;
+import com.megacrit.cardcrawl.potions.AbstractPotion;
+import com.megacrit.cardcrawl.powers.CuriosityPower;
+import com.megacrit.cardcrawl.vfx.combat.LightBulbEffect;
+import hermit.util.TextureLoader;
+
+
+public class CultistsDelight extends CustomPotion {
+ public static final String POTION_ID = "awakened:CultistsDelight";
+ private static final PotionStrings potionStrings = CardCrawlGame.languagePack.getPotionString(POTION_ID);
+ public static final String NAME = potionStrings.NAME;
+ public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
+
+ public CultistsDelight() {
+ super(NAME, POTION_ID, PotionRarity.RARE, PotionSize.FAIRY, PotionColor.ANCIENT);
+ ReflectionHacks.setPrivate(this, AbstractPotion.class, "containerImg", TextureLoader.getTexture("hermitResources/images/potion/potion_eclipse_glass.png"));
+ ReflectionHacks.setPrivate(this, AbstractPotion.class, "liquidImg", TextureLoader.getTexture("hermitResources/images/potion/potion_eclipse_liquid.png"));
+ ReflectionHacks.setPrivate(this, AbstractPotion.class, "hybridImg", TextureLoader.getTexture("hermitResources/images/potion/potion_eclipse_hybrid.png"));
+ ReflectionHacks.setPrivate(this, AbstractPotion.class, "spotsImg", TextureLoader.getTexture("hermitResources/images/potion/potion_eclipse_spots.png"));
+ ReflectionHacks.setPrivate(this, AbstractPotion.class, "outlineImg", TextureLoader.getTexture("hermitResources/images/potion/potion_eclipse_outline.png"));
+
+ this.isThrown = false;
+ this.targetRequired = false;
+ this.labOutlineColor = AwakenedOneMod.potionLabColor;
+ }
+
+ public void initializeData() {
+ this.potency = getPotency();
+ this.description = potionStrings.DESCRIPTIONS[0] + potency + potionStrings.DESCRIPTIONS[1];
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ }
+
+ public void use(AbstractCreature target) {
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(new LightBulbEffect(AbstractDungeon.player.hb)));
+ } else {
+ this.addToBot(new VFXAction(new LightBulbEffect(AbstractDungeon.player.hb), 0.2F));
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new CuriosityPower(AbstractDungeon.player, potency)));
+ }
+
+ public CustomPotion makeCopy() {
+ return new CultistsDelight();
+ }
+
+ public int getPotency(int ascensionLevel) {
+ return 1;
+ }
+}
diff --git a/src/main/java/awakenedOne/potions/SacramentalWine.java b/src/main/java/awakenedOne/potions/SacramentalWine.java
new file mode 100644
index 000000000..4a91f7eeb
--- /dev/null
+++ b/src/main/java/awakenedOne/potions/SacramentalWine.java
@@ -0,0 +1,57 @@
+package awakenedOne.potions;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.SacramentPower;
+import basemod.abstracts.CustomPotion;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+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.localization.PotionStrings;
+import com.megacrit.cardcrawl.vfx.combat.LightBulbEffect;
+
+public class SacramentalWine extends CustomPotion {
+ public static final String POTION_ID = "awakened:SacramentalWine";
+ private static final PotionStrings potionStrings = CardCrawlGame.languagePack.getPotionString(POTION_ID);
+ public static final String NAME = potionStrings.NAME;
+ public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
+
+ public SacramentalWine() {
+ super(NAME, POTION_ID, PotionRarity.UNCOMMON, PotionSize.M, PotionColor.ATTACK);
+ this.isThrown = false;
+ this.targetRequired = false;
+ this.labOutlineColor = AwakenedOneMod.potionLabColor;
+ }
+
+ public void initializeData() {
+ this.potency = getPotency();
+ this.description = potionStrings.DESCRIPTIONS[0] + potency + potionStrings.DESCRIPTIONS[1];
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ }
+
+ public void use(AbstractCreature target) {
+ if (Settings.FAST_MODE) {
+ this.addToBot(new VFXAction(new LightBulbEffect(AbstractDungeon.player.hb)));
+ } else {
+ this.addToBot(new VFXAction(new LightBulbEffect(AbstractDungeon.player.hb), 0.2F));
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new SacramentPower(potency)));
+ AbstractCard c = AbstractDungeon.returnTrulyRandomCardInCombat(AbstractCard.CardType.POWER).makeCopy();
+ c.setCostForTurn(0);
+ this.addToBot(new MakeTempCardInHandAction(c, true));
+ }
+
+ public CustomPotion makeCopy() {
+ return new SacramentalWine();
+ }
+
+ public int getPotency(int ascensionLevel) {
+ return 3;
+ }
+}
diff --git a/src/main/java/awakenedOne/potions/SneckoPowersPotion.java b/src/main/java/awakenedOne/potions/SneckoPowersPotion.java
new file mode 100644
index 000000000..806d766ca
--- /dev/null
+++ b/src/main/java/awakenedOne/potions/SneckoPowersPotion.java
@@ -0,0 +1,55 @@
+package awakenedOne.potions;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.SerpentIdolPowerAction;
+import basemod.BaseMod;
+import basemod.abstracts.CustomPotion;
+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 expansioncontent.potions.BossPotion;
+import sneckomod.SneckoMod;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class SneckoPowersPotion extends CustomPotion {
+ public static final String POTION_ID = "awakened:SneckoPowersPotion";
+ private static final PotionStrings potionStrings = CardCrawlGame.languagePack.getPotionString(POTION_ID);
+ public static final String NAME = potionStrings.NAME;
+ public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
+
+
+ public SneckoPowersPotion() {
+ super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.SNECKO, PotionColor.SMOKE);
+ this.isThrown = false;
+ this.targetRequired = false;
+ this.labOutlineColor = AwakenedOneMod.potionLabColor;
+ }
+
+ public void initializeData() {
+ this.potency = getPotency();
+ if (AbstractDungeon.player != null && potency > 1) {
+ this.description = potionStrings.DESCRIPTIONS[1] + this.potency + DESCRIPTIONS[2];
+ } else {
+ this.description = potionStrings.DESCRIPTIONS[0];
+ }
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ this.tips.add(new PowerTip(TipHelper.capitalize(BaseMod.getKeywordTitle(SneckoMod.makeID("offclass"))), BaseMod.getKeywordDescription(SneckoMod.makeID("offclass"))));
+ }
+
+ public void use(AbstractCreature target) {
+ atb(new SerpentIdolPowerAction(this.potency));
+ }
+
+ public CustomPotion makeCopy() {
+ return new BossPotion();
+ }
+
+ public int getPotency(int ascensionLevel) {
+ return 1;
+ }
+}
diff --git a/src/main/java/awakenedOne/powers/AbstractAwakenedPower.java b/src/main/java/awakenedOne/powers/AbstractAwakenedPower.java
new file mode 100644
index 000000000..74bf9cd15
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/AbstractAwakenedPower.java
@@ -0,0 +1,105 @@
+package awakenedOne.powers;
+
+import awakenedOne.util.TexLoader;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+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.HashMap;
+import java.util.Map;
+
+import static awakenedOne.AwakenedOneMod.getModID;
+
+public abstract class AbstractAwakenedPower extends AbstractPower {
+ protected static Map powerStrings = new HashMap<>();
+ protected AbstractCreature source;
+ protected String[] DESCRIPTIONS;
+
+ public AbstractAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount) {
+ this(NAME, powerType, isTurnBased, owner, source, amount, "");
+ }
+
+ public AbstractAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount, String IDModifier) {
+ this.ID = makeID(NAME);
+ this.isTurnBased = isTurnBased;
+
+ if (!powerStrings.containsKey(this.ID))
+ powerStrings.put(this.ID, getPowerStrings(this.ID));
+ this.name = powerStrings.get(this.ID).NAME;
+ this.DESCRIPTIONS = powerStrings.get(this.ID).DESCRIPTIONS;
+
+ this.owner = owner;
+ this.source = source;
+ this.amount = amount;
+ this.type = powerType;
+
+ Texture normalTexture = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "32.png");
+ Texture hiDefImage = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "84.png");
+ if (hiDefImage != null) {
+ region128 = new TextureAtlas.AtlasRegion(hiDefImage, 0, 0, hiDefImage.getWidth(), hiDefImage.getHeight());
+ if (normalTexture != null)
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ } else if (normalTexture != null) {
+ this.img = normalTexture;
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ }
+
+ this.ID += IDModifier;
+
+ this.updateDescription();
+ }
+
+ public AbstractAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount, boolean loadImage) {
+ this.ID = makeID(NAME);
+ this.isTurnBased = isTurnBased;
+
+ if (!powerStrings.containsKey(this.ID))
+ powerStrings.put(this.ID, getPowerStrings(this.ID));
+ this.name = powerStrings.get(this.ID).NAME;
+
+ this.owner = owner;
+ this.source = source;
+ this.amount = amount;
+ this.type = powerType;
+
+ if (loadImage) {
+ Texture normalTexture = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "32.png");
+ Texture hiDefImage = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "84.png");
+ if (hiDefImage != null) {
+ region128 = new TextureAtlas.AtlasRegion(hiDefImage, 0, 0, hiDefImage.getWidth(), hiDefImage.getHeight());
+ if (normalTexture != null)
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ } else if (normalTexture != null) {
+ this.img = normalTexture;
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ }
+ }
+
+ this.updateDescription();
+ }
+
+ private static PowerStrings getPowerStrings(String ID) {
+ return CardCrawlGame.languagePack.getPowerStrings(ID);
+ }
+
+ public static String makeID(String idText) {
+ return getModID() + ":" + idText;
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + amount + DESCRIPTIONS[2];
+ }
+ }
+
+ public void applyToSelf(AbstractPower po) {
+ addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, po, po.amount));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/AbstractTwoAmountAwakenedPower.java b/src/main/java/awakenedOne/powers/AbstractTwoAmountAwakenedPower.java
new file mode 100644
index 000000000..392d82c96
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/AbstractTwoAmountAwakenedPower.java
@@ -0,0 +1,106 @@
+package awakenedOne.powers;
+
+import awakenedOne.util.TexLoader;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.evacipated.cardcrawl.mod.stslib.powers.abstracts.TwoAmountPower;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+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.HashMap;
+import java.util.Map;
+
+import static awakenedOne.AwakenedOneMod.getModID;
+
+public abstract class AbstractTwoAmountAwakenedPower extends TwoAmountPower {
+ protected static Map powerStrings = new HashMap<>();
+ protected AbstractCreature source;
+ protected String[] DESCRIPTIONS;
+
+ public AbstractTwoAmountAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount) {
+ this(NAME, powerType, isTurnBased, owner, source, amount, "");
+ }
+
+ public AbstractTwoAmountAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount, String IDModifier) {
+ this.ID = makeID(NAME);
+ this.isTurnBased = isTurnBased;
+
+ if (!powerStrings.containsKey(this.ID))
+ powerStrings.put(this.ID, getPowerStrings(this.ID));
+ this.name = powerStrings.get(this.ID).NAME;
+ this.DESCRIPTIONS = powerStrings.get(this.ID).DESCRIPTIONS;
+
+ this.owner = owner;
+ this.source = source;
+ this.amount = amount;
+ this.type = powerType;
+
+ Texture normalTexture = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "32.png");
+ Texture hiDefImage = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "84.png");
+ if (hiDefImage != null) {
+ region128 = new TextureAtlas.AtlasRegion(hiDefImage, 0, 0, hiDefImage.getWidth(), hiDefImage.getHeight());
+ if (normalTexture != null)
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ } else if (normalTexture != null) {
+ this.img = normalTexture;
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ }
+
+ this.ID += IDModifier;
+
+ this.updateDescription();
+ }
+
+ public AbstractTwoAmountAwakenedPower(String NAME, PowerType powerType, boolean isTurnBased, AbstractCreature owner, AbstractCreature source, int amount, boolean loadImage) {
+ this.ID = makeID(NAME);
+ this.isTurnBased = isTurnBased;
+
+ if (!powerStrings.containsKey(this.ID))
+ powerStrings.put(this.ID, getPowerStrings(this.ID));
+ this.name = powerStrings.get(this.ID).NAME;
+
+ this.owner = owner;
+ this.source = source;
+ this.amount = amount;
+ this.type = powerType;
+
+ if (loadImage) {
+ Texture normalTexture = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "32.png");
+ Texture hiDefImage = TexLoader.getTexture("awakenedResources/images/powers/" + NAME + "84.png");
+ if (hiDefImage != null) {
+ region128 = new TextureAtlas.AtlasRegion(hiDefImage, 0, 0, hiDefImage.getWidth(), hiDefImage.getHeight());
+ if (normalTexture != null)
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ } else if (normalTexture != null) {
+ this.img = normalTexture;
+ region48 = new TextureAtlas.AtlasRegion(normalTexture, 0, 0, normalTexture.getWidth(), normalTexture.getHeight());
+ }
+ }
+
+ this.updateDescription();
+ }
+
+ private static PowerStrings getPowerStrings(String ID) {
+ return CardCrawlGame.languagePack.getPowerStrings(ID);
+ }
+
+ public static String makeID(String idText) {
+ return getModID() + ":" + idText;
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + amount + DESCRIPTIONS[2];
+ }
+ }
+
+ public void applyToSelf(AbstractPower po) {
+ addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, po, po.amount));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/AphoticFountPower.java b/src/main/java/awakenedOne/powers/AphoticFountPower.java
new file mode 100644
index 000000000..fc34f6aa6
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/AphoticFountPower.java
@@ -0,0 +1,39 @@
+package awakenedOne.powers;
+
+import awakenedOne.cards.tokens.spells.AphoticShield;
+import awakenedOne.ui.OrbitingSpells;
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.NonStackablePower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class AphoticFountPower extends AbstractAwakenedPower implements NonStackablePower {
+ // intellij stuff buff
+ public static final String NAME = AphoticFountPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+ private final boolean upgraded;
+
+ public AphoticFountPower(boolean upgraded) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, 1);
+ updateDescription();
+ this.upgraded = upgraded;
+ }
+
+ @Override
+ public void onSpecificTrigger() {
+ AbstractCard toAdd = new AphoticShield();
+ if (upgraded) toAdd.upgrade();
+ for (int i = 0; i < amount; i++)
+ OrbitingSpells.spellCards.add(new AphoticShield());
+ }
+
+ @Override
+ public boolean isStackable(AbstractPower power) {
+ if (power instanceof AphoticFountPower) return ((AphoticFountPower) power).upgraded == upgraded;
+ return false;
+ }
+
+ public void updateDescription() {
+ description = (DESCRIPTIONS[0] + amount + DESCRIPTIONS[1] + (upgraded ? DESCRIPTIONS[2] : "") + DESCRIPTIONS[3]);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ArchmagusPower.java b/src/main/java/awakenedOne/powers/ArchmagusPower.java
new file mode 100644
index 000000000..99856823b
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ArchmagusPower.java
@@ -0,0 +1,28 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class ArchmagusPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = ArchmagusPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public ArchmagusPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ flash();
+ this.addToBot(new ApplyPowerAction(this.owner, this.owner, new DoubleSpellPower(this.amount), this.amount));
+ }
+
+ public void updateDescription() {
+ if (amount == 1) {
+ description = DESCRIPTIONS[0];
+ } else {
+ description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ChosensVersePower.java b/src/main/java/awakenedOne/powers/ChosensVersePower.java
new file mode 100644
index 000000000..b3db8c79f
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ChosensVersePower.java
@@ -0,0 +1,43 @@
+package awakenedOne.powers;
+
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.NonStackablePower;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+public class ChosensVersePower extends AbstractTwoAmountAwakenedPower implements NonStackablePower {
+ // intellij stuff buff
+ public static final String NAME = ChosensVersePower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public ChosensVersePower(int amount, int block) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ amount2 = block;
+ updateDescription();
+ }
+
+ @Override
+ public void onPlayCard(AbstractCard card, AbstractMonster m) {
+ if (card.type != AbstractCard.CardType.ATTACK) {
+ flash();
+ addToBot(new DrawCardAction(1));
+ addToBot(new GainBlockAction(owner, amount2));
+ addToBot(new ReducePowerAction(owner, owner, this, 1));
+ }
+ }
+
+ @Override
+ public void atEndOfTurn(boolean isPlayer) {
+ flash();
+ addToBot(new RemoveSpecificPowerAction(owner, owner, this));
+ }
+
+ public void updateDescription() {
+ description = amount == 1 ? DESCRIPTIONS[0] + amount2 + DESCRIPTIONS[1] : DESCRIPTIONS[2] + amount + DESCRIPTIONS[3] + amount2 + DESCRIPTIONS[4];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/CursedStrength.java b/src/main/java/awakenedOne/powers/CursedStrength.java
new file mode 100644
index 000000000..45dc56920
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/CursedStrength.java
@@ -0,0 +1,30 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+public class CursedStrength extends AbstractAwakenedPower implements OnLoseEnergyPower {
+ // intellij stuff buff
+
+ public static final String NAME = CursedStrength.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ // intellij stuff buff
+
+ public CursedStrength(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.BUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+ @Override
+ public void LoseEnergyAction(int gained) {
+ this.flash();
+ applyToSelf(new StrengthPower(AbstractDungeon.player, amount));
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/DarkEchoPower.java b/src/main/java/awakenedOne/powers/DarkEchoPower.java
new file mode 100644
index 000000000..bd6047a91
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/DarkEchoPower.java
@@ -0,0 +1,82 @@
+package awakenedOne.powers;
+
+
+import basemod.interfaces.OnPowersModifiedSubscriber;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+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.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+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.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.ShockWaveEffect;
+import downfall.util.TextureLoader;
+import expansioncontent.expansionContentMod;
+
+
+public class DarkEchoPower extends TwoAmountPower implements OnPowersModifiedSubscriber {
+ // intellij stuff buff
+
+ public static final String POWER_ID = "awakened:DarkEchoPower";
+ 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 static final Texture tex84 = TextureLoader.getTexture(expansionContentMod.getModID() + "Resources/images/powers/StudyHexaghost84.png");
+ private static final Texture tex32 = TextureLoader.getTexture(expansionContentMod.getModID() + "Resources/images/powers/StudyHexaghost32.png");
+
+ public DarkEchoPower(int amount) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = AbstractDungeon.player;
+ this.amount = amount;
+ if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID))
+ this.amount2 = 4 + AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount;
+ else this.amount2 = 4;
+ this.type = PowerType.BUFF;
+ this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
+ this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
+
+ this.updateDescription();
+ }
+
+ @Override
+ public void atEndOfTurn(boolean isPlayer) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_AWAKENEDONE_3"));
+ for (int i = 0; i < amount; i++) {
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(AbstractDungeon.player, new ShockWaveEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, new Color(0.1F, 0.0F, 0.2F, 1.0F), ShockWaveEffect.ShockWaveType.CHAOTIC), 0.3F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(AbstractDungeon.player, new ShockWaveEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, new Color(0.3F, 0.2F, 0.4F, 1.0F), ShockWaveEffect.ShockWaveType.CHAOTIC), 1.0F));
+ this.addToBot(new DamageAllEnemiesAction(null, DamageInfo.createDamageMatrix(amount2, true), DamageInfo.DamageType.THORNS, AbstractGameAction.AttackEffect.FIRE, true));
+ }
+ }
+
+ @Override
+ public void receivePowersModified() {
+ if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID))
+ this.amount2 = 4 + AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount;
+ else this.amount2 = 4;
+ updateDescription();
+ }
+
+ @Override
+ public void updateDescription() {
+ if (this.amount != 1) {
+ this.description = DESCRIPTIONS[0] + amount2 + DESCRIPTIONS[1] + amount + DESCRIPTIONS[2];
+ }
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0] + amount2 + DESCRIPTIONS[3];
+ }
+
+ }
+}
+
+
+
+
diff --git a/src/main/java/awakenedOne/powers/DarknessFallsPower.java b/src/main/java/awakenedOne/powers/DarknessFallsPower.java
new file mode 100644
index 000000000..98f8cebc3
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/DarknessFallsPower.java
@@ -0,0 +1,29 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+
+public class DarknessFallsPower extends AbstractAwakenedPower implements OnLoseEnergyPower {
+ // intellij stuff buff
+
+ public static final String NAME = DarknessFallsPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ // intellij stuff buff
+
+ public DarknessFallsPower(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.BUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+ @Override
+ public void LoseEnergyAction(int gained) {
+ this.flash();
+ addToBot(new GainBlockAction(owner, gained * amount));
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/DemonGlyphPower.java b/src/main/java/awakenedOne/powers/DemonGlyphPower.java
new file mode 100644
index 000000000..5353a42ef
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/DemonGlyphPower.java
@@ -0,0 +1,37 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
+
+public class DemonGlyphPower extends AbstractAwakenedPower implements OnAwakenPower {
+ // intellij stuff buff
+ public static final String NAME = DemonGlyphPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+ public boolean activated = false;
+
+ public DemonGlyphPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ updateDescription();
+ activated = false;
+ }
+
+ @Override
+ public void onAwaken(int vibe) {
+ if (vibe == 10 && !activated) {
+ activated = true;
+ flash();
+ this.addToBot(new VFXAction(AbstractDungeon.player, new InflameEffect(AbstractDungeon.player), 1.0F));
+ applyToSelf(new StrengthPower(AbstractDungeon.player, amount));
+ applyToSelf(new DexterityPower(AbstractDungeon.player, amount));
+ }
+ }
+
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/DoubleSpellPower.java b/src/main/java/awakenedOne/powers/DoubleSpellPower.java
new file mode 100644
index 000000000..6539af4bd
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/DoubleSpellPower.java
@@ -0,0 +1,68 @@
+package awakenedOne.powers;
+
+import awakenedOne.cards.tokens.spells.AbstractSpellCard;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+public class DoubleSpellPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = DoubleSpellPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public DoubleSpellPower(int amount) {
+ super(NAME, PowerType.BUFF, true, AbstractDungeon.player, null, amount);
+ this.updateDescription();
+ }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (!card.purgeOnUse && this.amount > 0 && (card instanceof AbstractSpellCard)) {
+ this.flash();
+ AbstractMonster m = null;
+ if (action.target != null) {
+ m = (AbstractMonster) action.target;
+ }
+
+ if (m == null) {
+ m = AbstractDungeon.getMonsters().getRandomMonster(true);
+ }
+
+ AbstractCard tmp = card.makeSameInstanceOf();
+ AbstractDungeon.player.limbo.addToBottom(tmp);
+ tmp.current_x = card.current_x;
+ tmp.current_y = card.current_y;
+ tmp.target_x = (float) Settings.WIDTH / 2.0F - 300.0F * Settings.scale;
+ tmp.target_y = (float) Settings.HEIGHT / 2.0F;
+ if (m != null) {
+ tmp.calculateCardDamage(m);
+ }
+
+ tmp.purgeOnUse = true;
+ AbstractDungeon.actionManager.addCardQueueItem(new CardQueueItem(tmp, m, card.energyOnUse, true, true), true);
+ --this.amount;
+ if (this.amount == 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, ID));
+ }
+ updateDescription();
+ }
+
+ }
+
+ public void atEndOfTurn(boolean isPlayer) {
+ if (isPlayer) {
+ this.addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
+ }
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+}
diff --git a/src/main/java/awakenedOne/powers/EclipseEmbracePower.java b/src/main/java/awakenedOne/powers/EclipseEmbracePower.java
new file mode 100644
index 000000000..02f48b0a3
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/EclipseEmbracePower.java
@@ -0,0 +1,37 @@
+package awakenedOne.powers;
+
+import automaton.cards.goodstatus.IntoTheVoid;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
+import com.megacrit.cardcrawl.powers.EnergizedBluePower;
+
+public class EclipseEmbracePower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = EclipseEmbracePower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public EclipseEmbracePower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void onExhaust(AbstractCard card) {
+ if (card instanceof VoidCard || card instanceof IntoTheVoid) {
+ this.flash();
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new EnergizedBluePower(AbstractDungeon.player, amount)));
+ applyToSelf(new DrawCardNextTurnPower(AbstractDungeon.player, amount));
+ }
+ }
+
+ @Override
+ public void updateDescription() {
+ if (amount == 1) {
+ description = DESCRIPTIONS[0];
+ } else {
+ description = DESCRIPTIONS[1] + amount + DESCRIPTIONS[2] + amount + DESCRIPTIONS[3];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/EnsorcelatePower.java b/src/main/java/awakenedOne/powers/EnsorcelatePower.java
new file mode 100644
index 000000000..a4fab7c28
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/EnsorcelatePower.java
@@ -0,0 +1,37 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class EnsorcelatePower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = EnsorcelatePower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public EnsorcelatePower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.type == AbstractCard.CardType.POWER && !card.purgeOnUse && this.amount > 0) {
+ this.flash();
+ --this.amount;
+ if (this.amount == 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, this));
+ }
+ }
+
+ }
+
+ public void updateDescription() {
+ if (amount == 1) {
+ description = DESCRIPTIONS[0];
+ } else {
+ description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/FlarePower.java b/src/main/java/awakenedOne/powers/FlarePower.java
new file mode 100644
index 000000000..7082fec0a
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/FlarePower.java
@@ -0,0 +1,36 @@
+package awakenedOne.powers;
+
+import awakenedOne.actions.AllEnemyLoseHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class FlarePower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = FlarePower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public FlarePower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void onAfterCardPlayed(AbstractCard usedCard) {
+ if (usedCard.type != AbstractCard.CardType.ATTACK) {
+ this.flash();
+ this.addToBot(new AllEnemyLoseHPAction(amount, AbstractGameAction.AttackEffect.FIRE));
+ }
+ }
+
+ public void atEndOfTurn(boolean isPlayer) {
+ if (isPlayer) {
+ this.addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
+ }
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
diff --git a/src/main/java/awakenedOne/powers/IntensifyDebuffPower.java b/src/main/java/awakenedOne/powers/IntensifyDebuffPower.java
new file mode 100644
index 000000000..c553ba3f2
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/IntensifyDebuffPower.java
@@ -0,0 +1,34 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class IntensifyDebuffPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = IntensifyDebuffPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public IntensifyDebuffPower(int amount) {
+ super(NAME, PowerType.DEBUFF, true, AbstractDungeon.player, null, amount);
+ }
+
+ public void atEndOfTurn(boolean isPlayer) {
+ if (isPlayer) {
+ --this.amount;
+ updateDescription();
+ if (this.amount == 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, ID));
+ }
+ }
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/IntensifyPower.java b/src/main/java/awakenedOne/powers/IntensifyPower.java
new file mode 100644
index 000000000..b01692284
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/IntensifyPower.java
@@ -0,0 +1,63 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class IntensifyPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = IntensifyPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public IntensifyPower(int amount) {
+ super(NAME, PowerType.BUFF, true, AbstractDungeon.player, null, amount);
+ }
+
+ //public void onUseCard(AbstractCard card, UseCardAction action) {
+ // if (!card.purgeOnUse && this.amount > 0 && (card instanceof AbstractSpellCard)) {
+ // this.flash();
+ // AbstractMonster m = null;
+ // if (action.target != null) {
+ // m = (AbstractMonster) action.target;
+ // }
+ //
+ // AbstractCard tmp = card.makeSameInstanceOf();
+ // AbstractDungeon.player.limbo.addToBottom(tmp);
+ // tmp.current_x = card.current_x;
+ // tmp.current_y = card.current_y;
+ // tmp.target_x = (float) Settings.WIDTH / 2.0F - 300.0F * Settings.scale;
+ // tmp.target_y = (float) Settings.HEIGHT / 2.0F;
+ // if (m != null) {
+ // tmp.calculateCardDamage(m);
+ // }
+ //
+ // tmp.purgeOnUse = true;
+ // AbstractDungeon.actionManager.addCardQueueItem(new CardQueueItem(tmp, m, card.energyOnUse, true, true), true);
+ // --this.amount;
+ // updateDescription();
+ // if (this.amount == 0) {
+ // this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, ID));
+ // }
+ // }
+ //
+ // }
+
+ public void atEndOfTurn(boolean isPlayer) {
+ if (isPlayer) {
+ --this.amount;
+ updateDescription();
+ if (this.amount == 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, ID));
+ }
+ }
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ManaburnPower.java b/src/main/java/awakenedOne/powers/ManaburnPower.java
new file mode 100644
index 000000000..bedd3a264
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ManaburnPower.java
@@ -0,0 +1,84 @@
+package awakenedOne.powers;
+
+import awakenedOne.cards.Nihil;
+import awakenedOne.relics.StrengthBooster;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+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.relics.AbstractRelic;
+import hermit.patches.EnumPatch;
+
+public class ManaburnPower extends AbstractAwakenedPower implements OnLoseEnergyPower {
+ // intellij stuff buff
+
+ public static final String NAME = ManaburnPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+
+ public ManaburnPower(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.DEBUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+
+ @Override
+ public void LoseEnergyAction(int gained) {
+ this.flash();
+
+ boolean hascrow = AbstractDungeon.player.hasRelic(StrengthBooster.ID);
+
+ if (!hascrow) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, amount * gained, DamageInfo.DamageType.HP_LOSS), EnumPatch.HERMIT_GHOSTFIRE));
+ }
+
+ if (hascrow) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, (amount * gained) + ((amount * gained) / 2), DamageInfo.DamageType.HP_LOSS), EnumPatch.HERMIT_GHOSTFIRE));
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ if (r instanceof StrengthBooster) {
+ ((StrengthBooster) r).onSpecificTrigger((amount * gained) / 2);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void triggerMarks(AbstractCard card) {
+ if (card.cardID.equals(Nihil.ID)) {
+
+
+ boolean hascrow = AbstractDungeon.player.hasRelic(StrengthBooster.ID);
+
+ if (!hascrow) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, amount, DamageInfo.DamageType.HP_LOSS), EnumPatch.HERMIT_GHOSTFIRE));
+ }
+
+ if (hascrow) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, (amount) + ((amount) / 2), DamageInfo.DamageType.HP_LOSS), EnumPatch.HERMIT_GHOSTFIRE));
+
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ if (r instanceof StrengthBooster) {
+ ((StrengthBooster) r).onSpecificTrigger((amount) / 2);
+ }
+ }
+ }
+
+ }
+ }
+
+ @Override
+ public void updateDescription() {
+ boolean hascrow = AbstractDungeon.player.hasRelic(StrengthBooster.ID);
+
+ if (!hascrow) {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+ if (hascrow) {
+ description = DESCRIPTIONS[0] + (amount) + (amount / 2) + DESCRIPTIONS[1];
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/MoonlitVisionPower.java b/src/main/java/awakenedOne/powers/MoonlitVisionPower.java
new file mode 100644
index 000000000..252c2c478
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/MoonlitVisionPower.java
@@ -0,0 +1,31 @@
+package awakenedOne.powers;
+
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.NonStackablePower;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class MoonlitVisionPower extends AbstractAwakenedPower implements NonStackablePower {
+ // intellij stuff buff
+ public static final String NAME = MoonlitVisionPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public MoonlitVisionPower() {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, 1);
+ updateDescription();
+ }
+
+ @Override
+ public void atStartOfTurnPostDraw() {
+ if (AbstractDungeon.player.hand.size() >= 8) {
+ flash();
+ atb(new GainEnergyAction(amount));
+ }
+ }
+
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/NihilPower.java b/src/main/java/awakenedOne/powers/NihilPower.java
new file mode 100644
index 000000000..69f84f77d
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/NihilPower.java
@@ -0,0 +1,28 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class NihilPower extends AbstractAwakenedPower {
+
+ public static final String NAME = NihilPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+
+ public NihilPower(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.DEBUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ flash();
+ addToBot(new ApplyPowerAction(owner, AbstractDungeon.player, new ManaburnPower(owner, amount), amount));
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/OnAwakenPower.java b/src/main/java/awakenedOne/powers/OnAwakenPower.java
new file mode 100644
index 000000000..c799fea3c
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/OnAwakenPower.java
@@ -0,0 +1,5 @@
+package awakenedOne.powers;
+
+public interface OnAwakenPower {
+ void onAwaken(int amount);
+}
diff --git a/src/main/java/awakenedOne/powers/OnLoseEnergyPower.java b/src/main/java/awakenedOne/powers/OnLoseEnergyPower.java
new file mode 100644
index 000000000..0a11d9590
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/OnLoseEnergyPower.java
@@ -0,0 +1,5 @@
+package awakenedOne.powers;
+
+public interface OnLoseEnergyPower {
+ void LoseEnergyAction(int amount);
+}
diff --git a/src/main/java/awakenedOne/powers/PrimacyPower.java b/src/main/java/awakenedOne/powers/PrimacyPower.java
new file mode 100644
index 000000000..e0cfd71eb
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/PrimacyPower.java
@@ -0,0 +1,60 @@
+package awakenedOne.powers;
+
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.OnReceivePowerPower;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class PrimacyPower extends AbstractAwakenedPower implements OnReceivePowerPower {
+ // intellij stuff buff
+ public static final String NAME = PrimacyPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+ private int cardsDoubledThisTurn = 0;
+
+
+ public PrimacyPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+
+ public void atStartOfTurn() {
+ this.cardsDoubledThisTurn = 0;
+ updateDescription();
+ }
+
+ @Override
+ public boolean onReceivePower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if (cardsDoubledThisTurn < this.amount) {
+ if ((power instanceof StrengthPower) && (power.amount > 0)) {
+ flash();
+ this.cardsDoubledThisTurn += 1;
+ atb(new DrawCardAction(AbstractDungeon.player, 1));
+ updateDescription();
+ }
+ }
+ return true;
+ }
+
+
+ public void updateDescription() {
+
+
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = (DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2]);
+ }
+
+ if (cardsDoubledThisTurn >= 3) {
+ this.description += DESCRIPTIONS[6];
+ } else if ((this.amount - cardsDoubledThisTurn) > 1) {
+ this.description += DESCRIPTIONS[3] + (this.amount - cardsDoubledThisTurn) + DESCRIPTIONS[4];
+ } else {
+ this.description += DESCRIPTIONS[3] + (this.amount - cardsDoubledThisTurn) + DESCRIPTIONS[5];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ReverseRitualPower.java b/src/main/java/awakenedOne/powers/ReverseRitualPower.java
new file mode 100644
index 000000000..d7cf61889
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ReverseRitualPower.java
@@ -0,0 +1,32 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+public class ReverseRitualPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = ReverseRitualPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+
+ public ReverseRitualPower(int amount) {
+ super(NAME, PowerType.DEBUFF, false, AbstractDungeon.player, null, amount);
+ updateDescription();
+ this.canGoNegative = false;
+ priority = -99;
+ }
+
+
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+
+ public void atEndOfTurn(boolean isPlayer) {
+ if (isPlayer) {
+ this.flash();
+ this.addToBot(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, -this.amount), -this.amount));
+ }
+ }
+
+}
diff --git a/src/main/java/awakenedOne/powers/RisingChantPower.java b/src/main/java/awakenedOne/powers/RisingChantPower.java
new file mode 100644
index 000000000..c073a7329
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/RisingChantPower.java
@@ -0,0 +1,25 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+public class RisingChantPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = RisingChantPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public RisingChantPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+
+ @Override
+ public void onSpecificTrigger() {
+ applyToSelf(new StrengthPower(AbstractDungeon.player, amount));
+ flash();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/SacramentPower.java b/src/main/java/awakenedOne/powers/SacramentPower.java
new file mode 100644
index 000000000..e3d87b00c
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/SacramentPower.java
@@ -0,0 +1,28 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class SacramentPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = SacramentPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public SacramentPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void onAfterCardPlayed(AbstractCard card) {
+ if (card.type == AbstractCard.CardType.POWER) {
+ this.flash();
+ addToBot(new GainBlockAction(owner, amount));
+ }
+ }
+
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/SheerTerrorPower.java b/src/main/java/awakenedOne/powers/SheerTerrorPower.java
new file mode 100644
index 000000000..bc78807af
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/SheerTerrorPower.java
@@ -0,0 +1,42 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class SheerTerrorPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = SheerTerrorPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public SheerTerrorPower(AbstractCreature owner, int amount) {
+ super(NAME, PowerType.DEBUFF, true, owner, null, amount);
+
+ if (this.amount <= 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, POWER_ID));
+ }
+ updateDescription();
+ }
+
+ public void atStartOfTurn() {
+ if (this.amount <= 0) {
+ AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this));
+ } else {
+ flash();
+ AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(this.owner, this.owner, this, 1));
+ }
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ }
+
+ if (this.amount != 1) {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ShroudOfMiasmaPower.java b/src/main/java/awakenedOne/powers/ShroudOfMiasmaPower.java
new file mode 100644
index 000000000..f5de5b860
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ShroudOfMiasmaPower.java
@@ -0,0 +1,26 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class ShroudOfMiasmaPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = ShroudOfMiasmaPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public ShroudOfMiasmaPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void onSpecificTrigger() {
+ flash();
+ addToTop(new GainBlockAction(owner, amount, true));
+ }
+
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/SongOfSorrowPower.java b/src/main/java/awakenedOne/powers/SongOfSorrowPower.java
new file mode 100644
index 000000000..b258eba99
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/SongOfSorrowPower.java
@@ -0,0 +1,32 @@
+package awakenedOne.powers;
+
+import awakenedOne.actions.AllEnemyLoseHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class SongOfSorrowPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = SongOfSorrowPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ private final boolean active = true;
+
+ public SongOfSorrowPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void onSpecificTrigger() {
+ flash();
+ this.addToBot(new AllEnemyLoseHPAction(amount, AbstractGameAction.AttackEffect.FIRE));
+ }
+
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/SpellbinderPower.java b/src/main/java/awakenedOne/powers/SpellbinderPower.java
new file mode 100644
index 000000000..2535ea78b
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/SpellbinderPower.java
@@ -0,0 +1,33 @@
+package awakenedOne.powers;
+
+import awakenedOne.actions.ConjureAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import static awakenedOne.util.Wiz.atb;
+
+public class SpellbinderPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = SpellbinderPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public SpellbinderPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ flash();
+ for (int i = 0; i < amount; i++) {
+ atb(new ConjureAction(false));
+ }
+ }
+
+ public void updateDescription() {
+ if (amount == 1) {
+ description = DESCRIPTIONS[0];
+ } else {
+ description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/SpellshieldPower.java b/src/main/java/awakenedOne/powers/SpellshieldPower.java
new file mode 100644
index 000000000..05f655147
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/SpellshieldPower.java
@@ -0,0 +1,33 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class SpellshieldPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = SpellshieldPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public SpellshieldPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+ public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
+ AbstractDungeon.actionManager.addToBottom(new AbstractGameAction() {
+ public void update() {
+ isDone = true;
+ if (AbstractDungeon.player.hand.group.stream().anyMatch(c -> c.selfRetain || c.retain))
+ flash();
+ AbstractDungeon.player.hand.group.stream()
+ .filter(c -> c.selfRetain || c.retain)
+ .forEach(c -> AbstractDungeon.actionManager.addToBottom(new GainBlockAction(owner, owner, SpellshieldPower.this.amount, true)));
+ }
+ });
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/StrengthReturnPower.java b/src/main/java/awakenedOne/powers/StrengthReturnPower.java
new file mode 100644
index 000000000..fe755e59f
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/StrengthReturnPower.java
@@ -0,0 +1,41 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.LoseStrengthPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+
+public class StrengthReturnPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = StrengthReturnPower.class.getSimpleName();
+ public static final String POWER_ID = "awakened:StrengthReturnPower";
+
+ public StrengthReturnPower(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.DEBUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+ public void stackPower(int stackAmount) {
+ this.fontScale = 8.0F;
+ this.amount += stackAmount;
+ this.updateDescription();
+ }
+
+ public int onAttacked(DamageInfo info, int damageAmount) {
+ if (info.type != DamageInfo.DamageType.THORNS && info.type != DamageInfo.DamageType.HP_LOSS && info.owner != null && info.owner != this.owner) {
+ this.flash();
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, this.amount), this.amount));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new LoseStrengthPower(AbstractDungeon.player, this.amount), this.amount));
+ }
+
+ return damageAmount;
+ }
+
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/ThaumaturgyPower.java b/src/main/java/awakenedOne/powers/ThaumaturgyPower.java
new file mode 100644
index 000000000..4e30d7260
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/ThaumaturgyPower.java
@@ -0,0 +1,52 @@
+package awakenedOne.powers;
+
+import awakenedOne.cards.tokens.Ceremony;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+public class ThaumaturgyPower extends AbstractAwakenedPower {
+ // intellij stuff buff
+ public static final String NAME = ThaumaturgyPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+ public ThaumaturgyPower(int amount) {
+ super(NAME, PowerType.BUFF, false, AbstractDungeon.player, null, amount);
+ }
+
+// @Override
+// public void onAfterCardPlayed(AbstractCard card) {
+// if (card.type == AbstractCard.CardType.POWER) {
+// this.flash();
+// this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PlatedArmorPower(AbstractDungeon.player, amount), amount));
+// }
+// }
+
+// @Override
+// public boolean onReceivePower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+// if ((power instanceof StrengthPower) && (power.amount > 0)) {
+// flash();
+// addToBot(new GainBlockAction(owner, this.amount));
+//// addToBot(new GainBlockAction(owner, this.amount * power.amount));
+// updateDescription();
+// }
+// return true;
+// }
+
+ @Override
+ public void atStartOfTurn() {
+ flash();
+ this.addToBot(new MakeTempCardInHandAction(new Ceremony(), 1, false));
+ this.amount--;
+ if (this.amount <= 0) {
+ addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
+ }
+ updateDescription();
+ }
+
+
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/powers/VoidRefundPower.java b/src/main/java/awakenedOne/powers/VoidRefundPower.java
new file mode 100644
index 000000000..d7512e78b
--- /dev/null
+++ b/src/main/java/awakenedOne/powers/VoidRefundPower.java
@@ -0,0 +1,50 @@
+package awakenedOne.powers;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.EnergizedBluePower;
+
+import static awakenedOne.util.Wiz.att;
+
+public class VoidRefundPower extends AbstractAwakenedPower implements OnLoseEnergyPower {
+ // intellij stuff buff
+
+ public static final String NAME = VoidRefundPower.class.getSimpleName();
+ public static final String POWER_ID = makeID(NAME);
+
+
+ public VoidRefundPower(final AbstractCreature owner, int amount) {
+ super(NAME, PowerType.BUFF, false, owner, null, amount);
+ updateDescription();
+ }
+
+
+ @Override
+ public void LoseEnergyAction(int gained) {
+ this.flash();
+
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ att(new GainEnergyAction(this.amount));
+ }
+
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ att(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new EnergizedBluePower(AbstractDungeon.player, this.amount), this.amount));
+ }
+
+ // atb(new DrawCardAction(AbstractDungeon.player, this.amount));
+ addToTop(new RemoveSpecificPowerAction(owner, owner, this));
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ }
+
+ if (this.amount != 1) {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/relics/AbyssBlade.java b/src/main/java/awakenedOne/relics/AbyssBlade.java
new file mode 100644
index 000000000..fbd199643
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/AbyssBlade.java
@@ -0,0 +1,73 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.EnergizedBluePower;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class AbyssBlade extends CustomRelic implements OnLoseEnergyRelic {
+
+ //Prove you love ME above all else!
+
+ public static final String ID = AwakenedOneMod.makeID("AbyssBlade");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("AbyssBlade.png"));
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("AbyssBlade.png"));
+
+ public AbyssBlade() {
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.CLINK);
+ }
+
+
+ @Override
+ public void atBattleStart() {
+ this.counter = -1;
+ }
+
+ @Override
+ public void atTurnStart() {
+ this.counter = -1;
+ beginLongPulse();
+ }
+
+ @Override
+ public void onVictory() {
+ this.counter = -1;
+ stopPulse();
+ }
+
+ @Override
+ public void LoseEnergyAction(int e) {
+ if (this.counter != 1) {
+ flash();
+ stopPulse();
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ addToTop(new GainEnergyAction(1));
+ }
+
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new EnergizedBluePower(AbstractDungeon.player, 1)));
+ }
+
+ addToBot(new DrawCardAction(AbstractDungeon.player, 1));
+ this.counter = 1;
+ }
+ }
+
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/relics/CawingCask.java b/src/main/java/awakenedOne/relics/CawingCask.java
new file mode 100644
index 000000000..cdc289fa9
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/CawingCask.java
@@ -0,0 +1,65 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.city.Byrd;
+import com.megacrit.cardcrawl.powers.RitualPower;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class CawingCask extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("CawingCask");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("CawingCask.png"));
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("CawingCask.png"));
+
+ //How much Ritual does drinking a potion give?
+
+ private static final int AMOUNT = 1;
+
+ public CawingCask() {
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.SOLID);
+ }
+
+ //Cawing Cask
+
+ //or, the cask of amontillado
+
+ public void onUsePotion() {
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ this.flash();
+ this.playSfx();
+ AbstractDungeon.actionManager.addToBottom(new TalkAction(true, Byrd.DIALOG[0], 1.2F, 1.2F));
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new RitualPower(AbstractDungeon.player, AMOUNT, true), AMOUNT));
+ }
+ }
+
+ private void playSfx() {
+ 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"));
+ }
+
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/CursedBlessing.java b/src/main/java/awakenedOne/relics/CursedBlessing.java
new file mode 100644
index 000000000..9472915df
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/CursedBlessing.java
@@ -0,0 +1,213 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+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.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.RitualPower;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class CursedBlessing extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("CursedBlessing");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("CursedBlessing.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("CursedBlessing.png"));
+
+
+ //required triggers
+ private static final int AMOUNT1 = 4;
+ //strength gain
+ private static final int AMOUNT2 = 1;
+
+ public CursedBlessing() {
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.FLAT);
+ // DuvuStrings = CardCrawlGame.languagePack.getRelicStrings(DuVuDoll.ID);
+ this.counter = -1;
+ }
+
+ //Final Rites
+
+
+// public void onEquip() {
+// this.counter = 0;
+// }
+
+ //optional anti stalling tech
+
+ public void onEquip() {
+ this.counter = -1;
+ }
+
+ public void onVictory() {
+ this.counter = -1;
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.counter = 0;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0] + AMOUNT1 + DESCRIPTIONS[1] + AMOUNT2 + DESCRIPTIONS[2];
+ }
+
+ public void onTrigger() {
+ if (this.counter != -1) {
+ this.counter++;
+ if (this.counter == AMOUNT1) {
+ this.counter = -1;
+ flash();
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ //this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, AMOUNT2), AMOUNT2));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new RitualPower(AbstractDungeon.player, AMOUNT2, true), AMOUNT2));
+ }
+ }
+ }
+
+
+ // public boolean canSpawn() {
+ // Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+ //
+ // AbstractCard c;
+ // do {
+ // if (!var1.hasNext()) {
+ // return false;
+ // }
+ //
+ // c = (AbstractCard)var1.next();
+ // } while(c.type != AbstractCard.CardType.CURSE);
+ //
+ // return true;
+ // }
+ //
+ //
+ // public void atBattleStart() {
+ // this.flash();
+ //
+ // Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+ //
+ // while(var1.hasNext()) {
+ // AbstractCard c = (AbstractCard)var1.next();
+ // if (c.type == AbstractCard.CardType.CURSE) {
+ //
+ // Iterator var2 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+ //
+ // while(var2.hasNext()) {
+ // AbstractMonster mo = (AbstractMonster)var2.next();
+ // this.addToTop(new RelicAboveCreatureAction(mo, this));
+ // this.addToTop(new ApplyPowerAction(mo, AbstractDungeon.player, new ManaburnPower(mo, AMOUNT), AMOUNT, true));
+ // }
+ //
+ // }
+ // }
+ // }
+ //
+ //
+ // public void setCounter(int c) {
+ // this.counter = c;
+ // if (this.counter == 0) {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[2];
+ // } else {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[3] + this.counter + this.DESCRIPTIONS[4];
+ // }
+ //
+ // this.tips.clear();
+ // this.tips.add(new PowerTip(this.name, this.description));
+ // this.initializeTips();
+ // }
+ //
+ // public void onMasterDeckChange() {
+ // this.counter = 0;
+ // Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+ //
+ // while(var1.hasNext()) {
+ // AbstractCard c = (AbstractCard)var1.next();
+ // if (c.type == AbstractCard.CardType.CURSE) {
+ // ++this.counter;
+ // }
+ // }
+ //
+ // if (this.counter == 0) {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[2];
+ // } else {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[3] + this.counter + this.DESCRIPTIONS[4];
+ // }
+ //
+ // this.tips.clear();
+ // this.tips.add(new PowerTip(this.name, this.description));
+ // this.initializeTips();
+ // }
+ //
+ // public void onEquip() {
+ // this.counter = 0;
+ // Iterator var1 = AbstractDungeon.player.masterDeck.group.iterator();
+ //
+ // while(var1.hasNext()) {
+ // AbstractCard c = (AbstractCard)var1.next();
+ // if (c.type == AbstractCard.CardType.CURSE) {
+ // ++this.counter;
+ // }
+ // }
+ //
+ // if (this.counter == 0) {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[2];
+ // } else {
+ // this.description = this.DESCRIPTIONS[0] + AMOUNT + this.DESCRIPTIONS[1] + this.DESCRIPTIONS[3] + this.counter + this.DESCRIPTIONS[4];
+ // }
+ //
+ // this.tips.clear();
+ // this.tips.add(new PowerTip(this.name, this.description));
+ // this.initializeTips();
+ // }
+
+ //public void onExhaust(AbstractCard card) {
+ // if (card.type == AbstractCard.CardType.CURSE) {
+ // this.flash();
+ // Iterator var2 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+ //
+ // while (var2.hasNext()) {
+ // AbstractMonster mo = (AbstractMonster) var2.next();
+ // if (!mo.isDead) {
+ // this.addToTop(new RelicAboveCreatureAction(mo, this));
+ // this.addToTop(new ApplyPowerAction(mo, AbstractDungeon.player, new ManaburnPower(mo, AMOUNT), AMOUNT, true));
+ // }
+ // }
+ //
+ //
+ // atb(new AbstractGameAction() {
+ // @Override
+ // public void update() {
+ // isDone = true;
+ //
+ // for (AbstractPower p : AbstractDungeon.player.powers) {
+ // if (p instanceof OnLoseEnergyPower) {
+ // ((OnLoseEnergyPower) p).LoseEnergyAction(1);
+ // }
+ // }
+ //
+ // for (AbstractMonster m2 : AbstractDungeon.getMonsters().monsters) {
+ // if (!m2.isDead && !m2.isDying) {
+ // for (AbstractPower p : m2.powers) {
+ // if (p instanceof OnLoseEnergyPower) {
+ // ((OnLoseEnergyPower) p).LoseEnergyAction(1);
+ // }
+ // }
+ // }
+ //
+ // for (AbstractRelic p : AbstractDungeon.player.relics) {
+ // if (p instanceof OnLoseEnergyRelic) {
+ // ((OnLoseEnergyRelic) p).LoseEnergyAction(1);
+ // }
+ // }
+ // }
+ // }
+ // });
+ // }
+ // }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/relics/CurvedSword.java b/src/main/java/awakenedOne/relics/CurvedSword.java
new file mode 100644
index 000000000..36889ad38
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/CurvedSword.java
@@ -0,0 +1,60 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.Ceremony;
+import awakenedOne.cards.tokens.spells.AbstractSpellCard;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import basemod.helpers.CardPowerTip;
+import com.badlogic.gdx.graphics.Texture;
+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.dungeons.AbstractDungeon;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class CurvedSword extends CustomRelic {
+
+ //backflip scimmy
+ //ninja relic but spells. tried to add a funky sounding name
+ //the joke is that this is literally a "conjure blade"
+
+ public static final String ID = AwakenedOneMod.makeID("CurvedSword");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("CurvedSword.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("CurvedSword.png"));
+
+ public CurvedSword() {
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.CLINK);
+ tips.add(new CardPowerTip(new Ceremony()));
+ }
+
+ public void atTurnStart() {
+ this.counter = 0;
+ }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card instanceof AbstractSpellCard) {
+ ++this.counter;
+ if (this.counter % 3 == 0) {
+ this.flash();
+ this.counter = 0;
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToTop(new MakeTempCardInHandAction(new Ceremony(), 1, false));
+ }
+ }
+
+ }
+
+ public void onVictory() {
+ this.counter = -1;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + 3 + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/CurvedSwordMeme.java b/src/main/java/awakenedOne/relics/CurvedSwordMeme.java
new file mode 100644
index 000000000..3fb5f0211
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/CurvedSwordMeme.java
@@ -0,0 +1,42 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.meme.NotConjureBlade;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import basemod.helpers.CardPowerTip;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.purple.ConjureBlade;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class CurvedSwordMeme extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("CurvedSwordMeme");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("CurvedSword.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("CurvedSword.png"));
+
+ //You should only be able to obtain this from console. I couldn't help myself from making this joke, sorry.
+ //The Expunger goes into your Spell Pile.
+
+ public CurvedSwordMeme() {
+ super(ID, IMG, OUTLINE, RelicTier.DEPRECATED, LandingSound.CLINK);
+ this.tips.add(new CardPowerTip(new ConjureBlade()));
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToTop(new MakeTempCardInHandAction(new NotConjureBlade(), 1, false));
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/relics/DeadBird.java b/src/main/java/awakenedOne/relics/DeadBird.java
new file mode 100644
index 000000000..6f85a7e81
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/DeadBird.java
@@ -0,0 +1,108 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.isInCombat;
+import static hermit.util.Wiz.getLowestHealthEnemy;
+
+public class DeadBird extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("DeadBird");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("DeadBird.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("DeadBird.png"));
+ //damage
+ private static final int AMOUNT = 4;
+
+ //Corvid Spirit
+
+ //or, Eve's Dead Bird
+
+ public DeadBird() {
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
+ }
+
+ public void update() {
+ super.update();
+ if (isInCombat()) {
+ if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
+ this.counter = AMOUNT + AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount;
+ }
+
+ if (this.counter < AMOUNT) {
+ this.counter = AMOUNT;
+ }
+ } else {
+ this.counter = 4;
+ }
+ }
+
+ @Override
+ public void onEquip() {
+ this.counter = 4;
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.counter = 4;
+ }
+
+ @Override
+ public void onVictory() {
+ this.counter = 4;
+ }
+
+ @Override
+ public void onEnterRoom(AbstractRoom room) {
+ this.counter = 4;
+ }
+
+ //Can't believe this was already pre-coded in Hermit's Wiz. Very helpful.
+ @Override
+ public void onPlayerEndTurn() {
+ flash();
+
+ int temp = AMOUNT;
+
+ if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
+ temp += AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount;
+ }
+
+ if (temp < AMOUNT) {
+ temp = AMOUNT;
+ }
+
+
+ int nocrashpls = 0;
+
+ for (final AbstractMonster m : AbstractDungeon.getMonsters().monsters) {
+ if (!m.isDying && m.currentHealth > 0) {
+ nocrashpls++;
+ }
+ }
+
+
+ if (nocrashpls > 0) {
+ this.addToTop(new RelicAboveCreatureAction(getLowestHealthEnemy(), this));
+ AbstractDungeon.actionManager.addToBottom(new DamageAction(getLowestHealthEnemy(), new DamageInfo(AbstractDungeon.player, temp, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
+ }
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/EyeOfTheOccult.java b/src/main/java/awakenedOne/relics/EyeOfTheOccult.java
new file mode 100644
index 000000000..7462ad568
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/EyeOfTheOccult.java
@@ -0,0 +1,43 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.tokens.spells.AbstractSpellCard;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.getEnemies;
+
+public class EyeOfTheOccult extends CustomRelic {
+
+ //Eye of the Occult
+
+ public static final String ID = AwakenedOneMod.makeID("EyeOfTheOccult");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("EyeOfTheOccult.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("EyeOfTheOccult.png"));
+
+ //Yeah... you need to go look at the Spell cards for this one.
+ public EyeOfTheOccult() {
+ super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.MAGICAL);
+ }
+
+ @Override
+ public void onPlayCard(AbstractCard card, AbstractMonster m) {
+ if (((card instanceof AbstractSpellCard) && card.target == AbstractCard.CardTarget.ALL_ENEMY)) {
+ //only flash if relevant
+ if (getEnemies().size() > 1) {
+ flash();
+ }
+ }
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/HexxBomb.java b/src/main/java/awakenedOne/relics/HexxBomb.java
new file mode 100644
index 000000000..6718c41be
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/HexxBomb.java
@@ -0,0 +1,78 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.ManaburnPower;
+import awakenedOne.util.TexLoader;
+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.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.monsters.NeowBoss;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
+public class HexxBomb extends CustomRelic {
+
+ //Manabomb
+
+ public static final String ID = AwakenedOneMod.makeID("HexxBomb");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("HexxBomb.png"));
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("HexxBomb.png"));
+
+ public HexxBomb() {
+ super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
+ }
+
+
+// @Override
+// public void atBattleStart() {
+// onTrigger();
+// }
+
+// @Override
+// public void onTrigger() {
+// super.onTrigger();
+// this.flash();
+// //this.addToBot(new DelayedCurseAction);
+// AbstractMonster mo = AbstractDungeon.getRandomMonster();
+// HexCurse(AMOUNT, mo, AbstractDungeon.player);
+// this.addToBot(new VFXAction(new GiantEyeEffect(mo.hb.cX, mo.hb.cY + 300.0F * Settings.scale, new Color(1.0F, 0.3F, 1.0F, 0.0F))));
+// this.addToTop(new RelicAboveCreatureAction(mo, this));
+// }
+
+
+ public void onMonsterDeath(AbstractMonster m) {
+ if (m.hasPower(ManaburnPower.POWER_ID)) {
+ int amount = m.getPower(ManaburnPower.POWER_ID).amount;
+ if (!AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
+ this.flash();
+ this.addToTop(new RelicAboveCreatureAction(m, this));
+ AbstractMonster mo = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.relicRng);
+ //I don't know WHY this crashes against the act 4 elite.
+ if (!(mo instanceof NeowBoss)) {
+ if (!(mo == null)) {
+ this.addToBot(new RelicAboveCreatureAction(mo, this));
+ this.addToBot(new ApplyPowerAction(mo, AbstractDungeon.player, new ManaburnPower(mo, amount), amount, true));
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean canSpawn() {
+ return Settings.isEndless || ((AbstractDungeon.floorNum <= 53 && AbstractDungeon.ascensionLevel >= 20) && !evilMode) || ((AbstractDungeon.floorNum <= 52 && AbstractDungeon.ascensionLevel < 20 && !evilMode)) || ((AbstractDungeon.floorNum <= 48));
+ }
+
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/MiniBlackHole.java b/src/main/java/awakenedOne/relics/MiniBlackHole.java
new file mode 100644
index 000000000..34911f53a
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/MiniBlackHole.java
@@ -0,0 +1,65 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+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.dungeons.AbstractDungeon;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class MiniBlackHole extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("MiniBlackHole");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("MiniBlackHole.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("MiniBlackHole.png"));
+ public boolean firstTurn = false;
+
+ public MiniBlackHole() {
+ super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
+ }
+
+ //Alethea
+
+ @Override
+ public void atPreBattle() {
+ firstTurn = true;
+ }
+
+ @Override
+ public void atTurnStartPostDraw() {
+ if (!firstTurn) {
+ if (!this.grayscale) {
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ addToBot(new DrawCardAction(AbstractDungeon.player, 1));
+ }
+ }
+ this.grayscale = false;
+ this.firstTurn = false;
+ }
+
+ public void onUseCard(AbstractCard card, UseCardAction action) {
+ if (card.type == AbstractCard.CardType.POWER) {
+ if (!this.grayscale) {
+ this.flash();
+ this.grayscale = true;
+ }
+ }
+ }
+
+ public void onVictory() {
+ this.grayscale = false;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/MoonTalisman.java b/src/main/java/awakenedOne/relics/MoonTalisman.java
new file mode 100644
index 000000000..af17ceeb2
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/MoonTalisman.java
@@ -0,0 +1,222 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cardmods.ConjureMod;
+import awakenedOne.patches.MoonTalismanPatch;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomBottleRelic;
+import basemod.abstracts.CustomRelic;
+import basemod.abstracts.CustomSavable;
+import basemod.helpers.CardModifierManager;
+import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+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.PowerTip;
+import com.megacrit.cardcrawl.localization.LocalizedStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
+
+import java.util.function.Predicate;
+
+import static awakenedOne.AwakenedOneMod.*;
+
+public class MoonTalisman extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("MoonTalisman");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("MoonTalisman.png"));
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("MoonTalisman.png"));
+ public AbstractCard card = null;
+ public boolean cardSelected = true;
+ private boolean cardRemoved = false;
+
+ //Don't forget me.
+
+ public MoonTalisman() {
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
+ }
+
+ @Override
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
+ }
+
+ @Override
+ public void onPlayCard(AbstractCard card, AbstractMonster m) {
+ if (MoonTalismanPatch.inBottleTalisman.get(card)) {
+ this.flash();
+ //added a modifier instead
+ //atb(new ConjureAction(false));
+ }
+ }
+
+ @Override
+ public Predicate isOnCard() {
+ return MoonTalismanPatch.inBottleTalisman::get;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+ public AbstractCard getCard() {
+ return card.makeCopy();
+ }
+
+ @Override
+ public Integer onSave() {
+ return AbstractDungeon.player.masterDeck.group.indexOf(card);
+ }
+
+ @Override
+ public void onLoad(Integer cardIndex) {
+ if (cardIndex == null) {
+ return;
+ }
+ if (cardIndex >= 0 && cardIndex < AbstractDungeon.player.masterDeck.group.size()) {
+ card = AbstractDungeon.player.masterDeck.group.get(cardIndex);
+ if (card != null) {
+ MoonTalismanPatch.inBottleTalisman.set(card, true);
+ }
+ setDescriptionAfterLoading();
+ }
+ }
+
+ @Override
+ public void onEquip() {
+ cardSelected = false;
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.overlayMenu.cancelButton.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.INCOMPLETE;
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
+ if (!c.hasTag(DELVE) && c.cost != -2) {
+ tmp.addToTop(c);
+ }
+ }
+ AbstractDungeon.gridSelectScreen.open(tmp,
+ 1, DESCRIPTIONS[1] + name + LocalizedStrings.PERIOD,
+ false, false, false, false);
+ }
+
+ @Override
+ public void onUnequip() {
+ if (card != null) {
+ AbstractCard cardInDeck = AbstractDungeon.player.masterDeck.getSpecificCard(card);
+ if (cardInDeck != null) {
+ AbstractCard copy = cardInDeck.makeStatEquivalentCopy();
+
+ CardModifierManager.removeModifiersById(cardInDeck, ConjureMod.ID, true);
+ MoonTalismanPatch.inBottleTalisman.set(cardInDeck, false);
+
+// for (AbstractRelic r : AbstractDungeon.player.relics) {
+// if (r instanceof MoonTalisman) {
+// AbstractDungeon.player.loseRelic(r.relicId);
+// }
+// }
+ AbstractDungeon.topLevelEffectsQueue.add(new ShowCardBrieflyEffect(copy));
+
+ CardCrawlGame.sound.play("CARD_EXHAUST");
+ AbstractDungeon.topLevelEffects.add(new PurgeCardEffect(copy, (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
+ }
+ }
+ }
+
+ @Override
+ public void update() {
+ super.update();
+ if (!cardSelected && !AbstractDungeon.gridSelectScreen.selectedCards.isEmpty()) {
+ cardSelected = true;
+ card = AbstractDungeon.gridSelectScreen.selectedCards.get(0);
+
+ AbstractCard cardInDeck = AbstractDungeon.player.masterDeck.getSpecificCard(card);
+
+ //Note: This is the only source of this modifier on the entire character.
+ //If you detect this modifier being used, it's almost definitely from this bottle.
+ CardModifierManager.addModifier(cardInDeck, new ConjureMod());
+
+ cardRemoved = false;
+
+ MoonTalismanPatch.inBottleTalisman.set(card, true);
+ AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
+
+ AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
+ setDescriptionAfterLoading();
+ }
+ }
+
+ public void setDescriptionAfterLoading() {
+
+ boolean cardExists = false;
+
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardSelected = true;
+ cardExists = true;
+ break;
+ }
+ }
+ }
+
+ if (!cardExists) {
+ cardRemoved = true;
+ tips.clear();
+ this.description = this.DESCRIPTIONS[4];
+ this.grayscale = true;
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ return;
+ }
+
+ if (cardExists) {
+ cardRemoved = false;
+ this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
+ this.grayscale = false;
+ tips.clear();
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ }
+ }
+
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new MoonTalisman();
+ }
+
+ public boolean canSpawn() {
+
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
+ //considered && c.rarity != CardRarity.BASIC); but decided against it
+ if (!c.hasTag(DELVE) && c.cost != -2) {
+ tmp.addToTop(c);
+ }
+ }
+
+ return tmp.size() > 0;
+
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/OnAwakenRelic.java b/src/main/java/awakenedOne/relics/OnAwakenRelic.java
new file mode 100644
index 000000000..fc4fa61e2
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/OnAwakenRelic.java
@@ -0,0 +1,5 @@
+package awakenedOne.relics;
+
+public interface OnAwakenRelic {
+ void onAwaken(int amount);
+}
diff --git a/src/main/java/awakenedOne/relics/OnLoseEnergyRelic.java b/src/main/java/awakenedOne/relics/OnLoseEnergyRelic.java
new file mode 100644
index 000000000..648dfb010
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/OnLoseEnergyRelic.java
@@ -0,0 +1,5 @@
+package awakenedOne.relics;
+
+public interface OnLoseEnergyRelic {
+ void LoseEnergyAction(int e);
+}
diff --git a/src/main/java/awakenedOne/relics/RippedDoll.java b/src/main/java/awakenedOne/relics/RippedDoll.java
new file mode 100644
index 000000000..11a6e6692
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/RippedDoll.java
@@ -0,0 +1,55 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class RippedDoll extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("RippedDoll");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("RippedDoll.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("RippedDoll.png"));
+
+ //Ripped Doll
+
+ public RippedDoll() {
+ super(ID, IMG, OUTLINE, RelicTier.STARTER, LandingSound.MAGICAL);
+ }
+
+ public void onEquip() {
+ this.counter = -1;
+ }
+
+ public void onVictory() {
+ this.counter = -1;
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.counter = 0;
+ }
+
+ @Override
+ public void atTurnStart() {
+ if (this.counter < 2 && this.counter != -1) {
+ this.counter++;
+ flash();
+ atb(new ConjureAction(false, false));
+ if (this.counter == 2) {
+ this.counter = -1;
+ }
+ }
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + 2 + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/ShardOfNowak.java b/src/main/java/awakenedOne/relics/ShardOfNowak.java
new file mode 100644
index 000000000..70394cd80
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/ShardOfNowak.java
@@ -0,0 +1,104 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnLoseTempHpRelic;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class ShardOfNowak extends CustomRelic implements OnLoseTempHpRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("ShardOfNowak");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("ShardOfNowak.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("ShardOfNowak.png"));
+
+ //Gilded Bone Shard
+
+ //Brutal Orchestra mentioned!!! this is so brutal
+
+ private static final int FOCUS = 3;
+
+ private boolean isActive = false;
+
+ public ShardOfNowak() {
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.CLINK);
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.grayscale = false;
+ isActive = true;
+ this.beginLongPulse();
+ AbstractDungeon.player.addPower(new StrengthPower(AbstractDungeon.player, FOCUS));
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ }
+
+
+ @Override
+ public void onLoseHp(int damageAmount) {
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ if (!this.grayscale) {
+ this.grayscale = true;
+ AbstractPlayer p = AbstractDungeon.player;
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToTop(new ApplyPowerAction(p, p, new StrengthPower(p, -FOCUS), -FOCUS));
+ }
+ }
+ this.stopPulse();
+ isActive = false;
+ AbstractDungeon.player.hand.applyPowers();
+ }
+
+
+// public void onMonsterDeath(AbstractMonster m) {
+// if (m.currentHealth == 0 && !AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
+// if (this.grayscale) {
+// this.flash();
+// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+// this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, FOCUS), FOCUS));
+// this.grayscale = false;
+// }
+// }
+// }
+
+ @Override
+ public void onVictory() {
+ stopPulse();
+ this.isActive = false;
+ this.grayscale = false;
+ }
+
+
+ @Override
+ public int onLoseTempHp(DamageInfo info, int i) {
+ if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT) {
+ if (!this.grayscale) {
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ AbstractPlayer p = AbstractDungeon.player;
+ this.addToTop(new ApplyPowerAction(p, p, new StrengthPower(p, -FOCUS), -FOCUS));
+ }
+ }
+
+ this.stopPulse();
+ this.isActive = false;
+ this.grayscale = true;
+ AbstractDungeon.player.hand.applyPowers();
+ return i;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + FOCUS + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/ShreddedDoll.java b/src/main/java/awakenedOne/relics/ShreddedDoll.java
new file mode 100644
index 000000000..7704d43c3
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/ShreddedDoll.java
@@ -0,0 +1,99 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.util.TexLoader;
+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.powers.RitualPower;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.applyToSelf;
+import static awakenedOne.util.Wiz.atb;
+
+public class ShreddedDoll extends CustomRelic implements OnAwakenRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("ShreddedDoll");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("ShreddedDoll.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("ShreddedDoll.png"));
+ private boolean activatedthiscombat = false;
+
+ public ShreddedDoll() {
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+
+ //Shredded Doll
+
+ }
+
+
+ @Override
+ public void atBattleStart() {
+ this.beginLongPulse();
+ activatedthiscombat = false;
+ }
+
+ @Override
+ public void onVictory() {
+ stopPulse();
+ }
+
+ //Check AwakenButton.java. I'm just using this override for convenience.
+ @Override
+ public void onAwaken(int amount) {
+ if (amount == 5 && !activatedthiscombat) {
+ stopPulse();
+ activatedthiscombat = true;
+ flash();
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ applyToSelf(new RitualPower(AbstractDungeon.player, 1, true));
+ }
+ }
+
+ @Override
+ public void atTurnStart() {
+ flash();
+ atb(new ConjureAction(false));
+ }
+
+ @Override
+ public void obtain() {
+ if (AbstractDungeon.player.hasRelic(RippedDoll.ID)) {
+ for (int i = 0; i < AbstractDungeon.player.relics.size(); ++i) {
+ if (AbstractDungeon.player.relics.get(i).relicId.equals(RippedDoll.ID)) {
+ instantObtain(AbstractDungeon.player, i, true);
+ break;
+ }
+ }
+ } else {
+ super.obtain();
+ }
+ }
+
+ public boolean canSpawn() {
+ return AbstractDungeon.player.hasRelic(RippedDoll.ID);
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ // Colorize the starter relic's name
+ String name = new RippedDoll().name;
+ StringBuilder sb = new StringBuilder();
+ if (Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT) {
+ sb.append("[#").append(AwakenedOneMod.placeholderColor.toString()).append("]").append(name).append("[]");
+
+ } else {
+ for (String word : name.split(" ")) {
+ sb.append("[#").append(AwakenedOneMod.placeholderColor.toString()).append("]").append(word).append("[] ");
+ }
+ sb.setLength(sb.length() - 1);
+ sb.append("[#").append(AwakenedOneMod.placeholderColor.toString()).append("]");
+ }
+
+ return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/StrengthBooster.java b/src/main/java/awakenedOne/relics/StrengthBooster.java
new file mode 100644
index 000000000..9791d8eab
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/StrengthBooster.java
@@ -0,0 +1,44 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class StrengthBooster extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("StrengthBooster");
+ public static final int AMOUNT = 50;
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("StrengthBooster.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("StrengthBooster.png"));
+
+ //Paper Crow / Paper Krow
+
+ public StrengthBooster() {
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.FLAT);
+ }
+//
+// //Look at ApplyPowerPatch
+// public void onTrigger(int amount) {
+// if (amount > 0) {
+// this.flash();
+// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+// vigor(AMOUNT);
+// }
+// }
+
+ //debug
+ public void onSpecificTrigger(int debug) {
+ this.flash();
+ System.out.println(debug);
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/TomeOfPortalmancy.java b/src/main/java/awakenedOne/relics/TomeOfPortalmancy.java
new file mode 100644
index 000000000..325b91227
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/TomeOfPortalmancy.java
@@ -0,0 +1,61 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.ManaburnPower;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.GiantEyeEffect;
+
+import java.util.Iterator;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.atb;
+
+public class TomeOfPortalmancy extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("TomeOfPortalmancy");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("TomeOfPortalmancy.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("TomeOfPortalmancy.png"));
+
+ private static final int AMOUNT = 1;
+
+ public TomeOfPortalmancy() {
+ super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ }
+
+ //tome of portalmancy
+
+ public void onExhaust(AbstractCard card) {
+ if (card.cardID == VoidCard.ID) {
+ this.flash();
+ Iterator var2 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+
+ while (var2.hasNext()) {
+ AbstractMonster mo = (AbstractMonster) var2.next();
+ if (!mo.isDead && !mo.isDying) {
+ atb(new ApplyPowerAction(mo, AbstractDungeon.player, new ManaburnPower(mo, AMOUNT), AMOUNT));
+ this.addToBot(new VFXAction(new GiantEyeEffect(mo.hb.cX, mo.hb.cY + 300.0F * Settings.scale, new Color(1.0F, 0.3F, 1.0F, 0.0F))));
+ this.addToTop(new RelicAboveCreatureAction(mo, this));
+ }
+ }
+
+ }
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/VioletPlumage.java b/src/main/java/awakenedOne/relics/VioletPlumage.java
new file mode 100644
index 000000000..dbed641bf
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/VioletPlumage.java
@@ -0,0 +1,73 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.ui.panels.EnergyPanel;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class VioletPlumage extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("VioletPlumage");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("VioletPlumage.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("VioletPlumage.png"));
+
+ //Hey, you! Go to VioletPlumagePatch! This relic also uses code from Aspiration, the GitHub and relevant patch is linked there!
+
+ //the relic was reworked because mini black hole had to go to shop because its weird rip old effect
+ //violet plumage
+ public boolean firstTurn = false;
+ public boolean activated = false;
+ public VioletPlumage() {
+ super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ }
+
+ @Override
+ public void atPreBattle() {
+ this.beginLongPulse();
+ activated = false;
+ }
+
+ @Override
+ public void atTurnStartPostDraw() {
+ if (!(this.grayscale)) {
+ if (activated) {
+ this.stopPulse();
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ addToBot(new DrawCardAction(AbstractDungeon.player, 3));
+ this.grayscale = true;
+ }
+ }
+ activated = false;
+ }
+
+ public void onPlayerEndTurn() {
+ if (!(this.grayscale)) {
+ if (EnergyPanel.totalCount > 0) {
+ activated = true;
+ }
+ }
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.grayscale = false;
+ }
+
+ public void onVictory() {
+ this.grayscale = false;
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + 3 + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/WhiteRibbon.java b/src/main/java/awakenedOne/relics/WhiteRibbon.java
new file mode 100644
index 000000000..5148311e3
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/WhiteRibbon.java
@@ -0,0 +1,81 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+
+public class WhiteRibbon extends CustomRelic {
+
+ public static final String ID = AwakenedOneMod.makeID("WhiteRibbon");
+ private static final int AMOUNT = 3;
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("WhiteRibbon.png"));
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("WhiteRibbon.png"));
+
+ public WhiteRibbon() {
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+ }
+
+
+// @Override
+// public void atBattleStart() {
+// this.counter = -1;
+// }
+//
+// @Override
+// public void atTurnStart() {
+// this.counter = -1;
+// beginLongPulse();
+// }
+//
+// @Override
+// public void onVictory(){
+// this.counter = -1;
+// stopPulse();
+// }
+
+
+ @Override
+ public void onPlayCard(AbstractCard card, AbstractMonster m) {
+ if (card.type == AbstractCard.CardType.POWER) {
+ this.flash();
+ addToBot(new GainBlockAction(AbstractDungeon.player, AMOUNT));
+ }
+ }
+
+ public void onTrigger() {
+ flash();
+ addToBot(new GainBlockAction(AbstractDungeon.player, AMOUNT));
+ }
+
+// //Check AwakenButton.java. I'm just using this override for convenience.
+// @Override
+// public void onAwaken(int amount) {
+// if (this.counter == -1) {
+// if (amount == 1) {
+// this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+// //this should provide a little more visual feedback
+// if (Settings.FAST_MODE) {
+// this.addToTop(new VFXAction(new MiracleEffect(Color.CYAN, Color.PURPLE, "ATTACK_MAGIC_SLOW_1"), 0.0F));
+// } else {
+// this.addToTop(new VFXAction(new MiracleEffect(Color.CYAN, Color.PURPLE, "ATTACK_MAGIC_SLOW_1"), 0.3F));
+// }
+// stopPulse();
+// this.counter = 1;
+// }
+// }
+// }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/relics/ZenerDeck.java b/src/main/java/awakenedOne/relics/ZenerDeck.java
new file mode 100644
index 000000000..2f4ba77f2
--- /dev/null
+++ b/src/main/java/awakenedOne/relics/ZenerDeck.java
@@ -0,0 +1,42 @@
+package awakenedOne.relics;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.cards.tokens.spells.ESPSpell;
+import awakenedOne.util.TexLoader;
+import basemod.abstracts.CustomRelic;
+import basemod.helpers.CardPowerTip;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import static awakenedOne.AwakenedOneMod.makeRelicOutlinePath;
+import static awakenedOne.AwakenedOneMod.makeRelicPath;
+import static awakenedOne.util.Wiz.att;
+
+public class ZenerDeck extends CustomRelic {
+
+ //Zener Deck
+
+ public static final String ID = AwakenedOneMod.makeID("ZenerDeck");
+ private static final Texture IMG = TexLoader.getTexture(makeRelicPath("ZenerDeck.png")); //TODO: Images
+ private static final Texture OUTLINE = TexLoader.getTexture(makeRelicOutlinePath("ZenerDeck.png"));
+
+ public ZenerDeck() {
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.FLAT);
+ this.tips.add(new CardPowerTip(new ESPSpell()));
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ //actually conjuring it at the start of combat might be OP
+ att(new ConjureAction(false, false, true, new ESPSpell()));
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0];
+ }
+
+}
diff --git a/src/main/java/awakenedOne/ui/AwakenButton.java b/src/main/java/awakenedOne/ui/AwakenButton.java
new file mode 100644
index 000000000..32ef72ab4
--- /dev/null
+++ b/src/main/java/awakenedOne/ui/AwakenButton.java
@@ -0,0 +1,66 @@
+package awakenedOne.ui;
+
+import awakenedOne.powers.OnAwakenPower;
+import awakenedOne.relics.OnAwakenRelic;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+
+public class AwakenButton {
+
+// private static final Texture tex = TexLoader.getTexture("awakenedResources/images/ui/BecomeAwesomeButton.png");
+// private static final Texture tex_hovered = TexLoader.getTexture("awakenedResources/images/ui/BecomeAwesomeButton_hovered.png");
+
+ public AwakenButton() {
+ }
+
+ //What button? A button? A button that steals all of your energy when you click it? Never heard of it.
+
+ // @Override
+ // public void update() {
+ // super.update();
+ // if (hitbox.hovered) {
+ // ImageHelper.tipBoxAtMousePos("#yAwaken", "Click this to spend all your [E] and gain that much Awakened.");
+ // }
+ // }
+ //
+ // @Override
+ // protected void onHover() {
+ // if (canBeClicked())
+ // this.image = tex_hovered;
+ // }
+ //
+ // @Override
+ // protected void onUnhover() {
+ // this.image = tex;
+ // }
+ //
+ // @Override
+ // protected void onClick() {
+ // if (canBeClicked()) {
+ // int amount = EnergyPanel.totalCount;
+ // AbstractDungeon.player.energy.use(amount);
+ // awaken(amount);
+ // }
+ // }
+
+ public static void awaken(int amount) {
+ //Look, I'm not using this button. But I will use its subscription for a relic since it's already set up.
+ //applyToSelf(new AwakenedPower(amount));
+ for (AbstractRelic r : AbstractDungeon.player.relics) {
+ if (r instanceof OnAwakenRelic) {
+ ((OnAwakenRelic) r).onAwaken(amount);
+ }
+ }
+ for (AbstractPower p : AbstractDungeon.player.powers) {
+ if (p instanceof OnAwakenPower) {
+ ((OnAwakenPower) p).onAwaken(amount);
+ }
+ }
+ }
+
+// private boolean canBeClicked() {
+// return !AbstractDungeon.isScreenUp && AbstractDungeon.actionManager.actions.isEmpty() && AbstractDungeon.actionManager.currentAction == null && EnergyPanel.totalCount > 0;
+// }
+
+}
diff --git a/src/main/java/awakenedOne/ui/AwakenedIcon.java b/src/main/java/awakenedOne/ui/AwakenedIcon.java
new file mode 100644
index 000000000..936a00940
--- /dev/null
+++ b/src/main/java/awakenedOne/ui/AwakenedIcon.java
@@ -0,0 +1,23 @@
+package awakenedOne.ui;
+
+import awakenedOne.util.TexLoader;
+import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.icons.AbstractCustomIcon;
+
+public class AwakenedIcon extends AbstractCustomIcon {
+ public static final String ID = "awakened";
+ private static final Texture iconTex = TexLoader.getTexture("awakenedResources/images/ui/AwesomeIcon.png");
+ private static AwakenedIcon singleton;
+
+ public AwakenedIcon() {
+ super(ID, iconTex);
+ }
+
+ public static AwakenedIcon get() {
+ if (singleton == null) {
+ singleton = new AwakenedIcon();
+ }
+ return singleton;
+ }
+
+}
diff --git a/src/main/java/awakenedOne/ui/OrbitingSpells.java b/src/main/java/awakenedOne/ui/OrbitingSpells.java
new file mode 100644
index 000000000..c5a2f5d71
--- /dev/null
+++ b/src/main/java/awakenedOne/ui/OrbitingSpells.java
@@ -0,0 +1,271 @@
+package awakenedOne.ui;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.actions.ConjureAction;
+import awakenedOne.actions.SetUpNextSpellAction;
+import awakenedOne.cards.*;
+import awakenedOne.cards.tokens.spells.*;
+import awakenedOne.relics.ZenerDeck;
+import awakenedOne.util.TexLoader;
+import awakenedOne.util.Wiz;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+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.CardLibrary;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.Hitbox;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.powers.watcher.MasterRealityPower;
+import com.megacrit.cardcrawl.vfx.ThoughtBubble;
+import guardian.characters.GuardianCharacter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.ui.AwakenButton.awaken;
+import static awakenedOne.util.Wiz.atb;
+import static awakenedOne.util.Wiz.att;
+import static downfall.downfallMod.DeterministicConjure;
+
+public class OrbitingSpells {
+
+ public static final float POSITION_X = 95F * Settings.scale;
+ public static final float POSITION_Y = 300F * Settings.scale;
+
+ private static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString(makeID("Spellbook"));
+
+ private static final ArrayList spells = new ArrayList<>();
+
+ public static ArrayList spellCards = new ArrayList<>();
+ public static ArrayList boxes = new ArrayList<>();
+ private static final HashMap cardIcons = new HashMap<>();
+ private static final HashMap cardColors = new HashMap<>();
+ private static int hoveredCard = -1;
+ private static final Hitbox barBox = new Hitbox(POSITION_X - 75F * Settings.scale, Settings.HEIGHT - POSITION_Y - 350 * Settings.scale, 40 * Settings.scale, 350 * Settings.scale);
+ private static final Texture unfilledPip = TexLoader.getTexture("awakenedResources/images/ui/pip_unfilled.png");
+ private static final Texture filledPip = TexLoader.getTexture("awakenedResources/images/ui/pip_filled.png");
+ private static final Texture pipComplete = TexLoader.getTexture("awakenedResources/images/ui/pip_complete.png");
+ private static final Color defaultNextColor = Color.GREEN.cpy();
+
+ static {
+ for (int i = 0; i < 10; i++) {
+ boxes.add(new Hitbox(POSITION_X, Settings.HEIGHT - (POSITION_Y + (i * (70F * Settings.scale))) - 35 * Settings.scale, 200F * Settings.scale, 45F * Settings.scale));
+ }
+
+ cardIcons.put(BurningStudy.ID, TexLoader.getTexture("awakenedResources/images/ui/BurningStudy.png"));
+ cardIcons.put(Cryostasis.ID, TexLoader.getTexture("awakenedResources/images/ui/Cryostasis.png"));
+ cardIcons.put(Darkleech.ID, TexLoader.getTexture("awakenedResources/images/ui/Darkleech.png"));
+ cardIcons.put(Thunderbolt.ID, TexLoader.getTexture("awakenedResources/images/ui/Thunderbolt.png"));
+ //cardIcons.put(DeathCoil.ID, TexLoader.getTexture("awakenedResources/images/ui/Deathcoil.png"));
+ cardIcons.put(AphoticShield.ID, TexLoader.getTexture("awakenedResources/images/ui/AphoticShield.png"));
+ cardIcons.put(ESPSpell.ID, TexLoader.getTexture("awakenedResources/images/ui/ESPSpell.png"));
+ cardIcons.put(Grimoire.ID, TexLoader.getTexture("awakenedResources/images/ui/Grimoire.png"));
+
+ cardColors.put(BurningStudy.ID, Color.RED.cpy());
+ cardColors.put(Cryostasis.ID, placeholderColor.cpy());
+ cardColors.put(Darkleech.ID, Color.PURPLE.cpy());
+ cardColors.put(Thunderbolt.ID, Color.YELLOW.cpy());
+ cardColors.put(AphoticShield.ID, GuardianCharacter.cardRenderColor.cpy());
+ cardColors.put(ESPSpell.ID, Color.PINK.cpy());
+ cardColors.put(Grimoire.ID, Color.FIREBRICK.cpy());
+ }
+
+ static {
+ spells.add(BurningStudy.ID);
+ spells.add(Thunderbolt.ID);
+ spells.add(Cryostasis.ID);
+ spells.add(Darkleech.ID);
+ }
+
+ private static Texture getIconForCard(AbstractCard tar) {
+ return cardIcons.getOrDefault(tar.cardID, TexLoader.getTexture("awakenedResources/images/ui/defaultSpell.png"));
+ }
+
+ private static Color getColorForCard(AbstractCard tar) {
+ return cardColors.getOrDefault(tar.cardID, defaultNextColor);
+ }
+
+ public static void refreshSpells() {
+ spellCards.clear();
+ for (int i = 0; i < spells.size(); i++) {
+ addSpellCard(CardLibrary.getCard(spells.get(i)).makeCopy());
+ }
+
+ int count = (int) AbstractDungeon.actionManager.cardsPlayedThisCombat.stream().filter(q -> q instanceof Deathwish).count();
+ for (int i = 0; i < count; i++) {
+ addSpellCard(CardLibrary.getCard(DeathCoil.ID).makeCopy());
+ }
+
+ int count2 = (int) AbstractDungeon.actionManager.cardsPlayedThisCombat.stream().filter(q -> q instanceof AphoticFount).count();
+ for (int i = 0; i < count2; i++) {
+ addSpellCard(CardLibrary.getCard(AphoticShield.ID).makeCopy());
+ }
+
+ if (AbstractDungeon.player.hasRelic(ZenerDeck.ID)) {
+ addSpellCard(CardLibrary.getCard(ESPSpell.ID).makeCopy());
+ }
+ setupnext();
+ }
+
+
+ public static void upgradeCaws(int amount) {
+ for (AbstractCard c : OrbitingSpells.spellCards) {
+ if (c instanceof Caw) {
+ c.baseDamage += amount;
+ c.applyPowers();
+ }
+ }
+ }
+
+ public static void upgradeall() {
+ for (AbstractCard c : spellCards) {
+ c.upgrade();
+ }
+ }
+
+ public static void empty() {
+ spellCards.clear();
+ }
+
+ public static void addSpellCard(AbstractCard card) {
+ if (AbstractDungeon.player.hasPower(MasterRealityPower.POWER_ID)) {
+ card.upgrade();
+ }
+ if (Wiz.isAwakened()) {
+ card.upgrade();
+ }
+ if (spellCards.size() < 10) {
+ spellCards.add(card);
+ } else {
+ AbstractDungeon.effectList.add(new ThoughtBubble(AbstractDungeon.player.dialogX, AbstractDungeon.player.dialogY, 3.0F, CardCrawlGame.languagePack.getUIString("awakened:FullSpellbook").TEXT[0], true));
+ }
+ }
+
+ public static boolean removeSpellCard(AbstractCard card) {
+ int idx = getIndexOfCard(card);
+ if (idx != -1) {
+ spellCards.remove(getIndexOfCard(card));
+ att(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ if ((spellCards.isEmpty())) {
+ awaken(5);
+ OrbitingSpells.refreshSpells();
+ ConjureAction.refreshedthisturn = true;
+ } else {
+ atb(new SetUpNextSpellAction());
+ }
+ }
+ });
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean removeSpellCardSpecial(AbstractCard card) {
+ int idx = getIndexOfCard(card);
+ if (idx != -1) {
+ spellCards.remove(getIndexOfCard(card));
+ att(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ if ((spellCards.isEmpty())) {
+ awaken(5);
+ OrbitingSpells.refreshSpells();
+ ConjureAction.refreshedthisturn = true;
+ }
+ }
+ });
+ return true;
+ }
+ return false;
+ }
+
+
+ public static void setupnext() {
+ for (AbstractCard c : spellCards) {
+ c.tags.remove(UP_NEXT);
+ }
+ AbstractCard card = Wiz.getRandomItem(spellCards, AbstractDungeon.cardRandomRng);
+ int idx = getIndexOfCard(card);
+ if (idx != -1) {
+ spellCards.get(getIndexOfCard(card)).tags.add(UP_NEXT);
+ }
+ }
+
+
+ public static void atBattleStart() {
+ refreshSpells();
+ }
+
+ public static void update() {
+ hoveredCard = -1;
+ for (int i = 0; i < boxes.size(); i++) {
+ boxes.get(i).update();
+ if (boxes.get(i).hovered) {
+ if (i < spellCards.size()) {
+ hoveredCard = i;
+ }
+ }
+ }
+ }
+
+ public static void postPlayerRender(SpriteBatch sb) {
+ sb.setColor(Color.WHITE.cpy());
+ FontHelper.renderFontLeftTopAligned(sb, FontHelper.tipHeaderFont, uiStrings.TEXT[0], POSITION_X, Settings.HEIGHT - POSITION_Y + (50 * Settings.scale), Settings.GOLD_COLOR);
+ int xr = 0;
+
+ for (AbstractCard s : spellCards) {
+ drawTextureScaled(sb, getIconForCard(s), boxes.get(xr).x, boxes.get(xr).y);
+ float dist = FontHelper.getWidth(FontHelper.tipHeaderFont, s.name, 1.0F);
+
+ Color textColor = Color.WHITE.cpy();
+ if (s.hasTag(UP_NEXT) && DeterministicConjure) {
+ textColor = getColorForCard(s);
+ }
+ FontHelper.renderFontLeft(sb, FontHelper.tipHeaderFont, s.name, boxes.get(xr).x + 40F, boxes.get(xr).y + 25F, textColor);
+ xr++;
+ }
+
+ for (Hitbox h : boxes) {
+ h.render(sb);
+ }
+
+ boolean woke = Wiz.isAwakened();
+ for (int i = 0; i < Wiz.POWERS_TO_AWAKEN; i++) {
+ drawTextureScaled(sb, (woke ? pipComplete : (AbstractDungeon.actionManager.cardsPlayedThisCombat.stream().filter(card -> card.type == AbstractCard.CardType.POWER).count() - 1 >= i || AwakenedOneMod.awakenedthiscombat) ? filledPip : unfilledPip),
+ barBox.x,
+ barBox.y + (55 * Settings.yScale) * i);
+ }
+ barBox.render(sb);
+
+
+ if (hoveredCard != -1) {
+ AbstractCard tar = spellCards.get(hoveredCard);
+ tar.target_x = tar.current_x = barBox.x + 200 * Settings.scale;
+ tar.target_y = tar.current_y = Settings.HEIGHT - (POSITION_Y + 100 * Settings.scale);
+ spellCards.get(hoveredCard).render(sb);
+ }
+ }
+
+ public static void drawTextureScaled(SpriteBatch sb, Texture tex, float x, float y) {
+ sb.draw(tex, x, y, 0, 0, tex.getWidth() * Settings.scale, tex.getHeight() * Settings.scale, 1, 1, 0, 0, 0, tex.getWidth(), tex.getHeight(), false, false);
+ }
+
+ public static int getIndexOfCard(AbstractCard card) {
+ for (int i = 0; i < spellCards.size(); i++) {
+ if (spellCards.get(i).cardID.equals(card.cardID)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+}
diff --git a/src/main/java/awakenedOne/util/CardFilter.java b/src/main/java/awakenedOne/util/CardFilter.java
new file mode 100644
index 000000000..10e8ccb14
--- /dev/null
+++ b/src/main/java/awakenedOne/util/CardFilter.java
@@ -0,0 +1,14 @@
+package awakenedOne.util;
+
+import org.clapper.util.classutil.ClassFilter;
+import org.clapper.util.classutil.ClassFinder;
+import org.clapper.util.classutil.ClassInfo;
+
+public class CardFilter implements ClassFilter {
+ private static final String PACKAGE = "awakenedOne.cards";
+
+ @Override
+ public boolean accept(ClassInfo classInfo, ClassFinder classFinder) {
+ return classInfo.getClassName().startsWith(PACKAGE);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/util/OnConjureSubscriber.java b/src/main/java/awakenedOne/util/OnConjureSubscriber.java
new file mode 100644
index 000000000..4643edfc2
--- /dev/null
+++ b/src/main/java/awakenedOne/util/OnConjureSubscriber.java
@@ -0,0 +1,6 @@
+package awakenedOne.util;
+
+public interface OnConjureSubscriber {
+ default void OnConjure() {
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/util/TexLoader.java b/src/main/java/awakenedOne/util/TexLoader.java
new file mode 100644
index 000000000..ef62eb978
--- /dev/null
+++ b/src/main/java/awakenedOne/util/TexLoader.java
@@ -0,0 +1,47 @@
+package awakenedOne.util;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.utils.GdxRuntimeException;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePrefixPatch;
+
+import java.util.HashMap;
+
+public class TexLoader {
+ private static final HashMap textures = new HashMap<>();
+
+ public static Texture getTexture(final String textureString) {
+
+ if (textures.get(textureString) == null) {
+ try {
+ loadTexture(textureString, true);
+ } catch (GdxRuntimeException e) {
+ return getTexture("awakenedResources/images/ui/missing.png");
+ }
+
+ }
+ return textures.get(textureString);
+ }
+
+ private static void loadTexture(final String textureString, boolean linearFilter) throws GdxRuntimeException {
+ Texture texture = new Texture(textureString);
+ if (linearFilter) {
+ texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
+ } else {
+ texture.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
+ }
+ textures.put(textureString, texture);
+ }
+
+ @SpirePatch(clz = Texture.class, method = "dispose")
+ public static class DisposeListener {
+ @SpirePrefixPatch
+ public static void DisposeListenerPatch(final Texture __instance) {
+ textures.entrySet().removeIf(entry -> {
+ if (entry.getValue().equals(__instance))
+ System.out.println("TexLoader | Removing Texture: " + entry.getKey());
+ return entry.getValue().equals(__instance);
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/awakenedOne/util/Wiz.java b/src/main/java/awakenedOne/util/Wiz.java
new file mode 100644
index 000000000..3583f08b8
--- /dev/null
+++ b/src/main/java/awakenedOne/util/Wiz.java
@@ -0,0 +1,247 @@
+package awakenedOne.util;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.cards.DemonGlyph;
+import awakenedOne.powers.DemonGlyphPower;
+import awakenedOne.ui.OrbitingSpells;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.*;
+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.helpers.CardLibrary;
+import com.megacrit.cardcrawl.helpers.Hitbox;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.random.Random;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+
+import java.util.ArrayList;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+
+import static awakenedOne.AwakenedOneMod.*;
+import static awakenedOne.ui.AwakenButton.awaken;
+
+public class Wiz {
+ public static int POWERS_TO_AWAKEN = 8;
+
+ //The wonderful Wizard of Oz allows access to most easy compilations of data, or functions.
+ public static AbstractPlayer adp() {
+ return AbstractDungeon.player;
+ }
+
+ public static void forAllCardsInList(Consumer consumer, ArrayList cardsList) {
+ for (AbstractCard c : cardsList) {
+ consumer.accept(c);
+ }
+ }
+
+ public static ArrayList getAllCardsInCardGroups(boolean includeHand, boolean includeExhaust) {
+ ArrayList masterCardsList = new ArrayList<>();
+ masterCardsList.addAll(AbstractDungeon.player.drawPile.group);
+ masterCardsList.addAll(AbstractDungeon.player.discardPile.group);
+ if (includeHand) {
+ masterCardsList.addAll(AbstractDungeon.player.hand.group);
+ }
+ if (includeExhaust) {
+ masterCardsList.addAll(AbstractDungeon.player.exhaustPile.group);
+ }
+ return masterCardsList;
+ }
+
+ public static void forAllMonstersLiving(Consumer consumer) {
+ for (AbstractMonster m : getEnemies()) {
+ consumer.accept(m);
+ }
+ }
+
+ public static ArrayList getEnemies() {
+ ArrayList monsters = new ArrayList<>(AbstractDungeon.getMonsters().monsters);
+ monsters.removeIf(m -> m.isDead || m.isDying);
+ return monsters;
+ }
+
+ public static ArrayList getCardsMatchingPredicate(Predicate pred) {
+ return getCardsMatchingPredicate(pred, false);
+ }
+
+ public static ArrayList getCardsMatchingPredicate(Predicate pred, boolean allcards) {
+ ArrayList cardsList = new ArrayList<>();
+ if (allcards) {
+ for (AbstractCard c : CardLibrary.getAllCards()) {
+ if (pred.test(c)) cardsList.add(c.makeStatEquivalentCopy());
+ }
+ } else {
+ for (AbstractCard c : AbstractDungeon.srcCommonCardPool.group) {
+ if (pred.test(c)) cardsList.add(c.makeStatEquivalentCopy());
+ }
+ for (AbstractCard c : AbstractDungeon.srcUncommonCardPool.group) {
+ if (pred.test(c)) cardsList.add(c.makeStatEquivalentCopy());
+ }
+ for (AbstractCard c : AbstractDungeon.srcRareCardPool.group) {
+ if (pred.test(c)) cardsList.add(c.makeStatEquivalentCopy());
+ }
+ }
+ return cardsList;
+ }
+
+ public static AbstractCard returnTrulyRandomPrediCardInCombat(Predicate pred, boolean allCards) {
+ return getRandomItem(getCardsMatchingPredicate(pred, allCards));
+ }
+
+
+ public static AbstractCard returnTrulyRandomPrediCardInCombat(Predicate pred) {
+ return returnTrulyRandomPrediCardInCombat(pred, false);
+ }
+
+ public static T getRandomItem(ArrayList list, Random rng) {
+ return list.isEmpty() ? null : list.get(rng.random(list.size() - 1));
+ }
+
+ public static T getRandomItem(ArrayList list) {
+ return getRandomItem(list, AbstractDungeon.cardRandomRng);
+ }
+
+ private static boolean actuallyHovered(Hitbox hb) {
+ return InputHelper.mX > hb.x && InputHelper.mX < hb.x + hb.width && InputHelper.mY > hb.y && InputHelper.mY < hb.y + hb.height;
+ }
+
+ public static boolean isInCombat() {
+ return CardCrawlGame.isInARun() && AbstractDungeon.currMapNode != null && AbstractDungeon.getCurrRoom() != null && AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT;
+ }
+
+ public static boolean hasConjure() {
+ boolean hasbasics = false;
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.hasTag(DELVE) || c instanceof DemonGlyph) {
+ hasbasics = true;
+ }
+ }
+ return hasbasics;
+ }
+
+ public static boolean isAwakened() {
+ int cool;
+
+ cool = 0;
+
+ for (AbstractCard c : AbstractDungeon.actionManager.cardsPlayedThisCombat) {
+ if (c.type == AbstractCard.CardType.POWER) {
+ cool++;
+ }
+ }
+
+ if (AwakenedOneMod.awakenedthiscombat) {
+ cool = 100;
+ }
+
+ if (cool >= POWERS_TO_AWAKEN) {
+ if (AbstractDungeon.player.hasPower(DemonGlyphPower.POWER_ID)) {
+ att(new RemoveSpecificPowerAction(AbstractDungeon.player, AbstractDungeon.player, DemonGlyphPower.POWER_ID));
+ }
+ awakenedthiscombat = true;
+ awaken(10);
+ OrbitingSpells.upgradeall();
+ return true;
+ }
+
+ return false;
+ }
+
+
+ public static boolean isChantActive() {
+ if (AbstractDungeon.actionManager.cardsPlayedThisCombat.size() > 1) {
+ return (AbstractDungeon.actionManager.cardsPlayedThisCombat.get(AbstractDungeon.actionManager.cardsPlayedThisCombat.size() - 2).type == AbstractCard.CardType.POWER) || (AbstractDungeon.actionManager.cardsPlayedThisCombat.get(AbstractDungeon.actionManager.cardsPlayedThisCombat.size() - 1).hasTag(ACTIVECHANT));
+ }
+ return false;
+ }
+
+
+ public static void atb(AbstractGameAction action) {
+ AbstractDungeon.actionManager.addToBottom(action);
+ }
+
+ public static void att(AbstractGameAction action) {
+ AbstractDungeon.actionManager.addToTop(action);
+ }
+
+ public static void vfx(AbstractGameEffect gameEffect) {
+ atb(new VFXAction(gameEffect));
+ }
+
+ public static void vfx(AbstractGameEffect gameEffect, float duration) {
+ atb(new VFXAction(gameEffect, duration));
+ }
+
+ public static void makeInHand(AbstractCard c, int i) {
+ atb(new MakeTempCardInHandAction(c, i));
+ }
+
+ public static void makeInHand(AbstractCard c) {
+ makeInHand(c, 1);
+ }
+
+ public static void shuffleIn(AbstractCard c, int i) {
+ atb(new MakeTempCardInDrawPileAction(c, i, true, true));
+ }
+
+ public static void shuffleIn(AbstractCard c) {
+ shuffleIn(c, 1);
+ }
+
+ public static void topDeck(AbstractCard c, int i) {
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInDrawPileAction(c, i, false, true));
+ }
+
+ public static void topDeck(AbstractCard c) {
+ topDeck(c, 1);
+ }
+
+ public static void applyToEnemy(AbstractMonster m, AbstractPower po) {
+ atb(new ApplyPowerAction(m, AbstractDungeon.player, po, po.amount));
+ }
+
+ public static void applyToEnemyTop(AbstractMonster m, AbstractPower po) {
+ att(new ApplyPowerAction(m, AbstractDungeon.player, po, po.amount));
+ }
+
+ public static void applyToSelf(AbstractPower po) {
+ atb(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, po, po.amount));
+ }
+
+ public static void applyToSelfTop(AbstractPower po) {
+ att(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, po, po.amount));
+ }
+
+ public static void thornDmg(AbstractCreature m, int amount, AbstractGameAction.AttackEffect AtkFX) {
+ atb(new DamageAction(m, new DamageInfo(AbstractDungeon.player, amount, DamageInfo.DamageType.THORNS), AtkFX));
+ }
+
+ public static void thornDmg(AbstractCreature m, int amount) {
+ thornDmg(m, amount, AbstractGameAction.AttackEffect.NONE);
+ }
+
+ public static void discard(int amount, boolean isRandom) {
+ atb(new DiscardAction(adp(), adp(), amount, isRandom));
+ }
+
+ public static void discard(int amount) {
+ discard(amount, false);
+ }
+
+ public static int pwrAmt(AbstractCreature check, String ID) {
+ AbstractPower found = check.getPower(ID);
+ if (found != null) {
+ return found.amount;
+ }
+ return 0;
+ }
+
+}
diff --git a/src/main/java/champ/ChampChar.java b/src/main/java/champ/ChampChar.java
index fa76cb8d1..1879a31fd 100644
--- a/src/main/java/champ/ChampChar.java
+++ b/src/main/java/champ/ChampChar.java
@@ -18,16 +18,19 @@
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 downfall.util.TextureLoader;
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");
@@ -179,13 +182,13 @@ public void switchStanceVisualGo(String ID) {
currentIdle = "IdleBerserker";
break;
}
- case NeutralStance
- .STANCE_ID: {
- this.stateData.setMix(currentIdle, "Idle", 0.5F);
- this.state.setAnimation(0, "Idle", true);
- currentIdle = "Idle";
- break;
- }
+// case NeutralStance
+// .STANCE_ID: {
+// this.stateData.setMix(currentIdle, "Idle", 0.5F);
+// this.state.setAnimation(0, "Idle", true);
+// currentIdle = "Idle";
+// break;
+// }
case UltimateStance
.STANCE_ID: {
this.stateData.setMix(currentIdle, "IdleUltimate", 0.5F);
@@ -193,9 +196,13 @@ public void switchStanceVisualGo(String ID) {
currentIdle = "IdleUltimate";
break;
}
+ default: {
+ this.stateData.setMix(currentIdle, "Idle", 0.5F);
+ this.state.setAnimation(0, "Idle", true);
+ currentIdle = "Idle";
+ break;
+ }
}
-
-
}
@Override
@@ -244,6 +251,28 @@ public String getCustomModeCharacterButtonSoundKey() {
}
}
+
+ @Override
+ //wow look victory effect cool
+ public void updateVictoryVfx(ArrayList effects) {
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+
+ update_timer += Gdx.graphics.getDeltaTime();
+
+ update_timer += Gdx.graphics.getDeltaTime();
+
+ for (float i = 0; i + (1.0 / 120.0) <= update_timer; update_timer -= (1.0 / 120.0)) {
+ float spawn = (float) MathUtils.random(0, 10);
+ if (spawn == 1) {
+ effects.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ AbstractDungeon.effectsQueue.add(new PetalEffect());
+ }
+ }
+ }
+
+
@Override
public int getAscensionMaxHPLoss() {
return 5;
diff --git a/src/main/java/champ/ChampMod.java b/src/main/java/champ/ChampMod.java
index c24a3fb80..235faf78d 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);
@@ -397,7 +401,7 @@ public void receivePostInitialize() {
BaseMod.addEvent(new AddEventParams.Builder(Colosseum_Evil_Champ.ID, Colosseum_Evil_Champ.class) //Event ID//
//Event Spawn Condition//
- .spawnCondition(() -> evilMode && AbstractDungeon.player instanceof ChampChar)
+ .spawnCondition(() -> AbstractDungeon.player instanceof ChampChar)
//Event ID to Override//
.overrideEvent(Colosseum.ID)
//Event Type//
@@ -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));
@@ -551,6 +566,11 @@ public void receivePostUpdate() {
public static void vigor(int begone) {
+ //this breaks if the player somehow goes from 0 vigor to over 10
+ //this is possible with Gladiator Form or Masterful Slash
+ //decided to write a patch because of this
+
+ ///VigorCounterPowerArmorPatch
AbstractDungeon.actionManager.addToBottom(new AbstractGameAction() {
@Override
@@ -560,6 +580,7 @@ public void update() {
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;
+ ((PowerArmor)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger(begone - x);
}
}
AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, x), x));
diff --git a/src/main/java/champ/ChampTextHelper.java b/src/main/java/champ/ChampTextHelper.java
index 1e1d398f3..d70989376 100644
--- a/src/main/java/champ/ChampTextHelper.java
+++ b/src/main/java/champ/ChampTextHelper.java
@@ -7,9 +7,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import static automaton.FunctionHelper.WITH_DELIMITER;
import static champ.ChampMod.FINISHER;
-import static champ.ChampMod.TECHNIQUE;
public class ChampTextHelper {
protected static String[] ifStr = CardCrawlGame.languagePack.getUIString(AbstractChampCard.makeID("highlightCombos")).TEXT;
diff --git a/src/main/java/champ/StanceHelper.java b/src/main/java/champ/StanceHelper.java
index e1eb750ef..e9c288341 100644
--- a/src/main/java/champ/StanceHelper.java
+++ b/src/main/java/champ/StanceHelper.java
@@ -1,23 +1,14 @@
package champ;
-import basemod.BaseMod;
-import champ.patches.SymbolDescriptionPatch;
-import champ.stances.AbstractChampStance;
import champ.stances.BerserkerStance;
import champ.stances.DefensiveStance;
import champ.stances.UltimateStance;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector2;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.helpers.Hitbox;
-import com.megacrit.cardcrawl.helpers.TipHelper;
-import com.megacrit.cardcrawl.helpers.input.InputHelper;
-import com.megacrit.cardcrawl.rooms.AbstractRoom;
-import downfall.downfallMod;
public class StanceHelper {
diff --git a/src/main/java/champ/TipHelperChamp1.java b/src/main/java/champ/TipHelperChamp1.java
index a987381ce..c72b4c95c 100644
--- a/src/main/java/champ/TipHelperChamp1.java
+++ b/src/main/java/champ/TipHelperChamp1.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ;
import com.badlogic.gdx.graphics.Color;
diff --git a/src/main/java/champ/TipHelperChamp2.java b/src/main/java/champ/TipHelperChamp2.java
index 7c25afd3d..4e80fdf71 100644
--- a/src/main/java/champ/TipHelperChamp2.java
+++ b/src/main/java/champ/TipHelperChamp2.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ;
import champ.stances.BerserkerStance;
diff --git a/src/main/java/champ/TipHelperChamp3.java b/src/main/java/champ/TipHelperChamp3.java
index 46779c0ae..e689be184 100644
--- a/src/main/java/champ/TipHelperChamp3.java
+++ b/src/main/java/champ/TipHelperChamp3.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ;
import champ.powers.CalledShotPower;
diff --git a/src/main/java/champ/actions/AnimateSuplexAction.java b/src/main/java/champ/actions/AnimateSuplexAction.java
index bf729c429..c619758af 100644
--- a/src/main/java/champ/actions/AnimateSuplexAction.java
+++ b/src/main/java/champ/actions/AnimateSuplexAction.java
@@ -5,7 +5,6 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
public class AnimateSuplexAction extends AbstractGameAction
diff --git a/src/main/java/champ/actions/CircumventAction.java b/src/main/java/champ/actions/CircumventAction.java
index f9a0f1736..0f9560d1b 100644
--- a/src/main/java/champ/actions/CircumventAction.java
+++ b/src/main/java/champ/actions/CircumventAction.java
@@ -1,18 +1,10 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.actions;
import champ.powers.CounterPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import java.util.ArrayList;
-
public class CircumventAction extends AbstractGameAction {
public void update() {
diff --git a/src/main/java/champ/actions/DevastateAction.java b/src/main/java/champ/actions/DevastateAction.java
index b9f60e0ab..26a886f77 100644
--- a/src/main/java/champ/actions/DevastateAction.java
+++ b/src/main/java/champ/actions/DevastateAction.java
@@ -1,13 +1,9 @@
package champ.actions;
-import com.megacrit.cardcrawl.actions.GameActionManager;
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.Hitbox;
-import com.megacrit.cardcrawl.rooms.AbstractRoom;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import java.util.UUID;
diff --git a/src/main/java/champ/actions/DiscoverOpenerAction.java b/src/main/java/champ/actions/DiscoverOpenerAction.java
index c9011fd09..394aaf57d 100644
--- a/src/main/java/champ/actions/DiscoverOpenerAction.java
+++ b/src/main/java/champ/actions/DiscoverOpenerAction.java
@@ -1,8 +1,8 @@
package champ.actions;
+import basemod.BaseMod;
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -44,15 +44,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/IncreaseMiscDamageAction.java b/src/main/java/champ/actions/IncreaseMiscDamageAction.java
index f13d4af19..260802132 100644
--- a/src/main/java/champ/actions/IncreaseMiscDamageAction.java
+++ b/src/main/java/champ/actions/IncreaseMiscDamageAction.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.actions;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
diff --git a/src/main/java/champ/actions/LariatAction.java b/src/main/java/champ/actions/LariatAction.java
index 54bc0bdec..ec5cde68b 100644
--- a/src/main/java/champ/actions/LariatAction.java
+++ b/src/main/java/champ/actions/LariatAction.java
@@ -1,14 +1,11 @@
package champ.actions;
-import champ.powers.CounterPower;
import champ.stances.AbstractChampStance;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import downfall.actions.AbstractXAction;
-import theHexaghost.powers.EnhancePower;
public class LariatAction extends AbstractXAction {
private int boom;
@@ -27,7 +24,6 @@ public void update() {
if (AbstractDungeon.player.stance instanceof AbstractChampStance)
((AbstractChampStance) AbstractDungeon.player.stance).techique();
- //addToTop(new ApplyPowerAction(p, p, new CounterPower(boom), boom));
addToTop(new GainBlockAction(p, boom2));
}
this.isDone = true;
diff --git a/src/main/java/champ/actions/OpenerReduceCostAction.java b/src/main/java/champ/actions/OpenerReduceCostAction.java
index 0a53492db..63a458fb5 100644
--- a/src/main/java/champ/actions/OpenerReduceCostAction.java
+++ b/src/main/java/champ/actions/OpenerReduceCostAction.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.actions;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
diff --git a/src/main/java/champ/actions/PreciseThrustAction.java b/src/main/java/champ/actions/PreciseThrustAction.java
index e7b3ace74..59dfbb563 100644
--- a/src/main/java/champ/actions/PreciseThrustAction.java
+++ b/src/main/java/champ/actions/PreciseThrustAction.java
@@ -1,13 +1,6 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.actions;
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.GainBlockAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
diff --git a/src/main/java/champ/actions/SteelEdgeAction.java b/src/main/java/champ/actions/SteelEdgeAction.java
index 524bc7753..10425e1bd 100644
--- a/src/main/java/champ/actions/SteelEdgeAction.java
+++ b/src/main/java/champ/actions/SteelEdgeAction.java
@@ -2,9 +2,7 @@
import champ.cards.AbstractChampCard;
import com.megacrit.cardcrawl.actions.common.DamageAction;
-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.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
diff --git a/src/main/java/champ/actions/VigorWallopAction.java b/src/main/java/champ/actions/VigorWallopAction.java
new file mode 100644
index 000000000..040549a07
--- /dev/null
+++ b/src/main/java/champ/actions/VigorWallopAction.java
@@ -0,0 +1,55 @@
+package champ.actions;
+
+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/AbstractChampCard.java b/src/main/java/champ/cards/AbstractChampCard.java
index 414b9dd74..0b1bb15bf 100644
--- a/src/main/java/champ/cards/AbstractChampCard.java
+++ b/src/main/java/champ/cards/AbstractChampCard.java
@@ -4,6 +4,7 @@
import champ.ChampChar;
import champ.ChampMod;
import champ.ChampTextHelper;
+import champ.patches.SignatureMovePatch;
import champ.powers.CalledShotPower;
import champ.powers.DancingMasterPower;
import champ.relics.SignatureFinisher;
@@ -35,7 +36,6 @@
import static champ.ChampMod.*;
-
public abstract class AbstractChampCard extends AbstractDownfallCard {
protected final CardStrings cardStrings;
public String betaArtPath;
@@ -211,7 +211,7 @@ public void finisher (boolean noExit){
}
if (AbstractDungeon.player.hasRelic(SignatureFinisher.ID)) {
SignatureFinisher s = (SignatureFinisher) AbstractDungeon.player.getRelic(SignatureFinisher.ID);
- if (s.card.uuid == this.uuid) {
+ if (SignatureMovePatch.inSignatureMove.get(this)) {
leaveStance = false;
}
}
diff --git a/src/main/java/champ/cards/ArenaPreparation.java b/src/main/java/champ/cards/ArenaPreparation.java
index f0d399845..3c1f2ebe8 100644
--- a/src/main/java/champ/cards/ArenaPreparation.java
+++ b/src/main/java/champ/cards/ArenaPreparation.java
@@ -7,7 +7,6 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import expansioncontent.cardmods.PropertiesMod;
-import expansioncontent.cardmods.RetainCardMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/Backstep.java b/src/main/java/champ/cards/Backstep.java
index d66dd2e13..4a42495e6 100644
--- a/src/main/java/champ/cards/Backstep.java
+++ b/src/main/java/champ/cards/Backstep.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.ChampMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -13,11 +12,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);
+ //this.tags.add(ChampMod.OPENERDEFENSIVE);
//tags.add(ChampMod.COMBO);
//tags.add(ChampMod.COMBOBERSERKER);
postInit();
@@ -25,7 +24,7 @@ public Backstep() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- defenseOpen();
+ // defenseOpen();
blck();
}
diff --git a/src/main/java/champ/cards/BerserkerStyle.java b/src/main/java/champ/cards/BerserkerStyle.java
index 42ed18723..069e0500b 100644
--- a/src/main/java/champ/cards/BerserkerStyle.java
+++ b/src/main/java/champ/cards/BerserkerStyle.java
@@ -1,15 +1,11 @@
package champ.cards;
-import champ.ChampMod;
-import champ.powers.BerserkerStylePower;
-import champ.powers.ResolvePower;
+import champ.powers.HonePower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import static champ.ChampMod.loadJokeCardImage;
-import static champ.ChampMod.fatigue;
-
public class BerserkerStyle extends AbstractChampCard {
public final static String ID = makeID("BerserkerStyle");
@@ -18,23 +14,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/BerserkersShout.java b/src/main/java/champ/cards/BerserkersShout.java
index 1568dee58..6d805c93f 100644
--- a/src/main/java/champ/cards/BerserkersShout.java
+++ b/src/main/java/champ/cards/BerserkersShout.java
@@ -1,9 +1,7 @@
package champ.cards;
import champ.ChampMod;
-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 static champ.ChampMod.loadJokeCardImage;
@@ -17,7 +15,7 @@ public class BerserkersShout extends AbstractChampCard {
//stupid intellij stuff skill, self, uncommon
private static final int MAGIC = 3;
- private static final int UPG_MAGIC = 3;
+ private static final int UPG_MAGIC = 1;
public BerserkersShout() {
super(ID, 0, CardType.SKILL, CardRarity.BASIC, CardTarget.SELF);
@@ -44,6 +42,6 @@ public void upp() {
// tags.add(ChampMod.TECHNIQUE);
//postInit();
// initializeDescription();
- upgradeMagicNumber(3);
+ upgradeMagicNumber(UPG_MAGIC);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/BladeFlurry.java b/src/main/java/champ/cards/BladeFlurry.java
index 1a9cc4c95..4a0d985d9 100644
--- a/src/main/java/champ/cards/BladeFlurry.java
+++ b/src/main/java/champ/cards/BladeFlurry.java
@@ -1,17 +1,13 @@
package champ.cards;
-import champ.ChampMod;
import champ.powers.DualPlaySrikePower;
import champ.vfx.DaggerThrowAnyColorEffect;
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.DamageAction;
-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.vfx.combat.ThrowDaggerEffect;
import static champ.ChampMod.loadJokeCardImage;
@@ -24,7 +20,7 @@ public class BladeFlurry extends AbstractChampCard {
private static final int DAMAGE = 6;
public BladeFlurry() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
tags.add(CardTags.STRIKE);
loadJokeCardImage(this, "BladeFlurry.png");
diff --git a/src/main/java/champ/cards/BringItOn.java b/src/main/java/champ/cards/BringItOn.java
index e9b542f8b..2159ebc1d 100644
--- a/src/main/java/champ/cards/BringItOn.java
+++ b/src/main/java/champ/cards/BringItOn.java
@@ -12,8 +12,8 @@ public class BringItOn extends AbstractChampCard {
public BringItOn() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = 8;
- baseMagicNumber = magicNumber = 8;
+ baseBlock = 7;
+ baseMagicNumber = magicNumber = 7;
tags.add(ChampMod.FINISHER);
postInit();
loadJokeCardImage(this, "BringItOn.png");
diff --git a/src/main/java/champ/cards/CalledShot.java b/src/main/java/champ/cards/CalledShot.java
index 19e16d144..23a631f8c 100644
--- a/src/main/java/champ/cards/CalledShot.java
+++ b/src/main/java/champ/cards/CalledShot.java
@@ -1,14 +1,9 @@
package champ.cards;
import champ.ChampMod;
-import champ.powers.CalledShotPower;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
-import champ.stances.UltimateStance;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import sneckomod.SneckoMod;
diff --git a/src/main/java/champ/cards/CheapShot.java b/src/main/java/champ/cards/CheapShot.java
index 65548f8fe..d2ccc1045 100644
--- a/src/main/java/champ/cards/CheapShot.java
+++ b/src/main/java/champ/cards/CheapShot.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.ChampMod;
import charbosses.bosses.Merchant.CharBossMerchant;
import com.evacipated.cardcrawl.mod.stslib.actions.common.StunMonsterAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
@@ -31,7 +30,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
atb(new VFXAction(new WallopEffect(30, m.hb.cX, m.hb.cY)));
dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
- if (m.type != AbstractMonster.EnemyType.BOSS || m instanceof CharBossMerchant) {
+ if (m.type != AbstractMonster.EnemyType.BOSS && !(m instanceof CharBossMerchant)) {
atb(new StunMonsterAction(m, p));
} else {
dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
diff --git a/src/main/java/champ/cards/Circumvent.java b/src/main/java/champ/cards/Circumvent.java
index e5def7e19..a5e3e66da 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;
@@ -12,8 +13,10 @@ public class Circumvent extends AbstractChampCard {
public Circumvent() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = 7;
+ baseBlock = 6;
baseMagicNumber = magicNumber = 2;
+ tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(ChampMod.COMBO);
postInit();
loadJokeCardImage(this, "Circumvent.png");
}
@@ -21,7 +24,12 @@ public Circumvent() {
public void use(AbstractPlayer p, AbstractMonster m) {
blck();
atb(new DrawCardAction(magicNumber));
- atb(new DiscardAction(p, p, magicNumber, false));
+ if (!dcombo()) atb(new DiscardAction(p, p, magicNumber, false));
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
public void upp() {
diff --git a/src/main/java/champ/cards/CrownThrow.java b/src/main/java/champ/cards/CrownThrow.java
index 5e0395e19..b55de74d8 100644
--- a/src/main/java/champ/cards/CrownThrow.java
+++ b/src/main/java/champ/cards/CrownThrow.java
@@ -1,12 +1,9 @@
package champ.cards;
-import basemod.devcommands.draw.Draw;
import basemod.helpers.VfxBuilder;
import champ.ChampMod;
-import champ.powers.DoubleStyleThisTurnPower;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
-import com.megacrit.cardcrawl.actions.utility.DrawPileToHandAction;
import downfall.util.TextureLoader;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -52,7 +49,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/DancingMaster.java b/src/main/java/champ/cards/DancingMaster.java
index 22a97b1e9..04cb01adb 100644
--- a/src/main/java/champ/cards/DancingMaster.java
+++ b/src/main/java/champ/cards/DancingMaster.java
@@ -1,11 +1,8 @@
package champ.cards;
-import automaton.AutomatonMod;
-import champ.ChampMod;
import champ.powers.DancingMasterPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/DefensiveShout.java b/src/main/java/champ/cards/DefensiveShout.java
index d7c492c17..a3f440d75 100644
--- a/src/main/java/champ/cards/DefensiveShout.java
+++ b/src/main/java/champ/cards/DefensiveShout.java
@@ -37,6 +37,6 @@ public void upp() {
// tags.add(ChampMod.TECHNIQUE);
// postInit();
// initializeDescription();
- upgradeMagicNumber(4);
+ upgradeMagicNumber(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/DefensiveStyle.java b/src/main/java/champ/cards/DefensiveStyle.java
index f58c918ce..e18b50c59 100644
--- a/src/main/java/champ/cards/DefensiveStyle.java
+++ b/src/main/java/champ/cards/DefensiveStyle.java
@@ -1,16 +1,12 @@
package champ.cards;
-import champ.ChampMod;
+import champ.powers.BerserkerStylePower;
import champ.powers.DefensiveStylePower;
-import champ.powers.FocusedDefPower;
-import champ.powers.ResolvePower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import static champ.ChampMod.loadJokeCardImage;
-import static champ.ChampMod.fatigue;
-
public class DefensiveStyle extends AbstractChampCard {
public final static String ID = makeID("DefensiveStyle");
@@ -18,24 +14,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/EnGarde.java b/src/main/java/champ/cards/EnGarde.java
index efa526717..29523b4f4 100644
--- a/src/main/java/champ/cards/EnGarde.java
+++ b/src/main/java/champ/cards/EnGarde.java
@@ -1,13 +1,8 @@
package champ.cards;
-import champ.ChampMod;
-import champ.powers.CounterPower;
import champ.powers.EnGardePower;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/EnchantCrown.java b/src/main/java/champ/cards/EnchantCrown.java
index c170ccadb..f8b6233f1 100644
--- a/src/main/java/champ/cards/EnchantCrown.java
+++ b/src/main/java/champ/cards/EnchantCrown.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.powers.ResolvePower;
import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -9,8 +8,6 @@
import static champ.ChampMod.loadJokeCardImage;
-import static champ.ChampMod.fatigue;
-
public class EnchantCrown extends AbstractChampCard {
public final static String ID = makeID("EnchantCrown");
diff --git a/src/main/java/champ/cards/EnchantShield.java b/src/main/java/champ/cards/EnchantShield.java
index 668bc626d..8761e47b1 100644
--- a/src/main/java/champ/cards/EnchantShield.java
+++ b/src/main/java/champ/cards/EnchantShield.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.powers.ResolvePower;
import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -9,8 +8,6 @@
import static champ.ChampMod.loadJokeCardImage;
-import static champ.ChampMod.fatigue;
-
public class EnchantShield extends AbstractChampCard {
public final static String ID = makeID("EnchantShield");
diff --git a/src/main/java/champ/cards/EnchantSword.java b/src/main/java/champ/cards/EnchantSword.java
index f89fa39ec..9892825cc 100644
--- a/src/main/java/champ/cards/EnchantSword.java
+++ b/src/main/java/champ/cards/EnchantSword.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.powers.ResolvePower;
import com.evacipated.cardcrawl.mod.stslib.actions.common.SelectCardsInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -9,8 +8,6 @@
import static champ.ChampMod.loadJokeCardImage;
-import static champ.ChampMod.fatigue;
-
public class EnchantSword extends AbstractChampCard {
public final static String ID = makeID("EnchantSword");
diff --git a/src/main/java/champ/cards/Encircle.java b/src/main/java/champ/cards/Encircle.java
index 85db1fa48..8569472e2 100644
--- a/src/main/java/champ/cards/Encircle.java
+++ b/src/main/java/champ/cards/Encircle.java
@@ -1,10 +1,11 @@
package champ.cards;
-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.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.WhirlwindEffect;
@@ -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");
}
@@ -35,10 +37,11 @@ public void use(AbstractPlayer p, AbstractMonster m) {
atb(new VFXAction(new WhirlwindEffect(), 0.0F));
allDmg(AbstractGameAction.AttackEffect.NONE);
- for (AbstractMonster q : monsterList()) {
- techique();
+ for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
+ if ((!monster.isDeadOrEscaped())) {
+ atb(new DrawCardAction(magicNumber));
+ }
}
-
}
public void upp() {
diff --git a/src/main/java/champ/cards/Endure.java b/src/main/java/champ/cards/Endure.java
index 451351018..3089ed5b1 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 = 6;
postInit();
+
loadJokeCardImage(this, "Endure.png");
+
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ defenseOpen();
blck();
}
diff --git a/src/main/java/champ/cards/FaceSlap.java b/src/main/java/champ/cards/FaceSlap.java
index c3aabc5d5..a3833fc85 100644
--- a/src/main/java/champ/cards/FaceSlap.java
+++ b/src/main/java/champ/cards/FaceSlap.java
@@ -2,11 +2,8 @@
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-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 com.megacrit.cardcrawl.powers.VulnerablePower;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/FalseCounter.java b/src/main/java/champ/cards/FalseCounter.java
index 57d85733f..a9b62600a 100644
--- a/src/main/java/champ/cards/FalseCounter.java
+++ b/src/main/java/champ/cards/FalseCounter.java
@@ -1,20 +1,12 @@
package champ.cards;
import champ.ChampMod;
-import champ.powers.CounterPower;
import champ.powers.EnergizedDurationPower;
-import champ.powers.FalseCounterPower;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
-import champ.stances.UltimateStance;
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.DrawCardNextTurnPower;
-import com.megacrit.cardcrawl.powers.EnergizedPower;
-import slimebound.powers.EnergizedSlimeboundPower;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/FanOfKnives.java b/src/main/java/champ/cards/FanOfKnives.java
index 3c2fb1425..c0b9fdbf0 100644
--- a/src/main/java/champ/cards/FanOfKnives.java
+++ b/src/main/java/champ/cards/FanOfKnives.java
@@ -17,11 +17,11 @@ public class FanOfKnives extends AbstractChampCard {
//stupid intellij stuff attack, enemy, common
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 4;
private static final int UPG_DAMAGE = 2;
public FanOfKnives() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
baseDamage = DAMAGE;
isMultiDamage = true;
// tags.add(ChampMod.OPENER);
diff --git a/src/main/java/champ/cards/FlashCut.java b/src/main/java/champ/cards/FlashCut.java
index b3b42e903..236349070 100644
--- a/src/main/java/champ/cards/FlashCut.java
+++ b/src/main/java/champ/cards/FlashCut.java
@@ -15,12 +15,12 @@ public class FlashCut extends AbstractChampCard {
//stupid intellij stuff attack, enemy, common
private static final int DAMAGE = 6;
- private static final int UPG_DAMAGE = 2;
+ private static final int UPG_DAMAGE = 3;
- private static final int BLOCK = 4;
+ private static final int BLOCK = 5;
private static final int UPG_BLOCK = 2;
- private static final int MAGIC = 4;
+ private static final int MAGIC = 5;
private static final int UPG_MAGIC = 2;
public FlashCut() {
diff --git a/src/main/java/champ/cards/FocusedBerserking.java b/src/main/java/champ/cards/FocusedBerserking.java
index 4260f14e5..68f299317 100644
--- a/src/main/java/champ/cards/FocusedBerserking.java
+++ b/src/main/java/champ/cards/FocusedBerserking.java
@@ -1,11 +1,8 @@
package champ.cards;
import champ.ChampMod;
-import champ.powers.BerserkerStylePower;
-import champ.powers.FocusedBerPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/GladiatorStyle.java b/src/main/java/champ/cards/GladiatorStyle.java
index d6ab08ef0..c47d44ce3 100644
--- a/src/main/java/champ/cards/GladiatorStyle.java
+++ b/src/main/java/champ/cards/GladiatorStyle.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
@@ -12,17 +13,29 @@ public class GladiatorStyle extends AbstractChampCard {
public GladiatorStyle() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 1;
+ baseMagicNumber = magicNumber = 2;
+ tags.add(ChampMod.COMBO);
+ tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(ChampMod.COMBOBERSERKER);
postInit();
loadJokeCardImage(this, "GladiatorStyle.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new StrengthPower(p, magicNumber));
- applyToSelf(new DexterityPower(p, magicNumber));
+ if (dcombo()) {
+ applyToSelf(new DexterityPower(p, magicNumber));
+ }
+ if (bcombo()){
+ applyToSelf(new StrengthPower(p, magicNumber));
+ }
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = (bcombo() || dcombo()) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/GutPunch.java b/src/main/java/champ/cards/GutPunch.java
index 309507a38..dddb0298e 100644
--- a/src/main/java/champ/cards/GutPunch.java
+++ b/src/main/java/champ/cards/GutPunch.java
@@ -29,7 +29,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
//berserkOpen();
dmg(m, AbstractGameAction.AttackEffect.BLUNT_LIGHT);
// fatigue(2);
- if (bcombo() || dcombo()) {
+ if (bcombo() || dcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
triggerOpenerRelics(AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID));
ultimateStance();
applyToSelf(new UltimateFormPower(1));
@@ -43,6 +43,6 @@ public void upp() {
@Override
public void triggerOnGlowCheck() {
- glowColor = dcombo() || bcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ glowColor = dcombo() || bcombo() || !AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID) ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Haymaker.java b/src/main/java/champ/cards/Haymaker.java
index e06762d35..350962e5f 100644
--- a/src/main/java/champ/cards/Haymaker.java
+++ b/src/main/java/champ/cards/Haymaker.java
@@ -4,8 +4,6 @@
import champ.actions.AnimateSuplexAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/HeavySlash.java b/src/main/java/champ/cards/HeavySlash.java
index 19f4f9bad..3f037ca4e 100644
--- a/src/main/java/champ/cards/HeavySlash.java
+++ b/src/main/java/champ/cards/HeavySlash.java
@@ -1,11 +1,11 @@
package champ.cards;
+import champ.actions.VigorWallopAction;
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 com.megacrit.cardcrawl.unlock.UnlockTracker;
import static champ.ChampMod.loadJokeCardImage;
@@ -14,25 +14,16 @@ public class HeavySlash extends AbstractChampCard {
public HeavySlash() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 10;
+ baseDamage = 9;
postInit();
loadJokeCardImage(this, "HeavySlash.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
- AbstractCard c = AbstractDungeon.returnTrulyRandomCardInCombat(CardType.SKILL).makeCopy();
- c.isSeen = true;
- UnlockTracker.markCardAsSeen(c.cardID);
- c.modifyCostForCombat(-99);
- if (upgraded) c.upgrade();
- makeInHand(c);
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new VigorWallopAction((AbstractCreature)m, (AbstractCreature)p, this.damage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_HEAVY));
}
-
public void upp() {
upgradeDamage(3);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/IgnorePain.java b/src/main/java/champ/cards/IgnorePain.java
index 91a82ac49..302a4020c 100644
--- a/src/main/java/champ/cards/IgnorePain.java
+++ b/src/main/java/champ/cards/IgnorePain.java
@@ -2,12 +2,9 @@
import champ.ChampMod;
import champ.powers.PushThroughPower;
-import champ.powers.ResolvePower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import static champ.ChampMod.fatigue;
-
import static champ.ChampMod.loadJokeCardImage;
public class IgnorePain extends AbstractChampCard {
@@ -19,8 +16,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 +29,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
// techique();
// fatigue(5);
applyToSelf(new PushThroughPower(1));
+ finisher();
}
public void upp() {
diff --git a/src/main/java/champ/cards/Improvising.java b/src/main/java/champ/cards/Improvising.java
index de2817eba..29e823153 100644
--- a/src/main/java/champ/cards/Improvising.java
+++ b/src/main/java/champ/cards/Improvising.java
@@ -3,7 +3,6 @@
import champ.powers.ImprovisingPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -13,14 +12,15 @@ public class Improvising extends AbstractChampCard {
public Improvising() {
super(ID, 1, 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);
+ upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Lariat.java b/src/main/java/champ/cards/Lariat.java
index c5a9234b5..097b38bdb 100644
--- a/src/main/java/champ/cards/Lariat.java
+++ b/src/main/java/champ/cards/Lariat.java
@@ -1,6 +1,8 @@
package champ.cards;
+import automaton.actions.EasyXCostAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.ui.panels.EnergyPanel;
@@ -11,7 +13,7 @@ public class Lariat extends AbstractChampCard {
public Lariat() {
super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 7;
+ baseBlock = 5;
postInit();
loadJokeCardImage(this, "Lariat.png");
}
@@ -22,6 +24,19 @@ 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));
+
+ }
+
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.STANCE.NAMES[0].toLowerCase());
}
public void upp() {
diff --git a/src/main/java/champ/cards/LastStand.java b/src/main/java/champ/cards/LastStand.java
index c771aad22..79df8c419 100644
--- a/src/main/java/champ/cards/LastStand.java
+++ b/src/main/java/champ/cards/LastStand.java
@@ -5,7 +5,6 @@
import com.megacrit.cardcrawl.actions.animations.ShoutAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.actions.unique.RemoveDebuffsAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -61,6 +60,7 @@ public String getLimitBreak() {
}
public void upp() {
+ //upgradeMagicNumber(3);
upgradeBaseCost(0);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/MurderStrike.java b/src/main/java/champ/cards/MurderStrike.java
index 04890aee7..bd7541e51 100644
--- a/src/main/java/champ/cards/MurderStrike.java
+++ b/src/main/java/champ/cards/MurderStrike.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.ChampMod;
import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -16,7 +15,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 +47,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
+ upgradeDamage(3);
upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/Parry.java b/src/main/java/champ/cards/Parry.java
index 8b49e4e17..f9386868c 100644
--- a/src/main/java/champ/cards/Parry.java
+++ b/src/main/java/champ/cards/Parry.java
@@ -14,8 +14,8 @@ public class Parry extends AbstractChampCard {
public Parry() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 6;
- baseMagicNumber = magicNumber = 10;
+ baseBlock = 8;
+ baseMagicNumber = magicNumber = 4;
AbstractCard c = new Riposte();
c.rawDescription = UPGRADE_DESCRIPTION;
c.initializeDescription();
@@ -31,6 +31,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeMagicNumber(6);
+ upgradeBlock(4);
+ upgradeMagicNumber(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/PreciseThrust.java b/src/main/java/champ/cards/PreciseThrust.java
index 98e67e41b..c801d6ac8 100644
--- a/src/main/java/champ/cards/PreciseThrust.java
+++ b/src/main/java/champ/cards/PreciseThrust.java
@@ -1,10 +1,7 @@
package champ.cards;
import champ.ChampMod;
-import champ.actions.ModifyDamageAndBlockAction;
-import champ.actions.PreciseThrustAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.watcher.WallopAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
diff --git a/src/main/java/champ/cards/PreemptiveStrike.java b/src/main/java/champ/cards/PreemptiveStrike.java
index 8e7562e54..f08d75b95 100644
--- a/src/main/java/champ/cards/PreemptiveStrike.java
+++ b/src/main/java/champ/cards/PreemptiveStrike.java
@@ -1,13 +1,13 @@
package champ.cards;
+import champ.ChampMod;
import champ.powers.CounterPower;
-import champ.stances.DefensiveStance;
-import champ.stances.UltimateStance;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
@@ -20,14 +20,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 +61,11 @@ public void onMoveToDiscard() {
this.initializeDescription();
}
+ @Override
+ public void triggerOnGlowCheck() {
+ glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ }
+
public void upp() {
upgradeBaseCost(0);
}
diff --git a/src/main/java/champ/cards/RageSigil.java b/src/main/java/champ/cards/RageSigil.java
index f759d0809..597a1b6c0 100644
--- a/src/main/java/champ/cards/RageSigil.java
+++ b/src/main/java/champ/cards/RageSigil.java
@@ -1,5 +1,6 @@
package champ.cards;
+import champ.ChampMod;
import com.megacrit.cardcrawl.actions.utility.ScryAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -14,11 +15,14 @@ public RageSigil() {
super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = 2;
baseMagicNumber = magicNumber = 3;
+ tags.add(ChampMod.OPENER);
+ this.tags.add(ChampMod.OPENERDEFENSIVE);
postInit();
loadJokeCardImage(this, "RageSigil.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ defenseOpen();
blck();
atb(new ScryAction(magicNumber));
}
diff --git a/src/main/java/champ/cards/RapidStrikes.java b/src/main/java/champ/cards/RapidStrikes.java
index 1f5c3d0a0..bf01e39cc 100644
--- a/src/main/java/champ/cards/RapidStrikes.java
+++ b/src/main/java/champ/cards/RapidStrikes.java
@@ -18,7 +18,7 @@ public class RapidStrikes extends AbstractChampCard {
private static final int DAMAGE = 4;
public RapidStrikes() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
tags.add(CardTags.STRIKE);
baseMagicNumber = magicNumber = 2;
diff --git a/src/main/java/champ/cards/RecklessLeap.java b/src/main/java/champ/cards/RecklessLeap.java
index b1856e81d..95e2c39e1 100644
--- a/src/main/java/champ/cards/RecklessLeap.java
+++ b/src/main/java/champ/cards/RecklessLeap.java
@@ -1,12 +1,9 @@
package champ.cards;
import champ.ChampMod;
-import champ.stances.AbstractChampStance;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import static champ.ChampMod.loadJokeCardImage;
@@ -17,30 +14,33 @@ public class RecklessLeap extends AbstractChampCard {
//stupid intellij stuff attack, self_and_enemy, uncommon
- private static final int DAMAGE = 18;
- private static final int UPG_DAMAGE = 2;
+ private static final int DAMAGE = 6;
+ private static final int UPG_DAMAGE = 3;
- private static final int MAGIC = 3;
+ private static final int MAGIC = 1;
private static final int UPG_MAGIC = 1;
public RecklessLeap() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = DAMAGE;
baseMagicNumber = magicNumber = MAGIC;
//myHpLossCost = MAGIC;
- tags.add(CardTags.STRIKE);
+ tags.add(ChampMod.OPENER);
+ this.tags.add(ChampMod.OPENERBERSERKER);
exhaust = true;
+ tags.add(CardTags.STRIKE);
loadJokeCardImage(this, "RecklessLeap.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ berserkOpen();
dmg(m, AbstractGameAction.AttackEffect.SLASH_HEAVY);
- applyToSelf(new StrengthPower(p, 2));
- applyToSelf(new DexterityPower(p, -1));
+ applyToSelf(new StrengthPower(p, magicNumber));
}
public void upp() {
exhaust = false;
+ upgradeDamage(3);
rawDescription = UPGRADE_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/champ/cards/Riposte.java b/src/main/java/champ/cards/Riposte.java
index 19ec9fb0b..fc23ccce2 100644
--- a/src/main/java/champ/cards/Riposte.java
+++ b/src/main/java/champ/cards/Riposte.java
@@ -13,9 +13,10 @@ public class Riposte extends AbstractChampCard {
public final static String ID = makeID("Riposte");
public Riposte() {
- super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
+ super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 0;
isEthereal = true;
+ tags.add(CardTags.STRIKE);
exhaust = true;
postInit();
loadJokeCardImage(this, "Riposte.png");
@@ -26,6 +27,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeDamage(3);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/RisingSlash.java b/src/main/java/champ/cards/RisingSlash.java
index d7d43ec4f..c5677807d 100644
--- a/src/main/java/champ/cards/RisingSlash.java
+++ b/src/main/java/champ/cards/RisingSlash.java
@@ -13,9 +13,10 @@ public class RisingSlash extends AbstractChampCard {
public final static String ID = makeID("RisingSlash");
public RisingSlash() {
- super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = 8;
+ super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ baseDamage = 5;
tags.add(CardTags.STRIKE);
+ this.selfRetain = true;
loadJokeCardImage(this, "RisingSlash.png");
}
@@ -34,6 +35,6 @@ public void triggerOnGlowCheck() {
}
public void upp() {
- upgradeDamage(3);
+ upgradeDamage(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/SetATrap.java b/src/main/java/champ/cards/SetATrap.java
index 459118ac8..fac7441d1 100644
--- a/src/main/java/champ/cards/SetATrap.java
+++ b/src/main/java/champ/cards/SetATrap.java
@@ -1,19 +1,9 @@
package champ.cards;
import champ.ChampMod;
-import champ.powers.CounterPower;
-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.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.WeakPower;
-import downfall.util.CardIgnore;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/Shatter.java b/src/main/java/champ/cards/Shatter.java
index a74d9a507..b93032bd3 100644
--- a/src/main/java/champ/cards/Shatter.java
+++ b/src/main/java/champ/cards/Shatter.java
@@ -2,11 +2,14 @@
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
-import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+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.ArtifactPower;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.stances.NeutralStance;
+import hermit.cards.AbstractDynamicCard;
import static champ.ChampMod.loadJokeCardImage;
@@ -17,24 +20,39 @@ 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() {
+ upgradeName();
upgradeDamage(2);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
+
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/ShieldSigil.java b/src/main/java/champ/cards/ShieldSigil.java
index 7a7156a96..7e1908d94 100644
--- a/src/main/java/champ/cards/ShieldSigil.java
+++ b/src/main/java/champ/cards/ShieldSigil.java
@@ -1,6 +1,5 @@
package champ.cards;
-import champ.ChampMod;
import champ.powers.DoubleStyleThisTurnPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
diff --git a/src/main/java/champ/cards/ShieldThrow.java b/src/main/java/champ/cards/ShieldThrow.java
index 491c1ae83..e8cf1d9d6 100644
--- a/src/main/java/champ/cards/ShieldThrow.java
+++ b/src/main/java/champ/cards/ShieldThrow.java
@@ -2,13 +2,11 @@
import champ.ChampMod;
import champ.powers.NoBlockNextTurnPower;
+import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
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 com.megacrit.cardcrawl.powers.WeakPower;
import static champ.ChampMod.loadJokeCardImage;
@@ -19,9 +17,8 @@ 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);
@@ -30,8 +27,7 @@ public ShieldThrow() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- //finisher();
- blck();
+ // blck();
this.baseDamage = p.currentBlock;
this.calculateCardDamage(m);
dmg(m, AbstractGameAction.AttackEffect.SMASH);
@@ -39,14 +35,14 @@ 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 NoBlockNextTurnPower(1));
// if (bcombo()) atb(new ReducePowerAction(p,p,FrailPower.POWER_ID,2));
- // finisher();
+ // finisher();
}
@Override
public void triggerOnGlowCheck() {
- glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ glowColor = dcombo() ? GOLD_BORDER_GLOW_COLOR : Color.RED.cpy();
}
public void applyPowers() {
@@ -71,6 +67,6 @@ public void calculateCardDamage(AbstractMonster mo) {
}
public void upp() {
- upgradeBaseCost(0);
+ upgradeBaseCost(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/StanceDance.java b/src/main/java/champ/cards/StanceDance.java
index 1bd9cbc81..02bad98b8 100644
--- a/src/main/java/champ/cards/StanceDance.java
+++ b/src/main/java/champ/cards/StanceDance.java
@@ -3,15 +3,11 @@
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;
@@ -33,11 +29,8 @@ public StanceDance() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- //if (upgraded) techique();
atb(new OctoChoiceAction(m, this));
postInit();
-
}
public ArrayList choiceList() {
@@ -50,31 +43,16 @@ public ArrayList choiceList() {
public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
switch (card.cardID) {
case "octo:OctoBerserk":
- if (upgraded || AbstractDungeon.player.stance.ID.equals(BerserkerStance.STANCE_ID)|| AbstractDungeon.player.stance.ID.equals(champ.stances.UltimateStance.STANCE_ID)) {
- ArrayList rCardList = new ArrayList();
- for (AbstractCard t : CardLibrary.getAllCards()) {
- if (!UnlockTracker.isCardLocked(t.cardID) && t.hasTag(ChampMod.COMBOBERSERKER) &&!t.hasTag(CardTags.HEALING))
- rCardList.add(t);
- }
- AbstractCard r = rCardList.get(AbstractDungeon.cardRandomRng.random(rCardList.size() - 1));
- UnlockTracker.markCardAsSeen(r.cardID);
- makeInHand(r);
- }
ChampMod.berserkOpen();
-
+ BerserkerStance bs = new BerserkerStance();
+ bs.techique();
+ if (upgraded) bs.techique();
break;
case "octo:OctoDefense":
- if (upgraded || AbstractDungeon.player.stance.ID.equals(DefensiveStance.STANCE_ID) || AbstractDungeon.player.stance.ID.equals(UltimateStance.STANCE_ID)) {
- ArrayList rCardList = new ArrayList();
- for (AbstractCard t : CardLibrary.getAllCards()) {
- if (!UnlockTracker.isCardLocked(t.cardID) && t.hasTag(ChampMod.COMBODEFENSIVE) &&!t.hasTag(CardTags.HEALING))
- rCardList.add(t);
- }
- AbstractCard r = rCardList.get(AbstractDungeon.cardRandomRng.random(rCardList.size() - 1));
- UnlockTracker.markCardAsSeen(r.cardID);
- makeInHand(r);
- }
ChampMod.defenseOpen();
+ DefensiveStance ds = new DefensiveStance();
+ ds.techique();
+ if (upgraded) ds.techique();
break;
}
diff --git a/src/main/java/champ/cards/StanceDanceCrown.java b/src/main/java/champ/cards/StanceDanceCrown.java
new file mode 100644
index 000000000..6be5e1fc3
--- /dev/null
+++ b/src/main/java/champ/cards/StanceDanceCrown.java
@@ -0,0 +1,35 @@
+package champ.cards;
+
+import basemod.patches.com.megacrit.cardcrawl.screens.compendium.CardLibraryScreen.NoCompendium;
+import champ.ChampMod;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+import static champ.ChampMod.loadJokeCardImage;
+@NoCompendium
+public class StanceDanceCrown extends AbstractChampCard {
+
+ 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);
+ tags.add(ChampMod.OPENERNOTIN);
+ loadJokeCardImage(this, "StanceDance.png");
+ this.exhaust = true;
+ this.selfRetain = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.player.useJumpAnimation();
+ }
+
+ public void upp() {
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ this.exhaust = false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/SteelEdge.java b/src/main/java/champ/cards/SteelEdge.java
index f7d79830a..397181c29 100644
--- a/src/main/java/champ/cards/SteelEdge.java
+++ b/src/main/java/champ/cards/SteelEdge.java
@@ -3,8 +3,12 @@
import automaton.actions.EasyXCostAction;
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.GoldenSlashEffect;
import static champ.ChampMod.loadJokeCardImage;
@@ -13,17 +17,22 @@ public class SteelEdge extends AbstractChampCard {
public SteelEdge() {
super(ID, -1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 8;
+ baseDamage = 6;
this.tags.add(ChampMod.FINISHER);
postInit();
loadJokeCardImage(this, "SteelEdge.png");
}
-
public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.player.useJumpAnimation();
+
atb(new EasyXCostAction(this, (effect, params) -> {
for (int i = 0; i < effect; i++) {
- dmg(m, AbstractGameAction.AttackEffect.SLASH_VERTICAL);
+ atb(new VFXAction(new GoldenSlashEffect(m.hb.cX + 30.0F * Settings.scale, m.hb.cY, true), 0.1F));
+ dmg(m, AbstractGameAction.AttackEffect.NONE);
+ if ((i < effect-1) && (effect !=0)){
+ finisher(true);
+ }
}
return true;
}));
diff --git a/src/main/java/champ/cards/StrikeOfGenius.java b/src/main/java/champ/cards/StrikeOfGenius.java
index 58c9e93c6..94d1144bd 100644
--- a/src/main/java/champ/cards/StrikeOfGenius.java
+++ b/src/main/java/champ/cards/StrikeOfGenius.java
@@ -4,7 +4,6 @@
import champ.powers.StrikeOfGeniusUpgradedPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import sneckomod.SneckoMod;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/SwordSigil.java b/src/main/java/champ/cards/SwordSigil.java
index 9acaaa876..b0fa798cd 100644
--- a/src/main/java/champ/cards/SwordSigil.java
+++ b/src/main/java/champ/cards/SwordSigil.java
@@ -1,7 +1,7 @@
package champ.cards;
-import champ.ChampMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import static champ.ChampMod.loadJokeCardImage;
@@ -11,9 +11,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");
}
@@ -23,8 +23,15 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
}
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.STANCE.NAMES[0].toLowerCase());
+ }
+
public void upp() {
- upgradeMagicNumber(2);
+ upgradeMagicNumber(1);
// upgradeCool(2);
}
+
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/SwordThrow.java b/src/main/java/champ/cards/SwordThrow.java
index 6b910e332..a7deeb25a 100644
--- a/src/main/java/champ/cards/SwordThrow.java
+++ b/src/main/java/champ/cards/SwordThrow.java
@@ -2,11 +2,10 @@
import champ.ChampMod;
import champ.powers.EntangleNextTurnPower;
+import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.WeakPower;
import static champ.ChampMod.loadJokeCardImage;
@@ -15,7 +14,7 @@ public class SwordThrow extends AbstractChampCard {
public SwordThrow() {
super(ID, 1, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 8;
+ baseDamage = 9;
baseMagicNumber = magicNumber = 2;
tags.add(ChampMod.COMBOBERSERKER);
tags.add(ChampMod.COMBO);
@@ -25,16 +24,15 @@ public SwordThrow() {
public void use(AbstractPlayer p, AbstractMonster m) {
for (int i = 0; i < magicNumber; i++) dmg(m, AbstractGameAction.AttackEffect.SMASH);
- if (!bcombo()) applyToSelf(new WeakPower(p,2, false));
- // if (bcombo()) atb(new ReducePowerAction(p,p,WeakPower.POWER_ID,2));
+ if (!bcombo()) applyToSelf(new EntangleNextTurnPower(1));
}
@Override
public void triggerOnGlowCheck() {
- glowColor = bcombo() ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ glowColor = bcombo() ? GOLD_BORDER_GLOW_COLOR : Color.RED.cpy();
}
public void upp() {
- upgradeDamage(3);
+ upgradeDamage(4);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/TornadoPunch.java b/src/main/java/champ/cards/TornadoPunch.java
index cd940cea1..d10c986ca 100644
--- a/src/main/java/champ/cards/TornadoPunch.java
+++ b/src/main/java/champ/cards/TornadoPunch.java
@@ -1,15 +1,12 @@
package champ.cards;
import champ.ChampMod;
-import champ.powers.CounterPower;
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.GainBlockAction;
-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.vfx.combat.WhirlwindEffect;
+
+import java.util.Iterator;
import static champ.ChampMod.loadJokeCardImage;
@@ -43,11 +40,17 @@ public TornadoPunch() {
public void use(AbstractPlayer p, AbstractMonster m) {
//if (upgraded) techique();
allDmg(AbstractGameAction.AttackEffect.BLUNT_HEAVY);
- if (dcombo())
- for (AbstractMonster q : monsterList()) {
- //atb(new ApplyPowerAction(p, p, new CounterPower(magicNumber), magicNumber));
- atb(new GainBlockAction(p, block));
+ if (dcombo()){
+ Iterator var2 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+
+ while (var2.hasNext()) {
+ AbstractMonster mo = (AbstractMonster) var2.next();
+ if (!mo.isDeadOrEscaped()) {
+ blck();
+ }
}
+ }
+
}
@Override
diff --git a/src/main/java/champ/cards/TripleStrike.java b/src/main/java/champ/cards/TripleStrike.java
index 4023d4cd3..7efd1d015 100644
--- a/src/main/java/champ/cards/TripleStrike.java
+++ b/src/main/java/champ/cards/TripleStrike.java
@@ -6,6 +6,10 @@
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 static champ.ChampMod.loadJokeCardImage;
@@ -21,9 +25,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 +50,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/UltimateStance.java b/src/main/java/champ/cards/UltimateStance.java
index a6fd2c279..89d92fa3e 100644
--- a/src/main/java/champ/cards/UltimateStance.java
+++ b/src/main/java/champ/cards/UltimateStance.java
@@ -1,16 +1,8 @@
package champ.cards;
-import basemod.helpers.CardModifierManager;
-import champ.ChampMod;
import champ.powers.UltimateFormNextTurnPower;
-import champ.powers.UltimateFormPower;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
-import champ.util.TechniqueMod;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import static champ.ChampMod.loadJokeCardImage;
diff --git a/src/main/java/champ/cards/VampiricStrike.java b/src/main/java/champ/cards/VampiricStrike.java
index f2f14d10a..dff624de7 100644
--- a/src/main/java/champ/cards/VampiricStrike.java
+++ b/src/main/java/champ/cards/VampiricStrike.java
@@ -1,8 +1,5 @@
package champ.cards;
-import champ.ChampMod;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.watcher.WallopAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -23,6 +20,7 @@ public VampiricStrike() {
// tags.add(ChampMod.COMBO);
// tags.add(ChampMod.COMBOBERSERKER);
// tags.add(ChampMod.COMBODEFENSIVE);
+ tags.add(CardTags.STRIKE);
postInit();
loadJokeCardImage(this, "VampiricStrike.png");
}
diff --git a/src/main/java/champ/cards/ViciousMockery.java b/src/main/java/champ/cards/ViciousMockery.java
index 8e9bee053..5408b339f 100644
--- a/src/main/java/champ/cards/ViciousMockery.java
+++ b/src/main/java/champ/cards/ViciousMockery.java
@@ -5,13 +5,9 @@
import com.megacrit.cardcrawl.actions.animations.TalkAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.city.Champ;
-import com.megacrit.cardcrawl.powers.DexterityPower;
-import com.megacrit.cardcrawl.powers.LoseDexterityPower;
-import com.megacrit.cardcrawl.powers.LoseStrengthPower;
-import com.megacrit.cardcrawl.powers.StrengthPower;
-import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import static champ.ChampMod.loadJokeCardImage;
@@ -22,7 +18,7 @@ public class ViciousMockery extends AbstractChampCard {
public ViciousMockery() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseMagicNumber = magicNumber = 5;
+ baseMagicNumber = magicNumber = 4;
baseDownfallMagic = downfallMagic = 1;
postInit();
loadJokeCardImage(this, "ViciousMockery.png");
@@ -31,6 +27,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));
}
@@ -44,8 +41,14 @@ private String getTaunt() {
return derp.get(MathUtils.random(derp.size() - 1));
}
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.STANCE.NAMES[0].toLowerCase());
+ }
+
public void upp() {
- upgradeMagicNumber(1);
+ //upgradeMagicNumber(1);
upgradeDownfall(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/cards/WindUp.java b/src/main/java/champ/cards/WindUp.java
index b6d7cd811..10bf05458 100644
--- a/src/main/java/champ/cards/WindUp.java
+++ b/src/main/java/champ/cards/WindUp.java
@@ -1,26 +1,10 @@
package champ.cards;
import champ.ChampMod;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
-import champ.stances.UltimateStance;
-import champ.vfx.StanceDanceEffect;
-import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.actions.common.FetchAction;
-import com.megacrit.cardcrawl.actions.animations.TalkAction;
-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.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.monsters.city.Champ;
-import com.megacrit.cardcrawl.powers.DexterityPower;
-import com.megacrit.cardcrawl.powers.LoseDexterityPower;
-import com.megacrit.cardcrawl.powers.LoseStrengthPower;
-import com.megacrit.cardcrawl.powers.StrengthPower;
-import com.megacrit.cardcrawl.unlock.UnlockTracker;
import downfall.actions.OctoChoiceAction;
import downfall.cards.OctoChoiceCard;
import downfall.util.OctopusCard;
diff --git a/src/main/java/champ/events/BackToBasicsChamp.java b/src/main/java/champ/events/BackToBasicsChamp.java
index 6e96528df..34896f4e1 100644
--- a/src/main/java/champ/events/BackToBasicsChamp.java
+++ b/src/main/java/champ/events/BackToBasicsChamp.java
@@ -1,34 +1,20 @@
package champ.events;
-import basemod.helpers.BaseModCardTags;
import basemod.helpers.CardModifierManager;
import champ.ChampMod;
import champ.util.TechniqueMod;
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.cards.blue.Defend_Blue;
-import com.megacrit.cardcrawl.cards.blue.Strike_Blue;
-import com.megacrit.cardcrawl.cards.green.Defend_Green;
-import com.megacrit.cardcrawl.cards.green.Strike_Green;
-import com.megacrit.cardcrawl.cards.red.Defend_Red;
-import com.megacrit.cardcrawl.cards.red.Strike_Red;
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.helpers.CardLibrary;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect;
-import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
-import sneckomod.cards.Defend;
-import sneckomod.cards.Strike;
-import sneckomod.cards.unknowns.AbstractUnknownCard;
import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
public class BackToBasicsChamp extends AbstractImageEvent {
@@ -73,10 +59,10 @@ public BackToBasicsChamp() {
cardsToRemove = new ArrayList<>();
for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
- if (c.hasTag(BaseModCardTags.BASIC_STRIKE)) {
+ if (c.hasTag(AbstractCard.CardTags.STARTER_STRIKE)) {
cardsToRemove.add(c);
}
- if (c.hasTag(BaseModCardTags.BASIC_DEFEND)) {
+ if (c.hasTag(AbstractCard.CardTags.STARTER_DEFEND)) {
cardsToRemove.add(c);
}
}
diff --git a/src/main/java/champ/events/Colosseum_Evil_Champ.java b/src/main/java/champ/events/Colosseum_Evil_Champ.java
index 25a5406e5..16e5a5133 100644
--- a/src/main/java/champ/events/Colosseum_Evil_Champ.java
+++ b/src/main/java/champ/events/Colosseum_Evil_Champ.java
@@ -14,7 +14,6 @@
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import downfall.downfallMod;
-import slimebound.SlimeboundMod;
public class Colosseum_Evil_Champ extends AbstractImageEvent {
public static final String ID = "champ:Colosseum";
diff --git a/src/main/java/champ/events/Library_Champ.java b/src/main/java/champ/events/Library_Champ.java
index 96e34f0d6..f8dda2601 100644
--- a/src/main/java/champ/events/Library_Champ.java
+++ b/src/main/java/champ/events/Library_Champ.java
@@ -5,7 +5,6 @@
import champ.relics.DefensiveTrainingManual;
import champ.relics.FightingForDummies;
import champ.relics.GladiatorsBookOfMartialProwess;
-import champ.stances.DefensiveStance;
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
@@ -20,7 +19,6 @@
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import downfall.downfallMod;
-import downfall.events.FaceTrader_Evil;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/main/java/champ/events/MinorLeagueArena.java b/src/main/java/champ/events/MinorLeagueArena.java
index b85c9876b..1b8fdf138 100644
--- a/src/main/java/champ/events/MinorLeagueArena.java
+++ b/src/main/java/champ/events/MinorLeagueArena.java
@@ -1,19 +1,14 @@
package champ.events;
-
-import champ.relics.BlackKnightsHelmet;
-import champ.relics.ChampionCrown;
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.relics.AbstractRelic;
import com.megacrit.cardcrawl.relics.ChampionsBelt;
import com.megacrit.cardcrawl.relics.CloakClasp;
-import com.megacrit.cardcrawl.relics.WristBlade;
import downfall.downfallMod;
-import slimebound.SlimeboundMod;
+import hermit.relics.Horseshoe;
public class MinorLeagueArena extends AbstractImageEvent {
public static final String ID = "champ:MinorLeagueArena";
@@ -38,7 +33,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 +48,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 +64,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 +77,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/monsters/BlackKnight.java b/src/main/java/champ/monsters/BlackKnight.java
index d70798abb..13f4ab55f 100644
--- a/src/main/java/champ/monsters/BlackKnight.java
+++ b/src/main/java/champ/monsters/BlackKnight.java
@@ -3,12 +3,8 @@
import champ.events.Colosseum_Evil_Champ;
import com.badlogic.gdx.math.MathUtils;
import com.esotericsoftware.spine.AnimationState;
- import com.esotericsoftware.spine.AnimationState.TrackEntry;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
- import com.megacrit.cardcrawl.actions.GameActionManager;
import com.megacrit.cardcrawl.actions.animations.AnimateFastAttackAction;
- 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;
@@ -16,27 +12,18 @@
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
- import com.megacrit.cardcrawl.audio.SoundMaster;
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.helpers.Hitbox;
- import com.megacrit.cardcrawl.helpers.ScreenShake;
import com.megacrit.cardcrawl.localization.MonsterStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
- import com.megacrit.cardcrawl.monsters.AbstractMonster.Intent;
import com.megacrit.cardcrawl.powers.MetallicizePower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
- import com.megacrit.cardcrawl.rooms.AbstractRoom;
- import com.megacrit.cardcrawl.scenes.AbstractScene;
- import com.megacrit.cardcrawl.unlock.UnlockTracker;
import com.megacrit.cardcrawl.vfx.combat.GoldenSlashEffect;
import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
- import java.util.ArrayList;
public class BlackKnight extends AbstractMonster
{
diff --git a/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java b/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
index 4bfdf6106..2697864ea 100644
--- a/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
+++ b/src/main/java/champ/patches/ChampAfraidOfGhostsPatch.java
@@ -5,6 +5,8 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.city.Ghosts;
import com.megacrit.cardcrawl.random.Random;
+import downfall.events.CouncilOfGhosts_Evil;
+import gremlin.characters.GremlinCharacter;
import javassist.CtBehavior;
import java.util.ArrayList;
@@ -22,8 +24,12 @@ public static class EventSpawn {
localvars = {"tmp"}
)
public static void Insert(Random rng, ArrayList tmp) {
- if (AbstractDungeon.player instanceof ChampChar) {
+ if (AbstractDungeon.player instanceof ChampChar || AbstractDungeon.player instanceof GremlinCharacter) {
+ //(AbstractDungeon.player instanceof ChampChar || AbstractDungeon.player instanceof GremlinCharacter) {
+ //to-do: figure out why this is here
+ //I've decided this is actually really funny so I'm keeping it lol, also Gremlins but because of the 50% hp thing not working
tmp.remove(Ghosts.ID);
+ tmp.remove(CouncilOfGhosts_Evil.ID);
}
}
diff --git a/src/main/java/champ/patches/NukeVigorPatch.java b/src/main/java/champ/patches/NukeVigorPatch.java
new file mode 100644
index 000000000..afac045f9
--- /dev/null
+++ b/src/main/java/champ/patches/NukeVigorPatch.java
@@ -0,0 +1,26 @@
+package champ.patches;
+
+import champ.relics.PowerArmor;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePostfixPatch;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+
+public class NukeVigorPatch {
+ @SpirePatch(
+ clz = VigorPower.class,
+ method = "updateDescription"
+ )
+ public static class NukeVigor {
+ @SpirePostfixPatch
+ public static void Postfix(VigorPower instance) {
+ if (AbstractDungeon.player.hasRelic(PowerArmor.ID)) {
+ if (instance.amount > PowerArmor.CAP_RESOLVE_ETC) {
+ ((PowerArmor)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger(instance.amount - PowerArmor.CAP_RESOLVE_ETC);
+ instance.amount = PowerArmor.CAP_RESOLVE_ETC;
+ instance.updateDescription();
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/patches/RenderBonusHealthPatch.java b/src/main/java/champ/patches/RenderBonusHealthPatch.java
index f2d9654ae..a45c42e72 100644
--- a/src/main/java/champ/patches/RenderBonusHealthPatch.java
+++ b/src/main/java/champ/patches/RenderBonusHealthPatch.java
@@ -1,6 +1,5 @@
package champ.patches;
-
import champ.powers.ResolvePower;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
diff --git a/src/main/java/champ/patches/SignatureMovePatch.java b/src/main/java/champ/patches/SignatureMovePatch.java
index 68fc20c10..66d8f49f0 100644
--- a/src/main/java/champ/patches/SignatureMovePatch.java
+++ b/src/main/java/champ/patches/SignatureMovePatch.java
@@ -1,11 +1,9 @@
package champ.patches;
+import awakenedOne.util.Wiz;
import com.evacipated.cardcrawl.modthespire.lib.SpireField;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
-import guardian.cards.AbstractGuardianCard;
-
-import java.util.ArrayList;
@SpirePatch(
clz = AbstractCard.class,
@@ -20,7 +18,14 @@ public class SignatureMovePatch {
)
public static class MakeStatEquivalentCopy {
public static AbstractCard Postfix(AbstractCard __result, AbstractCard __instance) {
- inSignatureMove.set(__result, inSignatureMove.get(__instance));
+
+ if (Wiz.isInCombat()) {
+ inSignatureMove.set(__result, inSignatureMove.get(__instance));
+ }
+
+ if (!Wiz.isInCombat()) {
+ inSignatureMove.set(__result, Boolean.FALSE);
+ }
return __result;
}
diff --git a/src/main/java/champ/patches/SymbolDescriptionPatch.java b/src/main/java/champ/patches/SymbolDescriptionPatch.java
index a7fbd5011..54845b52d 100644
--- a/src/main/java/champ/patches/SymbolDescriptionPatch.java
+++ b/src/main/java/champ/patches/SymbolDescriptionPatch.java
@@ -13,16 +13,11 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.helpers.FontHelper;
-import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.screens.SingleCardViewPopup;
-import javassist.CannotCompileException;
import javassist.CtBehavior;
-import javassist.expr.ExprEditor;
-import javassist.expr.MethodCall;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.ArrayList;
public class SymbolDescriptionPatch {
private static final String crown_icon_NAME = "crown_icon";
diff --git a/src/main/java/champ/patches/VigorCounterPowerArmorPatch.java b/src/main/java/champ/patches/VigorCounterPowerArmorPatch.java
new file mode 100644
index 000000000..cd5f4f85b
--- /dev/null
+++ b/src/main/java/champ/patches/VigorCounterPowerArmorPatch.java
@@ -0,0 +1,61 @@
+//package champ.patches;
+//
+//import basemod.ReflectionHacks;
+//import champ.powers.CounterPower;
+//import champ.relics.PowerArmor;
+//import com.badlogic.gdx.Gdx;
+//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.RelicAboveCreatureAction;
+//import com.megacrit.cardcrawl.actions.utility.TextAboveCreatureAction;
+//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+//import com.megacrit.cardcrawl.powers.AbstractPower;
+//import com.megacrit.cardcrawl.powers.StrengthPower;
+//import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+//import gremlin.powers.UnforgivingPower;
+//
+//import java.lang.reflect.Field;
+//
+//import static hermit.util.Wiz.att;
+//import static hermit.util.Wiz.pwrAmt;
+//
+//@SpirePatch(
+// clz= ApplyPowerAction.class,
+// method="update"
+//)
+//public class VigorCounterPowerArmorPatch {
+// @SpireInsertPatch(
+// rloc=35
+// )
+// public static SpireReturn Insert(ApplyPowerAction __instance) {
+// AbstractPower powerToApply = (AbstractPower) ReflectionHacks.getPrivate(__instance, ApplyPowerAction.class, "powerToApply");
+// if ((powerToApply instanceof VigorPower || powerToApply instanceof CounterPower) &&
+// powerToApply.amount > 0 &&
+// AbstractDungeon.player.hasRelic(PowerArmor.ID)) {
+// if (pwrAmt(AbstractDungeon.player, powerToApply.ID) >= PowerArmor.CAP_RESOLVE_ETC) {
+//
+// ((PowerArmor)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger((powerToApply.amount));
+//
+// AbstractDungeon.actionManager.addToTop(new TextAboveCreatureAction(__instance.target, ApplyPowerAction.TEXT[1]));
+// float duration = (float) getPrivateInherited(__instance, ApplyPowerAction.class, "duration");
+// duration -= Gdx.graphics.getDeltaTime();
+// ReflectionHacks.setPrivateInherited(__instance, ApplyPowerAction.class, "duration", duration);
+// return SpireReturn.Return(null);
+// }
+// }
+// return SpireReturn.Continue();
+// }
+//
+// public static Object getPrivateInherited(Object obj, Class> objClass, String fieldName) {
+// try {
+// Field targetField = objClass.getSuperclass().getDeclaredField(fieldName);
+// targetField.setAccessible(true);
+// return targetField.get(obj);
+// } catch (Exception e) {
+// }
+//
+// return null;
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/champ/patches/VigorPatch.java b/src/main/java/champ/patches/VigorPatch.java
index d9648cb41..a32f9bf19 100644
--- a/src/main/java/champ/patches/VigorPatch.java
+++ b/src/main/java/champ/patches/VigorPatch.java
@@ -1,5 +1,6 @@
package champ.patches;
+import automaton.cards.Branch;
import basemod.ReflectionHacks;
import champ.cards.CrookedStrike;
import charbosses.bosses.AbstractCharBoss;
@@ -18,8 +19,7 @@ public class VigorPatch {
public static class DontConsumeVigorPatch {
@SpirePrefixPatch
public static SpireReturn patch(VigorPower __instance, AbstractCard card, UseCardAction action) {
- if (card instanceof CrookedStrike){
-
+ if (card instanceof CrookedStrike || card instanceof Branch) {
__instance.flash();
return SpireReturn.Return(null);
}
diff --git a/src/main/java/champ/potions/CounterstrikePotion.java b/src/main/java/champ/potions/CounterstrikePotion.java
index ed3db1823..0bb1f4df6 100644
--- a/src/main/java/champ/potions/CounterstrikePotion.java
+++ b/src/main/java/champ/potions/CounterstrikePotion.java
@@ -1,9 +1,7 @@
package champ.potions;
-
import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
-import champ.ChampMod;
import champ.powers.CounterPower;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
diff --git a/src/main/java/champ/potions/OpenerPotion.java b/src/main/java/champ/potions/OpenerPotion.java
index f73122ba4..0fb64c9de 100644
--- a/src/main/java/champ/potions/OpenerPotion.java
+++ b/src/main/java/champ/potions/OpenerPotion.java
@@ -1,6 +1,5 @@
package champ.potions;
-
import basemod.abstracts.CustomPotion;
import champ.ChampMod;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
@@ -71,8 +70,8 @@ private ArrayList generateColorlessCardChoices() {
if (q.hasTag(ChampMod.OPENERBERSERKER)) bersOpenersList.add(q.makeCopy());
if (q.hasTag(ChampMod.OPENERDEFENSIVE)) defOpenersList.add(q.makeCopy());
}
- choiceList.add(bersOpenersList.get(AbstractDungeon.cardRandomRng.random(bersOpenersList.size() - 1)));
- choiceList.add(defOpenersList.get(AbstractDungeon.cardRandomRng.random(defOpenersList.size() - 1)));
+ choiceList.add(bersOpenersList.get(AbstractDungeon.potionRng.random(bersOpenersList.size() - 1)));
+ choiceList.add(defOpenersList.get(AbstractDungeon.potionRng.random(defOpenersList.size() - 1)));
return choiceList;
}
diff --git a/src/main/java/champ/potions/TechPotion.java b/src/main/java/champ/potions/TechPotion.java
index 23368d0bf..a03e5f859 100644
--- a/src/main/java/champ/potions/TechPotion.java
+++ b/src/main/java/champ/potions/TechPotion.java
@@ -1,20 +1,14 @@
package champ.potions;
-
-import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
import champ.ChampMod;
-import champ.actions.DiscoverOpenerAction;
import champ.stances.AbstractChampStance;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.helpers.PowerTip;
-import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
-
public class TechPotion extends CustomPotion {
public static final String POTION_ID = "champ:TechniquePotion";
private static final PotionStrings potionStrings = CardCrawlGame.languagePack.getPotionString(POTION_ID);
diff --git a/src/main/java/champ/potions/UltimateStancePotion.java b/src/main/java/champ/potions/UltimateStancePotion.java
index 24b24d1a8..152e57cd7 100644
--- a/src/main/java/champ/potions/UltimateStancePotion.java
+++ b/src/main/java/champ/potions/UltimateStancePotion.java
@@ -1,12 +1,10 @@
package champ.potions;
-
import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
import champ.ChampMod;
import champ.powers.UltimateFormPower;
import champ.stances.UltimateStance;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
diff --git a/src/main/java/champ/powers/CalledShotPower.java b/src/main/java/champ/powers/CalledShotPower.java
index ae1c38b6c..fc7c45611 100644
--- a/src/main/java/champ/powers/CalledShotPower.java
+++ b/src/main/java/champ/powers/CalledShotPower.java
@@ -9,7 +9,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class CalledShotPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/CounterPower.java b/src/main/java/champ/powers/CounterPower.java
index e896037f5..40b7cfc4a 100644
--- a/src/main/java/champ/powers/CounterPower.java
+++ b/src/main/java/champ/powers/CounterPower.java
@@ -3,11 +3,9 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
import champ.cards.Riposte;
-import champ.cards.SetATrap;
import champ.relics.PowerArmor;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -33,7 +31,7 @@ public CounterPower(final int amount) {
this.owner = AbstractDungeon.player;
this.amount = amount;
this.type = PowerType.BUFF;
- this.isTurnBased = true;
+ this.isTurnBased = false;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
@@ -66,20 +64,26 @@ 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)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger((stackAmount - (PowerArmor.CAP_RESOLVE_ETC - amount)));
stackAmount = (PowerArmor.CAP_RESOLVE_ETC - amount);
+ }
super.stackPower(stackAmount);
}
diff --git a/src/main/java/champ/powers/DancingMasterPower.java b/src/main/java/champ/powers/DancingMasterPower.java
index 6af8043fc..b94f694e5 100644
--- a/src/main/java/champ/powers/DancingMasterPower.java
+++ b/src/main/java/champ/powers/DancingMasterPower.java
@@ -10,7 +10,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import com.megacrit.cardcrawl.stances.*;
import downfall.util.TextureLoader;
public class DancingMasterPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/DefensiveStylePower.java b/src/main/java/champ/powers/DefensiveStylePower.java
index cfb7aa8c8..f07b18863 100644
--- a/src/main/java/champ/powers/DefensiveStylePower.java
+++ b/src/main/java/champ/powers/DefensiveStylePower.java
@@ -2,16 +2,12 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.stances.DefensiveStance;
-import champ.util.OnTechniqueSubscriber;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
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.stances.AbstractStance;
import downfall.util.TextureLoader;
public class DefensiveStylePower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/DoubleStyleThisTurnPower.java b/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
index 8089a6699..9a6fc12a5 100644
--- a/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
+++ b/src/main/java/champ/powers/DoubleStyleThisTurnPower.java
@@ -15,7 +15,7 @@ public class DoubleStyleThisTurnPower extends AbstractPower implements Cloneable
public static final String POWER_ID = ChampMod.makeID("DoubleStyleThisTurnPower");
- private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash84.png"); //TODO: Icon Art
+ private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash84.png");
private static final Texture tex32 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/ChainLash32.png");
private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
public static final String NAME = powerStrings.NAME;
diff --git a/src/main/java/champ/powers/DrawLessNextTurnPower.java b/src/main/java/champ/powers/DrawLessNextTurnPower.java
index 3502d5193..11609a418 100644
--- a/src/main/java/champ/powers/DrawLessNextTurnPower.java
+++ b/src/main/java/champ/powers/DrawLessNextTurnPower.java
@@ -2,15 +2,11 @@
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.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
-import downfall.util.TextureLoader;
public class DrawLessNextTurnPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/DualPlaySrikePower.java b/src/main/java/champ/powers/DualPlaySrikePower.java
index 6dd70ed4c..a04e20a9b 100644
--- a/src/main/java/champ/powers/DualPlaySrikePower.java
+++ b/src/main/java/champ/powers/DualPlaySrikePower.java
@@ -1,12 +1,10 @@
package champ.powers;
-import basemod.helpers.VfxBuilder;
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.NonStackablePower;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
diff --git a/src/main/java/champ/powers/EnchantedShieldPower.java b/src/main/java/champ/powers/EnchantedShieldPower.java
index e174cb710..77fc5f729 100644
--- a/src/main/java/champ/powers/EnchantedShieldPower.java
+++ b/src/main/java/champ/powers/EnchantedShieldPower.java
@@ -4,8 +4,6 @@
import champ.ChampMod;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -13,7 +11,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class EnchantedShieldPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/EnergizedDurationPower.java b/src/main/java/champ/powers/EnergizedDurationPower.java
index e275e24c3..85c38a5e7 100644
--- a/src/main/java/champ/powers/EnergizedDurationPower.java
+++ b/src/main/java/champ/powers/EnergizedDurationPower.java
@@ -4,13 +4,11 @@
import champ.ChampMod;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
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 theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class EnergizedDurationPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/EntangleNextTurnPower.java b/src/main/java/champ/powers/EntangleNextTurnPower.java
index 79c15fc2c..e214bd7f2 100644
--- a/src/main/java/champ/powers/EntangleNextTurnPower.java
+++ b/src/main/java/champ/powers/EntangleNextTurnPower.java
@@ -11,7 +11,6 @@
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.EntanglePower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class EntangleNextTurnPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/FalseCounterPower.java b/src/main/java/champ/powers/FalseCounterPower.java
index 05a66fd60..27420fafe 100644
--- a/src/main/java/champ/powers/FalseCounterPower.java
+++ b/src/main/java/champ/powers/FalseCounterPower.java
@@ -9,7 +9,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class FalseCounterPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/FocusedBerPower.java b/src/main/java/champ/powers/FocusedBerPower.java
index 0063fada7..7bcfdcc6e 100644
--- a/src/main/java/champ/powers/FocusedBerPower.java
+++ b/src/main/java/champ/powers/FocusedBerPower.java
@@ -2,20 +2,18 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.util.OnFinisherSubscriber;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.cards.green.Finisher;
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.watcher.VigorPower;
+import downfall.monsters.NeowBoss;
import downfall.util.TextureLoader;
public class FocusedBerPower extends AbstractPower implements CloneablePowerInterface {
@@ -52,7 +50,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/FocusedDefPower.java b/src/main/java/champ/powers/FocusedDefPower.java
index e688d9dbc..e89fcc705 100644
--- a/src/main/java/champ/powers/FocusedDefPower.java
+++ b/src/main/java/champ/powers/FocusedDefPower.java
@@ -5,11 +5,8 @@
import champ.util.OnFinisherSubscriber;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
diff --git a/src/main/java/champ/powers/GladiatorFormPower.java b/src/main/java/champ/powers/GladiatorFormPower.java
index f45436e61..9f6610f10 100644
--- a/src/main/java/champ/powers/GladiatorFormPower.java
+++ b/src/main/java/champ/powers/GladiatorFormPower.java
@@ -1,7 +1,9 @@
package champ.powers;
+import automaton.cards.Branch;
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 +48,18 @@ 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 || card instanceof Branch)) {
+ if (card.type == AbstractCard.CardType.ATTACK && owner.hasPower(VigorPower.POWER_ID))
+ addNextTurnPower(AbstractDungeon.player.getPower(VigorPower.POWER_ID));
+ }
+ }
+
+ public void onSpecificTriggerBranch() {
+ if (owner.hasPower(CounterPower.POWER_ID))
+ addNextTurnPower(AbstractDungeon.player.getPower(CounterPower.POWER_ID));
}
+
@Override
public void onSpecificTrigger() {
if (owner.hasPower(CounterPower.POWER_ID))
diff --git a/src/main/java/champ/powers/GladiatorStylePower.java b/src/main/java/champ/powers/GladiatorStylePower.java
index 740b62692..343d4cdf0 100644
--- a/src/main/java/champ/powers/GladiatorStylePower.java
+++ b/src/main/java/champ/powers/GladiatorStylePower.java
@@ -2,17 +2,14 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.cards.AbstractChampCard;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.*;
import com.megacrit.cardcrawl.stances.NeutralStance;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class GladiatorStylePower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/HonePower.java b/src/main/java/champ/powers/HonePower.java
new file mode 100644
index 000000000..9ec5473f5
--- /dev/null
+++ b/src/main/java/champ/powers/HonePower.java
@@ -0,0 +1,61 @@
+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;
+
+public class HonePower extends AbstractPower implements CloneablePowerInterface {
+ public AbstractCreature source;
+
+ public static final String POWER_ID = ChampMod.makeID("HonePower");
+
+ private static final Texture tex84 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/FalseCounter84.png");
+ private static final Texture tex32 = TextureLoader.getTexture(ChampMod.getModID() + "Resources/images/powers/FalseCounter32.png");
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+
+
+ public HonePower(final AbstractCreature owner, final int amount) {
+ name = NAME;
+ ID = POWER_ID;
+
+ this.owner = owner;
+ this.amount = amount;
+
+ type = PowerType.BUFF;
+
+ if (this.amount <= 0) {
+ this.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, this.POWER_ID));
+ }
+
+ this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
+ this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
+
+ updateDescription();
+ }
+
+ @Override
+ public float atDamageGive(float damage, DamageInfo.DamageType type, AbstractCard card) {
+ return super.atDamageGive(card.hasTag(AbstractCard.CardTags.STRIKE) ? damage + this.amount : damage, type, card);
+ }
+
+ @Override
+ public void updateDescription() {
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+ @Override
+ public AbstractPower makeCopy() {
+ return new HonePower(owner, amount);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/champ/powers/ImprovisingPower.java b/src/main/java/champ/powers/ImprovisingPower.java
index 0270ef599..164026e7b 100644
--- a/src/main/java/champ/powers/ImprovisingPower.java
+++ b/src/main/java/champ/powers/ImprovisingPower.java
@@ -2,15 +2,14 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
+import champ.stances.AbstractChampStance;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
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.stances.AbstractStance;
import com.megacrit.cardcrawl.stances.NeutralStance;
import downfall.util.TextureLoader;
@@ -21,11 +20,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);
@@ -34,23 +35,33 @@ public ImprovisingPower() {
}
@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()));
- }
+ 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()));
+// }
+// }
+// }
+
@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/IronFortressPower.java b/src/main/java/champ/powers/IronFortressPower.java
index 9a53aaeb7..deabebaf1 100644
--- a/src/main/java/champ/powers/IronFortressPower.java
+++ b/src/main/java/champ/powers/IronFortressPower.java
@@ -2,14 +2,11 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.stances.AbstractChampStance;
-import champ.stances.DefensiveStance;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.localization.LocalizedStrings;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.stances.AbstractStance;
diff --git a/src/main/java/champ/powers/LastStandModPower.java b/src/main/java/champ/powers/LastStandModPower.java
index b5a69c47f..f6f894c9f 100644
--- a/src/main/java/champ/powers/LastStandModPower.java
+++ b/src/main/java/champ/powers/LastStandModPower.java
@@ -14,7 +14,6 @@
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.StrengthPower;
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
diff --git a/src/main/java/champ/powers/LastStandPower.java b/src/main/java/champ/powers/LastStandPower.java
index 0177c92c6..e12a48b1a 100644
--- a/src/main/java/champ/powers/LastStandPower.java
+++ b/src/main/java/champ/powers/LastStandPower.java
@@ -2,7 +2,6 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.cards.LastStand;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.animations.ShoutAction;
@@ -19,7 +18,6 @@
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.vfx.combat.InflameEffect;
import downfall.util.TextureLoader;
-import slimebound.SlimeboundMod;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/src/main/java/champ/powers/NoBlockNextTurnPower.java b/src/main/java/champ/powers/NoBlockNextTurnPower.java
index 47d38e4ad..1d821b0f6 100644
--- a/src/main/java/champ/powers/NoBlockNextTurnPower.java
+++ b/src/main/java/champ/powers/NoBlockNextTurnPower.java
@@ -10,7 +10,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import com.megacrit.cardcrawl.powers.EntanglePower;
import com.megacrit.cardcrawl.powers.NoBlockPower;
import downfall.util.TextureLoader;
diff --git a/src/main/java/champ/powers/PushThroughPower.java b/src/main/java/champ/powers/PushThroughPower.java
index 004f24aa7..35d8b35c5 100644
--- a/src/main/java/champ/powers/PushThroughPower.java
+++ b/src/main/java/champ/powers/PushThroughPower.java
@@ -10,7 +10,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class PushThroughPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/ResolvePower.java b/src/main/java/champ/powers/ResolvePower.java
index 1d2c1d884..57202dcfd 100644
--- a/src/main/java/champ/powers/ResolvePower.java
+++ b/src/main/java/champ/powers/ResolvePower.java
@@ -2,17 +2,12 @@
import basemod.interfaces.CloneablePowerInterface;
import champ.ChampMod;
-import champ.relics.PowerArmor;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
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.StrengthPower;
-import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class ResolvePower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/ShieldWallPower.java b/src/main/java/champ/powers/ShieldWallPower.java
index 44d100b6e..5fc0d8638 100644
--- a/src/main/java/champ/powers/ShieldWallPower.java
+++ b/src/main/java/champ/powers/ShieldWallPower.java
@@ -5,12 +5,10 @@
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
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 theHexaghost.HexaMod;
import downfall.util.TextureLoader;
public class ShieldWallPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/StrikeOfGeniusPower.java b/src/main/java/champ/powers/StrikeOfGeniusPower.java
index edefa83da..62f93a309 100644
--- a/src/main/java/champ/powers/StrikeOfGeniusPower.java
+++ b/src/main/java/champ/powers/StrikeOfGeniusPower.java
@@ -1,11 +1,9 @@
package champ.powers;
-import basemod.helpers.CardModifierManager;
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.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -13,7 +11,7 @@
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
-import expansioncontent.cardmods.PropertiesMod;
+import expansioncontent.actions.EchoACardAction;
import sneckomod.cards.unknowns.AbstractUnknownCard;
import downfall.util.TextureLoader;
@@ -35,7 +33,7 @@ public StrikeOfGeniusPower(final int amount) {
this.owner = AbstractDungeon.player;
this.amount = amount;
this.type = PowerType.BUFF;
- this.isTurnBased = true;
+ this.isTurnBased = false;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
@@ -49,9 +47,7 @@ public void atStartOfTurn() {
for (AbstractCard r : CardLibrary.getAllCards())
if (r.color == AbstractDungeon.player.getCardColor() && !UnlockTracker.isCardLocked(r.cardID)&& !r.hasTag(AbstractCard.CardTags.HEALING) && r.hasTag(AbstractCard.CardTags.STRIKE) && r.type == AbstractCard.CardType.ATTACK && !(r instanceof AbstractUnknownCard)) qCardList.add(r);
AbstractCard l = qCardList.get(AbstractDungeon.cardRandomRng.random(qCardList.size() - 1)).makeStatEquivalentCopy();
- l.freeToPlayOnce = true;
- if (!l.exhaust) CardModifierManager.addModifier(l, new PropertiesMod(PropertiesMod.supportedProperties.EXHAUST, false));
- this.addToBot(new MakeTempCardInHandAction(l));
+ addToBot(new EchoACardAction(l, true));
}
}
diff --git a/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java b/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
index 4b4bb3a53..4a178e54f 100644
--- a/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
+++ b/src/main/java/champ/powers/StrikeOfGeniusUpgradedPower.java
@@ -1,11 +1,9 @@
package champ.powers;
-import basemod.helpers.CardModifierManager;
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.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -14,7 +12,7 @@
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import downfall.util.TextureLoader;
-import expansioncontent.cardmods.PropertiesMod;
+import expansioncontent.actions.EchoACardAction;
import java.util.ArrayList;
@@ -34,7 +32,7 @@ public StrikeOfGeniusUpgradedPower(final int amount) {
this.owner = AbstractDungeon.player;
this.amount = amount;
this.type = PowerType.BUFF;
- this.isTurnBased = true;
+ this.isTurnBased = false;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
@@ -49,9 +47,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/UltimateFormNextTurnPower.java b/src/main/java/champ/powers/UltimateFormNextTurnPower.java
index 4f68879db..d0c9579de 100644
--- a/src/main/java/champ/powers/UltimateFormNextTurnPower.java
+++ b/src/main/java/champ/powers/UltimateFormNextTurnPower.java
@@ -6,15 +6,12 @@
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
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.CardCrawlGame;
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;
public class UltimateFormNextTurnPower extends AbstractPower implements CloneablePowerInterface {
diff --git a/src/main/java/champ/powers/UltimateFormPower.java b/src/main/java/champ/powers/UltimateFormPower.java
index f19700d4c..2febb849b 100644
--- a/src/main/java/champ/powers/UltimateFormPower.java
+++ b/src/main/java/champ/powers/UltimateFormPower.java
@@ -6,7 +6,6 @@
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
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.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -44,7 +43,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));
}
}
diff --git a/src/main/java/champ/relics/Barbells.java b/src/main/java/champ/relics/Barbells.java
index 51e527b5e..a0548ef01 100644
--- a/src/main/java/champ/relics/Barbells.java
+++ b/src/main/java/champ/relics/Barbells.java
@@ -2,6 +2,7 @@
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.MathUtils;
@@ -18,7 +19,7 @@
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
-public class Barbells extends CustomRelic {
+public class Barbells extends CustomRelic implements OnRemoveCardFromMasterDeckRelic {
public static final String ID = ChampMod.makeID("Barbells");
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("Barbell.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("Barbell.png"));
@@ -27,6 +28,44 @@ public Barbells() {
super(ID, IMG, OUTLINE, RelicTier.SHOP, LandingSound.MAGICAL);
}
+ //# of required cards to perform an upgrade
+ private static final int AMOUNT = 10;
+
+
+ @Override
+ public void onEquip() {
+ ArrayList possibleCards = new ArrayList<>();// 38
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.canUpgrade()) {// 40
+ possibleCards.add(c);// 41
+ }
+ }
+ this.counter = possibleCards.size();
+ }
+
+
+ @Override
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ ArrayList possibleCards = new ArrayList<>();// 38
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.canUpgrade()) {// 40
+ possibleCards.add(c);// 41
+ }
+ }
+ this.counter = possibleCards.size();
+ }
+
+ public void onObtainCard(AbstractCard c) {
+ ArrayList possibleCards = new ArrayList<>();// 38
+ for (AbstractCard card : AbstractDungeon.player.masterDeck.group) {
+ if (card.canUpgrade()) {// 40
+ possibleCards.add(card);// 41
+ }
+ }
+ this.counter = possibleCards.size();
+ }
+
+
@Override
public void onEnterRoom(AbstractRoom room) {
if (room instanceof RestRoom) {
@@ -38,9 +77,11 @@ public void onEnterRoom(AbstractRoom room) {
possibleCards.add(c);// 41
}
}
+ this.counter = possibleCards.size();
- if (possibleCards.size() >= 10) {// 45
- AbstractCard card = possibleCards.get(AbstractDungeon.miscRng.random(0, possibleCards.size() - 1));// 46
+ if (possibleCards.size() >= AMOUNT) {// 45
+ this.counter = possibleCards.size() - 1;
+ AbstractCard card = possibleCards.get(AbstractDungeon.relicRng.random(0, possibleCards.size() - 1));// 46
card.upgrade();// 47
AbstractDungeon.player.bottledCardUpgradeCheck(card);// 48
float x = MathUtils.random(0.1F, 0.9F) * (float) Settings.WIDTH;
@@ -51,8 +92,13 @@ 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];
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/champ/relics/BerserkersGuideToSlaughter.java b/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
index 9a53285f8..544d5015c 100644
--- a/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
+++ b/src/main/java/champ/relics/BerserkersGuideToSlaughter.java
@@ -2,14 +2,10 @@
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import downfall.util.TextureLoader;
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,19 +14,22 @@ 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.FLAT);
}
+ //vigor gain per turn
+ private static final int AMOUNT = 3;
+
@Override
public void atTurnStart() {
super.atTurnStart();
-
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
+ vigor(AMOUNT);
+ //addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new VigorPower(AbstractDungeon.player, 3), 3));
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/champ/relics/ChampStancesModRelic.java b/src/main/java/champ/relics/ChampStancesModRelic.java
index efb5f738c..c6964a038 100644
--- a/src/main/java/champ/relics/ChampStancesModRelic.java
+++ b/src/main/java/champ/relics/ChampStancesModRelic.java
@@ -28,7 +28,7 @@ public ChampStancesModRelic() {
public void atBattleStart() {
super.atBattleStart();
if (AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
- int x = AbstractDungeon.cardRandomRng.random(1);
+ int x = AbstractDungeon.relicRng.random(1);
switch (x) {
case 0:
//SlimeboundMod.logger.info("Switching to Berserker (Mod Relic)");
diff --git a/src/main/java/champ/relics/ChampionCrown.java b/src/main/java/champ/relics/ChampionCrown.java
index 63cc7c0dc..41aaf1168 100644
--- a/src/main/java/champ/relics/ChampionCrown.java
+++ b/src/main/java/champ/relics/ChampionCrown.java
@@ -2,20 +2,9 @@
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
-import champ.actions.OpenerReduceCostAction;
-import champ.stances.BerserkerStance;
-import champ.stances.DefensiveStance;
-import champ.stances.UltimateStance;
-import champ.util.OnOpenerSubscriber;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.DamageRandomEnemyAction;
-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.DamageInfo;
+import champ.cards.StanceDanceCrown;
+import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.stances.AbstractStance;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
@@ -29,7 +18,7 @@ public class ChampionCrown extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("ChampionCrown.png"));
public ChampionCrown() {
- super(ID, IMG, OUTLINE, RelicTier.STARTER, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.STARTER, LandingSound.CLINK);
}
/*
@@ -42,25 +31,28 @@ 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;
- }
- }
+ this.addToTop(new MakeTempCardInHandAction(new StanceDanceCrown(), 1, false));
}
+// @Override
+// public void atBattleStart() {
+// super.atBattleStart();
+// if (AbstractDungeon.player.stance.ID.equals(NeutralStance.STANCE_ID)) {
+// int x = AbstractDungeon.relicRng.random(1);
+// switch (x) {
+// case 0:
+// addToBot(new ChangeStanceAction(BerserkerStance.STANCE_ID));
+// break;
+// case 1:
+// addToBot(new ChangeStanceAction(DefensiveStance.STANCE_ID));
+// break;
+// }
+// }
+// }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/champ/relics/ChampionCrownUpgraded.java b/src/main/java/champ/relics/ChampionCrownUpgraded.java
index 02e96bc59..d31aa6d08 100644
--- a/src/main/java/champ/relics/ChampionCrownUpgraded.java
+++ b/src/main/java/champ/relics/ChampionCrownUpgraded.java
@@ -2,22 +2,20 @@
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.evacipated.cardcrawl.mod.stslib.relics.OnAfterUseCardRelic;
+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.core.Settings;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import slimebound.relics.AbsorbEndCombat;
-import static champ.ChampMod.makeRelicOutlinePath;
-import static champ.ChampMod.makeRelicPath;
+import static champ.ChampMod.*;
+import static collector.util.Wiz.atb;
-public class ChampionCrownUpgraded extends CustomRelic {
+public class ChampionCrownUpgraded extends CustomRelic implements OnAfterUseCardRelic {
public static final String ID = ChampMod.makeID("ChampionCrownUpgraded");
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("UltimateChampionCrown.png"));
@@ -25,15 +23,58 @@ public class ChampionCrownUpgraded extends CustomRelic {
public ChampionCrownUpgraded() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.CLINK);
+ }
+
+ //# of cards drawn
+ private static final int AMOUNT = 2;
+
+// @Override
+// public void atBattleStart() {
+// addToBot(new ChangeStanceAction(UltimateStance.STANCE_ID));
+// addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new UltimateFormPower(AMOUNT), AMOUNT));
+// }
+//
+//
+// @Override
+// public void onChangeStance(AbstractStance oldStance, AbstractStance newStance) {
+// if (!newStance.ID.equals(NeutralStance.STANCE_ID) && !(oldStance.ID.equals(newStance.ID))) {
+// flash();
+// atb(new DrawCardAction(AMOUNT));
+// }
+// }
+
+
+ public void atTurnStart() {
+ this.counter = 0;
}
@Override
- public void atBattleStart() {
- addToBot(new ChangeStanceAction(UltimateStance.STANCE_ID));
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new UltimateFormPower(1), 1));
+ public void onVictory() {
+ this.counter = 0;
+ }
+
+ @Override
+ public void onAfterUseCard(AbstractCard c, UseCardAction var2) {
+ if (c.hasTag(ChampMod.FINISHER) && this.counter == 0) {
+ flash();
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ atb(new DrawCardAction(AMOUNT));
+ int x = AbstractDungeon.relicRng.random(1);
+ switch (x) {
+ case 0:
+ berserkOpen();
+ break;
+ case 1:
+ defenseOpen();
+ break;
+ }
+ this.counter = 1;
+ }
}
+
+
@Override
public void obtain() {
if (AbstractDungeon.player.hasRelic(ChampionCrown.ID)) {
@@ -54,7 +95,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] + AMOUNT + DESCRIPTIONS[2];
}
}
diff --git a/src/main/java/champ/relics/DefensiveTrainingManual.java b/src/main/java/champ/relics/DefensiveTrainingManual.java
index 151395183..d431efe16 100644
--- a/src/main/java/champ/relics/DefensiveTrainingManual.java
+++ b/src/main/java/champ/relics/DefensiveTrainingManual.java
@@ -4,9 +4,6 @@
import champ.ChampMod;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
@@ -17,13 +14,17 @@ public class DefensiveTrainingManual extends CustomRelic {
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("DefensiveManual.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("DefensiveManual.png"));
+ //extra Block gain
+ public static final int OOMPH = 3;
+
+ //DefensiveStance.java line 85
public DefensiveTrainingManual() {
- super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.FLAT);
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + OOMPH + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/champ/relics/DeflectingBracers.java b/src/main/java/champ/relics/DeflectingBracers.java
index 5c6dd300b..adfee313c 100644
--- a/src/main/java/champ/relics/DeflectingBracers.java
+++ b/src/main/java/champ/relics/DeflectingBracers.java
@@ -4,9 +4,6 @@
import champ.ChampMod;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
diff --git a/src/main/java/champ/relics/DuelingGlove.java b/src/main/java/champ/relics/DuelingGlove.java
index 12896c8b6..25c948745 100644
--- a/src/main/java/champ/relics/DuelingGlove.java
+++ b/src/main/java/champ/relics/DuelingGlove.java
@@ -5,10 +5,12 @@
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
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.VulnerablePower;
import downfall.util.TextureLoader;
+import hermit.cards.Malice;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
@@ -26,9 +28,20 @@ public DuelingGlove() {
@Override
public void onPlayCard(AbstractCard c, AbstractMonster m) {
System.out.println(c.type);
- if (m != null) {
- if (!m.hasPower(VulnerablePower.POWER_ID) && (c.target == AbstractCard.CardTarget.ENEMY || c.target == AbstractCard.CardTarget.SELF_AND_ENEMY) && c.type == AbstractCard.CardType.ATTACK) {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, AbstractDungeon.player, new VulnerablePower(m, 1, false), 1));
+ //Malice is a "single target" card and the Vulnerable will even come BEFORE the card deals damage. TWO bugs!
+ if (!(c instanceof Malice)) {
+ if (m != null) {
+ if (!m.hasPower(VulnerablePower.POWER_ID) && (c.target == AbstractCard.CardTarget.ENEMY || c.target == AbstractCard.CardTarget.SELF_AND_ENEMY) && c.type == AbstractCard.CardType.ATTACK) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, AbstractDungeon.player, new VulnerablePower(m, 1, false), 1));
+ }
+ }
+ }
+ }
+
+ public void onTrigger(AbstractCreature target) {
+ if (target != null) {
+ if (!target.hasPower(VulnerablePower.POWER_ID)) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(target, AbstractDungeon.player, new VulnerablePower(target, 1, false), 1));
}
}
}
diff --git a/src/main/java/champ/relics/FightingForDummies.java b/src/main/java/champ/relics/FightingForDummies.java
index ab6448e8e..facafcef2 100644
--- a/src/main/java/champ/relics/FightingForDummies.java
+++ b/src/main/java/champ/relics/FightingForDummies.java
@@ -2,13 +2,10 @@
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
-import champ.actions.OpenerReduceCostAction;
-import champ.util.OnOpenerSubscriber;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.powers.DrawCardNextTurnPower;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.stances.NeutralStance;
@@ -22,13 +19,36 @@ 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);
}
+ public boolean firstTurn = false;
+ public boolean activated = false;
+ //Dolphin's Style Guide
+
+ @Override
+ public void atPreBattle() {
+ firstTurn = true;
+ activated = false;
+ }
+
+ @Override
+ public void atTurnStartPostDraw() {
+ if (firstTurn == false) {
+ if (activated) {
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ addToBot(new DrawCardAction(AbstractDungeon.player, 1));
+ }
+ }
+ this.firstTurn = false;
+ activated = false;
+ }
+
@Override
public void onPlayerEndTurn() {
- if (AbstractDungeon.player.stance instanceof NeutralStance){
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DrawCardNextTurnPower(AbstractDungeon.player, 1), 1));
+ if (AbstractDungeon.player.stance instanceof NeutralStance) {
+ activated = true;
}
}
diff --git a/src/main/java/champ/relics/GladiatorsBookOfMartialProwess.java b/src/main/java/champ/relics/GladiatorsBookOfMartialProwess.java
index 08a08488e..17e8cb257 100644
--- a/src/main/java/champ/relics/GladiatorsBookOfMartialProwess.java
+++ b/src/main/java/champ/relics/GladiatorsBookOfMartialProwess.java
@@ -5,13 +5,11 @@
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
-import com.megacrit.cardcrawl.stances.NeutralStance;
import static champ.ChampMod.*;
@@ -27,7 +25,7 @@ public class GladiatorsBookOfMartialProwess extends CustomRelic {
private boolean hasPlayedFinisher;
public GladiatorsBookOfMartialProwess() {
- super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.FLAT);
}
@Override
diff --git a/src/main/java/champ/relics/LiftRelic.java b/src/main/java/champ/relics/LiftRelic.java
index f2c1cee62..62e2f6e94 100644
--- a/src/main/java/champ/relics/LiftRelic.java
+++ b/src/main/java/champ/relics/LiftRelic.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.relics;
import basemod.abstracts.CustomRelic;
@@ -12,9 +7,6 @@
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.StrengthPower;
-import com.megacrit.cardcrawl.relics.AbstractRelic;
-import com.megacrit.cardcrawl.relics.AbstractRelic.LandingSound;
-import com.megacrit.cardcrawl.relics.AbstractRelic.RelicTier;
import downfall.util.TextureLoader;
import static champ.ChampMod.makeRelicOutlinePath;
@@ -24,19 +16,21 @@ public class LiftRelic extends CustomRelic {
public static final String ID = ChampMod.makeID("LiftRelic");
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("LiftRelic.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("LiftRelic.png"));
- private static final int STR = 1;
public LiftRelic() {
super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.CLINK);
}
+ //Strength at the start of combat
+ private static final int STR = 1;
+
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0] + 1 + this.DESCRIPTIONS[1];
+ return this.DESCRIPTIONS[0] + STR + this.DESCRIPTIONS[1];
}
public void atBattleStart() {
this.flash();
- this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, 1), 1));
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new StrengthPower(AbstractDungeon.player, STR), STR));
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
}
\ No newline at end of file
diff --git a/src/main/java/champ/relics/PowerArmor.java b/src/main/java/champ/relics/PowerArmor.java
index af9536d2a..d2c1c80db 100644
--- a/src/main/java/champ/relics/PowerArmor.java
+++ b/src/main/java/champ/relics/PowerArmor.java
@@ -1,29 +1,62 @@
package champ.relics;
-import basemod.BaseMod;
import basemod.abstracts.CustomRelic;
import champ.ChampMod;
+import champ.powers.CounterPower;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnReceivePowerRelic;
+import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import downfall.util.TextureLoader;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import static champ.ChampMod.makeRelicOutlinePath;
import static champ.ChampMod.makeRelicPath;
+import static hermit.util.Wiz.pwrAmt;
-public class PowerArmor extends CustomRelic {
+public class PowerArmor extends CustomRelic implements OnReceivePowerRelic {
public static final String ID = ChampMod.makeID("PowerArmor");
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("PowerArmor.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("PowerArmor.png"));
+ //Power Armor
+
+ //Vigor / Counter Cap
+
public static final int CAP_RESOLVE_ETC = 10;
+ //debugging variable
+ public static int REMOVED = 0;
+
public PowerArmor() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.MAGICAL);
+ super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.CLINK);
+ }
+
+ @Override
+ public boolean onReceivePower(AbstractPower var1, AbstractCreature var2) {
+ if (var1.ID == VigorPower.POWER_ID || var1.ID == CounterPower.POWER_ID) {
+ if (pwrAmt(AbstractDungeon.player, var1.ID) >= CAP_RESOLVE_ETC) {
+ if (var1.amount > 0) {
+ onTrigger(var1.amount);
+ }
+ var1.amount = 0;
+ }
+
+ if (var1.amount != 0) {
+ return true;
+ }
+
+ return false;
+ }
+
+ return true;
}
public void onEquip() {
+ REMOVED = 0;
++AbstractDungeon.player.energy.energyMaster;
}
@@ -31,9 +64,53 @@ public void onUnequip() {
--AbstractDungeon.player.energy.energyMaster;
}
+ //this should NEVER happen outside of Wreath of Flame or cross-mod stuff, but it's been a bug for centuries and
+ //I'm tired of seeing the bug reports so yeah
+ //I also want to catch any non vigor() applications inside this mod even though I think I just caught all of them
+ //including smoking barrel and gremlin wizard collectible
+ //also in case someone adds more by accident
+ //I have NO idea why trying to make it work via receivepowerrelic doesn't work either but it doesn't, trust me it doesn't work
+ //writing a patch for applypoweraction is also annoying
+
+ //edit: I bit the bullet and decided to write a patch.
+
+ //NukeVigorPatch
+
+ //public void onTrigger(int amount) {
+ // if (amount > 0) {
+ // if (amount + pwrAmt(AbstractDungeon.player, VigorPower.POWER_ID) > CAP_RESOLVE_ETC) {
+ // flash();
+ // addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ // REMOVED = REMOVED + (CAP_RESOLVE_ETC - pwrAmt(AbstractDungeon.player, VigorPower.POWER_ID));
+ // //System.out.println("DEBUG: REMOVED: " + REMOVED);
+ // addToTop(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, VigorPower.POWER_ID, - (CAP_RESOLVE_ETC - pwrAmt(AbstractDungeon.player, VigorPower.POWER_ID))));
+ // }
+ // }
+ // }
+ //
+ // //this should literally never happen.
+ // public void onTrigger2(int amount) {
+ // if (amount > 0) {
+ // if (amount + pwrAmt(AbstractDungeon.player, CounterPower.POWER_ID) > CAP_RESOLVE_ETC) {
+ // flash();
+ // addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ // REMOVED = REMOVED + (CAP_RESOLVE_ETC - pwrAmt(AbstractDungeon.player, CounterPower.POWER_ID));
+ // //System.out.println("DEBUG: REMOVED: " + REMOVED);
+ // addToTop(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, CounterPower.POWER_ID, -(CAP_RESOLVE_ETC - pwrAmt(AbstractDungeon.player, CounterPower.POWER_ID))));
+ // }
+ // }
+ // }
+
+ public void onTrigger (int amount) {
+ flash();
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ REMOVED = REMOVED + amount;
+ //this.counter = REMOVED;
+ }
+
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + CAP_RESOLVE_ETC + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/champ/relics/RageAmulet.java b/src/main/java/champ/relics/RageAmulet.java
new file mode 100644
index 000000000..f31f7934b
--- /dev/null
+++ b/src/main/java/champ/relics/RageAmulet.java
@@ -0,0 +1,87 @@
+package champ.relics;
+
+import automaton.cards.Branch;
+import basemod.abstracts.CustomRelic;
+import champ.ChampMod;
+import champ.cards.CrookedStrike;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+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.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;
+
+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"));
+ 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 || card instanceof Branch)) {
+ if (card.type == AbstractCard.CardType.ATTACK && AbstractDungeon.player.hasPower(VigorPower.POWER_ID))
+ addNextTurnPower(AbstractDungeon.player.getPower(VigorPower.POWER_ID));
+ }
+ }
+
+ public void onSpecificTrigger() {
+ 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/SignatureFinisher.java b/src/main/java/champ/relics/SignatureFinisher.java
index 355ca1dc7..d369ed4d5 100644
--- a/src/main/java/champ/relics/SignatureFinisher.java
+++ b/src/main/java/champ/relics/SignatureFinisher.java
@@ -6,32 +6,57 @@
import champ.ChampMod;
import champ.patches.SignatureMovePatch;
import com.badlogic.gdx.graphics.Texture;
+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.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.FontHelper;
import com.megacrit.cardcrawl.helpers.PowerTip;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import downfall.util.TextureLoader;
import java.util.function.Predicate;
import static champ.ChampMod.*;
-public class SignatureFinisher extends CustomRelic implements CustomBottleRelic, CustomSavable {
+public class SignatureFinisher extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
public static final String ID = ChampMod.makeID("SignatureFinisher");
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("SignatureMove.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("SignatureMove.png"));
public AbstractCard card = null;
- private boolean cardSelected = true;
+ public boolean cardSelected = false;
+ private boolean hasfinisher = false;
+
+ private boolean cardRemoved = false;
public SignatureFinisher() {
super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
}
+ @Override
+ public void onPlayCard(AbstractCard card, AbstractMonster m) {
+ if (this.card != null && card.uuid.equals(this.card.uuid)) {
+ this.flash();
+ }
+ }
+
+ @Override
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
+ }
+
@Override
public Predicate isOnCard() {
return SignatureMovePatch.inSignatureMove::get;
@@ -56,13 +81,49 @@ public void onLoad(Integer cardIndex) {
if (card != null) {
SignatureMovePatch.inSignatureMove.set(card, true);
setDescriptionAfterLoading();
- card.cost = 0;
- card.costForTurn = 0;
- card.isCostModified = true;
+ //card.cost = 0;
+ //card.costForTurn = 0;
+ //card.isCostModified = true;
}
}
}
+ @Override
+ public void atBattleStartPreDraw() {
+ if (!cardRemoved && cardSelected){
+ boolean cardExists = false;
+ if (card!=null) {
+ for(AbstractCard c :AbstractDungeon.player.masterDeck.group){
+ if (c.uuid==card.uuid){
+ cardExists = true;
+ break;
+ }
+ }
+ }
+ if (!cardExists) {
+ cardRemoved = true;
+ tips.clear();
+ this.description = this.DESCRIPTIONS[4];
+ initializeTips();
+ }
+ }
+ if (cardRemoved) {
+ return;
+ }
+ super.atBattleStartPreDraw();
+ counter = 0;
+ for (AbstractCard c : AbstractDungeon.player.drawPile.group) {
+ if (SignatureMovePatch.inSignatureMove.get(card)) {
+ addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ c.cost = 0;
+ c.costForTurn = 0;
+ c.isCostModified = true;
+ break;
+ }
+ }
+ }
+
+
@Override
public void onEquip() {
cardSelected = false;
@@ -89,9 +150,11 @@ public void onEquip() {
public void onUnequip() {
if (card != null) {
AbstractCard cardInDeck = AbstractDungeon.player.masterDeck.getSpecificCard(card);
+
if (cardInDeck != null) {
SignatureMovePatch.inSignatureMove.set(cardInDeck, false);
}
+
}
}
@@ -102,24 +165,69 @@ public void update() {
if (!cardSelected && !AbstractDungeon.gridSelectScreen.selectedCards.isEmpty()) {
cardSelected = true;
card = AbstractDungeon.gridSelectScreen.selectedCards.get(0);
- card.cost = 0;
- card.costForTurn = 0;
- card.isCostModified = true;
+// card.cost = 0;
+// card.costForTurn = 0;
+// card.isCostModified = true;
SignatureMovePatch.inSignatureMove.set(card, true);
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
-
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
- private void setDescriptionAfterLoading() {
- this.description = FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[2];
- tips.clear();
- tips.add(new PowerTip(name, description));
- initializeTips();
+
+// @Override
+// public void onRemoveCardFromMasterDeck(AbstractCard var1){
+// if (var1.uuid == card.uuid){
+// setDescriptionAfterLoading();
+// }
+// }
+
+
+ public void setDescriptionAfterLoading() {
+ boolean cardExists = false;
+
+ if (cardSelected) {
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+ }
+
+ if (!cardExists) {
+ tips.clear();
+ this.description = this.DESCRIPTIONS[3];
+ this.grayscale = true;
+ initializeTips();
+ }
+
+ if (cardExists) {
+ this.description = FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[2];
+ tips.clear();
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ this.grayscale = false;
+ }
+ }
}
+
+ public boolean canSpawn() {
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
+ if (c.hasTag(FINISHER)) {
+ hasfinisher = true;
+ }
+ }
+ return hasfinisher;
+ }
+
+
@Override
public AbstractRelic makeCopy() {
return new SignatureFinisher();
diff --git a/src/main/java/champ/relics/SpectersHand.java b/src/main/java/champ/relics/SpectersHand.java
index cbece2c18..49ed9ffaa 100644
--- a/src/main/java/champ/relics/SpectersHand.java
+++ b/src/main/java/champ/relics/SpectersHand.java
@@ -1,18 +1,16 @@
package champ.relics;
import basemod.abstracts.CustomRelic;
-import basemod.cardmods.ExhaustMod;
-import basemod.helpers.CardModifierManager;
import champ.ChampMod;
import champ.cards.Defend;
import champ.cards.Strike;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
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 +32,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/AbstractChampStance.java b/src/main/java/champ/stances/AbstractChampStance.java
index 1104561c5..55fb28cdc 100644
--- a/src/main/java/champ/stances/AbstractChampStance.java
+++ b/src/main/java/champ/stances/AbstractChampStance.java
@@ -2,41 +2,22 @@
import champ.ChampChar;
import champ.ChampMod;
-import champ.actions.FatigueHpLossAction;
-import champ.cards.AbstractChampCard;
-import champ.util.OnOpenerSubscriber;
-import champ.util.OnTechniqueSubscriber;
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.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
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.Hitbox;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.helpers.input.InputHelper;
-import com.megacrit.cardcrawl.powers.AbstractPower;
-import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.stances.AbstractStance;
-import com.megacrit.cardcrawl.stances.NeutralStance;
-import com.megacrit.cardcrawl.vfx.BorderFlashEffect;
-import com.megacrit.cardcrawl.vfx.combat.IntenseZoomEffect;
import downfall.util.TextureLoader;
-import slimebound.SlimeboundMod;
import theHexaghost.GhostflameHelper;
import theHexaghost.HexaMod;
-import theHexaghost.ghostflames.AbstractGhostflame;
-import theHexaghost.vfx.MyOrb;
-
-import static theHexaghost.GhostflameHelper.activeGhostFlame;
public abstract class AbstractChampStance extends AbstractStance {
diff --git a/src/main/java/champ/stances/BerserkerStance.java b/src/main/java/champ/stances/BerserkerStance.java
index 48b4fd660..355c015b1 100644
--- a/src/main/java/champ/stances/BerserkerStance.java
+++ b/src/main/java/champ/stances/BerserkerStance.java
@@ -8,18 +8,13 @@
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.HealAction;
-import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.vfx.stance.StanceAuraEffect;
import guardian.vfx.DefensiveModeStanceParticleEffect;
-import static champ.ChampMod.fatigue;
import static champ.ChampMod.vigor;
public class BerserkerStance extends AbstractChampStance {
diff --git a/src/main/java/champ/stances/DefensiveStance.java b/src/main/java/champ/stances/DefensiveStance.java
index f14dbda52..53f1a8ccf 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 += DefensiveTrainingManual.OOMPH;
}
return x;
}
diff --git a/src/main/java/champ/util/OpenerModBerserker.java b/src/main/java/champ/util/OpenerModBerserker.java
index c669d57ad..48c827225 100644
--- a/src/main/java/champ/util/OpenerModBerserker.java
+++ b/src/main/java/champ/util/OpenerModBerserker.java
@@ -12,7 +12,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.stances.NeutralStance;
-import slimebound.SlimeboundMod;
public class OpenerModBerserker extends AbstractCardModifier {
diff --git a/src/main/java/champ/util/OpenerModDefensive.java b/src/main/java/champ/util/OpenerModDefensive.java
index 520184982..c338305e9 100644
--- a/src/main/java/champ/util/OpenerModDefensive.java
+++ b/src/main/java/champ/util/OpenerModDefensive.java
@@ -2,7 +2,6 @@
import basemod.abstracts.AbstractCardModifier;
import champ.ChampMod;
-import champ.stances.BerserkerStance;
import champ.stances.DefensiveStance;
import champ.stances.UltimateStance;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
@@ -13,7 +12,6 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.stances.NeutralStance;
-import slimebound.SlimeboundMod;
public class OpenerModDefensive extends AbstractCardModifier {
diff --git a/src/main/java/champ/util/TechniqueMod.java b/src/main/java/champ/util/TechniqueMod.java
index 3d7e6a76e..d500ea38d 100644
--- a/src/main/java/champ/util/TechniqueMod.java
+++ b/src/main/java/champ/util/TechniqueMod.java
@@ -3,14 +3,12 @@
import basemod.abstracts.AbstractCardModifier;
import basemod.helpers.CardModifierManager;
import champ.ChampMod;
-import champ.cards.AbstractChampCard;
import champ.stances.AbstractChampStance;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
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 sneckomod.SneckoMod;
public class TechniqueMod extends AbstractCardModifier {
diff --git a/src/main/java/champ/vfx/DaggerSprayAnyColorEffect.java b/src/main/java/champ/vfx/DaggerSprayAnyColorEffect.java
index bab5f5e8b..c732e1ec2 100644
--- a/src/main/java/champ/vfx/DaggerSprayAnyColorEffect.java
+++ b/src/main/java/champ/vfx/DaggerSprayAnyColorEffect.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.vfx;
import com.badlogic.gdx.graphics.Color;
diff --git a/src/main/java/champ/vfx/DaggerThrowAnyColorEffect.java b/src/main/java/champ/vfx/DaggerThrowAnyColorEffect.java
index 305ba35e6..a8fa12c95 100644
--- a/src/main/java/champ/vfx/DaggerThrowAnyColorEffect.java
+++ b/src/main/java/champ/vfx/DaggerThrowAnyColorEffect.java
@@ -1,8 +1,3 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.vfx;
import com.badlogic.gdx.Gdx;
diff --git a/src/main/java/champ/vfx/ExecuteEffect.java b/src/main/java/champ/vfx/ExecuteEffect.java
index 9d0aefa37..8fd74fc20 100644
--- a/src/main/java/champ/vfx/ExecuteEffect.java
+++ b/src/main/java/champ/vfx/ExecuteEffect.java
@@ -1,13 +1,7 @@
package champ.vfx;
-import basemod.ReflectionHacks;
-import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.vfx.PetalEffect;
-
-import java.util.ArrayList;
public class ExecuteEffect extends com.megacrit.cardcrawl.vfx.AbstractGameEffect {
private float timer = 0.1F;
diff --git a/src/main/java/champ/vfx/FlyingDaggerAnyColorEffect.java b/src/main/java/champ/vfx/FlyingDaggerAnyColorEffect.java
index 82f3aa62a..4c80273f8 100644
--- a/src/main/java/champ/vfx/FlyingDaggerAnyColorEffect.java
+++ b/src/main/java/champ/vfx/FlyingDaggerAnyColorEffect.java
@@ -1,14 +1,11 @@
package champ.vfx;
import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
-import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
-import com.megacrit.cardcrawl.audio.SoundMaster;
import com.megacrit.cardcrawl.core.CardCrawlGame;
public class FlyingDaggerAnyColorEffect extends com.megacrit.cardcrawl.vfx.AbstractGameEffect {
diff --git a/src/main/java/champ/vfx/SelfSpikesEffect.java b/src/main/java/champ/vfx/SelfSpikesEffect.java
index 904c47846..51c7a4dc6 100644
--- a/src/main/java/champ/vfx/SelfSpikesEffect.java
+++ b/src/main/java/champ/vfx/SelfSpikesEffect.java
@@ -1,13 +1,7 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
package champ.vfx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
diff --git a/src/main/java/champ/vfx/StanceDanceEffect.java b/src/main/java/champ/vfx/StanceDanceEffect.java
index f11cdf9fd..f1214c486 100644
--- a/src/main/java/champ/vfx/StanceDanceEffect.java
+++ b/src/main/java/champ/vfx/StanceDanceEffect.java
@@ -1,14 +1,10 @@
package champ.vfx;
-import basemod.ReflectionHacks;
-import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.vfx.PetalEffect;
-import java.util.ArrayList;
-
public class StanceDanceEffect extends com.megacrit.cardcrawl.vfx.AbstractGameEffect {
private float timer = 0.1F;
private float timerFlip = 0F;
diff --git a/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java b/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java
new file mode 100644
index 000000000..d295b7fcf
--- /dev/null
+++ b/src/main/java/charbosses/actions/orb/EnemyDecreaseMaxOrbAction.java
@@ -0,0 +1,25 @@
+package charbosses.actions.orb;
+
+
+import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.core.Settings;
+
+public class EnemyDecreaseMaxOrbAction extends AbstractGameAction {
+ public EnemyDecreaseMaxOrbAction(int slotIncrease) {
+ this.duration = Settings.ACTION_DUR_FAST;
+ this.amount = slotIncrease;
+ this.actionType = ActionType.BLOCK;
+ }
+
+ public void update() {
+ if (this.duration == Settings.ACTION_DUR_FAST) {
+ for(int i = 0; i < this.amount; ++i) {
+ AbstractCharBoss.boss.decreaseMaxOrbSlots(1);
+ }
+ }
+
+ this.tickDuration();
+ }
+}
+
diff --git a/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java b/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
index 424128a0b..3ac723ed0 100644
--- a/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
+++ b/src/main/java/charbosses/actions/orb/EnemyIncreaseMaxOrbAction.java
@@ -3,17 +3,13 @@
import charbosses.bosses.AbstractCharBoss;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-
public class EnemyIncreaseMaxOrbAction extends AbstractGameAction {
public EnemyIncreaseMaxOrbAction(int slotIncrease) {
this.duration = Settings.ACTION_DUR_FAST;
this.amount = slotIncrease;
this.actionType = ActionType.BLOCK;
}
-
public void update() {
if (this.duration == Settings.ACTION_DUR_FAST) {
for(int i = 0; i < this.amount; ++i) {
diff --git a/src/main/java/charbosses/actions/orb/EnemyRemoveOrbAction.java b/src/main/java/charbosses/actions/orb/EnemyRemoveOrbAction.java
new file mode 100644
index 000000000..ee6984b70
--- /dev/null
+++ b/src/main/java/charbosses/actions/orb/EnemyRemoveOrbAction.java
@@ -0,0 +1,30 @@
+package charbosses.actions.orb;
+
+import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.core.Settings;
+
+public class EnemyRemoveOrbAction extends AbstractGameAction {
+ private int orbCount;
+
+ public EnemyRemoveOrbAction(final int amount) {
+ if (Settings.FAST_MODE) {
+ this.duration = Settings.ACTION_DUR_XFAST;
+ } else {
+ this.duration = Settings.ACTION_DUR_FAST;
+ }
+ this.duration = this.startDuration;
+ this.orbCount = amount;
+ this.actionType = ActionType.DAMAGE;
+ }
+
+ @Override
+ public void update() {
+ if (this.duration == this.startDuration) {
+ for (int i = 0; i < this.orbCount; ++i) {
+ AbstractCharBoss.boss.removeNextOrb();
+ }
+ }
+ this.tickDuration();
+ }
+}
diff --git a/src/main/java/charbosses/bosses/AbstractCharBoss.java b/src/main/java/charbosses/bosses/AbstractCharBoss.java
index c6e4d0d42..9a950bd93 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
@@ -344,6 +350,9 @@ public void startTurn() {
}
public ArrayList getThisTurnCards() {
+ if (chosenArchetype == null) {
+ return new ArrayList<>();
+ }
return chosenArchetype.getThisTurnCards();
}
@@ -415,7 +424,6 @@ public void update() {
cB.refreshIntentHbLocation();
}
- //TODO Add a way for create a hidden attack intent for the Boss if it intends to play an Attack.
}
});
}
@@ -667,17 +675,31 @@ public int getIntentDmg() {
int totalIntentDmg = -1;
for (AbstractCard c : this.hand.group) {
AbstractBossCard cB = (AbstractBossCard) c;
- if (cB.intentDmg > 0 && (!cB.bossDarkened || AbstractDungeon.player.hasRelic(RunicDome.ID))) {
- if (totalIntentDmg == -1) {
- totalIntentDmg = 0;
+ if (cB.type == AbstractCard.CardType.ATTACK) {
+ if (cB.intentDmg > 0 && (!cB.bossDarkened || AbstractDungeon.player.hasRelic(RunicDome.ID))) {
+ if (totalIntentDmg == -1) {
+ totalIntentDmg = 0;
+ }
+ totalIntentDmg += cB.intentDmg;
}
- totalIntentDmg += cB.intentDmg;
}
}
return totalIntentDmg;
}
public int getIntentBaseDmg() {
+ int totalIntentDmg = -1;
+ for (AbstractCard c : this.hand.group) {
+ AbstractBossCard cB = (AbstractBossCard) c;
+ if (cB.type == AbstractCard.CardType.ATTACK) {
+ if (cB.intentDmg > 0) {
+ if (totalIntentDmg == -1) {
+ totalIntentDmg = 0;
+ }
+ totalIntentDmg += cB.intentDmg;
+ }
+ }
+ }
return getIntentDmg();
}
@@ -1005,74 +1027,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);
+ r.onAttack(info, damageAmount, this);
}
- for (final AbstractPower p : this.powers) {
- damageAmount = p.onAttackedToChangeDamage(info, damageAmount);
- }
- 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 +1171,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 +1194,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 +1204,11 @@ public void die() {
BossMechanicDisplayPanel.resetBossPanel();
useFastShakeAnimation(5.0F);
CardCrawlGame.screenShake.rumble(4.0F);
- if (!(this instanceof CharBossMerchant)) {
- if (hasPower(MinionPower.POWER_ID)) {
- if (Settings.FAST_MODE) {
- this.deathTimer += 0.7F;
- } else {
- ++this.deathTimer;
- }
- } else {
- //SlimeboundMod.logger.info("Char boss On Boss Victory now playing");
- onBossVictoryLogic();
- }
- }
-
+ onBossVictoryLogic();
}
+
AbstractCharBoss.boss = null;
AbstractCharBoss.finishedSetup = false;
relics.clear();
diff --git a/src/main/java/charbosses/bosses/Defect/CharBossDefect.java b/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
index 28ed1dbaf..77b5c9dce 100644
--- a/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
+++ b/src/main/java/charbosses/bosses/Defect/CharBossDefect.java
@@ -20,10 +20,11 @@
import com.megacrit.cardcrawl.core.Settings;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
public class CharBossDefect extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Defect");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Defect").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[3];
public int clawsPlayed = 0;
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
index b1dfe2738..9d7603489 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct1TurboNewAge.java
@@ -5,6 +5,8 @@
import charbosses.bosses.Defect.ArchetypeBaseDefect;
import charbosses.cards.blue.*;
import charbosses.cards.curses.EnAged;
+import charbosses.cards.curses.EnClumsy;
+import charbosses.cards.curses.EnInjury;
import charbosses.cards.curses.EnShame;
import charbosses.orbs.AbstractEnemyOrb;
import charbosses.powers.bossmechanicpowers.DefectVoidPower;
@@ -78,14 +80,14 @@ public ArrayList getThisTurnCards() {
case 0:
addToList(cardsList, new EnBuffer(), false);
addToList(cardsList, new EnDoomAndGloom(), extraUpgrades);
- addToList(cardsList, new EnShame(), false);
+ addToList(cardsList, new EnInjury(), false);
turn++;
break;
case 1:
//Turn 2
addToList(cardsList, new EnSteamBarrier(), false);
addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnAged(), false);
+ addToList(cardsList, new EnClumsy(), false);
turn++;
steamBarrierCasts++;
break;
@@ -114,7 +116,7 @@ public ArrayList getThisTurnCards() {
((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
}
addToList(cardsList, new EnDefendBlue());
- addToList(cardsList, new EnShame(), false);
+ addToList(cardsList, new EnInjury(), false);
turn++;
break;
case 1:
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
index 0747a52a2..89eaf6609 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct2ClawNewAge.java
@@ -21,11 +21,14 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.NoBlockPower;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import static charbosses.bosses.Defect.NewAge.ArchetypeAct3OrbsNewAge.increasePretendFocus;
+
public class ArchetypeAct2ClawNewAge extends ArchetypeBaseDefect {
private EnClaw c;
@@ -55,9 +58,10 @@ public void addedPreBattle() {
public void initialize() {
addRelic(new CBR_NeowsBlessing());
- addRelic(new CBR_Kunai());
- addRelic(new CBR_RedMask());
- addRelic(new CBR_Turnip());
+ addRelic(new CBR_IceCream());
+ addRelic(new CBR_BagOfPreparation());
+ addRelic(new CBR_NuclearBattery());
+
// animation
try {
@@ -84,104 +88,72 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- // NO Orbs
- addToList(cardsList, new EnBootSequence(), false); // removed
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
+ addToList(cardsList, new EnChill(), true);
+ frostOrbsChanneled += 1;
+ addToList(cardsList, new EnChill(), true);
+ frostOrbsChanneled += 1;
+ addToList(cardsList, new EnBootSequence(), true); // removed
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false); //1
addToList(cardsList, new EnMachineLearning(), true); // removed
turn++;
- // No Orbs
break;
case 1:
- //Turn 2
- // No Orbs
- addToList(cardsList, new EnLeap());
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- addToList(cardsList, new EnPanicButton()); // removed
- addToList(cardsList, new EnStrikeBlue(), true);
- // Frost
+ addToList(cardsList, new EnDefragment(), true);
+ increasePretendFocus(2);
+ addToList(cardsList, new EnChargeBattery());//2
+ addToList(cardsList, new EnDefendBlue(), false);//4
+ addToList(cardsList, new EnStrikeBlue(), true);//4
turn++;
break;
case 2:
//Turn 3
- // Frost
- addToList(cardsList, new EnReprogram(), false);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-1);
- addToList(cardsList, new EnSwiftStrike(), false);
- addToList(cardsList, new EnRebound(), false);
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2));
- // Frost
- //Kunai Proc
+ addToList(cardsList, new EnCoreSurge(), false);//5
+ addToList(cardsList, new EnReprogram(), extraUpgrades);//6
+ addToList(cardsList, new EnRebound(), false);//7
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//8
turn++;
break;
case 3:
- //Turn 4
- // Frost
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2));
- addToList(cardsList, new EnChargeBattery(), false);
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//8th
+ addToList(cardsList, new EnChargeBattery(), false);//9th
addToList(cardsList, new EnGeneticAlgorithm(14), true); //removed
- addToList(cardsList, new EnShame(), false);
- // Frost
+ addToList(cardsList, new EnClumsy(), true);//removed
turn++;
break;
case 4:
- //Turn 5
- // Frost
- addToList(cardsList, new EnHyperbeam(), extraUpgrades);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-3);
- addToList(cardsList, new EnMalfunctioning(), false);
- addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnClumsy(), false); //removed
- //Frost, but it's useless
+ addToList(cardsList, new EnCoreSurge(), false);//10
+ addToList(cardsList, new EnHyperbeam(), false);//11
+ addToList(cardsList, new EnClumsy(), false);
+ addToList(cardsList, new EnDefendBlue(), false);//12
turn = 0;
looped = true;
break;
}
} else {
+ //perfect 12 for a loop
switch (turn) {
case 0:
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
- //Play Leap if Block can be gained, otherwise play Stirike
- if (AbstractCharBoss.boss.hasPower(NoBlockPower.POWER_ID)){
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- if (frostOrbsChanneled > 3 && AbstractCharBoss.boss.orbs.get(0) instanceof AbstractEnemyOrb) {
- ((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
- }
- addToList(cardsList, new EnStrikeBlue(), true);
- addToList(cardsList, new EnLeap());
- } else {
- addToList(cardsList, new EnColdSnap(), true);
- frostOrbsChanneled += 1;
- if (frostOrbsChanneled > 3 && AbstractCharBoss.boss.orbs.get(0) instanceof AbstractEnemyOrb) {
- ((AbstractEnemyOrb) AbstractCharBoss.boss.orbs.get(0)).evokeOverride = true;
- }
- addToList(cardsList, new EnLeap());
- addToList(cardsList, new EnStrikeBlue(), true);
- }
- //Kunai Proc
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false); //1
+ addToList(cardsList, new EnChargeBattery(), false); //2
+ addToList(cardsList, new EnDefendBlue(), false);//4
+ addToList(cardsList, new EnStrikeBlue(), true);//4
turn++;
break;
case 1:
- //Turn 3
- addToList(cardsList, new EnHyperbeam(), extraUpgrades);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-3);
- addToList(cardsList, new EnChargeBattery(), false);
- addToList(cardsList, new EnShame(), false);
- addToList(cardsList, new EnRebound(), false);
+ addToList(cardsList, new EnCoreSurge(), false);//5
+ addToList(cardsList, new EnHyperbeam(), false);//6
+ addToList(cardsList, new EnChargeBattery(), false);//7
+ addToList(cardsList, new EnRebound(), false);//8
turn++;
break;
case 2:
- addToList(cardsList, new EnReprogram(), false);
- ArchetypeAct3OrbsNewAge.increasePretendFocus(-1);
- addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);
- addToList(cardsList, new EnDefendBlue(), false);
- addToList(cardsList, new EnSwiftStrike(), false);
- //Kunai Proc
+ addToList(cardsList, new EnCoreSurge(), false);//9
+ addToList(cardsList, new EnReprogram(), extraUpgrades);//10
+ addToList(cardsList, new EnClaw(cB.clawsPlayed * 2), false);//11
+ addToList(cardsList, new EnDefendBlue(), false);//12
turn = 0;
break;
}
-
}
return cardsList;
@@ -189,6 +161,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_Vajra());
+ addRelic(new CBR_ClockworkSouvenir());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
index 28d46f473..d07d93b16 100644
--- a/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
+++ b/src/main/java/charbosses/bosses/Defect/NewAge/ArchetypeAct3OrbsNewAge.java
@@ -6,15 +6,24 @@
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.EnNormality;
+import charbosses.cards.curses.EnPain;
+import charbosses.cards.curses.EnShame;
+import charbosses.cards.purple.EnLikeWater;
import charbosses.orbs.AbstractEnemyOrb;
-import charbosses.powers.bossmechanicpowers.DefectAncientConstructPower;
+import charbosses.powers.bossmechanicpowers.DefectBiasCuriosityPower;
import charbosses.powers.bossmechanicpowers.DefectCuriosityPower;
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.BiasPower;
+import com.megacrit.cardcrawl.powers.FocusPower;
import java.util.ArrayList;
@@ -27,10 +36,10 @@ public class ArchetypeAct3OrbsNewAge extends ArchetypeBaseDefect {
public ArchetypeAct3OrbsNewAge() {
super("DF_ARCHETYPE_ORBS", "Orbs");
- maxHPModifier += 350;
+ maxHPModifier += 300;
actNum = 3;
bossMechanicName = DefectCuriosityPower.NAME;
- bossMechanicDesc = DefectCuriosityPower.DESCRIPTIONS[0] + 1 + DefectCuriosityPower.DESCRIPTIONS[1];
+ bossMechanicDesc = DefectCuriosityPower.DESCRIPTIONS[0] + 1 + DefectCuriosityPower.DESCRIPTIONS[1] + DefectCuriosityPower.DESCRIPTIONS[2];
}
@Override
@@ -38,16 +47,16 @@ public void addedPreBattle() {
super.addedPreBattle();
AbstractCreature p = AbstractCharBoss.boss;
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DefectCuriosityPower(p)));
-
}
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());
+ addRelic(new CBR_Enchiridon());
}
@@ -87,61 +96,67 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- // No Orbs
- addToList(cardsList, new EnRainbow());
- addToList(cardsList, new EnReinforcedBody());
+ // No Orbs 4e
+ AbstractBossCard c = new EnBiasedCognition();
+ c.freeToPlayOnce = true;
+ c.costForTurn = 0;
+ addToList(cardsList, c, false);
+ increasePretendFocus(4);
+ addToList(cardsList, new EnMachineLearning(),true);
addToList(cardsList, new EnChargeBattery());
- // Lightning Frost Dark
+ addToList(cardsList, new EnRainbow());
+ // Lightning Frost Dark 0e
turn++;
break;
case 1:
+ increasePretendFocus(-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));
- cB.orbsAsEn().get(2).evokeOverride = true;
- cB.orbsAsEn().get(2).evokeMult = 2;
- }
- else {
- addToList(cardsList, new EnMulticast(3));
+ addToList(cardsList, new EnMulticast(1));
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:
+ increasePretendFocus(-1);
//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 EnPain());
turn++;
break;
case 3:
+ increasePretendFocus(-1);
//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 +164,94 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- //Lightning Frost Lightning
- addToList(cardsList, new EnLeap());
+ increasePretendFocus(-1);
+ //Lightning Frost Lightning Plasma 5e
+ addToList(cardsList, new EnDefragment(), false);//AI
+ increasePretendFocus(1);
+ 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 EnStrikeBlue());
+ 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
+ increasePretendFocus(-1);
+ //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 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 EnNormality());
+ addToList(cardsList, new EnForceField());
+ //Lightning Lightning Lightning Plasma 3e
turn++;
break;
case 2:
- // Lightning
+ increasePretendFocus(-1);
+ //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:
+ increasePretendFocus(-1);
+ //Plasma Lightning Frost
+ if (cB.maxOrbs == 4) {
+ addToList(cardsList, new EnCapacitor(), false);//AI
+ } else {
+ addToList(cardsList, new EnBuffer(), false);
+ }
+ //Plasma Lightning Frost Lightning
+ addToList(cardsList, new EnMulticastPlasma(cB.energyPanel.getCurrentEnergy()-1),false);
+ //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 EnForceField());
+ //increasePretendFocus(2);
+ //Lightning Frost Lightning Plasma. Perfect loop! :D
turn = 0;
looped = true;
break;
@@ -191,6 +263,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_ArtOfWar());
+ addRelic(new CBR_BirdFacedUrn());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java b/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
index bd5783da7..a0e03a9d6 100644
--- a/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
+++ b/src/main/java/charbosses/bosses/Hermit/CharBossHermit.java
@@ -20,6 +20,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.FontHelper;
import downfall.downfallMod;
+import downfall.util.LocalizeHelper;
import hermit.characters.hermit;
import hermit.effects.HermitEyeParticle;
@@ -32,7 +33,7 @@
public class CharBossHermit extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Hermit");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("hermit:hermit").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[6];
public Slot eye;
private float fireTimer = 0.0F;
diff --git a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct1SharpshooterNewAge.java
index 35280de23..ffde9b599 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).onTrigger();
+ }
addToList(cardsList, new EnHeadshot());
addToList(cardsList, new EnDefendHermit());
addToList(cardsList, new EnInjury());
diff --git a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct2WheelOfFateNewAge.java b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct2WheelOfFateNewAge.java
index b2bafda8e..d12878015 100644
--- a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct2WheelOfFateNewAge.java
+++ b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct2WheelOfFateNewAge.java
@@ -45,7 +45,7 @@ public void addedPreBattle() {
super.addedPreBattle();
AbstractCreature p = AbstractCharBoss.boss;
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new HermitWheelOfFortune(p), 1));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new HermitWheelOfFortune(p), 2));
}
private void reshuffle() {
@@ -115,9 +115,9 @@ public ArrayList getThisTurnCards() {
AbstractCard target = getNextCard();
cardsList.add(target);
-// if (target.cardID.equals(EnNecronomicurse.ID)) {
-// AbstractCharBoss.boss.getPower(HermitWheelOfFortune.POWER_ID).onSpecificTrigger();
-// }
+ if (target.cardID.equals(EnNecronomicurse.ID)) {
+ AbstractCharBoss.boss.getPower(HermitWheelOfFortune.POWER_ID).onSpecificTrigger();
+ }
}
if (AbstractCharBoss.boss instanceof CharBossHermit) {
CharBossHermit.previewCard = mockDeck.get(0).makeStatEquivalentCopy();
@@ -152,9 +152,9 @@ public void reInitializeHand() {
AbstractCard next = getNextCard();
AbstractCharBoss.boss.hand.addToTop(next);
-// if (next.cardID.equals(EnNecronomicurse.ID)) {
-// AbstractCharBoss.boss.getPower(HermitWheelOfFortune.POWER_ID).onSpecificTrigger();
-// }
+ if (next.cardID.equals(EnNecronomicurse.ID)) {
+ AbstractCharBoss.boss.getPower(HermitWheelOfFortune.POWER_ID).onSpecificTrigger();
+ }
AbstractCharBoss.boss.hand.refreshHandLayout();
AbstractDungeon.actionManager.addToTop(new AbstractGameAction() {
diff --git a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
index 0c488d00c..c7db0aa83 100644
--- a/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
+++ b/src/main/java/charbosses/bosses/Hermit/NewAge/ArchetypeAct3DoomsdayNewAge.java
@@ -7,26 +7,32 @@
import charbosses.cards.hermit.*;
import charbosses.powers.bossmechanicpowers.HermitDoomsday;
import charbosses.relics.*;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.animations.ShoutAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.SpawnMonsterAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Byrd;
import com.megacrit.cardcrawl.powers.RitualPower;
import downfall.monsters.DoomedDagger;
+import downfall.vfx.PotionThrowEffect;
import java.util.ArrayList;
-public class ArchetypeAct3DoomsdayNewAge extends ArchetypeBaseIronclad {
+import static com.megacrit.cardcrawl.monsters.city.Byrd.DIALOG;
+public class ArchetypeAct3DoomsdayNewAge extends ArchetypeBaseIronclad {
+ public boolean froegg = false;
public ArchetypeAct3DoomsdayNewAge() {
super("HERMIT_DOOMSDAY_ARCHETYPE", "Doomsday");
- maxHPModifier += 315;
- if (AbstractDungeon.ascensionLevel >= 19) {
- maxHPModifier += 24;
- }
+ maxHPModifier += 363;
actNum = 3;
bossMechanicName = HermitDoomsday.NAME;
bossMechanicDesc = HermitDoomsday.DESC[0];
@@ -40,11 +46,24 @@ public static AbstractMonster getDoomedSnake(){ // called by EnPurgatory too
public void addedPreBattle() {
super.addedPreBattle();
AbstractCreature p = AbstractCharBoss.boss;
-
AbstractDungeon.actionManager.addToBottom(new SpawnMonsterAction(getDoomedSnake(), true));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new HermitDoomsday(p), 1));
-// AbstractDungeon.actionManager.addToBottom(new VFXAction(new PotionThrowEffect("downfallResources/images/vfx/CultistPotion.png", p.hb.cX, p.hb.cY, p.hb.cX, p.hb.cY, 2F, 0.6F, false, true), 0.6F));
+
+ //Cultist Potion!!!
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new PotionThrowEffect("downfallResources/images/vfx/CultistPotion.png", p.hb.cX-240, p.hb.cY-150, p.hb.cX-240, p.hb.cY-150, 2F, 0.6F, false, true), 0.6F));
+ int roll = MathUtils.random(2);
+ if (roll == 0) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1A"));
+ } else if (roll == 1) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1B"));
+ } else {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("VO_CULTIST_1C"));
+ }
+
+ AbstractDungeon.actionManager.addToBottom(new TalkAction(p, Byrd.DIALOG[0], 1.2F, 1.2F));
+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new RitualPower(p, 1, false), 1));
+
}
public void initialize() {
@@ -66,7 +85,12 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
- addToList(cardsList, new EnShadowCloak());
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ addToList(cardsList, new EnShadowCloak(), extraUpgrades);
+ }
+ if (!(AbstractDungeon.ascensionLevel >= 19)) {
+ addToList(cardsList, new EnShadowCloak());
+ }
addToList(cardsList, new EnGrudge(15));
addToList(cardsList, new EnGlare());
turn++;
@@ -115,6 +139,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_DarkstonePeriapt());
+ addRelic(new CBR_FrozenEgg());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java b/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
index 2db4ba2b9..f1023735b 100644
--- a/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
+++ b/src/main/java/charbosses/bosses/Ironclad/CharBossIronclad.java
@@ -35,13 +35,14 @@
import com.megacrit.cardcrawl.ui.panels.energyorb.EnergyOrbRed;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
import guardian.powers.ConstructPower;
import hermit.util.TextureLoader;
import slimebound.SlimeboundMod;
public class CharBossIronclad extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Ironclad");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Ironclad").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[1];
private Texture fgImg = TextureLoader.getTexture("downfallResources/images/fgShrooms.png");
private Texture bgImg = TextureLoader.getTexture("downfallResources/images/bgShrooms.png");
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
index 3c7118057..3747b2168 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct1StatusesNewAge.java
@@ -32,7 +32,7 @@ public class ArchetypeAct1StatusesNewAge extends ArchetypeBaseIronclad {
public ArchetypeAct1StatusesNewAge() {
super("IC_STATUS_ARCHETYPE", "Status");
- maxHPModifier += 75;
+ maxHPModifier += 60;
actNum = 1;
bossMechanicName = IroncladStatusPower.NAME;
bossMechanicDesc = IroncladStatusPower.DESC[0];
@@ -76,13 +76,13 @@ public ArrayList getThisTurnCards() {
turn++;
break;
case 1:
+ addToList(cardsList, new EnWildStrike());
addToList(cardsList, new EnRecklessCharge());
- addToList(cardsList, new EnWildStrike(), extraUpgrades);
addToList(cardsList, new EnDefendRed());
turn++;
break;
case 2:
- addToList(cardsList, new EnPowerThrough(true));
+ addToList(cardsList, new EnPowerThrough(true), extraUpgrades);
addToList(cardsList, new EnSecondWind());
addToList(cardsList, new EnDefendRed());
theArtOfWar.beginPulse();
@@ -112,7 +112,7 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- addToList(cardsList, new EnPowerThrough(true));
+ addToList(cardsList, new EnPowerThrough(true), extraUpgrades);
addToList(cardsList, new EnTrueGrit(), true);
//IC will exhaust the Doubt the first time through the loop instead of a wound
//So the wound will appear the second time through the loop onward
@@ -121,7 +121,7 @@ public ArrayList getThisTurnCards() {
theArtOfWar.beginPulse();
break;
case 1:
- addToList(cardsList, new EnWildStrike(), extraUpgrades);
+ addToList(cardsList, new EnWildStrike());
addToList(cardsList, new EnRecklessCharge());
addToList(cardsList, new EnBash()); //unused
turn++;
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
index 0bc9bd3bd..bf3b69bea 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct2MushroomsNewAge.java
@@ -97,7 +97,7 @@ public ArrayList getThisTurnCards() {
case 2:
addToList(cardsList, new EnReaper());
addToList(cardsList, new EnDefendRed());
- addToList(cardsList, new EnHaunted());
+ addToList(cardsList, new EnClumsy());
turn++;
break;
case 3:
diff --git a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
index 720351103..0d40045f2 100644
--- a/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
+++ b/src/main/java/charbosses/bosses/Ironclad/NewAge/ArchetypeAct3BlockNewAge.java
@@ -77,7 +77,7 @@ public ArrayList getThisTurnCards() {
case 0:
addToList(cardsList, new EnFeelNoPain());
addToList(cardsList, new EnImpervious());
- addToList(cardsList, new EnIntimidate());
+ addToList(cardsList, new EnIntimidate(), true);
turn++;
break;
case 1:
@@ -88,7 +88,7 @@ public ArrayList getThisTurnCards() {
break;
case 2:
addToList(cardsList, new EnImpervious());
- addToList(cardsList, new EnIntimidate());
+ addToList(cardsList, new EnIntimidate(), true);
addToList(cardsList, new EnEntrench());
turn++;
break;
diff --git a/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java b/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
index cbf1fb9af..41e2057b6 100644
--- a/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
+++ b/src/main/java/charbosses/bosses/Merchant/ArchetypeAct3MerchantBoss.java
@@ -31,9 +31,14 @@ public void initialize() {
// addRelic(new CBR_Girya(3));
// addRelic(new CBR_Vajra());
// addRelic(new CBR_SmoothStone());
- addRelic(new CBR_FossilizedHelix());
+
+ // :)
+ addRelic(new CBR_SmilingMask());
+
//addRelic(new CBR_BagOfPreparation());
- addRelic(new CBR_ClockworkSouvenir());
+
+ addRelic(new CBR_Toolbox());
+
addRelic(new CBR_TungstenRod());
addRelic(new CBR_IceCream());
//addRelic(new CBR_FusionHammer());
@@ -57,35 +62,36 @@ public ArrayList getThisTurnCards() {
if (!looped) {
switch (turn) {
case 0:
-
- addToList(cardsList, new EnPanicButton());
- addToList(cardsList, new EnDramaticEntrance());
- addToList(cardsList, new EnTheBomb(), extraUpgrades);
+ addToList(cardsList, new EnPanacea()); //Toolbox
+ addToList(cardsList, new EnPanicButton()); //exhausts
+ addToList(cardsList, new EnDramaticEntrance()); //exhausts
+ addToList(cardsList, new EnTheBomb(), extraUpgrades); //1 of 1 Bombs
turn++;
break;
case 1:
- addToList(cardsList, new EnApotheosis(), true);
- addToList(cardsList, new EnPanacea(), true);
- addToList(cardsList, new EnGoodInstincts(), true);
+ addToList(cardsList, new EnApotheosis(), true); //exhausts
+ addToList(cardsList, new EnPanacea(), true); // +2 artifact
+ addToList(cardsList, new EnGoodInstincts(), true); //1 of 2 Good Instincts
turn++;
break;
case 2:
//Bomb goes Boom.
- addToList(cardsList, new EnPanacea(), true);
+ addToList(cardsList, new EnPanacea(), true); // +2 artifact, +5 total??????? remove clockwork and replace with another relic (abacus?)
addToList(cardsList, new EnPanicButton(), true);
- addToList(cardsList, new EnBlind(), true);
+ addToList(cardsList, new EnSadisticNature(), true); // sadistic here fills up a slot because there was an extra unaccounted for bomb
turn++;
break;
case 3:
- addToList(cardsList, new EnTrip(), true);
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
+ addToList(cardsList, new EnSwiftStrike(), true); //1 of 2 Swift Strikes
+ addToList(cardsList, new EnTrip(), true); // moved the trip here
+ addToList(cardsList, new EnBlind(), true); //moved a blind here
+ // 1 of 1 Trips
turn++;
break;
case 4:
- addToList(cardsList, new EnGoodInstincts(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
- addToList(cardsList, new EnHandOfGreed(), true);
+ addToList(cardsList, new EnGoodInstincts(), true); //2 of 2 Good Instincts
+ addToList(cardsList, new EnSwiftStrike(), true); //2 of 2 Swift Strikes
+ addToList(cardsList, new EnHandOfGreed(), true); //1 of 1 Hand of Greed
turn=0;
looped = true;
break;
@@ -94,27 +100,28 @@ public ArrayList getThisTurnCards() {
} else {
switch (turn) {
case 0:
- //Bomb goes Boom.
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnTrip(), true);
- addToList(cardsList, new EnGoodInstincts(), true);
+ //no bomb this turn
+ addToList(cardsList, new EnTheBomb(), true); //1
+ addToList(cardsList, new EnSwiftStrike(), true); //2
+ addToList(cardsList, new EnTrip(), true); //3
turn++;
break;
case 1:
- addToList(cardsList, new EnHandOfGreed(), true);
- addToList(cardsList, new EnTheBomb(), true);
- addToList(cardsList, new EnBlind(), true);
+ addToList(cardsList, new EnHandOfGreed(), true); //4
+ addToList(cardsList, new EnTheBomb(), true); //5
+ addToList(cardsList, new EnBlind(), true); //6
turn++;
break;
case 2:
//Bomb goes Boom.
- addToList(cardsList, new EnGoodInstincts(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
- addToList(cardsList, new EnSwiftStrike(), true);
+ addToList(cardsList, new EnGoodInstincts(), true); //7
+ addToList(cardsList, new EnSwiftStrike(), true); //8
+ addToList(cardsList, new EnGoodInstincts(), true); //9
+ //changing this turn because this is too harsh compared to normal act 3 bosses, and this number could be higher depending on # of shops visited
turn = 0;
break;
}
-
+// 1 Bomb. 2 Swift Strikes. 2 Good Instincts. 1 Trip. 1 Blind. 1 Hand of Greed. that's 9 cards total for a 3 turn loop
}
return cardsList;
}
diff --git a/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java b/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
index ed747cc5e..02cd4a490 100644
--- a/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
+++ b/src/main/java/charbosses/bosses/Merchant/CharBossMerchant.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer.PlayerClass;
+import com.megacrit.cardcrawl.characters.AbstractPlayer.PlayerClass;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -28,6 +29,7 @@
import com.megacrit.cardcrawl.vfx.combat.IntenseZoomEffect;
import downfall.downfallMod;
import downfall.monsters.FleeingMerchant;
+import downfall.util.LocalizeHelper;
import downfall.vfx.NeowBossRezEffect;
public class CharBossMerchant extends AbstractCharBoss {
@@ -52,16 +54,16 @@ public class CharBossMerchant extends AbstractCharBoss {
private boolean neowSpoke = false;
public static final String ID = downfallMod.makeID("CharBossMerchant");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString(ID).NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[5];
public CharBossMerchant() {
super(NAME, ID, 300, 0f, -40f, 200.0f, 190.0f, null, 0.0f, 0.0f, PlayerClass.IRONCLAD);
- if (downfallMod.tempAscensionHack) {
- downfallMod.tempAscensionHack = false;
- AbstractDungeon.ascensionLevel = downfallMod.tempAscensionOriginalValue;
- downfallMod.tempAscensionOriginalValue = 0;
- }
+// if (downfallMod.tempAscensionHack) {
+// downfallMod.tempAscensionHack = false;
+// AbstractDungeon.ascensionLevel = downfallMod.tempAscensionOriginalValue;
+// downfallMod.tempAscensionOriginalValue = 0;
+// }
this.energyOrb = new EnergyOrbRed();
this.energy = new EnemyEnergyManager(3);
@@ -82,7 +84,7 @@ public CharBossMerchant() {
this.tint.color = new Color(.5F, .5F, 1F, 0F);
- this.type = EnemyType.BOSS;
+ type = EnemyType.BOSS;
}
@Override
@@ -97,6 +99,8 @@ public void usePreBattleAction() {
if (FleeingMerchant.CURRENT_STRENGTH > 0) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, FleeingMerchant.CURRENT_STRENGTH), FleeingMerchant.CURRENT_STRENGTH));
}
super.usePreBattleAction();
@@ -111,13 +115,13 @@ public void initGlowMesh(float time) {
this.atlasGlow = new TextureAtlas(Gdx.files.internal(downfallMod.assetPath("images/monsters/merchant/noShadow/skeletonGlow.atlas")));
SkeletonJson json = new SkeletonJson(this.atlasGlow);
if (CardCrawlGame.dungeon != null && AbstractDungeon.player != null) {
- if (AbstractDungeon.player.hasRelic("PreservedInsect") && !this.isPlayer && AbstractDungeon.getCurrRoom().eliteTrigger) {
- glowscale += 0.3F;
- }
-
- if (ModHelper.isModEnabled("MonsterHunter") && !this.isPlayer) {
- glowscale -= 0.3F;
- }
+ // if (AbstractDungeon.player.hasRelic("PreservedInsect") && !this.isPlayer && AbstractDungeon.getCurrRoom().eliteTrigger) {
+ // glowscale += 0.3F;
+ // }
+ //
+ // if (ModHelper.isModEnabled("MonsterHunter") && !this.isPlayer) {
+ // glowscale -= 0.3F;
+ // }
}
json.setScale(Settings.scale / glowscale);
diff --git a/src/main/java/charbosses/bosses/Silent/CharBossSilent.java b/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
index d2d8c0a87..c649a772a 100644
--- a/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
+++ b/src/main/java/charbosses/bosses/Silent/CharBossSilent.java
@@ -30,10 +30,11 @@
import com.megacrit.cardcrawl.vfx.combat.SmokeBombEffect;
import downfall.downfallMod;
import downfall.monsters.NeowBoss;
+import downfall.util.LocalizeHelper;
public class CharBossSilent extends AbstractCharBoss {
public static final String ID = downfallMod.makeID("Silent");
- public static final String NAME = CardCrawlGame.languagePack.getCharacterString("Silent").NAMES[0];
+ public static final String NAME = LocalizeHelper.DonwfallRunHistoryMonsterNames.TEXT[2];
public static boolean posStorage = false;
diff --git a/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java b/src/main/java/charbosses/bosses/Silent/NewAge/ArchetypeAct1PoisonNewAge.java
index fc014f72c..8a167f96d 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;
@@ -138,6 +140,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_SneckoSkull());
+ addRelic(new CBR_Vajra());
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java b/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
index 6558ccd97..de6e16e03 100644
--- a/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
+++ b/src/main/java/charbosses/bosses/Watcher/CharBossWatcher.java
@@ -2,10 +2,7 @@
import charbosses.bosses.AbstractBossDeckArchetype;
import charbosses.bosses.AbstractCharBoss;
-import charbosses.bosses.Watcher.NewAge.ArchetypeAct1RetainNewAge;
-import charbosses.bosses.Watcher.NewAge.ArchetypeAct2CalmNewAge;
-import charbosses.bosses.Watcher.NewAge.ArchetypeAct2StancesNewAge;
-import charbosses.bosses.Watcher.NewAge.ArchetypeAct3DivinityNewAge;
+import charbosses.bosses.Watcher.NewAge.*;
import charbosses.core.EnemyEnergyManager;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
@@ -21,10 +18,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;
@@ -109,7 +107,7 @@ public void generateDeck() {
archetype = new ArchetypeAct2CalmNewAge();
break;
case 3:
- archetype = new ArchetypeAct3DivinityNewAge();
+ archetype = new ArchetypeAct3DualityNewAge();
break;
case 4: {
switch (NeowBoss.Rezzes) {
@@ -120,7 +118,7 @@ public void generateDeck() {
archetype = new ArchetypeAct2CalmNewAge();
break;
case 2:
- archetype = new ArchetypeAct3DivinityNewAge();
+ archetype = new ArchetypeAct3DualityNewAge();
break;
default:
archetype = new ArchetypeAct1RetainNewAge();
diff --git a/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
index 59976623d..bff6f0907 100644
--- a/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
+++ b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DivinityNewAge.java
@@ -2,13 +2,14 @@
import charbosses.bosses.AbstractCharBoss;
import charbosses.bosses.Defect.ArchetypeBaseDefect;
+import charbosses.bosses.Watcher.ArchetypeBaseWatcher;
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;
@@ -18,7 +19,7 @@
import java.util.ArrayList;
-public class ArchetypeAct3DivinityNewAge extends ArchetypeBaseDefect {
+public class ArchetypeAct3DivinityNewAge extends ArchetypeBaseWatcher {
private AbstractBossCard theVeryImportantSandsOfTime = null;
private AbstractBossCard theVeryImportantPerseverence = null;
@@ -44,7 +45,7 @@ public void initialize() {
addRelic(new CBR_NeowsBlessing());
addRelic(new CBR_ThreadAndNeedle());
- addRelic(new CBR_CaptainsWheel());
+ addRelic(new CBR_Vajra());
addRelic(new CBR_Torii());
addRelic(new CBR_VelvetChoker());
}
@@ -56,38 +57,43 @@ 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());
- addToList(cardsList, new EnDevotion());
+ //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(), true);
turn = 0;
looped = true;
break;
@@ -95,6 +101,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 +113,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;
@@ -130,6 +141,6 @@ public ArrayList getThisTurnCards() {
@Override
public void initializeBonusRelic() {
- addRelic(new CBR_Damaru());
+ addRelic(new CBR_DuvuDoll(2));
}
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DualityNewAge.java b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DualityNewAge.java
new file mode 100644
index 000000000..e056b7db2
--- /dev/null
+++ b/src/main/java/charbosses/bosses/Watcher/NewAge/ArchetypeAct3DualityNewAge.java
@@ -0,0 +1,129 @@
+package charbosses.bosses.Watcher.NewAge;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.bosses.Defect.ArchetypeBaseDefect;
+import charbosses.bosses.Watcher.ArchetypeBaseWatcher;
+import charbosses.cards.AbstractBossCard;
+import charbosses.cards.colorless.*;
+import charbosses.cards.curses.EnInjury;
+import charbosses.cards.curses.EnNormality;
+import charbosses.cards.purple.*;
+import charbosses.powers.bossmechanicpowers.WatcherDivinityPower;
+import charbosses.powers.bossmechanicpowers.WatcherSkillPower;
+import charbosses.relics.*;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import java.util.ArrayList;
+
+public class ArchetypeAct3DualityNewAge extends ArchetypeBaseWatcher {
+
+ private AbstractBossCard theVeryImportantSandsOfTime = null;
+ private AbstractBossCard theVeryImportantPerseverence = null;
+
+ public ArchetypeAct3DualityNewAge() {
+ super("WA_ARCHETYPE_DIVINITY", "Duality");
+
+ maxHPModifier += 380;
+ actNum = 3;
+ bossMechanicName = WatcherSkillPower.NAME;
+ bossMechanicDesc = WatcherSkillPower.DESCRIPTIONS[0] + 1 + WatcherSkillPower.DESCRIPTIONS[1] + 1 + WatcherSkillPower.DESCRIPTIONS[2] + 1 + WatcherSkillPower.DESCRIPTIONS[3];
+ }
+
+ @Override
+ public void addedPreBattle() {
+ super.addedPreBattle();
+ AbstractCreature p = AbstractCharBoss.boss;
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new WatcherSkillPower(p, 1)));
+
+ }
+
+ public void initialize() {
+
+ addRelic(new CBR_NeowsBlessing());
+ addRelic(new CBR_VelvetChoker());
+ addRelic(new CBR_Duality());
+ addRelic(new CBR_RedMask());
+ addRelic(new CBR_Vajra());
+ }
+
+ @Override
+ public ArrayList getThisTurnCards() {
+ ArrayList cardsList = new ArrayList<>();
+ boolean extraUpgrades = AbstractDungeon.ascensionLevel >= 4;
+ boolean egg = AbstractDungeon.ascensionLevel >= 19;
+ if (!looped) {
+ switch (turn) {
+ case 0:
+ //turn 1
+ //nothing
+ addToList(cardsList, new EnVigilance());
+ addToList(cardsList, new EnCrushJoints(), true);
+ addToList(cardsList, new EnNormality());
+ turn++;
+ break;
+ case 1:
+ addToList(cardsList, new EnLikeWater());
+ addToList(cardsList, new EnSwiftStrike(), egg);
+ addToList(cardsList, new EnConclude(), egg);
+ turn++;
+ break;
+ case 2:
+ addToList(cardsList, new EnSashWhip(), true);
+ addToList(cardsList, new EnJAX(), extraUpgrades);
+ addToList(cardsList, new EnInjury());
+ turn++;
+ break;
+ case 3:
+ addToList(cardsList, new EnFasting());
+ addToList(cardsList, new EnDarkShackles());
+ addToList(cardsList, new EnEmptyFist(), egg);
+ turn++;
+ break;
+ case 4:
+ addToList(cardsList, new EnFollowUp(), egg);
+ addToList(cardsList, new EnGoodInstincts());
+ addToList(cardsList, new EnSignatureMove(), egg);
+ turn = 0;
+ looped = true;
+ break;
+ }
+ } else {
+ switch (turn) {
+ case 0:
+ addToList(cardsList, new EnSwiftStrike(), egg);
+ addToList(cardsList, new EnVigilance());
+ addToList(cardsList, new EnConclude(), egg);
+ turn++;
+ break;
+ case 1:
+ addToList(cardsList, new EnInjury());
+ addToList(cardsList, new EnFollowUp(), egg);
+ addToList(cardsList, new EnSashWhip(), egg);
+ turn++;
+ break;
+ case 2:
+ addToList(cardsList, new EnEmptyFist(), egg);
+ addToList(cardsList, new EnGoodInstincts());
+ addToList(cardsList, new EnCrushJoints(), true);
+ turn++;
+ break;
+ case 3:
+ addToList(cardsList, new EnJAX(), extraUpgrades);
+ addToList(cardsList, new EnSignatureMove(), egg);
+ addToList(cardsList, new EnNormality());
+ turn = 0;
+ break;
+ }
+ }
+
+ return cardsList;
+ }
+
+ @Override
+ public void initializeBonusRelic() {
+ addRelic(new CBR_MoltenEgg());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/cards/AbstractBossCard.java b/src/main/java/charbosses/cards/AbstractBossCard.java
index 01fb76135..1bb90ed47 100644
--- a/src/main/java/charbosses/cards/AbstractBossCard.java
+++ b/src/main/java/charbosses/cards/AbstractBossCard.java
@@ -95,7 +95,7 @@ public abstract class AbstractBossCard extends AbstractCard {
public boolean manualCustomVulnModifier = false;
public static boolean fakeStormPower = false;
//TODO - Does Vuln get actually calculated anywhere? this variable does not appear to be referenced
-
+ //paper phrog?
private static final float INTENT_HB_W = 64.0F * Settings.scale;
public Hitbox intentHb = new Hitbox(INTENT_HB_W, INTENT_HB_W);
diff --git a/src/main/java/charbosses/cards/blue/EnBiasedCognition.java b/src/main/java/charbosses/cards/blue/EnBiasedCognition.java
index 944b47b4e..b35e821b2 100644
--- a/src/main/java/charbosses/cards/blue/EnBiasedCognition.java
+++ b/src/main/java/charbosses/cards/blue/EnBiasedCognition.java
@@ -4,18 +4,13 @@
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.cards.DamageInfo;
-import com.megacrit.cardcrawl.cards.blue.BeamCell;
-import com.megacrit.cardcrawl.cards.blue.BiasedCognition;
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.BiasPower;
import com.megacrit.cardcrawl.powers.FocusPower;
-import com.megacrit.cardcrawl.powers.VulnerablePower;
import java.util.ArrayList;
@@ -47,7 +42,6 @@ public void upgrade() {
this.upgradeName();
this.upgradeMagicNumber(1);
}
-
}
@Override
diff --git a/src/main/java/charbosses/cards/blue/EnBuffer.java b/src/main/java/charbosses/cards/blue/EnBuffer.java
index 578801605..468fd4708 100644
--- a/src/main/java/charbosses/cards/blue/EnBuffer.java
+++ b/src/main/java/charbosses/cards/blue/EnBuffer.java
@@ -20,9 +20,14 @@ public EnBuffer() {
super(ID, cardStrings.NAME, "blue/power/buffer", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
- // alwaysDisplayText = true;
- }
+ }
+ public EnBuffer(boolean text) {
+ super(ID, cardStrings.NAME, "blue/power/buffer", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = text;
+ }
public void use(AbstractPlayer p, AbstractMonster m) {
this.addToBot(new ApplyPowerAction(m, m, new BufferPower(m, this.magicNumber), this.magicNumber));
diff --git a/src/main/java/charbosses/cards/blue/EnConsume.java b/src/main/java/charbosses/cards/blue/EnConsume.java
new file mode 100644
index 000000000..0d12768fc
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnConsume.java
@@ -0,0 +1,57 @@
+package charbosses.cards.blue;
+
+import charbosses.actions.orb.EnemyDecreaseMaxOrbAction;
+import charbosses.actions.orb.EnemyIncreaseMaxOrbAction;
+import charbosses.bosses.Defect.NewAge.ArchetypeAct3OrbsNewAge;
+import charbosses.cards.AbstractBossCard;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.FocusPower;
+
+import java.util.ArrayList;
+
+public class EnConsume extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Consume";
+ private static final CardStrings cardStrings;
+
+ public EnConsume() {
+ super(ID, cardStrings.NAME, "blue/skill/consume", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ focusGeneratedIfPlayed = magicNumber;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ ArchetypeAct3OrbsNewAge.resetPretendFocus();
+ this.addToBot(new ApplyPowerAction(m, m, new FocusPower(m, this.magicNumber), this.magicNumber));
+ this.addToBot(new EnemyDecreaseMaxOrbAction(1));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(1);
+ focusGeneratedIfPlayed = magicNumber;
+ }
+
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 50;
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnConsume();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Consume");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnCoreSurge.java b/src/main/java/charbosses/cards/blue/EnCoreSurge.java
index 8f4a0980f..471fd6142 100644
--- a/src/main/java/charbosses/cards/blue/EnCoreSurge.java
+++ b/src/main/java/charbosses/cards/blue/EnCoreSurge.java
@@ -10,6 +10,8 @@
import com.megacrit.cardcrawl.cards.blue.CoreSurge;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ArtifactPower;
@@ -23,7 +25,12 @@ public class EnCoreSurge extends AbstractBossCard {
public EnCoreSurge() {
super(ID, cardStrings.NAME, "blue/attack/core_surge", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.BLUE, CardRarity.RARE, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
- this.exhaust = true;
+ if (AbstractDungeon.floorNum < 25) {
+ this.exhaust = true;
+ }
+ if (AbstractDungeon.floorNum > 25) {
+ this.exhaust = false;
+ }
this.baseDamage = 11;
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
diff --git a/src/main/java/charbosses/cards/blue/EnCreativeAI.java b/src/main/java/charbosses/cards/blue/EnCreativeAI.java
new file mode 100644
index 000000000..254088b25
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnCreativeAI.java
@@ -0,0 +1,55 @@
+
+package charbosses.cards.blue;
+
+import charbosses.cards.AbstractBossCard;
+import charbosses.powers.cardpowers.EnemyCreativeAIPower;
+import charbosses.powers.general.EnemyDrawPower;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.MachineLearning;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.DrawPower;
+
+import java.util.ArrayList;
+
+public class EnCreativeAI extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:CreativeAI";
+ private static final CardStrings cardStrings;
+
+ public EnCreativeAI() {
+ super(ID, cardStrings.NAME, "blue/power/creative_ai", 3, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ alwaysDisplayText = true;
+ this.baseMagicNumber = 1;
+ this.magicNumber = 1;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(m, m, new EnemyCreativeAIPower(m, this.magicNumber), this.magicNumber));
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 50;
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeBaseCost(2);
+ this.initializeDescription();
+ }
+
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnMachineLearning();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Creative AI");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java b/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
index 254e93b4e..a56a489e8 100644
--- a/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
+++ b/src/main/java/charbosses/cards/blue/EnDoubleEnergy.java
@@ -22,7 +22,7 @@ public EnDoubleEnergy() {
}
public EnDoubleEnergy(int eGain) {
- super(ID, cardStrings.NAME, "blue/skill/double_energy", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.COMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ super(ID, cardStrings.NAME, "blue/skill/double_energy", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.baseMagicNumber = eGain;
this.magicNumber = this.baseMagicNumber;
diff --git a/src/main/java/charbosses/cards/blue/EnElectrodynamics.java b/src/main/java/charbosses/cards/blue/EnElectrodynamics.java
new file mode 100644
index 000000000..88595c48a
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnElectrodynamics.java
@@ -0,0 +1,83 @@
+package charbosses.cards.blue;
+
+import charbosses.actions.orb.EnemyChannelAction;
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.orbs.AbstractEnemyOrb;
+import charbosses.orbs.EnemyLightning;
+import charbosses.powers.cardpowers.EnemyCreativeAIPower;
+import charbosses.powers.cardpowers.EnemyElectroPower;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.Storm;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ElectroPower;
+import com.megacrit.cardcrawl.powers.FocusPower;
+import com.megacrit.cardcrawl.powers.StormPower;
+
+import java.util.ArrayList;
+
+public class EnElectrodynamics extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Electrodynamics";
+ private static final CardStrings cardStrings;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Electrodynamics");
+ }
+
+ public EnElectrodynamics() {
+ super(ID, cardStrings.NAME, "blue/power/electrodynamics", 2, cardStrings.DESCRIPTION, CardType.POWER, CardColor.BLUE, CardRarity.RARE, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.showEvokeValue = true;
+ this.showEvokeOrbCount = 2;
+ this.baseMagicNumber = 2;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = true;
+ }
+
+ public static int getFocusAmountSafe() {
+ if (AbstractCharBoss.boss.hasPower(FocusPower.POWER_ID)) {
+ return AbstractCharBoss.boss.getPower(FocusPower.POWER_ID).amount;
+ }
+ return 0;
+ }
+
+ @Override
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(EnemyStormPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(EnemyStormPower.POWER_ID).amount;
+ return "(" + ( 3 + AbstractEnemyOrb.masterPretendFocus + getFocusAmountSafe()) +"×"+count+ ")";
+ }else
+ return "(" + ( 3 + AbstractEnemyOrb.masterPretendFocus + getFocusAmountSafe()) +"×"+this.magicNumber+ ")";
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!p.hasPower(EnemyElectroPower.POWER_ID)) {
+ this.addToBot(new ApplyPowerAction(m, m, new EnemyElectroPower(m)));
+ }
+ for (int i = 0; i < this.magicNumber; ++i) {
+ this.addToBot(new EnemyChannelAction(new EnemyLightning()));
+ }
+ }
+
+ @Override
+ public int getPriority(ArrayList hand) {
+ return 10;
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(1);
+ }
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnElectrodynamics();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/cards/blue/EnForceField.java b/src/main/java/charbosses/cards/blue/EnForceField.java
index ebc592014..76c580a4a 100644
--- a/src/main/java/charbosses/cards/blue/EnForceField.java
+++ b/src/main/java/charbosses/cards/blue/EnForceField.java
@@ -25,7 +25,7 @@ public class EnForceField extends AbstractBossCard {
private static final CardStrings cardStrings;
public EnForceField() {
- super("Force Field", cardStrings.NAME, "blue/skill/forcefield", 4, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND);
+ super("Force Field", cardStrings.NAME, "blue/skill/forcefield", 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND);
this.baseBlock = 12;
}
diff --git a/src/main/java/charbosses/cards/blue/EnFusion.java b/src/main/java/charbosses/cards/blue/EnFusion.java
index b828a4d27..524eabc8a 100644
--- a/src/main/java/charbosses/cards/blue/EnFusion.java
+++ b/src/main/java/charbosses/cards/blue/EnFusion.java
@@ -29,14 +29,23 @@ public EnFusion(boolean upgraded) {
}
public EnFusion() {
- super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.BASIC, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
this.showEvokeValue = true;
this.showEvokeOrbCount = 1;
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
alwaysDisplayText = true;
}
-
+ public EnFusion(boolean upgraded,boolean text) {
+ super(ID, cardStrings.NAME, "blue/skill/fusion", 2, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.SELF, AbstractMonster.Intent.BUFF);
+ this.showEvokeValue = true;
+ this.showEvokeOrbCount = 1;
+ this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber;
+ alwaysDisplayText = text;
+ if (upgraded)
+ upgrade();
+ }
public void use(AbstractPlayer p, AbstractMonster m) {
for (int i = 0; i < this.magicNumber; ++i) {
this.addToBot(new EnemyChannelAction(new EnemyPlasma()));
diff --git a/src/main/java/charbosses/cards/blue/EnHologram.java b/src/main/java/charbosses/cards/blue/EnHologram.java
new file mode 100644
index 000000000..fe1924576
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnHologram.java
@@ -0,0 +1,45 @@
+package charbosses.cards.blue;
+
+import charbosses.cards.AbstractBossCard;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.blue.Leap;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+public class EnHologram extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Hologram";
+ private static final CardStrings cardStrings;
+
+ public EnHologram() {
+ super(ID, cardStrings.NAME, "blue/skill/hologram", 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.COMMON, CardTarget.SELF, AbstractMonster.Intent.DEFEND_BUFF);
+ this.baseBlock = 3;
+ this.exhaust=true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+
+ this.addToBot(new GainBlockAction(m, m, this.block));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.exhaust=false;
+ this.upgradeBlock(2);
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnHologram();
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Hologram");
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnHyperbeam.java b/src/main/java/charbosses/cards/blue/EnHyperbeam.java
index 12e432cf8..e9045d5d3 100644
--- a/src/main/java/charbosses/cards/blue/EnHyperbeam.java
+++ b/src/main/java/charbosses/cards/blue/EnHyperbeam.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.FocusPower;
import com.megacrit.cardcrawl.powers.LockOnPower;
import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
@@ -38,6 +39,7 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
addToBot(new AbstractGameAction() {
@Override
public void update() {
+
ArchetypeAct3OrbsNewAge.resetPretendFocus();
isDone = true;
}
diff --git a/src/main/java/charbosses/cards/blue/EnMulticastPlasma.java b/src/main/java/charbosses/cards/blue/EnMulticastPlasma.java
new file mode 100644
index 000000000..44bf22aeb
--- /dev/null
+++ b/src/main/java/charbosses/cards/blue/EnMulticastPlasma.java
@@ -0,0 +1,61 @@
+package charbosses.cards.blue;
+
+import charbosses.actions.common.EnemyGainEnergyAction;
+import charbosses.actions.orb.EnemyAnimateOrbAction;
+import charbosses.actions.orb.EnemyEvokeOrbAction;
+import charbosses.actions.orb.EnemyEvokeWithoutRemovingOrbAction;
+import charbosses.actions.orb.EnemyRemoveOrbAction;
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+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 java.util.ArrayList;
+
+public class EnMulticastPlasma extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Multi-Cast";
+ private static final CardStrings cardStrings;
+ private int cost;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Multi-Cast");
+ }
+
+ public EnMulticastPlasma() {
+ this(2);
+ }
+
+ public EnMulticastPlasma(int inCost) {
+ super(ID, cardStrings.NAME, "blue/skill/multicast", inCost, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.RARE, CardTarget.NONE, AbstractMonster.Intent.BUFF);
+ cost = inCost;
+ this.showEvokeValue = true;
+ this.energyGeneratedIfPlayed = inCost*2;
+ }
+
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+// if (m instanceof AbstractCharBoss) {
+// addToBot(new EnemyGainEnergyAction(((AbstractCharBoss) m).energyPanel.getCurrentEnergy()));
+// }
+ if (m instanceof AbstractCharBoss) {
+ addToBot(new EnemyGainEnergyAction(((this.cost-2))));
+ }
+ this.addToBot(new EnemyAnimateOrbAction(1));
+ this.addToBot(new EnemyRemoveOrbAction(1));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+
+ public AbstractCard makeCopy() {
+ return new EnMulticastPlasma();
+ }
+}
diff --git a/src/main/java/charbosses/cards/blue/EnReprogram.java b/src/main/java/charbosses/cards/blue/EnReprogram.java
index 30a631feb..111161efb 100644
--- a/src/main/java/charbosses/cards/blue/EnReprogram.java
+++ b/src/main/java/charbosses/cards/blue/EnReprogram.java
@@ -11,8 +11,10 @@
import com.megacrit.cardcrawl.cards.blue.Reprogram;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.FocusPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
@@ -28,6 +30,9 @@ public EnReprogram() {
this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
strengthGeneratedIfPlayed = 1;
+ if (AbstractDungeon.ascensionLevel >= 4) {
+ strengthGeneratedIfPlayed = 2;
+ }
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -39,8 +44,8 @@ public void update() {
}
});
this.addToBot(new ApplyPowerAction(m, m, new FocusPower(m, -this.magicNumber), -this.magicNumber));
- this.addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, this.magicNumber), 1));
- this.addToBot(new ApplyPowerAction(m, m, new DexterityPower(m, this.magicNumber), 1));
+ this.addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, this.magicNumber), this.magicNumber));
+ this.addToBot(new ApplyPowerAction(m, m, new DexterityPower(m, this.magicNumber), this.magicNumber));
}
public AbstractCard makeCopy() {
diff --git a/src/main/java/charbosses/cards/blue/EnTurbo.java b/src/main/java/charbosses/cards/blue/EnTurbo.java
index c5d1117d2..89cf0968d 100644
--- a/src/main/java/charbosses/cards/blue/EnTurbo.java
+++ b/src/main/java/charbosses/cards/blue/EnTurbo.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -33,7 +34,7 @@ public EnTurbo() {
public void use(AbstractPlayer p, AbstractMonster m) {
addToBot(new EnemyGainEnergyAction(this.magicNumber));
- addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
+ addToBot(new MakeTempCardInDiscardAction(new VoidCard(),1));
}
public void upgrade() {
diff --git a/src/main/java/charbosses/cards/colorless/EnBlind.java b/src/main/java/charbosses/cards/colorless/EnBlind.java
index 3b5417299..722e75b22 100644
--- a/src/main/java/charbosses/cards/colorless/EnBlind.java
+++ b/src/main/java/charbosses/cards/colorless/EnBlind.java
@@ -1,6 +1,10 @@
package charbosses.cards.colorless;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
+import charbosses.orbs.AbstractEnemyOrb;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import charbosses.powers.general.EnemyPoisonPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -11,6 +15,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePower;
+import com.megacrit.cardcrawl.powers.SadisticPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
import com.megacrit.cardcrawl.powers.WeakPower;
@@ -42,6 +47,14 @@ public void upgrade() {
}
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(SadisticPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(SadisticPower.POWER_ID).amount;
+ return "(" +count+ ")";
+ }
+ return super.overrideIntentText();
+ }
+
@Override
public int getPriority(ArrayList hand) {
return 10;
diff --git a/src/main/java/charbosses/cards/colorless/EnDarkShackles.java b/src/main/java/charbosses/cards/colorless/EnDarkShackles.java
new file mode 100644
index 000000000..dfa5b4cda
--- /dev/null
+++ b/src/main/java/charbosses/cards/colorless/EnDarkShackles.java
@@ -0,0 +1,55 @@
+package charbosses.cards.colorless;
+
+import charbosses.cards.AbstractBossCard;
+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.GainBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.colorless.DarkShackles;
+import com.megacrit.cardcrawl.cards.green.PiercingWail;
+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.GainStrengthPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.vfx.combat.ShockWaveEffect;
+
+public class EnDarkShackles extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:DarkShackles";
+ private static final CardStrings cardStrings;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(DarkShackles.ID);
+ }
+
+ public EnDarkShackles() {
+ super(ID, EnDarkShackles.cardStrings.NAME, "colorless/skill/dark_shackles", 0, EnDarkShackles.cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.UNCOMMON, CardTarget.ENEMY, AbstractMonster.Intent.STRONG_DEBUFF);
+ this.exhaust = true;
+ this.baseMagicNumber = 9;
+ this.magicNumber = this.baseMagicNumber;
+ }
+
+ @Override
+ public void use(final AbstractPlayer p, final AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, m, new StrengthPower(p, -this.magicNumber), -this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ if (!p.hasPower("Artifact"))
+ this.addToBot(new ApplyPowerAction(p, m, new GainStrengthPower(p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(6);
+ }
+ }
+
+ @Override
+ public AbstractCard makeCopy() {
+ return new EnDarkShackles();
+ }
+}
diff --git a/src/main/java/charbosses/cards/colorless/EnTrip.java b/src/main/java/charbosses/cards/colorless/EnTrip.java
index 8a2788465..da00338a2 100644
--- a/src/main/java/charbosses/cards/colorless/EnTrip.java
+++ b/src/main/java/charbosses/cards/colorless/EnTrip.java
@@ -1,6 +1,9 @@
package charbosses.cards.colorless;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
+import charbosses.powers.cardpowers.EnemyStormPower;
+import charbosses.powers.general.EnemyPoisonPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -11,6 +14,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePower;
+import com.megacrit.cardcrawl.powers.SadisticPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
@@ -46,9 +50,17 @@ public void upgrade() {
this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
this.initializeDescription();
}
+ }
+ public String overrideIntentText() {
+ if (AbstractCharBoss.boss.hasPower(SadisticPower.POWER_ID)) {
+ int count=this.magicNumber+AbstractCharBoss.boss.getPower(SadisticPower.POWER_ID).amount;
+ return "(" +count+ ")";
+ }
+ return super.overrideIntentText();
}
+
@Override
public int getPriority(ArrayList hand) {
return 10;
diff --git a/src/main/java/charbosses/cards/curses/EnAged.java b/src/main/java/charbosses/cards/curses/EnAged.java
index 043367b03..863372d03 100644
--- a/src/main/java/charbosses/cards/curses/EnAged.java
+++ b/src/main/java/charbosses/cards/curses/EnAged.java
@@ -40,7 +40,7 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
@Override
public void triggerWhenDrawn() {
- addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
+ addToBot(new MakeTempCardInDiscardAction(new VoidCard(), 1));
}
@Override
diff --git a/src/main/java/charbosses/cards/other/Antidote.java b/src/main/java/charbosses/cards/other/Antidote.java
index f4fe6eb6a..49576b12d 100644
--- a/src/main/java/charbosses/cards/other/Antidote.java
+++ b/src/main/java/charbosses/cards/other/Antidote.java
@@ -21,7 +21,7 @@ public class Antidote extends AbstractDownfallCard {
public Antidote() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.SPECIAL, CardTarget.SELF);
- baseMagicNumber = magicNumber = 12;
+ baseMagicNumber = magicNumber = 15;
selfRetain = true;
}
@@ -35,8 +35,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp () {
- upgradeMagicNumber(3);
-// upgradeBaseCost(0);
+ //upgradeMagicNumber(3);
+ upgradeBaseCost(0);
}
static {
diff --git a/src/main/java/charbosses/cards/purple/EnBrilliance.java b/src/main/java/charbosses/cards/purple/EnBrilliance.java
index 4fa37a18f..934eaf0c0 100644
--- a/src/main/java/charbosses/cards/purple/EnBrilliance.java
+++ b/src/main/java/charbosses/cards/purple/EnBrilliance.java
@@ -31,6 +31,7 @@ public EnBrilliance() {
this.magicNumber = this.baseMagicNumber;
}
+
public void applyPowers() {
int realBaseDamage = this.baseDamage;
this.baseMagicNumber = AbstractCharBoss.boss.mantraGained;
@@ -38,6 +39,7 @@ public void applyPowers() {
super.applyPowers();
this.baseDamage = realBaseDamage;
this.isDamageModified = this.damage != this.baseDamage;
+ super.applyPowers();
}
public void calculateCardDamage(AbstractMonster mo) {
diff --git a/src/main/java/charbosses/cards/purple/EnConclude.java b/src/main/java/charbosses/cards/purple/EnConclude.java
new file mode 100644
index 000000000..7cbee7d89
--- /dev/null
+++ b/src/main/java/charbosses/cards/purple/EnConclude.java
@@ -0,0 +1,49 @@
+package charbosses.cards.purple;
+
+import charbosses.cards.AbstractBossCard;
+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.utility.SFXAction;
+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.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+
+public class EnConclude extends AbstractBossCard {
+ public static final String ID = "downfall_Charboss:Conclude";
+ private static final CardStrings cardStrings;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings("Consecrate");
+ }
+
+ public EnConclude() {
+ super(ID, cardStrings.NAME, "purple/attack/conclude", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.PURPLE, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY, AbstractMonster.Intent.ATTACK);
+ this.baseDamage = 12;
+ }
+
+ @Override
+ public void use(final AbstractPlayer p, final AbstractMonster m) {
+ this.addToBot(new SFXAction("ATTACK_HEAVY"));
+ this.addToBot(new VFXAction(p, new CleaveEffect(), 0.1F));
+ this.addToBot(new DamageAction(p, new DamageInfo(m, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeDamage(4);
+ }
+ }
+
+ @Override
+ public AbstractCard makeCopy() {
+ return new EnConclude();
+ }
+}
diff --git a/src/main/java/charbosses/cards/purple/EnPressurePoints.java b/src/main/java/charbosses/cards/purple/EnPressurePoints.java
index a2a0d5ab1..cd9ecb967 100644
--- a/src/main/java/charbosses/cards/purple/EnPressurePoints.java
+++ b/src/main/java/charbosses/cards/purple/EnPressurePoints.java
@@ -41,10 +41,11 @@ 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 ));
+ //add vfx, this below wont work, still strikes the player from left to right like you use on a monster
+ //still probably worth using imo, removing the to-do.
+ AbstractGameEffect pressure_vfx = new PressurePointEffect(p.hb.cX, p.hb.cY);
+ pressure_vfx.renderBehind = true;
+ addToBot(new VFXAction( pressure_vfx ));
addToBot(new ApplyPowerAction(p, m, new EnemyMarkPower(p, m, magicNumber), magicNumber));
if(countMarks()>0) {
this.addToBot(new DamageAction(p, new DamageInfo(m, countMarks(), DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.FIRE));
diff --git a/src/main/java/charbosses/cards/purple/EnTantrum.java b/src/main/java/charbosses/cards/purple/EnTantrum.java
index dd53fd391..a9a0de968 100644
--- a/src/main/java/charbosses/cards/purple/EnTantrum.java
+++ b/src/main/java/charbosses/cards/purple/EnTantrum.java
@@ -24,7 +24,7 @@ public class EnTantrum extends AbstractStanceChangeCard {
boolean realWrath = false;
public EnTantrum() {
- super(ID, cardStrings.NAME, "purple/attack/tantrum", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.PURPLE, CardRarity.COMMON, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
+ super(ID, cardStrings.NAME, "purple/attack/tantrum", 1, cardStrings.DESCRIPTION, CardType.ATTACK, CardColor.PURPLE, CardRarity.UNCOMMON, CardTarget.ENEMY, AbstractMonster.Intent.ATTACK_BUFF);
this.baseDamage = 3;
this.baseMagicNumber = 3;
this.magicNumber = 3;
diff --git a/src/main/java/charbosses/cards/red/EnIntimidate.java b/src/main/java/charbosses/cards/red/EnIntimidate.java
index 861666211..a85859f4f 100644
--- a/src/main/java/charbosses/cards/red/EnIntimidate.java
+++ b/src/main/java/charbosses/cards/red/EnIntimidate.java
@@ -33,7 +33,7 @@ public class EnIntimidate extends AbstractBossCard {
public EnIntimidate() {
super(ID, cardStrings.NAME, "red/skill/intimidate", 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.RED, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY, AbstractMonster.Intent.DEBUFF);
this.exhaust = true;
- this.baseMagicNumber = 2;
+ this.baseMagicNumber = 1;
this.magicNumber = this.baseMagicNumber;
artifactConsumedIfPlayed = 1;
}
@@ -42,7 +42,7 @@ public EnIntimidate() {
public void use(final AbstractPlayer p, final AbstractMonster m) {
this.addToBot(new SFXAction("INTIMIDATE"));
this.addToBot(new VFXAction(p, new IntimidateEffect(m.hb.cX, m.hb.cY), 1.0F));
- this.addToBot(new ApplyPowerAction(p, m, new WeakPower(p, this.magicNumber + 1, false), this.magicNumber + 1, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(p, m, new WeakPower(p, this.magicNumber, true), this.magicNumber));
}
@Override
diff --git a/src/main/java/charbosses/cards/red/EnReaper.java b/src/main/java/charbosses/cards/red/EnReaper.java
index cffd46023..614bcf5da 100644
--- a/src/main/java/charbosses/cards/red/EnReaper.java
+++ b/src/main/java/charbosses/cards/red/EnReaper.java
@@ -46,6 +46,9 @@ public void use(final AbstractPlayer p, final AbstractMonster m) {
calculateCardDamage(q);
addToBot(new VampireDamageAction(q, new DamageInfo(m, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
//TODO - Technically this won't work if a modded effect has given the mushrooms Block or Buffer or something. If that ends up being a problem, we'll need a custom action here.
+
+ //todo: well Collector has a card that does this, VoidArmor iirc so maybe this is a problem and no one has noticed yet?
+ // Is it actually a problem atm? Will check later.
if (q.currentHealth <= damage){
addToBot(new WaitAction(0.1F));
addToBot(new ApplyPowerAction(m, m, new StrengthPower(m, 1),1));
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
index 38e582d3c..ae9097ff8 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectAncientConstructPower.java
@@ -35,10 +35,10 @@ public void updateDescription() {
@Override
public void atEndOfTurn(boolean isPlayer) {
- if (!this.owner.hasPower(ArtifactPower.POWER_ID)) {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new ArtifactPower(this.owner, this.amount), this.amount));
+ // if (!this.owner.hasPower(ArtifactPower.POWER_ID)) {
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new ArtifactPower(this.owner, this.amount), this.amount));
// AbstractDungeon.actionManager.addToBottom(new LoseEnergyAction(this.amount));
- }
+ // }
}
static {
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java
new file mode 100644
index 000000000..491b1afde
--- /dev/null
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectBiasCuriosityPower.java
@@ -0,0 +1,49 @@
+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.DEBUFF;
+ }
+
+ public void updateDescription() {
+ this.description = (DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2] + DESCRIPTIONS[3]);
+ }
+
+// @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));
+ }
+ }
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityLightningPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityLightningPower.java
index 0daa1bf4a..8e1069739 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityLightningPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityLightningPower.java
@@ -33,7 +33,10 @@ public DefectCuriosityLightningPower(AbstractCreature owner) {
public void updateDescription() {
this.description = (DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1]);
}
- // TODO: display right damage when channeled on defrag round
+
+ // TO-DO: display right damage when channeled on defrag round
+ //this power isn't used, so I'm removing this to-do
+
public void onUseCard(AbstractCard card, UseCardAction action) {
if (card.type == CardType.POWER && !(card instanceof AbstractBossCard)) {
flash();
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityPower.java
index 11c866bb5..b4f66644b 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/DefectCuriosityPower.java
@@ -1,18 +1,30 @@
package charbosses.powers.bossmechanicpowers;
+import awakenedOne.powers.DoubleSpellPower;
+import basemod.interfaces.CloneablePowerInterface;
import charbosses.bosses.AbstractCharBoss;
+import charbosses.bosses.Defect.NewAge.ArchetypeAct3OrbsNewAge;
import charbosses.cards.AbstractBossCard;
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.OnReceivePowerPower;
+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.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.AbstractCard.CardType;
+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.FocusPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.powers.VenomDebuff;
-public class DefectCuriosityPower extends AbstractBossMechanicPower {
+public class DefectCuriosityPower extends AbstractBossMechanicPower implements OnReceivePowerPower {
public static final String POWER_ID = "downfall:DefectCuriosity";
private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
public static final String NAME = powerStrings.NAME;
@@ -38,5 +50,34 @@ public void onUseCard(AbstractCard card, UseCardAction action) {
addToBot(new com.megacrit.cardcrawl.actions.common.ApplyPowerAction(this.owner, this.owner, new FocusPower(this.owner, this.amount), this.amount));
}
}
+
+ @Override
+ public void atStartOfTurn() {
+ addToTop(new AbstractGameAction() {
+ @Override
+ public void update() {
+ ArchetypeAct3OrbsNewAge.resetPretendFocus();
+ isDone = true;
+ }
+ });
+ }
+
+ @Override
+ public boolean onReceivePower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if (power.ID == StrengthPower.POWER_ID) {
+ this.addToBot(new ApplyPowerAction(this.owner, this.owner, new FocusPower(this.owner, this.amount*power.amount), this.amount*power.amount));
+ }
+ if (power.ID == FocusPower.POWER_ID && power.amount < 0 && !owner.hasPower("Artifact") && target == this.owner) {
+ addToTop(new AbstractGameAction() {
+ @Override
+ public void update() {
+ ArchetypeAct3OrbsNewAge.resetPretendFocus();
+ isDone = true;
+ }
+ });
+ }
+ return true;
+ }
+
}
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
index 3d7b6ba6c..d5cb20d62 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherCripplePower.java
@@ -97,7 +97,6 @@ public void stackPower(int stackAmount) {
@Override
public void atEndOfRound() {
super.atEndOfRound();
-
this.amount = 3 * LOSE_1_STRENGTH_PER_X_HP;
this.thirdused = false;
this.secondused = false;
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
index 49ce8fff6..ba09a2a72 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherDivinityPower.java
@@ -5,9 +5,11 @@
package charbosses.powers.bossmechanicpowers;
+import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
import charbosses.powers.cardpowers.EnemyAccuracyPower;
import charbosses.powers.cardpowers.EnemyMantraPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
@@ -35,11 +37,6 @@ public WatcherDivinityPower(AbstractCreature owner) {
this.type = PowerType.BUFF;
}
- @Override
- public void atStartOfTurn() {
- addToBot(new ReducePowerAction(this.owner, this.owner, EnemyMantraPower.POWER_ID, 5));
- }
-
public void updateDescription() {
this.description = DESC[0];
}
diff --git a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherSkillPower.java b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherSkillPower.java
index 8de06293d..4f46a2bab 100644
--- a/src/main/java/charbosses/powers/bossmechanicpowers/WatcherSkillPower.java
+++ b/src/main/java/charbosses/powers/bossmechanicpowers/WatcherSkillPower.java
@@ -18,10 +18,7 @@
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.PowerStrings;
-import com.megacrit.cardcrawl.powers.ArtifactPower;
-import com.megacrit.cardcrawl.powers.GainStrengthPower;
-import com.megacrit.cardcrawl.powers.LoseStrengthPower;
-import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.*;
public class WatcherSkillPower extends AbstractBossMechanicPower {
public static final String POWER_ID = "downfall:WatcherSkillPower";
@@ -41,7 +38,7 @@ public WatcherSkillPower(AbstractCreature owner, int newAmount) {
}
public void updateDescription() {
- this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2] + this.amount + DESCRIPTIONS[3];
}
@Override
public void onUseCard(final AbstractCard card, final UseCardAction action) {
@@ -53,6 +50,21 @@ public void onUseCard(final AbstractCard card, final UseCardAction action) {
this.addToBot(new ApplyPowerAction(owner, owner, new StrengthPower(owner, amount), amount, true, AbstractGameAction.AttackEffect.NONE));
this.addToBot(new ApplyPowerAction(owner, owner, new LoseStrengthPower(owner, this.amount), this.amount));
}
+
+ if (card.type.equals(AbstractCard.CardType.ATTACK)) {
+ this.flash();
+ this.addToBot(new ApplyPowerAction(owner, owner, new DexterityPower(owner, amount), amount, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(owner, owner, new LoseDexterityPower(owner, this.amount), this.amount));
+ }
+
+ if (card.type.equals(AbstractCard.CardType.POWER)) {
+ this.flash();
+ this.addToBot(new ApplyPowerAction(owner, owner, new StrengthPower(owner, amount), amount, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(owner, owner, new LoseStrengthPower(owner, this.amount), this.amount));
+ this.addToBot(new ApplyPowerAction(owner, owner, new DexterityPower(owner, amount), amount, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(owner, owner, new LoseDexterityPower(owner, this.amount), this.amount));
+ }
+
}
@Override
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java
new file mode 100644
index 000000000..71f2f3e24
--- /dev/null
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyCreativeAIPower.java
@@ -0,0 +1,47 @@
+package charbosses.powers.cardpowers;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.ui.EnemyEnergyPanel;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyCreativeAIPower extends AbstractPower {
+ public static final String POWER_ID = "Creative AI";
+ private static final PowerStrings powerStrings;
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+
+ public EnemyCreativeAIPower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = "Creative AI";
+ this.owner = owner;
+ this.amount = amount;
+ this.updateDescription();
+ this.loadRegion("ai");
+ }
+
+ public void updateDescription() {
+ if (this.amount > 1) {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[2];
+ } else {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ }
+ }
+
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("Creative AI");
+ NAME = powerStrings.NAME;
+ DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ }
+}
+
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java
new file mode 100644
index 000000000..431a63541
--- /dev/null
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyElectroPower.java
@@ -0,0 +1,42 @@
+package charbosses.powers.cardpowers;
+
+import charbosses.bosses.AbstractCharBoss;
+import charbosses.cards.AbstractBossCard;
+import charbosses.ui.EnemyEnergyPanel;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyElectroPower extends AbstractPower {
+ public static final String POWER_ID = "Electro";
+ private static final PowerStrings powerStrings;
+ public static final String NAME;
+ public static final String[] DESCRIPTIONS;
+
+ public EnemyElectroPower(AbstractCreature owner) {
+ this.name = NAME;
+ this.ID = "Electro";
+ this.owner = owner;
+ this.updateDescription();
+ this.loadRegion("mastery");
+ }
+
+ public void updateDescription() {
+ /* 23 */ this.description = DESCRIPTIONS[0];
+ /* */ }
+
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("Electro");
+ NAME = powerStrings.NAME;
+ DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ }
+}
+
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
index 38a4abd97..4dc1ec079 100644
--- a/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
+++ b/src/main/java/charbosses/powers/cardpowers/EnemyFearNoEvilPower.java
@@ -34,7 +34,7 @@ public EnemyFearNoEvilPower(AbstractCreature owner) {
this.owner = owner;
isActive = false;
this.updateDescription();
-// this.loadRegion("curiosity"); // TODO: Region
+// this.loadRegion("curiosity"); //
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
this.region48 = new TextureAtlas.AtlasRegion(tex32, 0, 0, 32, 32);
diff --git a/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java b/src/main/java/charbosses/powers/cardpowers/EnemyMantraPower.java
index 78cc56693..ee67c07e0 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,11 +13,13 @@
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";
private static final PowerStrings powerStrings;
private final int PRAYER_REQUIRED = 10;
+ private int initialAmount = 0;
public EnemyMantraPower(AbstractCreature owner, int amount) {
this.name = powerStrings.NAME;
@@ -30,6 +35,41 @@ public EnemyMantraPower(AbstractCreature owner, int amount) {
}
}
+ @Override
+ public void atStartOfTurn() {
+ System.out.println("atStartOfTurn started...");
+
+ this.flash();
+
+ initialAmount = this.amount;
+
+ System.out.println("Initial amount of Mantra: " + initialAmount);
+
+ addToBot(new ReducePowerAction(this.owner, this.owner, EnemyMantraPower.POWER_ID, 5));
+ }
+
+ public void atEndOfRound() {
+ System.out.println("DEBUG: Reducing by 5...");
+
+ addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ System.out.println("Following up.");
+
+ int reducedAmount = Math.min(5, 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 +81,7 @@ public void updateDescription() {
public void stackPower(int stackAmount) {
super.stackPower(stackAmount);
if (this.amount >= 10) {
+ this.addToBot(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, 3), 3));
this.addToTop(new EnemyChangeStanceAction("Divinity"));
this.amount -= 10;
if (this.amount <= 0) {
diff --git a/src/main/java/charbosses/powers/general/EnemyMarkPower.java b/src/main/java/charbosses/powers/general/EnemyMarkPower.java
index 20f5ed251..9e0a2a781 100644
--- a/src/main/java/charbosses/powers/general/EnemyMarkPower.java
+++ b/src/main/java/charbosses/powers/general/EnemyMarkPower.java
@@ -1,29 +1,29 @@
-package charbosses.powers.general;
-
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.localization.PowerStrings;
-import com.megacrit.cardcrawl.powers.AbstractPower;
-
-public class EnemyMarkPower extends AbstractPower {
- public static final String POWER_ID = "PathToVictoryPower";
- private static final PowerStrings powerStrings;
- private AbstractCreature source;
- public EnemyMarkPower(AbstractCreature owner, AbstractCreature source, int amt) {
- this.name = powerStrings.NAME;
- this.ID = "PathToVictoryPower";
- this.owner = owner;
- this.amount = amt;
- this.source = source;
- this.type = PowerType.DEBUFF;
- this.updateDescription();
- this.loadRegion("pressure_points");
- }
- public void updateDescription() {
- this.description = powerStrings.DESCRIPTIONS[0] + this.amount + powerStrings.DESCRIPTIONS[1];
- }
-
- static {
- powerStrings = CardCrawlGame.languagePack.getPowerStrings("PathToVictoryPower");
- }
+package charbosses.powers.general;
+
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EnemyMarkPower extends AbstractPower {
+ public static final String POWER_ID = "PathToVictoryPower";
+ private static final PowerStrings powerStrings;
+ private AbstractCreature source;
+ public EnemyMarkPower(AbstractCreature owner, AbstractCreature source, int amt) {
+ this.name = powerStrings.NAME;
+ this.ID = "PathToVictoryPower";
+ this.owner = owner;
+ this.amount = amt;
+ this.source = source;
+ this.type = PowerType.DEBUFF;
+ this.updateDescription();
+ this.loadRegion("pressure_points");
+ }
+ public void updateDescription() {
+ this.description = powerStrings.DESCRIPTIONS[0] + this.amount + powerStrings.DESCRIPTIONS[1];
+ }
+
+ static {
+ powerStrings = CardCrawlGame.languagePack.getPowerStrings("PathToVictoryPower");
+ }
}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_Abacus.java b/src/main/java/charbosses/relics/CBR_Abacus.java
index af45307d1..55c148b6b 100644
--- a/src/main/java/charbosses/relics/CBR_Abacus.java
+++ b/src/main/java/charbosses/relics/CBR_Abacus.java
@@ -19,7 +19,7 @@ public String getUpdatedDescription() {
}
- public void onShuffle() {
+ public void onTrigger() {
this.flash();
this.addToBot(new RelicAboveCreatureAction(this.owner, this));
this.addToBot(new GainBlockAction(this.owner, this.owner, 6));
diff --git a/src/main/java/charbosses/relics/CBR_BottledLightning.java b/src/main/java/charbosses/relics/CBR_BottledLightning.java
new file mode 100644
index 000000000..064a0d871
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_BottledLightning.java
@@ -0,0 +1,30 @@
+package charbosses.relics;
+
+import charbosses.bosses.AbstractCharBoss;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.BottledLightning;
+import com.megacrit.cardcrawl.relics.SmilingMask;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Random;
+
+public class CBR_BottledLightning extends AbstractCharbossRelic {
+ public static final String ID = "Bottled Lightning";
+
+ public CBR_BottledLightning() {
+ super(new BottledLightning());
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_BottledLightning();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_NuclearBattery.java b/src/main/java/charbosses/relics/CBR_NuclearBattery.java
new file mode 100644
index 000000000..e73642c84
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_NuclearBattery.java
@@ -0,0 +1,32 @@
+package charbosses.relics;
+
+import charbosses.actions.orb.EnemyChannelAction;
+import charbosses.orbs.EnemyLightning;
+import charbosses.orbs.EnemyPlasma;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.CrackedCore;
+import com.megacrit.cardcrawl.relics.NuclearBattery;
+
+public class CBR_NuclearBattery extends AbstractCharbossRelic {
+ public static final String ID = "NuclearBattery";
+ public CBR_NuclearBattery() {
+ super(new NuclearBattery());
+ }
+
+ @Override
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public void atBattleStart() {
+ this.flash();
+ this.addToTop(new EnemyChannelAction(new EnemyPlasma()));
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_NuclearBattery();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/charbosses/relics/CBR_SmilingMask.java b/src/main/java/charbosses/relics/CBR_SmilingMask.java
index ad5140cce..06ec13cb8 100644
--- a/src/main/java/charbosses/relics/CBR_SmilingMask.java
+++ b/src/main/java/charbosses/relics/CBR_SmilingMask.java
@@ -19,7 +19,7 @@ public CBR_SmilingMask() {
@Override
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0] + 2 + this.DESCRIPTIONS[1];
+ return this.DESCRIPTIONS[0] + 50 + this.DESCRIPTIONS[1];
}
@Override
diff --git a/src/main/java/charbosses/relics/CBR_Toolbox.java b/src/main/java/charbosses/relics/CBR_Toolbox.java
new file mode 100644
index 000000000..8993a1b28
--- /dev/null
+++ b/src/main/java/charbosses/relics/CBR_Toolbox.java
@@ -0,0 +1,22 @@
+package charbosses.relics;
+
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Orrery;
+import com.megacrit.cardcrawl.relics.Toolbox;
+
+public class CBR_Toolbox extends AbstractCharbossRelic {
+ public static final String ID = "Toolbox";
+
+ public CBR_Toolbox() {
+ super(new Toolbox());
+ }
+
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ @Override
+ public AbstractRelic makeCopy() {
+ return new CBR_Toolbox();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/collector/CollectorCollection.java b/src/main/java/collector/CollectorCollection.java
index f21033c12..05efc0336 100644
--- a/src/main/java/collector/CollectorCollection.java
+++ b/src/main/java/collector/CollectorCollection.java
@@ -140,7 +140,7 @@ public class CollectorCollection {
collectionPool.put(CorruptHeart.ID, FinalBossCard.ID);
collectionPool.put(TheCollector.ID, CollectorCard.ID);
- collectionPool.put(SlimeBoss.ID, PrepareCrush.ID);
+ collectionPool.put(SlimeBoss.ID, SuperPrepareCrush.ID);
collectionPool.put(TimeEater.ID, Chronoboost.ID);
collectionPool.put(AwakenedOne.ID, AwakenDeath.ID);
collectionPool.put(TheGuardian.ID, GuardianWhirl.ID);
diff --git a/src/main/java/collector/CollectorMod.java b/src/main/java/collector/CollectorMod.java
index ec818a647..5a31f678e 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,
+ BottledCollectible.ID,
JadeRing.ID,
- ThimbleHelm.ID,
- BlockedChakra.ID,
+ SoullitLamp.ID,
- ForbiddenFruit.ID,
Incense.ID,
- RoughDiamond.ID,
+ ForbiddenFruit.ID,
+ FuelCanister.ID,
CollectorChar.Enums.THE_COLLECTOR
);
diff --git a/src/main/java/collector/actions/DrawCardFromCollectionAction.java b/src/main/java/collector/actions/DrawCardFromCollectionAction.java
index fa4332578..551915d0f 100644
--- a/src/main/java/collector/actions/DrawCardFromCollectionAction.java
+++ b/src/main/java/collector/actions/DrawCardFromCollectionAction.java
@@ -4,11 +4,17 @@
import collector.CollectorCollection;
import collector.cardmods.CollectedCardMod;
import collector.cards.collectibles.LuckyWick;
+import collector.patches.CollectorBottleField;
+import collector.relics.BottledCollectible;
import collector.relics.HolidayCoal;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.FrozenEye;
+import guardian.relics.PickAxe;
+import hermit.relics.BartenderGlass;
+import theHexaghost.relics.CandleOfCauterizing;
import static collector.util.Wiz.att;
@@ -20,7 +26,18 @@ public DrawCardFromCollectionAction() {
@Override
public void update() {
if (!CollectorCollection.combatCollection.isEmpty()) {
- AbstractCard tar = CollectorCollection.combatCollection.getTopCard();
+ AbstractCard tar = CollectorCollection.combatCollection.getRandomCard(AbstractDungeon.cardRandomRng);
+ if(AbstractDungeon.player.hasRelic(FrozenEye.ID)) {
+ tar = CollectorCollection.combatCollection.getTopCard();
+ }
+
+ if(AbstractDungeon.player.hasRelic(BottledCollectible.ID)) {
+ if ((AbstractDungeon.player.getRelic(BottledCollectible.ID).counter == 0)) {
+ tar = CollectorCollection.combatCollection.getTopCard();
+ AbstractDungeon.player.getRelic(BottledCollectible.ID).onTrigger();
+ }
+ }
+
CollectorCollection.combatCollection.removeCard(tar);
AbstractDungeon.player.drawPile.addToTop(tar);
att(new DrawCardAction(1));
diff --git a/src/main/java/collector/actions/ScorchingRayAction.java b/src/main/java/collector/actions/ScorchingRayAction.java
index 41682923c..fd19b20d4 100644
--- a/src/main/java/collector/actions/ScorchingRayAction.java
+++ b/src/main/java/collector/actions/ScorchingRayAction.java
@@ -1,36 +1,65 @@
-package collector.actions;
-
-import collector.effects.ColoredVerticalAttackEffect;
-import com.badlogic.gdx.graphics.Color;
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-
-import static collector.util.Wiz.att;
-
-public class ScorchingRayAction extends AbstractGameAction {
- private final AbstractCard card;
-
- public ScorchingRayAction(AbstractCard card) {
- this.card = card;
- this.actionType = ActionType.DAMAGE;
- this.startDuration = 0.1F;
- this.duration = this.startDuration;
- }
-
- public void update() {
- isDone = true;
- AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
- if (q != null) {
- card.applyPowers();
- card.calculateCardDamage(q);
- att(new DamageAction(q, new DamageInfo(AbstractDungeon.player, card.damage, card.damageTypeForTurn), AttackEffect.NONE));
- att(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
- }
- }
-}
+//package collector.actions;
+//
+//import champ.stances.BerserkerStance;
+//import collector.effects.ColoredVerticalAttackEffect;
+//import com.badlogic.gdx.graphics.Color;
+//import com.badlogic.gdx.math.MathUtils;
+//import com.megacrit.cardcrawl.actions.AbstractGameAction;
+//import com.megacrit.cardcrawl.actions.animations.VFXAction;
+//import com.megacrit.cardcrawl.actions.common.DamageAction;
+//import com.megacrit.cardcrawl.cards.AbstractCard;
+//import com.megacrit.cardcrawl.cards.DamageInfo;
+//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+//import com.megacrit.cardcrawl.monsters.AbstractMonster;
+//import com.megacrit.cardcrawl.powers.PenNibPower;
+//import com.megacrit.cardcrawl.powers.VulnerablePower;
+//import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+//import com.megacrit.cardcrawl.stances.DivinityStance;
+//import com.megacrit.cardcrawl.stances.WrathStance;
+//import gremlin.actions.PseudoDamageRandomEnemyAction;
+//import gremlin.relics.FragmentationGrenade;
+//
+//import static collector.util.Wiz.att;
+//
+//public class ScorchingRayAction extends AbstractGameAction {
+// private final AbstractCard card;
+// private static int stuff;
+//
+// public ScorchingRayAction(AbstractCard card, int cool) {
+// this.card = card;
+// this.actionType = ActionType.DAMAGE;
+// this.startDuration = 0.1F;
+// this.duration = this.startDuration;
+// stuff = cool;
+// }
+//
+// public void update() {
+// isDone = true;
+// AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+// if (q != null) {
+// card.applyPowers();
+// card.calculateCardDamage(q);
+// int storage = stuff;
+//
+// if (q.hasPower(VulnerablePower.POWER_ID)) {
+// stuff = (stuff + (stuff/2));
+// }
+//
+// if (AbstractDungeon.player.hasPower(PenNibPower.POWER_ID)) {
+// stuff = stuff * 2;
+// }
+//
+// if (AbstractDungeon.player.stance.ID.equals(WrathStance.STANCE_ID)) {
+// stuff = stuff * 2;
+// }
+//
+// if (AbstractDungeon.player.stance.ID.equals(DivinityStance.STANCE_ID)) {
+// stuff = stuff * 3;
+// }
+//
+// att(new PseudoDamageRandomEnemyAction(q, new DamageInfo(AbstractDungeon.player, card.damage + stuff, DamageInfo.DamageType.NORMAL), AttackEffect.FIRE));
+// att(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
+// stuff = storage;
+// }
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/collector/actions/SeekFromCollectionAction.java b/src/main/java/collector/actions/SeekFromCollectionAction.java
index fb618c953..6c1b60c0f 100644
--- a/src/main/java/collector/actions/SeekFromCollectionAction.java
+++ b/src/main/java/collector/actions/SeekFromCollectionAction.java
@@ -1,5 +1,6 @@
package collector.actions;
+import basemod.BaseMod;
import collector.CollectorCollection;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -38,7 +39,7 @@ public void update() {
this.isDone = true;
} else if (tmp.size() == 1) {
card = tmp.getTopCard();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -59,7 +60,7 @@ public void update() {
} else if (tmp.size() <= this.amount) {
for(int i = 0; i < tmp.size(); ++i) {
card = tmp.getNCardFromTop(i);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -93,7 +94,7 @@ public void update() {
for (AbstractCard abstractCard : AbstractDungeon.gridSelectScreen.selectedCards) {
card = abstractCard;
card.unhover();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
CollectorCollection.combatCollection.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
diff --git a/src/main/java/collector/cards/Arrogance.java b/src/main/java/collector/cards/Arrogance.java
index 017a8d536..f1e75be60 100644
--- a/src/main/java/collector/cards/Arrogance.java
+++ b/src/main/java/collector/cards/Arrogance.java
@@ -14,7 +14,7 @@ public class Arrogance extends AbstractCollectorCard {
public Arrogance() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 7;
- baseMagicNumber = magicNumber = 3;
+ baseMagicNumber = magicNumber = 4;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Billow.java b/src/main/java/collector/cards/Billow.java
index ac6d1316c..e2ab37974 100644
--- a/src/main/java/collector/cards/Billow.java
+++ b/src/main/java/collector/cards/Billow.java
@@ -13,7 +13,7 @@ public class Billow extends AbstractCollectorCard {
public Billow() {
super(ID, 3, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 20;
+ baseBlock = 18;
cardsToPreview = new Bellow();
}
diff --git a/src/main/java/collector/cards/Blightning.java b/src/main/java/collector/cards/Blightning.java
index eb0984832..861b82a0b 100644
--- a/src/main/java/collector/cards/Blightning.java
+++ b/src/main/java/collector/cards/Blightning.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.LightningEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -22,6 +23,7 @@ public Blightning() {
baseDamage = 6;
baseMagicNumber = magicNumber = 6;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Bonfire.java b/src/main/java/collector/cards/Bonfire.java
index 9a408c707..fb219d826 100644
--- a/src/main/java/collector/cards/Bonfire.java
+++ b/src/main/java/collector/cards/Bonfire.java
@@ -16,7 +16,7 @@ public class Bonfire extends AbstractCollectorCard {
public Bonfire() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 16;
+ baseBlock = 12;
isPyre();
}
diff --git a/src/main/java/collector/cards/BrainDrain.java b/src/main/java/collector/cards/BrainDrain.java
index 8468e486d..a66674f85 100644
--- a/src/main/java/collector/cards/BrainDrain.java
+++ b/src/main/java/collector/cards/BrainDrain.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.LightBulbEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -21,6 +22,7 @@ public BrainDrain() {
super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
exhaust = true;
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/CantTouchThis.java b/src/main/java/collector/cards/CantTouchThis.java
index 154668feb..e2008c14c 100644
--- a/src/main/java/collector/cards/CantTouchThis.java
+++ b/src/main/java/collector/cards/CantTouchThis.java
@@ -13,8 +13,8 @@ public class CantTouchThis extends AbstractCollectorCard {
// intellij stuff power, self, uncommon, , , , , 1, 1
public CantTouchThis() {
- super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 1;
+ super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseMagicNumber = magicNumber = 2;
baseSecondMagic = secondMagic = 2;
}
diff --git a/src/main/java/collector/cards/Condemn.java b/src/main/java/collector/cards/Condemn.java
index 7cf05acb6..7ef5e5a26 100644
--- a/src/main/java/collector/cards/Condemn.java
+++ b/src/main/java/collector/cards/Condemn.java
@@ -18,7 +18,7 @@ public class Condemn extends AbstractCollectorCard {
public Condemn() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 1;
- baseSecondMagic = secondMagic = 4;
+ baseSecondMagic = secondMagic = 5;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/CursedWail.java b/src/main/java/collector/cards/CursedWail.java
index b99896da7..a3c8d87ec 100644
--- a/src/main/java/collector/cards/CursedWail.java
+++ b/src/main/java/collector/cards/CursedWail.java
@@ -18,7 +18,7 @@ public class CursedWail extends AbstractCollectorCard {
public CursedWail() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseMagicNumber = magicNumber = 8;
+ baseMagicNumber = magicNumber = 9;
baseSecondMagic = secondMagic = 1;
exhaust = true;
}
diff --git a/src/main/java/collector/cards/DarkApotheosis.java b/src/main/java/collector/cards/DarkApotheosis.java
index ceaf54584..4205502e2 100644
--- a/src/main/java/collector/cards/DarkApotheosis.java
+++ b/src/main/java/collector/cards/DarkApotheosis.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -25,6 +26,7 @@ public class DarkApotheosis extends AbstractCollectorCard {
public DarkApotheosis() {
super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DarkLordForm.java b/src/main/java/collector/cards/DarkLordForm.java
index f1782f87a..e77dfd319 100644
--- a/src/main/java/collector/cards/DarkLordForm.java
+++ b/src/main/java/collector/cards/DarkLordForm.java
@@ -1,5 +1,6 @@
package collector.cards;
+import basemod.helpers.BaseModCardTags;
import collector.effects.GreenThirdEyeEffect;
import collector.powers.DarkLordFormPower;
import collector.powers.DarkLordFormPowerPlus;
@@ -18,6 +19,7 @@ public class DarkLordForm extends AbstractCollectorCard {
public DarkLordForm() {
super(ID, 4, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
cardsToPreview = new YouAreMine();
+ tags.add(BaseModCardTags.FORM);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Darkstorm.java b/src/main/java/collector/cards/Darkstorm.java
index bdf358a5d..6542e440d 100644
--- a/src/main/java/collector/cards/Darkstorm.java
+++ b/src/main/java/collector/cards/Darkstorm.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -19,6 +20,7 @@ public Darkstorm() {
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Blightning();
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DoMayhem.java b/src/main/java/collector/cards/DoMayhem.java
index d99a8566f..120235cda 100644
--- a/src/main/java/collector/cards/DoMayhem.java
+++ b/src/main/java/collector/cards/DoMayhem.java
@@ -1,4 +1,4 @@
-/*
+package collector.cards;/*
package collector.cards;
import collector.powers.DoMayhemPower;
diff --git a/src/main/java/collector/cards/DoubleTrouble.java b/src/main/java/collector/cards/DoubleTrouble.java
index e4ff04c91..25accdc9d 100644
--- a/src/main/java/collector/cards/DoubleTrouble.java
+++ b/src/main/java/collector/cards/DoubleTrouble.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.animations.AnimateHopAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public class DoubleTrouble extends AbstractCollectorCard {
public DoubleTrouble() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseBlock = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/DragonsTrove.java b/src/main/java/collector/cards/DragonsTrove.java
index 0d23b66e4..549ae4bd3 100644
--- a/src/main/java/collector/cards/DragonsTrove.java
+++ b/src/main/java/collector/cards/DragonsTrove.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,6 +19,7 @@ public DragonsTrove() {
baseMagicNumber = magicNumber = 1;
exhaust = true;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/FeelMyPain.java b/src/main/java/collector/cards/FeelMyPain.java
index df7cdbb44..4d6ffe521 100644
--- a/src/main/java/collector/cards/FeelMyPain.java
+++ b/src/main/java/collector/cards/FeelMyPain.java
@@ -13,7 +13,7 @@ public class FeelMyPain extends AbstractCollectorCard {
public FeelMyPain() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- baseMagicNumber = magicNumber = 3;
+ baseMagicNumber = magicNumber = 4;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/FingerOfDeath.java b/src/main/java/collector/cards/FingerOfDeath.java
index bade643e6..4ec49280e 100644
--- a/src/main/java/collector/cards/FingerOfDeath.java
+++ b/src/main/java/collector/cards/FingerOfDeath.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,7 +17,8 @@ public class FingerOfDeath extends AbstractCollectorCard {
public FingerOfDeath() {
super(ID, 4, CardType.SKILL, CardRarity.RARE, CardTarget.ENEMY);
- baseMagicNumber = magicNumber = 50;
+ baseMagicNumber = magicNumber = 60;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Forgery.java b/src/main/java/collector/cards/Forgery.java
index d3589333c..35c3e294b 100644
--- a/src/main/java/collector/cards/Forgery.java
+++ b/src/main/java/collector/cards/Forgery.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -19,9 +20,10 @@ public class Forgery extends AbstractCollectorCard {
// intellij stuff attack, enemy, common, 9, 3, , , ,
public Forgery() {
- super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 8;
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/GreenpyreLocus.java b/src/main/java/collector/cards/GreenpyreLocus.java
index bb9c7826f..c7d697a0a 100644
--- a/src/main/java/collector/cards/GreenpyreLocus.java
+++ b/src/main/java/collector/cards/GreenpyreLocus.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.util.SelectCardsCenteredAction;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -21,8 +22,9 @@ public class GreenpyreLocus extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , , , 1, 1
public GreenpyreLocus() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Heatwave.java b/src/main/java/collector/cards/Heatwave.java
index d3b833d57..f055658e5 100644
--- a/src/main/java/collector/cards/Heatwave.java
+++ b/src/main/java/collector/cards/Heatwave.java
@@ -18,7 +18,7 @@ public class Heatwave extends AbstractCollectorCard {
public Heatwave() {
super(ID, 0, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseDamage = 4;
+ baseDamage = 5;
cardsToPreview = new Ember();
isMultiDamage = true;
}
diff --git a/src/main/java/collector/cards/HoardersStrike.java b/src/main/java/collector/cards/HoardersStrike.java
index e9f35c68b..69718f6ce 100644
--- a/src/main/java/collector/cards/HoardersStrike.java
+++ b/src/main/java/collector/cards/HoardersStrike.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,8 +19,9 @@ public class HoardersStrike extends AbstractCollectorCard {
public HoardersStrike() {
super(ID, 2, CardType.ATTACK, CardRarity.RARE, CardTarget.ENEMY);
- baseDamage = 15;
+ baseDamage = 16;
tags.add(CardTags.STRIKE);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -39,6 +41,6 @@ public void update() {
}
public void upp() {
- upgradeDamage(5);
+ upgradeDamage(4);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/IronbarkKindling.java b/src/main/java/collector/cards/IronbarkKindling.java
index 9b60124c7..a16426797 100644
--- a/src/main/java/collector/cards/IronbarkKindling.java
+++ b/src/main/java/collector/cards/IronbarkKindling.java
@@ -13,7 +13,7 @@ public class IronbarkKindling extends AbstractCollectorCard {
public IronbarkKindling() {
super(ID, -2, CardType.SKILL, CardRarity.COMMON, CardTarget.NONE);
- baseBlock = 8;
+ baseBlock = 9;
tags.add(expansionContentMod.UNPLAYABLE);
}
diff --git a/src/main/java/collector/cards/ItMattersNot.java b/src/main/java/collector/cards/ItMattersNot.java
index 7f17b0bab..40815c467 100644
--- a/src/main/java/collector/cards/ItMattersNot.java
+++ b/src/main/java/collector/cards/ItMattersNot.java
@@ -15,7 +15,7 @@ public class ItMattersNot extends AbstractCollectorCard {
public ItMattersNot() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
- baseBlock = 12;
+ baseBlock = 13;
baseMagicNumber = magicNumber = 1;
}
diff --git a/src/main/java/collector/cards/JadedJabs.java b/src/main/java/collector/cards/JadedJabs.java
index d22ec8019..0e46a1f37 100644
--- a/src/main/java/collector/cards/JadedJabs.java
+++ b/src/main/java/collector/cards/JadedJabs.java
@@ -47,6 +47,7 @@ public void onPyred(AbstractCard card) {
}
public void upp() {
+ upgradeDamage(2);
upgradeMagicNumber(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/LanternFlare.java b/src/main/java/collector/cards/LanternFlare.java
index 197792caa..badf4b968 100644
--- a/src/main/java/collector/cards/LanternFlare.java
+++ b/src/main/java/collector/cards/LanternFlare.java
@@ -18,9 +18,9 @@ public class LanternFlare extends AbstractCollectorCard {
// intellij stuff attack, all_enemy, uncommon, 12, 3, , , 12, 3
public LanternFlare() {
- super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.ENEMY);
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 12;
- baseSecondMagic = secondMagic = 4;
+ baseSecondMagic = secondMagic = 3;
isPyre();
}
diff --git a/src/main/java/collector/cards/Misdirect.java b/src/main/java/collector/cards/Misdirect.java
index 7e53c2323..881120ed0 100644
--- a/src/main/java/collector/cards/Misdirect.java
+++ b/src/main/java/collector/cards/Misdirect.java
@@ -25,6 +25,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeBlock(3);
+ upgradeBlock(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/MysteryWeaving.java b/src/main/java/collector/cards/MysteryWeaving.java
index 37c377b55..d7eb4e2d0 100644
--- a/src/main/java/collector/cards/MysteryWeaving.java
+++ b/src/main/java/collector/cards/MysteryWeaving.java
@@ -13,8 +13,8 @@ public class MysteryWeaving extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , 10, 3, ,
public MysteryWeaving() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- baseBlock = 8;
+ super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
+ baseBlock = 9;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Omen.java b/src/main/java/collector/cards/Omen.java
index 1e2b53a8c..acc0f334e 100644
--- a/src/main/java/collector/cards/Omen.java
+++ b/src/main/java/collector/cards/Omen.java
@@ -3,6 +3,7 @@
import collector.powers.OmenPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -12,8 +13,9 @@ public class Omen extends AbstractCollectorCard {
// intellij stuff power, self, rare, , , , , 20, 5
public Omen() {
- super(ID, 1, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ super(ID, 2, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -21,7 +23,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- isInnate = true;
- uDesc();
+ upgradeBaseCost(1);
+ //isInnate = true;
+ //uDesc();
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/ReceiveTribute.java b/src/main/java/collector/cards/ReceiveTribute.java
index 64a584312..52cfffd24 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 basemod.cardmods.RetainMod;
+import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
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,26 @@ 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;}
+ } else if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if(q.hasTag(expansionContentMod.STUDY_AWAKENEDONE)){continue;}
+ }
+
+ AbstractCard r = q.makeCopy();
+ possibilities.add(r);
}
}
}
@@ -44,7 +69,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
ArrayList choices = new ArrayList<>();
for (int i = 0; i < magicNumber; i++) {
AbstractCard toAdd = remaining.remove(AbstractDungeon.cardRandomRng.random(remaining.size() - 1)).makeCopy();
- CardModifierManager.addModifier(toAdd, new RetainMod());
+ if (!toAdd.selfRetain) {
+ CardModifierManager.addModifier(toAdd, new PropertiesMod(PropertiesMod.supportedProperties.RETAIN, false));
+ }
choices.add(toAdd);
}
addToBot(new SelectCardsCenteredAction(choices, cardStrings.EXTENDED_DESCRIPTION[0], (cards) -> {
diff --git a/src/main/java/collector/cards/Roast.java b/src/main/java/collector/cards/Roast.java
index 1a3bad59b..ab81cc879 100644
--- a/src/main/java/collector/cards/Roast.java
+++ b/src/main/java/collector/cards/Roast.java
@@ -12,7 +12,7 @@ public class Roast extends AbstractCollectorCard {
public Roast() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseDamage = 6;
+ baseDamage = 4;
isPyre();
}
diff --git a/src/main/java/collector/cards/ScorchingRay.java b/src/main/java/collector/cards/ScorchingRay.java
index 01641844b..b58587209 100644
--- a/src/main/java/collector/cards/ScorchingRay.java
+++ b/src/main/java/collector/cards/ScorchingRay.java
@@ -1,27 +1,41 @@
package collector.cards;
import automaton.actions.EasyXCostAction;
-import collector.actions.ScorchingRayAction;
+import collector.effects.ColoredVerticalAttackEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import gremlin.actions.PseudoDamageRandomEnemyAction;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
+import static collector.util.Wiz.att;
public class ScorchingRay extends AbstractCollectorCard {
public final static String ID = makeID(ScorchingRay.class.getSimpleName());
- // intellij stuff attack, enemy, common, 4, 1, , , 4,
+ // intellij stuff attack, enemy, common, 4, 1, , , 4,
public ScorchingRay() {
super(ID, -1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ALL_ENEMY);
baseDamage = 8;
+
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new EasyXCostAction(this, (effect, params) -> {
+ att(new EasyXCostAction(this, (effect, params) -> {
for (int i = 0; i < effect; i++) {
- atb(new ScorchingRayAction(this));
+ //ScorchingRayAction couldn't cut it.
+ AbstractMonster q = AbstractDungeon.getMonsters().getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+ atb(new VFXAction(new ColoredVerticalAttackEffect(q.hb.x + MathUtils.random(q.hb.width / 3, ((q.hb.width / 3) * 2)), q.hb.cY, true, new Color(MathUtils.random(), MathUtils.random(), MathUtils.random(), 1))));
+ this.addToBot(new AttackDamageRandomEnemyAction(this, AbstractGameAction.AttackEffect.FIRE));
}
return true;
}));
diff --git a/src/main/java/collector/cards/ShadowDaggers.java b/src/main/java/collector/cards/ShadowDaggers.java
index 48f72a56c..4dc0e2fe9 100644
--- a/src/main/java/collector/cards/ShadowDaggers.java
+++ b/src/main/java/collector/cards/ShadowDaggers.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -14,8 +15,9 @@ public class ShadowDaggers extends AbstractCollectorCard {
public ShadowDaggers() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
- baseDamage = 4;
+ baseDamage = 3;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/ShootingStar.java b/src/main/java/collector/cards/ShootingStar.java
index a21d32438..69c18d8a9 100644
--- a/src/main/java/collector/cards/ShootingStar.java
+++ b/src/main/java/collector/cards/ShootingStar.java
@@ -4,6 +4,7 @@
import collector.powers.ShootingStarPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ShootingStar extends AbstractCollectorCard {
public ShootingStar() {
super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/Soulforge.java b/src/main/java/collector/cards/Soulforge.java
index b53cd9dbe..3c2f76061 100644
--- a/src/main/java/collector/cards/Soulforge.java
+++ b/src/main/java/collector/cards/Soulforge.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,9 +21,10 @@ public class Soulforge extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , 8, 3, ,
public Soulforge() {
- super(ID, 0, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/SpiritLeech.java b/src/main/java/collector/cards/SpiritLeech.java
index 69c2eb337..fc26524de 100644
--- a/src/main/java/collector/cards/SpiritLeech.java
+++ b/src/main/java/collector/cards/SpiritLeech.java
@@ -22,8 +22,8 @@ public class SpiritLeech extends AbstractCollectorCard {
public SpiritLeech() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
- baseDamage = 12;
- baseBlock = 10;
+ baseDamage = 13;
+ baseBlock = 11;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/StashAway.java b/src/main/java/collector/cards/StashAway.java
index dbe775ae5..184724628 100644
--- a/src/main/java/collector/cards/StashAway.java
+++ b/src/main/java/collector/cards/StashAway.java
@@ -14,7 +14,7 @@ public class StashAway extends AbstractCollectorCard {
// intellij stuff skill, self, uncommon, , , , , ,
public StashAway() {
- super(ID, -1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, -1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
baseBlock = 4;
exhaust = true;
}
diff --git a/src/main/java/collector/cards/Torchbearer.java b/src/main/java/collector/cards/Torchbearer.java
index 6fff104e4..4a92c67f4 100644
--- a/src/main/java/collector/cards/Torchbearer.java
+++ b/src/main/java/collector/cards/Torchbearer.java
@@ -20,9 +20,6 @@ public Torchbearer() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- if (upgraded){
- this.exhaust = TempHPField.tempHp.get(p) > 0;
- }
atb(new AddTemporaryHPAction(p, p, magicNumber));
}
diff --git a/src/main/java/collector/cards/VoidArmor.java b/src/main/java/collector/cards/VoidArmor.java
index d961e798f..be2448eca 100644
--- a/src/main/java/collector/cards/VoidArmor.java
+++ b/src/main/java/collector/cards/VoidArmor.java
@@ -19,7 +19,7 @@ public class VoidArmor extends AbstractCollectorCard {
public VoidArmor() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL);
- baseBlock = 9;
+ baseBlock = 10;
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/WhirlingFlame.java b/src/main/java/collector/cards/WhirlingFlame.java
index ac84ff89b..6d301e406 100644
--- a/src/main/java/collector/cards/WhirlingFlame.java
+++ b/src/main/java/collector/cards/WhirlingFlame.java
@@ -16,7 +16,7 @@ public class WhirlingFlame extends AbstractCollectorCard {
public WhirlingFlame() {
super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
- baseDamage = 12;
+ baseDamage = 15;
isMultiDamage = true;
}
diff --git a/src/main/java/collector/cards/Wildfire.java b/src/main/java/collector/cards/Wildfire.java
index a98d5413d..b8d70e034 100644
--- a/src/main/java/collector/cards/Wildfire.java
+++ b/src/main/java/collector/cards/Wildfire.java
@@ -33,7 +33,7 @@ public void update() {
isDone = true;
for (AbstractPower q : m.powers) {
if (q.type == AbstractPower.PowerType.DEBUFF) {
- dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ dmg(m, AttackEffect.FIRE);
}
}
}
diff --git a/src/main/java/collector/cards/YouAreMine.java b/src/main/java/collector/cards/YouAreMine.java
index 2f395616e..db212a3ac 100644
--- a/src/main/java/collector/cards/YouAreMine.java
+++ b/src/main/java/collector/cards/YouAreMine.java
@@ -23,7 +23,7 @@ public class YouAreMine extends AbstractCollectorCard {
public YouAreMine() {
super(ID, 2, CardType.SKILL, CardRarity.BASIC, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 1;
- baseSecondMagic = secondMagic = 5;
+ baseSecondMagic = secondMagic = 6;
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -34,6 +34,6 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
public void upp() {
- upgradeSecondMagic(3);
+ upgradeSecondMagic(2);
}
}
\ No newline at end of file
diff --git a/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java b/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
index d6292f174..473b48e11 100644
--- a/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
+++ b/src/main/java/collector/cards/collectibles/AbstractCollectibleCard.java
@@ -2,10 +2,12 @@
import collector.cards.AbstractCollectorCard;
import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
+import sneckomod.SneckoMod;
public abstract class AbstractCollectibleCard extends AbstractCollectorCard {
public AbstractCollectibleCard(String cardID, int cost, CardType type, CardRarity rarity, CardTarget target) {
this(cardID, cost, type, rarity, target, CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
diff --git a/src/main/java/collector/cards/collectibles/AcidSlimeCard.java b/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
index 5bb8afc5e..b8cf071d1 100644
--- a/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
+++ b/src/main/java/collector/cards/collectibles/AcidSlimeCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
import java.util.Arrays;
@@ -20,6 +21,7 @@ public class AcidSlimeCard extends AbstractCollectibleCard {
public AcidSlimeCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/AugmenterCard.java b/src/main/java/collector/cards/collectibles/AugmenterCard.java
index b02016809..931c549d3 100644
--- a/src/main/java/collector/cards/collectibles/AugmenterCard.java
+++ b/src/main/java/collector/cards/collectibles/AugmenterCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public class AugmenterCard extends AbstractCollectibleCard {
public AugmenterCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BearCard.java b/src/main/java/collector/cards/collectibles/BearCard.java
index fce9cfc4f..84bcad844 100644
--- a/src/main/java/collector/cards/collectibles/BearCard.java
+++ b/src/main/java/collector/cards/collectibles/BearCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -19,6 +20,7 @@ public BearCard() {
super(ID, 2, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 10;
baseBlock = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BlueSlaverCard.java b/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
index a3c6c1ffe..024f766af 100644
--- a/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
+++ b/src/main/java/collector/cards/collectibles/BlueSlaverCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class BlueSlaverCard extends AbstractCollectibleCard {
public BlueSlaverCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java b/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
index d5ec5ff8e..9268a7741 100644
--- a/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
+++ b/src/main/java/collector/cards/collectibles/BonfireSpiritsCard.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -21,6 +22,7 @@ public BonfireSpiritsCard() {
baseMagicNumber = magicNumber = 4;
isPyre();
tags.add(CardTags.HEALING);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
private boolean wasRare = false;
diff --git a/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java b/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
index b1f18d367..c55bfeb28 100644
--- a/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
+++ b/src/main/java/collector/cards/collectibles/BookOfStabbingCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class BookOfStabbingCard extends AbstractCollectibleCard {
public BookOfStabbingCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/BronzeOrbCard.java b/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
index 0da4f443f..bf8efc906 100644
--- a/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
+++ b/src/main/java/collector/cards/collectibles/BronzeOrbCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public BronzeOrbCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 5;
baseBlock = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ByrdCard.java b/src/main/java/collector/cards/collectibles/ByrdCard.java
index cc156d63d..bcf9a3733 100644
--- a/src/main/java/collector/cards/collectibles/ByrdCard.java
+++ b/src/main/java/collector/cards/collectibles/ByrdCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class ByrdCard extends AbstractCollectibleCard {
public ByrdCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CenturionCard.java b/src/main/java/collector/cards/collectibles/CenturionCard.java
index ed6d8a0e7..8eb017497 100644
--- a/src/main/java/collector/cards/collectibles/CenturionCard.java
+++ b/src/main/java/collector/cards/collectibles/CenturionCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public CenturionCard() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 10;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ChosenCard.java b/src/main/java/collector/cards/collectibles/ChosenCard.java
index 690eeea0f..9eb53cb1b 100644
--- a/src/main/java/collector/cards/collectibles/ChosenCard.java
+++ b/src/main/java/collector/cards/collectibles/ChosenCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -19,6 +20,7 @@ public ChosenCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 2;
baseSecondMagic = secondMagic = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ClericCard.java b/src/main/java/collector/cards/collectibles/ClericCard.java
index 4f726b319..5e3e9d53c 100644
--- a/src/main/java/collector/cards/collectibles/ClericCard.java
+++ b/src/main/java/collector/cards/collectibles/ClericCard.java
@@ -3,6 +3,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public ClericCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 10;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CollectorCard.java b/src/main/java/collector/cards/collectibles/CollectorCard.java
index e3a0e183e..66b391552 100644
--- a/src/main/java/collector/cards/collectibles/CollectorCard.java
+++ b/src/main/java/collector/cards/collectibles/CollectorCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -20,6 +21,7 @@ public CollectorCard() {
baseMagicNumber = magicNumber = 1;
baseSecondMagic = secondMagic = 3;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/CultistCard.java b/src/main/java/collector/cards/collectibles/CultistCard.java
index ad00ccf1a..75fd42ba7 100644
--- a/src/main/java/collector/cards/collectibles/CultistCard.java
+++ b/src/main/java/collector/cards/collectibles/CultistCard.java
@@ -3,6 +3,7 @@
import collector.powers.StrengthOverTurnsPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class CultistCard extends AbstractCollectibleCard {
public CultistCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DaggerCard.java b/src/main/java/collector/cards/collectibles/DaggerCard.java
index 4e6638ba2..8a8b07225 100644
--- a/src/main/java/collector/cards/collectibles/DaggerCard.java
+++ b/src/main/java/collector/cards/collectibles/DaggerCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.LoseHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public DaggerCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 20;
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DarklingsCard.java b/src/main/java/collector/cards/collectibles/DarklingsCard.java
index d7cf21239..7063c36f3 100644
--- a/src/main/java/collector/cards/collectibles/DarklingsCard.java
+++ b/src/main/java/collector/cards/collectibles/DarklingsCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,6 +21,7 @@ public DarklingsCard() {
super(ID, 1, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
isPyre();
baseDamage = 8;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java b/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
index 432ce81db..627fe2141 100644
--- a/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
+++ b/src/main/java/collector/cards/collectibles/DefaultCollectibleCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class DefaultCollectibleCard extends AbstractCollectibleCard {
public DefaultCollectibleCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java b/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
index d2fadf736..b1f6f043f 100644
--- a/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
+++ b/src/main/java/collector/cards/collectibles/DesignerInSpireCard.java
@@ -4,6 +4,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class DesignerInSpireCard extends AbstractCollectibleCard {
public DesignerInSpireCard() {
super(ID, 2, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FaceTraderCard.java b/src/main/java/collector/cards/collectibles/FaceTraderCard.java
index 12bd4a6fa..19cbf21e1 100644
--- a/src/main/java/collector/cards/collectibles/FaceTraderCard.java
+++ b/src/main/java/collector/cards/collectibles/FaceTraderCard.java
@@ -17,6 +17,7 @@ public class FaceTraderCard extends AbstractCollectibleCard {
public FaceTraderCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FatGremlinCard.java b/src/main/java/collector/cards/collectibles/FatGremlinCard.java
index 26613624c..f7ddb066c 100644
--- a/src/main/java/collector/cards/collectibles/FatGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/FatGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -16,6 +17,7 @@ public FatGremlinCard() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 4;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/FinalBossCard.java b/src/main/java/collector/cards/collectibles/FinalBossCard.java
index ff3ae9043..575a33d06 100644
--- a/src/main/java/collector/cards/collectibles/FinalBossCard.java
+++ b/src/main/java/collector/cards/collectibles/FinalBossCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.InvinciblePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -20,6 +21,7 @@ public FinalBossCard() {
public void use(AbstractPlayer p, AbstractMonster m) {
atb(new RemoveSpecificPowerAction(m, p, InvinciblePower.POWER_ID));
atb(new StunMonsterAction(m, p));
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/FungiBeastCard.java b/src/main/java/collector/cards/collectibles/FungiBeastCard.java
index c1117caa9..b40ba5c01 100644
--- a/src/main/java/collector/cards/collectibles/FungiBeastCard.java
+++ b/src/main/java/collector/cards/collectibles/FungiBeastCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -15,6 +16,7 @@ public class FungiBeastCard extends AbstractCollectibleCard {
public FungiBeastCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
index af548bd1d..cf5d1953d 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageOne.java
@@ -1,8 +1,12 @@
package collector.cards.collectibles;
+import basemod.helpers.CardModifierManager;
+import collector.cardmods.CollectedCardMod;
import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -13,11 +17,16 @@ public class GiantHeadCardStageOne extends AbstractCollectibleCard {
public GiantHeadCardStageOne() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- cardsToPreview = new GiantHeadCardStageTwo();
+ AbstractCard tar = new GiantHeadCardStageTwo();
+ CardModifierManager.addModifier(tar, new CollectedCardMod());
+ cardsToPreview = tar;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new AddCopyNextTurnPower(new GiantHeadCardStageTwo()));
+ AbstractCard tar = new GiantHeadCardStageTwo();
+ CardModifierManager.addModifier(tar, new CollectedCardMod());
+ applyToSelf(new AddCopyNextTurnPower(tar));
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
index d162966cd..517a59198 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageThree.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class GiantHeadCardStageThree extends AbstractCollectibleCard {
public GiantHeadCardStageThree() {
super(ID, 3, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ALL_ENEMY, CardColor.COLORLESS);
baseDamage = 70;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java b/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
index 0a5c58401..e82d124bd 100644
--- a/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
+++ b/src/main/java/collector/cards/collectibles/GiantHeadCardStageTwo.java
@@ -3,6 +3,7 @@
import collector.powers.AddCopyNextTurnPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class GiantHeadCardStageTwo extends AbstractCollectibleCard {
public GiantHeadCardStageTwo() {
super(ID, 2, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF, CardColor.COLORLESS);
cardsToPreview = new GiantHeadCardStageThree();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java b/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
index 64c76f91f..d2decc6c0 100644
--- a/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinLeaderCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -21,6 +22,7 @@ public class GremlinLeaderCard extends AbstractCollectibleCard {
public GremlinLeaderCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinNobCard.java b/src/main/java/collector/cards/collectibles/GremlinNobCard.java
index 2a6593fad..eee05bb0e 100644
--- a/src/main/java/collector/cards/collectibles/GremlinNobCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinNobCard.java
@@ -3,6 +3,7 @@
import collector.powers.collectioncards.GremlinNobCardPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class GremlinNobCard extends AbstractCollectibleCard {
public GremlinNobCard() {
super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/GremlinWizardCard.java b/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
index 7ed96a205..0bb418dca 100644
--- a/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
+++ b/src/main/java/collector/cards/collectibles/GremlinWizardCard.java
@@ -4,6 +4,7 @@
import collector.powers.NextTurnVigorPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class GremlinWizardCard extends AbstractCollectibleCard {
public GremlinWizardCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/JawWormCard.java b/src/main/java/collector/cards/collectibles/JawWormCard.java
index 350f6e372..c88433c19 100644
--- a/src/main/java/collector/cards/collectibles/JawWormCard.java
+++ b/src/main/java/collector/cards/collectibles/JawWormCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public JawWormCard() {
super(ID, 2, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 12;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/JousterCard.java b/src/main/java/collector/cards/collectibles/JousterCard.java
index 80389c7f8..b82568947 100644
--- a/src/main/java/collector/cards/collectibles/JousterCard.java
+++ b/src/main/java/collector/cards/collectibles/JousterCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -15,6 +16,7 @@ public JousterCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 12;
baseBlock = 12;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LagavulinCard.java b/src/main/java/collector/cards/collectibles/LagavulinCard.java
index dc8d83ec3..24730eb10 100644
--- a/src/main/java/collector/cards/collectibles/LagavulinCard.java
+++ b/src/main/java/collector/cards/collectibles/LagavulinCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -15,6 +16,7 @@ public class LagavulinCard extends AbstractCollectibleCard {
public LagavulinCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LivingWallCard.java b/src/main/java/collector/cards/collectibles/LivingWallCard.java
index 947e70450..71aaf604d 100644
--- a/src/main/java/collector/cards/collectibles/LivingWallCard.java
+++ b/src/main/java/collector/cards/collectibles/LivingWallCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -15,6 +16,7 @@ public class LivingWallCard extends AbstractCollectibleCard {
public LivingWallCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LouseCard.java b/src/main/java/collector/cards/collectibles/LouseCard.java
index e178e664e..f86c600e6 100644
--- a/src/main/java/collector/cards/collectibles/LouseCard.java
+++ b/src/main/java/collector/cards/collectibles/LouseCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.BlurPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class LouseCard extends AbstractCollectibleCard {
public LouseCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 7;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/LuckyWick.java b/src/main/java/collector/cards/collectibles/LuckyWick.java
index 2f6023fdb..2c6731842 100644
--- a/src/main/java/collector/cards/collectibles/LuckyWick.java
+++ b/src/main/java/collector/cards/collectibles/LuckyWick.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -14,6 +15,7 @@ public LuckyWick() {
super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY, CardColor.COLORLESS);
baseDamage = 3;
baseBlock = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MadGremlinCard.java b/src/main/java/collector/cards/collectibles/MadGremlinCard.java
index 7ae4ee387..56fd7f63f 100644
--- a/src/main/java/collector/cards/collectibles/MadGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/MadGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.LoseStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class MadGremlinCard extends AbstractCollectibleCard {
public MadGremlinCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MawCard.java b/src/main/java/collector/cards/collectibles/MawCard.java
index de146b43b..9aef93510 100644
--- a/src/main/java/collector/cards/collectibles/MawCard.java
+++ b/src/main/java/collector/cards/collectibles/MawCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -13,6 +14,7 @@ public class MawCard extends AbstractCollectibleCard {
public MawCard() {
super(ID, 3, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 32;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MerchantCard.java b/src/main/java/collector/cards/collectibles/MerchantCard.java
index efe680e03..d03a50a66 100644
--- a/src/main/java/collector/cards/collectibles/MerchantCard.java
+++ b/src/main/java/collector/cards/collectibles/MerchantCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -15,6 +16,7 @@ public class MerchantCard extends AbstractCollectibleCard {
public MerchantCard() {
super(ID, 2, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MushroomCard.java b/src/main/java/collector/cards/collectibles/MushroomCard.java
index 41f64a79e..c60464efd 100644
--- a/src/main/java/collector/cards/collectibles/MushroomCard.java
+++ b/src/main/java/collector/cards/collectibles/MushroomCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -18,6 +19,7 @@ public MushroomCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 5;
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/MysticCard.java b/src/main/java/collector/cards/collectibles/MysticCard.java
index 72a58b1a4..cada35714 100644
--- a/src/main/java/collector/cards/collectibles/MysticCard.java
+++ b/src/main/java/collector/cards/collectibles/MysticCard.java
@@ -3,6 +3,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -14,6 +15,7 @@ public class MysticCard extends AbstractCollectibleCard {
public MysticCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/NemesisCard.java b/src/main/java/collector/cards/collectibles/NemesisCard.java
index 39bb24500..0887b04a5 100644
--- a/src/main/java/collector/cards/collectibles/NemesisCard.java
+++ b/src/main/java/collector/cards/collectibles/NemesisCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.IntangiblePlayerPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class NemesisCard extends AbstractCollectibleCard {
public NemesisCard() {
super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/NlothCard.java b/src/main/java/collector/cards/collectibles/NlothCard.java
index 1455b2e4a..b9e2ed98a 100644
--- a/src/main/java/collector/cards/collectibles/NlothCard.java
+++ b/src/main/java/collector/cards/collectibles/NlothCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -15,6 +16,7 @@ public class NlothCard extends AbstractCollectibleCard {
public NlothCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/OrbWalkerCard.java b/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
index 36262eb48..3dab23375 100644
--- a/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
+++ b/src/main/java/collector/cards/collectibles/OrbWalkerCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -17,6 +18,7 @@ public OrbWalkerCard() {
baseDamage = 14;
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Ember();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/PointyCard.java b/src/main/java/collector/cards/collectibles/PointyCard.java
index 38ef18955..d818b2118 100644
--- a/src/main/java/collector/cards/collectibles/PointyCard.java
+++ b/src/main/java/collector/cards/collectibles/PointyCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public class PointyCard extends AbstractCollectibleCard {
public PointyCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RanwidCard.java b/src/main/java/collector/cards/collectibles/RanwidCard.java
index c6bb0aa78..b6f9c59a2 100644
--- a/src/main/java/collector/cards/collectibles/RanwidCard.java
+++ b/src/main/java/collector/cards/collectibles/RanwidCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -14,6 +15,7 @@ public class RanwidCard extends AbstractCollectibleCard {
public RanwidCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RedSlaverCard.java b/src/main/java/collector/cards/collectibles/RedSlaverCard.java
index 8d687503b..32f10b43a 100644
--- a/src/main/java/collector/cards/collectibles/RedSlaverCard.java
+++ b/src/main/java/collector/cards/collectibles/RedSlaverCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.GainStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -16,6 +17,7 @@ public class RedSlaverCard extends AbstractCollectibleCard {
public RedSlaverCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 9;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ReptomancerCard.java b/src/main/java/collector/cards/collectibles/ReptomancerCard.java
index 60a25c04b..36f54e6cf 100644
--- a/src/main/java/collector/cards/collectibles/ReptomancerCard.java
+++ b/src/main/java/collector/cards/collectibles/ReptomancerCard.java
@@ -4,6 +4,7 @@
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -16,6 +17,7 @@ public ReptomancerCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
baseSecondMagic = secondMagic = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RepulsorCard.java b/src/main/java/collector/cards/collectibles/RepulsorCard.java
index 60c49a921..eab930ec7 100644
--- a/src/main/java/collector/cards/collectibles/RepulsorCard.java
+++ b/src/main/java/collector/cards/collectibles/RepulsorCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public RepulsorCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/RomeoCard.java b/src/main/java/collector/cards/collectibles/RomeoCard.java
index d0a26e678..953739a50 100644
--- a/src/main/java/collector/cards/collectibles/RomeoCard.java
+++ b/src/main/java/collector/cards/collectibles/RomeoCard.java
@@ -4,7 +4,9 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.watcher.FreeAttackPower;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import sneckomod.SneckoMod;
+import static champ.ChampMod.vigor;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,11 +17,12 @@ public class RomeoCard extends AbstractCollectibleCard {
public RomeoCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
applyToSelf(new FreeAttackPower(p, 1));
- applyToSelf(new VigorPower(p, magicNumber));
+ vigor(magicNumber);
}
public void upp() {
diff --git a/src/main/java/collector/cards/collectibles/ScrapOozeCard.java b/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
index 5380b5bb6..2dd2767fe 100644
--- a/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
+++ b/src/main/java/collector/cards/collectibles/ScrapOozeCard.java
@@ -6,6 +6,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -18,6 +19,7 @@ public ScrapOozeCard() {
super(ID, 1, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
isPyre();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SentryCard.java b/src/main/java/collector/cards/collectibles/SentryCard.java
index 9d7c6e32a..3a84d3cf6 100644
--- a/src/main/java/collector/cards/collectibles/SentryCard.java
+++ b/src/main/java/collector/cards/collectibles/SentryCard.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.vfx.combat.SmallLaserEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -21,6 +22,7 @@ public SentryCard() {
super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
baseDamage = 8;
baseMagicNumber = magicNumber = 1;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java b/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
index d5ee2e615..c2a599fd8 100644
--- a/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
+++ b/src/main/java/collector/cards/collectibles/ShelledParasiteCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ShelledParasiteCard extends AbstractCollectibleCard {
public ShelledParasiteCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 4;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java b/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
index 2b5edd90d..38f859a42 100644
--- a/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/ShieldGremlinCard.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -12,6 +13,7 @@ public class ShieldGremlinCard extends AbstractCollectibleCard {
public ShieldGremlinCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseBlock = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SnakePlantCard.java b/src/main/java/collector/cards/collectibles/SnakePlantCard.java
index 7e52acb05..c68c97359 100644
--- a/src/main/java/collector/cards/collectibles/SnakePlantCard.java
+++ b/src/main/java/collector/cards/collectibles/SnakePlantCard.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.BiteEffect;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
@@ -16,9 +17,13 @@ public class SnakePlantCard extends AbstractCollectibleCard {
public final static String ID = makeID(SnakePlantCard.class.getSimpleName());
// intellij stuff attack, enemy, common, 7, 2, , , ,
+
+ //TODO: Rework into Skill: 1e, Apply 2 Weak and Vulnerable.
+
public SnakePlantCard() {
super(ID, 2, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 7;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java b/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
index 3532684d8..55457c7ff 100644
--- a/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
+++ b/src/main/java/collector/cards/collectibles/SneakyGremlinCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -15,6 +16,7 @@ public class SneakyGremlinCard extends AbstractCollectibleCard {
public SneakyGremlinCard() {
super(ID, 0, CardType.ATTACK, CardRarity.COMMON, CardTarget.ENEMY);
baseDamage = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SneckoCard.java b/src/main/java/collector/cards/collectibles/SneckoCard.java
index 5de15a25a..044f18707 100644
--- a/src/main/java/collector/cards/collectibles/SneckoCard.java
+++ b/src/main/java/collector/cards/collectibles/SneckoCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import sneckomod.actions.MuddleHandAction;
import static collector.CollectorMod.makeID;
@@ -15,6 +16,7 @@ public class SneckoCard extends AbstractCollectibleCard {
public SneckoCard() {
super(ID, 0, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SphericGuardianCard.java b/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
index cdd0e4f98..1d9265edc 100644
--- a/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
+++ b/src/main/java/collector/cards/collectibles/SphericGuardianCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.BarricadePower;
import com.megacrit.cardcrawl.powers.BlurPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class SphericGuardianCard extends AbstractCollectibleCard {
public SphericGuardianCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
this.baseMagicNumber = this.magicNumber = 2;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java b/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
index a733879e1..30f521515 100644
--- a/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
+++ b/src/main/java/collector/cards/collectibles/SpikeSlimeCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.FlameBarrierPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public SpikeSlimeCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
baseBlock = 8;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpikerCard.java b/src/main/java/collector/cards/collectibles/SpikerCard.java
index e55835f5c..fe966784e 100644
--- a/src/main/java/collector/cards/collectibles/SpikerCard.java
+++ b/src/main/java/collector/cards/collectibles/SpikerCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ThornsPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpikerCard extends AbstractCollectibleCard {
public SpikerCard() {
super(ID, 1, CardType.POWER, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireGrowthCard.java b/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
index 40ac7b915..f3d2a9cbd 100644
--- a/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireGrowthCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.ConstrictedPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -14,6 +15,7 @@ public class SpireGrowthCard extends AbstractCollectibleCard {
public SpireGrowthCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.ENEMY);
baseMagicNumber = magicNumber = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireShieldCard.java b/src/main/java/collector/cards/collectibles/SpireShieldCard.java
index 6286f7d03..4f3a9be61 100644
--- a/src/main/java/collector/cards/collectibles/SpireShieldCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireShieldCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpireShieldCard extends AbstractCollectibleCard {
public SpireShieldCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SpireSpearCard.java b/src/main/java/collector/cards/collectibles/SpireSpearCard.java
index d51f8f3a6..5b50258c9 100644
--- a/src/main/java/collector/cards/collectibles/SpireSpearCard.java
+++ b/src/main/java/collector/cards/collectibles/SpireSpearCard.java
@@ -3,6 +3,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class SpireSpearCard extends AbstractCollectibleCard {
public SpireSpearCard() {
super(ID, 0, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/SsserpentCard.java b/src/main/java/collector/cards/collectibles/SsserpentCard.java
index e86633584..3b0806ade 100644
--- a/src/main/java/collector/cards/collectibles/SsserpentCard.java
+++ b/src/main/java/collector/cards/collectibles/SsserpentCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.cards.curses.Doubt;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.makeInHand;
@@ -16,6 +17,7 @@ public SsserpentCard() {
super(ID, 1, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY);
baseDamage = 20;
cardsToPreview = new Doubt();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TaskmasterCard.java b/src/main/java/collector/cards/collectibles/TaskmasterCard.java
index dacb4f6bb..8a61128df 100644
--- a/src/main/java/collector/cards/collectibles/TaskmasterCard.java
+++ b/src/main/java/collector/cards/collectibles/TaskmasterCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
@@ -19,6 +20,7 @@ public TaskmasterCard() {
baseDamage = 10;
baseMagicNumber = magicNumber = 1;
baseSecondMagic = secondMagic = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/ThievesCard.java b/src/main/java/collector/cards/collectibles/ThievesCard.java
index e20785719..0b1c6dbab 100644
--- a/src/main/java/collector/cards/collectibles/ThievesCard.java
+++ b/src/main/java/collector/cards/collectibles/ThievesCard.java
@@ -3,6 +3,7 @@
import collector.powers.collectioncards.ThievesCardPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -14,6 +15,7 @@ public class ThievesCard extends AbstractCollectibleCard {
public ThievesCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 5;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TorchHeadCard.java b/src/main/java/collector/cards/collectibles/TorchHeadCard.java
index c861a723a..31d31f1e2 100644
--- a/src/main/java/collector/cards/collectibles/TorchHeadCard.java
+++ b/src/main/java/collector/cards/collectibles/TorchHeadCard.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -24,6 +25,7 @@ public class TorchHeadCard extends AbstractCollectibleCard {
public TorchHeadCard() {
super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/TransientCard.java b/src/main/java/collector/cards/collectibles/TransientCard.java
index d7c222143..3f7c48bd1 100644
--- a/src/main/java/collector/cards/collectibles/TransientCard.java
+++ b/src/main/java/collector/cards/collectibles/TransientCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToSelf;
@@ -15,6 +16,7 @@ public class TransientCard extends AbstractCollectibleCard {
public TransientCard() {
super(ID, 1, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 6;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/VagrantCard.java b/src/main/java/collector/cards/collectibles/VagrantCard.java
index ebe529054..242d199c7 100644
--- a/src/main/java/collector/cards/collectibles/VagrantCard.java
+++ b/src/main/java/collector/cards/collectibles/VagrantCard.java
@@ -4,6 +4,7 @@
import com.megacrit.cardcrawl.cards.curses.Shame;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,6 +17,7 @@ public VagrantCard() {
super(ID, 0, CardType.SKILL, CardRarity.SPECIAL, CardTarget.SELF);
baseMagicNumber = magicNumber = 2;
cardsToPreview = new Shame();
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/WomanInBlueCard.java b/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
index 2ca39b368..1132e5be0 100644
--- a/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
+++ b/src/main/java/collector/cards/collectibles/WomanInBlueCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.*;
@@ -16,6 +17,7 @@ public class WomanInBlueCard extends AbstractCollectibleCard {
public WomanInBlueCard() {
super(ID, 1, CardType.POWER, CardRarity.SPECIAL, CardTarget.SELF);
tags.add(CardTags.HEALING);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/cards/collectibles/WrithingMassCard.java b/src/main/java/collector/cards/collectibles/WrithingMassCard.java
index a6154253d..3ed4ad812 100644
--- a/src/main/java/collector/cards/collectibles/WrithingMassCard.java
+++ b/src/main/java/collector/cards/collectibles/WrithingMassCard.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import sneckomod.SneckoMod;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -16,6 +17,7 @@ public class WrithingMassCard extends AbstractCollectibleCard {
public WrithingMassCard() {
super(ID, 1, CardType.SKILL, CardRarity.COMMON, CardTarget.SELF);
baseMagicNumber = magicNumber = 3;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/collector/patches/CollectorBottleField.java b/src/main/java/collector/patches/CollectorBottleField.java
index 8c8fe6d09..4e1fe5bb3 100644
--- a/src/main/java/collector/patches/CollectorBottleField.java
+++ b/src/main/java/collector/patches/CollectorBottleField.java
@@ -1,5 +1,6 @@
package collector.patches;
+import awakenedOne.util.Wiz;
import com.evacipated.cardcrawl.modthespire.lib.SpireField;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -10,7 +11,12 @@ public class CollectorBottleField {
@SpirePatch(clz = AbstractCard.class, method = "makeStatEquivalentCopy")
public static class MakeStatEquivalentCopy {
public static AbstractCard Postfix(AbstractCard result, AbstractCard self) {
- inCollectionBottle.set(result, inCollectionBottle.get(self)); // Read:
+ if (Wiz.isInCombat()) {
+ inCollectionBottle.set(result, inCollectionBottle.get(self));
+ }
+ if (!Wiz.isInCombat()) {
+ inCollectionBottle.set(result, Boolean.FALSE);
+ }
return result;
}
}
diff --git a/src/main/java/collector/patches/OnExhaustPatch.java b/src/main/java/collector/patches/OnExhaustPatch.java
index 92027b859..c3c4440fc 100644
--- a/src/main/java/collector/patches/OnExhaustPatch.java
+++ b/src/main/java/collector/patches/OnExhaustPatch.java
@@ -17,7 +17,7 @@
)
public class OnExhaustPatch {
- @SpireInsertPatch(locator = OnExhaustPatch.Locator.class)
+ @SpireInsertPatch(locator = Locator.class)
public static void TriggerOnExhaust(CardGroup instance, AbstractCard c) {
for (AbstractCard other : AbstractDungeon.player.hand.group) {
if (other instanceof OnOtherCardExhaustInHand) {
diff --git a/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java b/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
index ef987f58a..e7d01632c 100644
--- a/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
+++ b/src/main/java/collector/patches/PyrePatches/PyreTooltips1.java
@@ -1,4 +1,4 @@
-/*
+package collector.patches.PyrePatches;/*
package collector.patches.PyrePatches;
import basemod.BaseMod;
diff --git a/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java b/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
index ea3d4b0b3..0b823ff90 100644
--- a/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
+++ b/src/main/java/collector/patches/PyrePatches/PyreTooltips2.java
@@ -1,4 +1,4 @@
-/*
+package collector.patches.PyrePatches;/*
package collector.patches.PyrePatches;
import basemod.BaseMod;
diff --git a/src/main/java/collector/potions/DebuffDoublePotion.java b/src/main/java/collector/potions/DebuffDoublePotion.java
index 46cc0f04e..0d39447fc 100644
--- a/src/main/java/collector/potions/DebuffDoublePotion.java
+++ b/src/main/java/collector/potions/DebuffDoublePotion.java
@@ -4,14 +4,18 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.actions.GainReservesAction;
+import com.badlogic.gdx.graphics.Color;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.localization.PotionStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.vfx.combat.VerticalAuraEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -25,7 +29,7 @@ public class DebuffDoublePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public DebuffDoublePotion() {
- super(NAME, POTION_ID, PotionRarity.RARE, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.RARE, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = true;
this.targetRequired = true;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -46,9 +50,14 @@ public void use(AbstractCreature targetFoe) {
atb(new AbstractGameAction() {
@Override
public void update() {
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.BLACK, targetFoe.hb.cX, targetFoe.hb.cY), 0.1F));
+ this.addToBot(new SFXAction("ATTACK_FIRE"));
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.PURPLE, targetFoe.hb.cX, targetFoe.hb.cY), 0.1F));
+ this.addToBot(new VFXAction(targetFoe, new VerticalAuraEffect(Color.CYAN, targetFoe.hb.cX, targetFoe.hb.cY), 0.0F));
isDone = true;
for (AbstractPower p : targetFoe.powers) {
if (p.type == AbstractPower.PowerType.DEBUFF) {
+
p.amount *= potency + 1;
}
}
diff --git a/src/main/java/collector/potions/MiniCursePotion.java b/src/main/java/collector/potions/MiniCursePotion.java
index 1443f299f..ea5d3730b 100644
--- a/src/main/java/collector/potions/MiniCursePotion.java
+++ b/src/main/java/collector/potions/MiniCursePotion.java
@@ -5,6 +5,7 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.powers.DoomPower;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -15,9 +16,11 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.VulnerablePower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.CollectorCurseEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.applyToEnemy;
+import static collector.util.Wiz.atb;
public class MiniCursePotion extends CustomPotion {
@@ -27,7 +30,7 @@ public class MiniCursePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public MiniCursePotion() {
- super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = true;
this.targetRequired = true;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -48,6 +51,7 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new CollectorCurseEffect(target.hb.cX, target.hb.cY), .2F));
applyToEnemy((AbstractMonster) target, new WeakPower(target, potency, false));
applyToEnemy((AbstractMonster) target, new VulnerablePower(target, potency, false));
applyToEnemy((AbstractMonster) target, new DoomPower((AbstractMonster) target, potency * 6));
diff --git a/src/main/java/collector/potions/ReservePotion.java b/src/main/java/collector/potions/ReservePotion.java
index 149cbc8a2..e442084ed 100644
--- a/src/main/java/collector/potions/ReservePotion.java
+++ b/src/main/java/collector/potions/ReservePotion.java
@@ -5,12 +5,18 @@
import basemod.abstracts.CustomPotion;
import collector.CollectorMod;
import collector.actions.GainReservesAction;
+import collector.effects.ColoredSanctityEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
+import com.megacrit.cardcrawl.vfx.BorderFlashEffect;
+import com.megacrit.cardcrawl.vfx.combat.SanctityEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -23,7 +29,7 @@ public class ReservePotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public ReservePotion() {
- super(NAME, POTION_ID, PotionRarity.UNCOMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.UNCOMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = false;
this.targetRequired = false;
this.labOutlineColor= CollectorMod.potionLabColor;
@@ -42,6 +48,9 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new ColoredSanctityEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, Color.CHARTREUSE.cpy())));
+ this.addToTop(new SFXAction("HEAL_1"));
+ this.addToTop(new VFXAction(new BorderFlashEffect(Color.CHARTREUSE, true), 0.1F));
atb(new GainReservesAction(potency));
}
diff --git a/src/main/java/collector/potions/TempHPPotion.java b/src/main/java/collector/potions/TempHPPotion.java
index 538989366..8038526be 100644
--- a/src/main/java/collector/potions/TempHPPotion.java
+++ b/src/main/java/collector/potions/TempHPPotion.java
@@ -3,13 +3,19 @@
import basemod.BaseMod;
import basemod.abstracts.CustomPotion;
+import collector.effects.ColoredSanctityEffect;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.helpers.TipHelper;
import com.megacrit.cardcrawl.localization.PotionStrings;
+import com.megacrit.cardcrawl.vfx.combat.HealVerticalLineEffect;
import static collector.CollectorMod.makeID;
import static collector.util.Wiz.atb;
@@ -22,7 +28,7 @@ public class TempHPPotion extends CustomPotion {
public static final String[] DESCRIPTIONS = potionStrings.DESCRIPTIONS;
public TempHPPotion() {
- super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR); //TODO: Potion visual stuff
+ super(NAME, POTION_ID, PotionRarity.COMMON, PotionSize.H, PotionColor.ELIXIR);
this.isThrown = false;
this.targetRequired = false;
}
@@ -40,6 +46,16 @@ public void initializeData() {
}
public void use(AbstractCreature target) {
+ atb(new VFXAction(new ColoredSanctityEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, Color.CHARTREUSE.cpy())));
+ int roll = MathUtils.random(0, 2);
+ if (roll == 0) {
+ CardCrawlGame.sound.play("HEAL_1");
+ } else if (roll == 1) {
+ CardCrawlGame.sound.play("HEAL_2");
+ } else {
+ CardCrawlGame.sound.play("HEAL_3");
+ }
+
atb(new AddTemporaryHPAction(AbstractDungeon.player, AbstractDungeon.player, potency));
}
diff --git a/src/main/java/collector/powers/DoomPower.java b/src/main/java/collector/powers/DoomPower.java
index c00242a6b..6d63a70f8 100644
--- a/src/main/java/collector/powers/DoomPower.java
+++ b/src/main/java/collector/powers/DoomPower.java
@@ -1,5 +1,6 @@
package collector.powers;
+import collector.relics.JadeRing;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.HealthBarRenderPower;
@@ -11,6 +12,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import theHexaghost.relics.CandleOfCauterizing;
import static collector.util.Wiz.atb;
import static collector.util.Wiz.isAfflicted;
@@ -30,7 +32,19 @@ public DoomPower(AbstractMonster target, int amount) {
@Override
public int getHealthBarAmount() {
- return amount;
+
+ int healthbar = 0;
+
+ if(AbstractDungeon.player.hasRelic(JadeRing.ID)){
+ healthbar = amount+6;
+ }
+
+ if(!(AbstractDungeon.player.hasRelic(JadeRing.ID))){
+ healthbar = amount;
+ }
+
+ return healthbar;
+
}
public void atStartOfTurn() {
@@ -41,23 +55,56 @@ public void atStartOfTurn() {
public void explode() {
this.flashWithoutSound();
- if (isAfflicted((AbstractMonster) this.owner)) {
+ System.out.println("DEBUG: Checking Affliction.");
+ if (isAfflicted((AbstractMonster) this.owner)) { System.out.println("DEBUG: Affliction confirmed.");
} else {
if (this.owner.hasPower(DemisePower.POWER_ID)) {
+ System.out.println("DEBUG: There is no Affliction. Reducing DemisePower by 1.");
atb(new ReducePowerAction(this.owner, this.owner, DemisePower.POWER_ID, 1));
} else {
+ System.out.println("DEBUG: There is no Affliction. Removing DoomPower");
this.addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
}
}
- if (amount >= owner.currentHealth) {
- CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+
+ if (AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ if (amount+6 >= owner.currentHealth) {
+ System.out.println("DEBUG: Kill SFX with Jade Ring.");
+ CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+ }
+ }
+
+ if (!(AbstractDungeon.player.hasRelic(JadeRing.ID))) {
+ if (amount >= owner.currentHealth) {
+ System.out.println("DEBUG: Kill SFX without Jade Ring.");
+ CardCrawlGame.sound.playA("BELL", MathUtils.random(-0.2F, -0.3F));
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ System.out.println("DEBUG: Dealing damage with Jade Ring.");
+ this.addToBot(new LoseHPAction(owner, owner, amount+6, AbstractGameAction.AttackEffect.NONE));
+ }
+
+ if (!AbstractDungeon.player.hasRelic(JadeRing.ID)) {
+ System.out.println("DEBUG: Dealing damage without Jade Ring.");
+ this.addToBot(new LoseHPAction(owner, owner, amount, AbstractGameAction.AttackEffect.NONE));
}
- this.addToBot(new LoseHPAction(owner, owner, amount, AbstractGameAction.AttackEffect.NONE));
+
}
@Override
public void updateDescription() {
- description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+
+ if (!(AbstractDungeon.player.hasRelic(JadeRing.ID))){
+ description = DESCRIPTIONS[0] + amount + DESCRIPTIONS[1];
+ }
+
+ if(AbstractDungeon.player.hasRelic(JadeRing.ID)){
+ int display = (this.amount+6);
+ description = DESCRIPTIONS[0] + display + DESCRIPTIONS[1];
+ }
+
}
@Override
diff --git a/src/main/java/collector/powers/KarmaPower.java b/src/main/java/collector/powers/KarmaPower.java
index 2e3439da9..981277f0f 100644
--- a/src/main/java/collector/powers/KarmaPower.java
+++ b/src/main/java/collector/powers/KarmaPower.java
@@ -3,6 +3,8 @@
import collector.util.Wiz;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import gremlin.GremlinMod;
import static collector.util.Wiz.isAfflicted;
@@ -24,8 +26,17 @@ public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
}
return false;
})) {
+
flash();
- addToBot(new GainBlockAction(owner, amount));
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ if (isAfflicted(mo)) {
+ addToBot(new GainBlockAction(owner, amount));
+ }
+ }
+ }
+
+ //addToBot(new GainBlockAction(owner, amount));
}
}
diff --git a/src/main/java/collector/powers/NextTurnVigorPower.java b/src/main/java/collector/powers/NextTurnVigorPower.java
index 414cda0da..a84e788b8 100644
--- a/src/main/java/collector/powers/NextTurnVigorPower.java
+++ b/src/main/java/collector/powers/NextTurnVigorPower.java
@@ -4,6 +4,8 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import static champ.ChampMod.vigor;
+
public class NextTurnVigorPower extends AbstractCollectorPower {
public static final String NAME = "NextTurnVigor";
public static final String POWER_ID = makeID(NAME);
@@ -17,7 +19,8 @@ public NextTurnVigorPower(int amount) {
public void atStartOfTurn() {
this.flash();
- applyToSelf(new VigorPower(owner, amount));
+ //applyToSelf(new VigorPower(owner, amount));
+ vigor(amount);
this.addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this));
}
@Override
diff --git a/src/main/java/collector/powers/TorchHeadPower.java b/src/main/java/collector/powers/TorchHeadPower.java
index 22a9f2997..9c6f2ffe1 100644
--- a/src/main/java/collector/powers/TorchHeadPower.java
+++ b/src/main/java/collector/powers/TorchHeadPower.java
@@ -101,31 +101,31 @@ public void updateDescription() {
StringBuilder sb = new StringBuilder();
sb.append(DESCRIPTIONS[0]);
if (onAttackRandomDoom > 0) {
- sb.append(DESCRIPTIONS[1]).append(onAttackRandomDoom).append(DESCRIPTIONS[2]);
- if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackPoison > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[1] + onAttackRandomDoom + DESCRIPTIONS[2]);
+ if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackPoison > 0) {
sb.append(" NL ");
}
}
if (onAttackPoison > 0) {
- sb.append(DESCRIPTIONS[1]).append(onAttackPoison).append(DESCRIPTIONS[7]);
- if (onAttackAOE > 0 || onAttackBlock > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[1] + onAttackPoison + DESCRIPTIONS[7]);
+ if (onAttackAOE > 0 || onAttackBlock > 0) {
sb.append(" NL ");
}
}
if (onAttackAOE > 0) {
- sb.append(DESCRIPTIONS[3]).append(onAttackAOE).append(DESCRIPTIONS[4]);
- if (onAttackBlock > 0 || onAttackDraw > 0) {
+ sb.append(DESCRIPTIONS[3] + onAttackAOE + DESCRIPTIONS[4]);
+ if (onAttackBlock > 0) {
sb.append(" NL ");
}
}
if (onAttackBlock > 0) {
- sb.append(DESCRIPTIONS[5]).append(onAttackBlock).append(DESCRIPTIONS[6]);
+ sb.append(DESCRIPTIONS[5] + onAttackBlock + DESCRIPTIONS[6]);
if (onAttackDraw > 0) {
sb.append(" NL ");
}
}
if (onAttackDraw > 0) {
- sb.append(DESCRIPTIONS[8]).append(onAttackDraw).append(onAttackDraw == 1 ? DESCRIPTIONS[9] : DESCRIPTIONS[10]);
+ sb.append(DESCRIPTIONS[7] + onAttackDraw + (onAttackDraw == 1 ? DESCRIPTIONS[8] : DESCRIPTIONS[9]));
}
description = sb.toString();
}
diff --git a/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java b/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
index 8537eea28..e1972d0e0 100644
--- a/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
+++ b/src/main/java/collector/powers/collectioncards/GremlinNobCardPower.java
@@ -7,6 +7,8 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import static champ.ChampMod.vigor;
+
public class GremlinNobCardPower extends AbstractCollectorPower {
public static final String NAME = "GremlinNobCard";
public static final String POWER_ID = makeID(NAME);
@@ -22,7 +24,7 @@ public GremlinNobCardPower(int amount) {
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
if (card.type == AbstractCard.CardType.SKILL) {
- this.addToTop(new ApplyPowerAction(this.owner, this.owner, new VigorPower(this.owner, this.amount), this.amount));
+ vigor(this.amount);
this.flash();
}
}
diff --git a/src/main/java/collector/relics/AutoCurser.java b/src/main/java/collector/relics/AutoCurser.java
index 806bc5315..7310aadfb 100644
--- a/src/main/java/collector/relics/AutoCurser.java
+++ b/src/main/java/collector/relics/AutoCurser.java
@@ -16,7 +16,9 @@ public class AutoCurser extends CustomRelic {
public static final String ID = CollectorMod.makeID(AutoCurser.class.getSimpleName());
private static final String IMG_PATH = AutoCurser.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = AutoCurser.class.getSimpleName() + ".png";
- //talisman
+
+ //hexx talisman
+
public AutoCurser() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.COMMON, LandingSound.MAGICAL);
}
diff --git a/src/main/java/collector/relics/BagOfTricks.java b/src/main/java/collector/relics/BagOfTricks.java
index 32cb31ed3..ee4905c97 100644
--- a/src/main/java/collector/relics/BagOfTricks.java
+++ b/src/main/java/collector/relics/BagOfTricks.java
@@ -1,12 +1,16 @@
package collector.relics;
import basemod.abstracts.CustomRelic;
+import collector.CollectorCollection;
import collector.CollectorMod;
import collector.actions.DrawCardFromCollectionAction;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import downfall.util.TextureLoader;
import static collector.util.Wiz.atb;
+import static collector.util.Wiz.att;
public class BagOfTricks extends CustomRelic {
public static final String ID = CollectorMod.makeID(BagOfTricks.class.getSimpleName());
diff --git a/src/main/java/collector/relics/BottledCollectible.java b/src/main/java/collector/relics/BottledCollectible.java
index 292b1d49f..05f14a9a3 100644
--- a/src/main/java/collector/relics/BottledCollectible.java
+++ b/src/main/java/collector/relics/BottledCollectible.java
@@ -1,5 +1,6 @@
package collector.relics;
+import automaton.AutomatonMod;
import basemod.abstracts.CustomBottleRelic;
import basemod.abstracts.CustomRelic;
import basemod.abstracts.CustomSavable;
@@ -7,12 +8,15 @@
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;
import com.megacrit.cardcrawl.helpers.FontHelper;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import downfall.util.TextureLoader;
import java.util.function.Predicate;
@@ -24,15 +28,27 @@ public class BottledCollectible extends CustomRelic implements CustomBottleRelic
private static final String IMG_PATH = BottledCollectible.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = BottledCollectible.class.getSimpleName() + ".png";
- private static AbstractCard card;
+ public AbstractCard card;
private boolean cardSelected = true;
+ private boolean cardRemoved = false;
+
private int idxToLoad = -1;
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;
@@ -110,15 +126,40 @@ public void update() {
}
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
public void setDescriptionAfterLoading() {
- this.description = DESCRIPTIONS[1] + FontHelper.colorString(card.name, "y") + DESCRIPTIONS[2];
- this.tips.clear();
- this.tips.add(new PowerTip(this.name, this.description));
- this.initializeTips();
+ //todo: better card removal detection code!!!!
+ if (cardSelected) {
+ boolean cardExists = false;
+
+ CardGroup tmp = CollectorCollection.collection;
+ for (AbstractCard c : tmp.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+
+
+ if (!cardExists) {
+ tips.clear();
+ this.description = this.DESCRIPTIONS[4];
+ initializeTips();
+ this.grayscale = true;
+ } else {
+ this.description = DESCRIPTIONS[1] + FontHelper.colorString(card.name, "y") + DESCRIPTIONS[2];
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ this.initializeTips();
+ }
+
+ }
}
@Override
diff --git a/src/main/java/collector/relics/ForbiddenFruit.java b/src/main/java/collector/relics/ForbiddenFruit.java
index 26d5a25a8..a7a64a5e3 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";
@@ -24,7 +30,8 @@ public class ForbiddenFruit extends CustomRelic {
private boolean selected = true;
public ForbiddenFruit() {
- super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.BOSS, LandingSound.MAGICAL);
+ super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.DEPRECATED, LandingSound.MAGICAL);
+ tips.add(new CardPowerTip( new Sapped() ) );
}
public void onEquip() {
@@ -58,7 +65,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (stage == 2) {
- AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Necronomicurse(), (float) Settings.WIDTH / 2.0F, (float)Settings.HEIGHT / 2.0F));
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Sapped(), (float) Settings.WIDTH / 2.0F, (float)Settings.HEIGHT / 2.0F));
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
}
else if (stage == 0) {
@@ -88,6 +95,14 @@ else if (stage == 1) {
}
}
+ public boolean canSpawn() {
+ if (AbstractDungeon.player instanceof TheSnecko) {
+ return false;
+ }
+
+ return ((AbstractDungeon.floorNum > 1)); // you cannot boss swap into forbidden fruit
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/collector/relics/FuelCanister.java b/src/main/java/collector/relics/FuelCanister.java
index 1cba35b40..c593c9f16 100644
--- a/src/main/java/collector/relics/FuelCanister.java
+++ b/src/main/java/collector/relics/FuelCanister.java
@@ -5,7 +5,10 @@
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.relics.RunicPyramid;
import downfall.util.TextureLoader;
+import expansioncontent.cardmods.RetainCardMod;
+import hermit.relics.Memento;
import hermit.util.Wiz;
import java.util.ArrayList;
@@ -21,23 +24,30 @@ public FuelCanister() {
@Override
public void onPlayerEndTurn() {
- int max = -3;
+ int max = 999;
+ //retains minimum now
ArrayList toRetain = new ArrayList<>();
for (AbstractCard q : AbstractDungeon.player.hand.group) {
- if (q.costForTurn > max) {
+ //can retain unplayable cards but not x cost cards, cannot retain ethereal cards or cards that already retain themselves
+ if ((q.costForTurn < max) && !(q.costForTurn <= -1) && !(q.isEthereal) && !(q.selfRetain)) {
+ //if ((q.costForTurn < max) && !(q.costForTurn < -1) && !(q.selfRetain)) {
toRetain.clear();
toRetain.add(q);
max = q.costForTurn;
- } else if (q.costForTurn == max) {
+ } else if ((q.costForTurn == max) && !(q.costForTurn < -1) && !(q.isEthereal) && !(q.selfRetain)) {
toRetain.add(q);
}
}
- toRetain.removeIf(c -> c.isEthereal);
+ //toRetain.removeIf(c -> c.isEthereal);
if (!toRetain.isEmpty()) {
Wiz.getRandomItem(toRetain).retain = true;
}
}
+ public boolean canSpawn() {
+ return !AbstractDungeon.player.hasRelic(RunicPyramid.ID);
+ }
+
@Override
public String getUpdatedDescription() {
return DESCRIPTIONS[0];
diff --git a/src/main/java/collector/relics/HolidayCoal.java b/src/main/java/collector/relics/HolidayCoal.java
index 03b2dfbe5..108b7c880 100644
--- a/src/main/java/collector/relics/HolidayCoal.java
+++ b/src/main/java/collector/relics/HolidayCoal.java
@@ -12,7 +12,7 @@ public class HolidayCoal extends CustomRelic {
private static final String OUTLINE_IMG_PATH = HolidayCoal.class.getSimpleName() + ".png";
public HolidayCoal() {
- super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.COMMON, LandingSound.MAGICAL);
+ super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.SHOP, LandingSound.MAGICAL);
tips.add(new CardPowerTip(new LuckyWick()));
}
diff --git a/src/main/java/collector/relics/JadeRing.java b/src/main/java/collector/relics/JadeRing.java
index d0a914919..ef9e2ddd0 100644
--- a/src/main/java/collector/relics/JadeRing.java
+++ b/src/main/java/collector/relics/JadeRing.java
@@ -13,24 +13,23 @@ public class JadeRing extends CustomRelic {
private static final String IMG_PATH = JadeRing.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = JadeRing.class.getSimpleName() + ".png";
- private static final int EXTRA_SOULS = 5;
+ private static final int EXTRA_SOULS = 6;
public JadeRing() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.UNCOMMON, LandingSound.MAGICAL);
}
- @Override
- public void onMonsterDeath(AbstractMonster m) {
- if (m.hasPower(DoomPower.POWER_ID) && !m.hasPower(MinionPower.POWER_ID) && !m.halfDead) {
- flash();
- AbstractDungeon.player.gainGold(EXTRA_SOULS);
- }
- }
-
- @Override
- public boolean canSpawn() {
- return !(AbstractDungeon.getCurrRoom() instanceof com.megacrit.cardcrawl.rooms.ShopRoom);
- }
+ //logic moved to DoomPower.java
+ //but basically the way it works is that DoomPower has +6 added to it when dealing damage and
+ //rendering health bars, and returning the amount of damage in the description
+
+ // @Override
+ // public void onMonsterDeath(AbstractMonster m) {
+ // if (m.hasPower(DoomPower.POWER_ID) && !m.hasPower(MinionPower.POWER_ID) && !m.halfDead) {
+ // flash();
+ // AbstractDungeon.player.gainGold(EXTRA_SOULS);
+ // }
+// }
@Override
public String getUpdatedDescription() {
diff --git a/src/main/java/collector/relics/PrismaticTorch.java b/src/main/java/collector/relics/PrismaticTorch.java
index 2dce28b10..5fa57bf32 100644
--- a/src/main/java/collector/relics/PrismaticTorch.java
+++ b/src/main/java/collector/relics/PrismaticTorch.java
@@ -86,4 +86,4 @@ public String getUpdatedDescription() {
return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/collector/relics/RoughDiamond.java b/src/main/java/collector/relics/RoughDiamond.java
index c06a9ac50..6123107f2 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.DEPRECATED, 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/relics/TheContract.java b/src/main/java/collector/relics/TheContract.java
index 5b33088e9..aaef855c3 100644
--- a/src/main/java/collector/relics/TheContract.java
+++ b/src/main/java/collector/relics/TheContract.java
@@ -17,18 +17,21 @@ public class TheContract extends CustomRelic {
private static final String IMG_PATH = TheContract.class.getSimpleName() + ".png";
private static final String OUTLINE_IMG_PATH = TheContract.class.getSimpleName() + ".png";
+ //Essence granted
+ private static final int ESSENCE = 10;
+
public TheContract() {
super(ID, TextureLoader.getTexture(CollectorMod.makeRelicPath(IMG_PATH)), TextureLoader.getTexture(CollectorMod.makeRelicOutlinePath(OUTLINE_IMG_PATH)), RelicTier.SHOP, LandingSound.MAGICAL);
}
@Override
public void onEquip() {
- EssenceSystem.changeEssence(10);
+ EssenceSystem.changeEssence(ESSENCE);
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + ESSENCE + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/collector/util/Wiz.java b/src/main/java/collector/util/Wiz.java
index c0ecba74c..39deeb58f 100644
--- a/src/main/java/collector/util/Wiz.java
+++ b/src/main/java/collector/util/Wiz.java
@@ -5,10 +5,14 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DiscardAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -22,6 +26,8 @@
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -101,12 +107,40 @@ public static boolean isInCombat() {
return CardCrawlGame.isInARun() && AbstractDungeon.currMapNode != null && AbstractDungeon.getCurrRoom() != null && AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT;
}
- public static void atb(AbstractGameAction action) {
- AbstractDungeon.actionManager.addToBottom(action);
+ public static void atb(AbstractGameAction... actions) {
+ for (AbstractGameAction action : actions)
+ AbstractDungeon.actionManager.addToBottom(action);
}
- public static void att(AbstractGameAction action) {
- AbstractDungeon.actionManager.addToTop(action);
+ public static void att(AbstractGameAction... actions) {
+ for (int i = actions.length - 1; i >= 0; i--)
+ AbstractDungeon.actionManager.addToTop(actions[i]);
+ }
+
+ public static AbstractGameAction actionify(Runnable todo) {
+ return new AbstractGameAction() {
+ public void update() {
+ isDone = true;
+ todo.run();
+ }
+ };
+ }
+
+ public static void actB(Runnable todo) {
+ atb(actionify(todo));
+ }
+
+ public static void actT(Runnable todo) {
+ att(actionify(todo));
+ }
+
+ public static AbstractGameAction multiAction(AbstractGameAction... actions) {
+ return actionify(() -> {
+ ArrayList actionsList = (ArrayList)Arrays.asList(actions);
+ Collections.reverse(actionsList);
+ for (AbstractGameAction action : actions)
+ att(action);
+ });
}
public static void vfx(AbstractGameEffect gameEffect) {
@@ -117,6 +151,14 @@ public static void vfx(AbstractGameEffect gameEffect, float duration) {
atb(new VFXAction(gameEffect, duration));
}
+ public static void vfxTop(AbstractGameEffect gameEffect) {
+ att(new VFXAction(gameEffect));
+ }
+
+ public static void vfxTop(AbstractGameEffect gameEffect, float duration) {
+ att(new VFXAction(gameEffect, duration));
+ }
+
public static void makeInHand(AbstractCard c, int i) {
atb(new MakeTempCardInHandAction(c, i));
}
diff --git a/src/main/java/downfall/actions/MessageCaller.java b/src/main/java/downfall/actions/MessageCaller.java
index 4728b0c83..75e8707b1 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,24 @@ 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;
+ case 11:
+ AbstractDungeon.ftue = new AwakenedOneTutorials();
+ break;
}
downfallMod.unseenTutorials[code] = false;
diff --git a/src/main/java/downfall/cards/BloodySacrifice.java b/src/main/java/downfall/cards/BloodySacrifice.java
index 60f1b772c..db5e59aee 100644
--- a/src/main/java/downfall/cards/BloodySacrifice.java
+++ b/src/main/java/downfall/cards/BloodySacrifice.java
@@ -27,20 +27,23 @@ public class BloodySacrifice extends AbstractDownfallCard {
public BloodySacrifice() {
super(ID, cardStrings.NAME, IMG_PATH, 0, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.SPECIAL, CardTarget.SELF);
isEthereal = true;
- baseMagicNumber = magicNumber = 12;
+ baseMagicNumber = magicNumber = 8;
exhaust = true;
}
@Override
public void applyPowers() {
super.applyPowers();
- lose_hp = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * (float)magicNumber * 0.01f);
+ lose_hp = MathUtils.floor((float) AbstractDungeon.player.maxHealth * (float)magicNumber * 0.01f);
rawDescription = (cardStrings.DESCRIPTION + cardStrings.EXTENDED_DESCRIPTION[0].replace("{amount}",Integer.toString(lose_hp)) );
this.initializeDescription();
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new LoseHPAction(p, p, lose_hp));
+ AbstractDungeon.player.maxHealth -= this.lose_hp;
+ if (AbstractDungeon.player.currentHealth > AbstractDungeon.player.maxHealth) {
+ AbstractDungeon.player.currentHealth = AbstractDungeon.player.maxHealth;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new RitualPower(p, 1, true), 1));
}
@@ -48,7 +51,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!upgraded) {
upgradeName();
- upgradeMagicNumber(-5);
+ upgradeMagicNumber(-3);
}
}
diff --git a/src/main/java/downfall/cards/MajorBeam.java b/src/main/java/downfall/cards/MajorBeam.java
new file mode 100644
index 000000000..3be5c63a6
--- /dev/null
+++ b/src/main/java/downfall/cards/MajorBeam.java
@@ -0,0 +1,67 @@
+package downfall.cards;
+
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.RitualPower;
+import expansioncontent.cards.AbstractDownfallCard;
+import expansioncontent.cards.AbstractExpansionCard;
+import expansioncontent.expansionContentMod;
+import guardian.vfx.SmallLaserEffectColored;
+
+import java.util.Arrays;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class MajorBeam extends AbstractExpansionCard {
+
+ private static final int DAMAGE = 5;
+ public static final String ID = makeID("MajorBeam");
+ public static final String IMG_PATH = expansionContentMod.makeCardPath("MajorBeam.png");
+ private static final CardStrings cardStrings;
+
+ public MajorBeam() {
+ super(ID, 0, CardType.ATTACK, CardRarity.SPECIAL, CardTarget.ENEMY, CardColor.COLORLESS);
+ baseDamage = DAMAGE;
+ loadJokeCardImage(this,"MajorBeam.png");
+ baseMagicNumber = magicNumber = 1;
+ //exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SmallLaserEffectColored(m.hb.cX, m.hb.cY, p.hb.cX, p.hb.cY, Color.WHITE), 0.2F));
+ }
+ this.addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new DrawCardAction(p, magicNumber));
+ }
+
+ @Override
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(2);
+ upgradeMagicNumber(1);
+ rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ }
+}
diff --git a/src/main/java/downfall/cards/curses/Bewildered.java b/src/main/java/downfall/cards/curses/Bewildered.java
index c85a1fbf2..682c50d66 100644
--- a/src/main/java/downfall/cards/curses/Bewildered.java
+++ b/src/main/java/downfall/cards/curses/Bewildered.java
@@ -59,17 +59,6 @@ public void triggerWhenDrawn() {
this.flash();
}
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- return false;
- }
-
- // public void triggerOnOtherCardPlayed(AbstractCard c) {
-// AbstractDungeon.actionManager.addToBottom(new MuddleHandAction());
-// this.flash();
-// AbstractDungeon.actionManager.addToBottom(new DiscardSpecificCardAction(this));
-// }
-
public AbstractCard makeCopy() {
return new Bewildered();
}
diff --git a/src/main/java/downfall/cards/curses/CurseOfBlood.java b/src/main/java/downfall/cards/curses/CurseOfBlood.java
new file mode 100644
index 000000000..f6dae7bed
--- /dev/null
+++ b/src/main/java/downfall/cards/curses/CurseOfBlood.java
@@ -0,0 +1,67 @@
+package downfall.cards.curses;
+
+
+import basemod.abstracts.CustomCard;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.LoseHPAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+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 downfall.downfallMod;
+import expansioncontent.powers.DeEnergizedPower;
+import guardian.GuardianMod;
+import hermit.powers.Drained;
+
+
+public class CurseOfBlood extends CustomCard {
+ public static final String ID = downfallMod.makeID("CurseOfBlood");
+ public static final String NAME;
+ public static final String DESCRIPTION;
+ public static final String IMG_PATH = downfallMod.assetPath("images/cards/CurseOfBlood.png");
+
+ private static final CardType TYPE = CardType.CURSE;
+ private static final CardRarity RARITY = CardRarity.CURSE;
+ private static final CardTarget TARGET = CardTarget.NONE;
+ private static final CardStrings cardStrings;
+ private static final int COST = 0;
+ public static String UPGRADED_DESCRIPTION;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ NAME = cardStrings.NAME;
+ DESCRIPTION = cardStrings.DESCRIPTION;
+ UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+ }
+
+ public CurseOfBlood() {
+ super(ID, NAME, IMG_PATH, COST, DESCRIPTION, TYPE, CardColor.CURSE, RARITY, TARGET);
+
+ this.exhaust = true;
+
+ tags.add(downfallMod.DOWNFALL_CURSE);
+
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, p, new Drained(p,p, 1), 1));
+ }
+
+ public AbstractCard makeCopy() {
+ return new CurseOfBlood();
+ }
+
+ public void upgrade() {
+ }
+
+}
+
+
diff --git a/src/main/java/downfall/cards/curses/Haunted.java b/src/main/java/downfall/cards/curses/Haunted.java
index b8d07942d..388cb2276 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;
@@ -39,7 +43,7 @@ public class Haunted extends CustomCard {
public Haunted() {
super(ID, NAME, IMG_PATH, COST, DESCRIPTION, TYPE, CardColor.CURSE, RARITY, TARGET);
- this.magicNumber = this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber = 2;
this.isEthereal = true;
tags.add(downfallMod.DOWNFALL_CURSE);
@@ -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, this.magicNumber, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.FIRE));
+ }
+ }
+
+
public AbstractCard makeCopy() {
return new Haunted();
}
diff --git a/src/main/java/downfall/cards/curses/Sapped.java b/src/main/java/downfall/cards/curses/Sapped.java
index b95088656..85ff56166 100644
--- a/src/main/java/downfall/cards/curses/Sapped.java
+++ b/src/main/java/downfall/cards/curses/Sapped.java
@@ -2,8 +2,12 @@
import collector.cards.AbstractCollectorCard;
import com.evacipated.cardcrawl.mod.stslib.fields.cards.AbstractCard.SoulboundField;
+import com.megacrit.cardcrawl.actions.unique.LoseEnergyAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import downfall.downfallMod;
import expansioncontent.expansionContentMod;
import static collector.CollectorMod.makeID;
@@ -11,9 +15,8 @@
public class Sapped extends AbstractCollectorCard {
public final static String ID = makeID(Sapped.class.getSimpleName());
// intellij stuff skill, none, special, , , , , 1, 1
-
public Sapped() {
- super(ID, 1, CardType.CURSE, CardRarity.CURSE, CardTarget.NONE, CardColor.CURSE);
+ super(ID, 0, CardType.CURSE, CardRarity.SPECIAL, CardTarget.NONE, CardColor.CURSE);
baseMagicNumber = magicNumber = 1;
isPyre();
exhaust = true;
@@ -23,7 +26,16 @@ public Sapped() {
public void use(AbstractPlayer p, AbstractMonster m) {
}
+ public void triggerWhenDrawn() {
+ this.addToBot(new LoseEnergyAction(1));
+ }
+
+ @Override
+ public boolean canUpgrade() {
+ return false;
+ }
+
public void upp() {
- upgradeMagicNumber(1);
}
+
}
diff --git a/src/main/java/downfall/cards/curses/Scatterbrained.java b/src/main/java/downfall/cards/curses/Scatterbrained.java
index e8e448960..d6c12268d 100644
--- a/src/main/java/downfall/cards/curses/Scatterbrained.java
+++ b/src/main/java/downfall/cards/curses/Scatterbrained.java
@@ -24,10 +24,10 @@ public class Scatterbrained extends CustomCard {
public static final String IMG_PATH = downfallMod.assetPath("images/cards/scatterbrained.png");
private static final CardType TYPE = CardType.CURSE;
- private static final CardRarity RARITY = CardRarity.CURSE;
+ private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.NONE;
private static final CardStrings cardStrings;
- private static final int COST = 2;
+ private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
private boolean auto_used_end_turn = false;
diff --git a/src/main/java/downfall/downfallMod.java b/src/main/java/downfall/downfallMod.java
index e3225fe52..a455d3445 100644
--- a/src/main/java/downfall/downfallMod.java
+++ b/src/main/java/downfall/downfallMod.java
@@ -16,6 +16,8 @@
import automaton.potions.BurnAndBuffPotion;
import automaton.relics.*;
import automaton.util.*;
+import awakenedOne.AwakenedOneChar;
+import awakenedOne.AwakenedOneMod;
import basemod.BaseMod;
import basemod.ModLabeledToggleButton;
import basemod.ModPanel;
@@ -39,11 +41,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 +144,7 @@
import sneckomod.cards.unknowns.*;
import sneckomod.potions.MuddlingPotion;
import sneckomod.util.ColorfulCardReward;
+
import sneckomod.util.UpgradedUnknownReward;
import theHexaghost.HexaMod;
import theHexaghost.TheHexaghost;
@@ -153,6 +159,7 @@
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 {
@@ -190,6 +197,7 @@ public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubs
public static boolean normalMapLayout = false;
public static boolean sneckoNoModCharacters = false;
public static boolean useIconsForAppliedProperties = false;
+ public static boolean DeterministicConjure = true;
public static ArrayList shareableRelics = new ArrayList<>();
public static final String PROP_RELIC_SHARING = "contentSharing_relics";
@@ -204,17 +212,27 @@ public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubs
public static final String PROP_SNECKO_MODLESS = "sneckoNoModCharacters";
public static final String PROP_NO_MUSIC = "disableMusicOverride";
public static final String PROP_ICONS_FOR_APPLIED_PROPERTIES = "useIconsForAppliedProperties";
+ public static final String NO_RNG_CONJURE = "RNGlessConjure";
public static String Act1BossFaced = "";
public static String Act2BossFaced = "";
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
+ public static boolean[] unseenTutorials = new boolean[]{
+ true, // Hermit
+ 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, // Awakened 11
+ true, // act 3 boss 2 12
+ true // act 3 boss 3 13
};
public static Properties tutorialSaves = new Properties();
@@ -232,13 +250,15 @@ public class downfallMod implements OnPlayerDamagedSubscriber, OnStartBattleSubs
public static Settings.GameLanguage[] SupportedLanguages = {
// Insert other languages here
// DONT FORGET TO TOGGLE AT reskinContent.getLanguageString() TOO
- Settings.GameLanguage.ENG, Settings.GameLanguage.ZHS,
- Settings.GameLanguage.JPN,
+ Settings.GameLanguage.ENG,
+ Settings.GameLanguage.ZHS,
+ Settings.GameLanguage.JPN,
Settings.GameLanguage.KOR,
- Settings.GameLanguage.FRA,
-// Settings.GameLanguage.ZHT,
- Settings.GameLanguage.RUS,
-// Settings.GameLanguage.PTB
+ Settings.GameLanguage.SPA,
+ // Settings.GameLanguage.FRA,
+ // Settings.GameLanguage.ZHT,
+ // Settings.GameLanguage.RUS,
+ // Settings.GameLanguage.PTB
};
public static ReplaceData[] wordReplacements;
@@ -265,6 +285,7 @@ public downfallMod() {
configDefault.setProperty(PROP_UNLOCK_ALL, "FALSE");
configDefault.setProperty(PROP_NO_MUSIC, "FALSE");
configDefault.setProperty(PROP_ICONS_FOR_APPLIED_PROPERTIES, "FALSE");
+ configDefault.setProperty(NO_RNG_CONJURE, "TRUE");
loadConfigData();
@@ -326,6 +347,8 @@ public static String assetPath(String path, otherPackagePaths otherPath) {
return "hermitResources/" + path;
case PACKAGE_COLLECTOR:
return "collectorResources/" + path;
+ case PACKAGE_AWAKENED:
+ return "awakenedResources/" + path;
}
return "downfallResources/" + path;
}
@@ -345,11 +368,11 @@ public static void saveData() {
config.setBool(PROP_CHAR_CROSSOVER, crossoverCharacters);
config.setBool(PROP_MOD_CHAR_CROSSOVER, crossoverModCharacters);
config.setBool(PROP_NORMAL_MAP, normalMapLayout);
-
config.setBool(PROP_UNLOCK_ALL, unlockEverything);
config.setBool(PROP_SNECKO_MODLESS, sneckoNoModCharacters);
config.setBool(PROP_NO_MUSIC, noMusic);
config.setBool(PROP_ICONS_FOR_APPLIED_PROPERTIES, useIconsForAppliedProperties);
+ config.setBool(NO_RNG_CONJURE, DeterministicConjure);
config.save();
GoldenIdol_Evil.save();
} catch (IOException e) {
@@ -421,6 +444,9 @@ private void loadLocalization(Settings.GameLanguage language, Class> stringTyp
BaseMod.loadCustomStringsFile(stringType, makeLocalizationPath(language, stringType.getSimpleName(), otherPackagePaths.PACKAGE_HERMIT));
BaseMod.loadCustomStringsFile(stringType, makeLocalizationPath(language, stringType.getSimpleName(), otherPackagePaths.PACKAGE_COLLECTOR));
+
+ BaseMod.loadCustomStringsFile(stringType, makeLocalizationPath(language, stringType.getSimpleName(), otherPackagePaths.PACKAGE_AWAKENED));
+
} else {
//SlimeboundMod.logger.info("loading loc:" + language + " PACKAGE_HERMIT" + stringType);
@@ -452,6 +478,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());
@@ -460,6 +487,7 @@ public void receiveEditCards() {
BaseMod.addCard(new Pride());
BaseMod.addCard(new Scatterbrained());
BaseMod.addCard(new Sapped());
+ BaseMod.addCard(new CurseOfBlood());
/*
BaseMod.addCard(new Slug());
BaseMod.addCard(new Defend_Crowbot());
@@ -526,6 +554,7 @@ public void receiveEditKeywords() {
loadModKeywords(GremlinMod.getModID(), otherPackagePaths.PACKAGE_GREMLIN);
loadModKeywords(HermitMod.getModID(), otherPackagePaths.PACKAGE_HERMIT);
loadModKeywords(CollectorMod.getModID(), otherPackagePaths.PACKAGE_COLLECTOR);
+ loadModKeywords(AwakenedOneMod.getModID(), otherPackagePaths.PACKAGE_AWAKENED);
loadModKeywords(modID, otherPackagePaths.PACKAGE_DOWNFALL);
}
@@ -546,13 +575,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();
@@ -644,6 +674,15 @@ private void initializeConfig() {
saveData();
});
+ configPos -= configStep;
+ ModLabeledToggleButton NoRNGConjureButton = new ModLabeledToggleButton(configStrings.TEXT[14], 350.0f, configPos, Settings.CREAM_COLOR, FontHelper.charDescFont, DeterministicConjure, settingsPanel, (label) -> {
+ }, (button) -> {
+ DeterministicConjure = button.enabled;
+ CardCrawlGame.mainMenuScreen.charSelectScreen.options.clear();
+ CardCrawlGame.mainMenuScreen.charSelectScreen.initialize();
+ saveData();
+ });
+
// configPos -= configStep;
// ModLabeledToggleButton useIconsForAppliedCardPropertiesBtn = new ModLabeledToggleButton(configStrings.TEXT[13], 350.0f, configPos, Settings.CREAM_COLOR, FontHelper.charDescFont, useIconsForAppliedProperties, settingsPanel, (label) -> {
// }, (button) -> {
@@ -652,6 +691,7 @@ private void initializeConfig() {
// });
settingsPanel.addUIElement(characterCrossoverBtn);
+ settingsPanel.addUIElement(NoRNGConjureButton);
//settingsPanel.addUIElement(useIconsForAppliedCardPropertiesBtn);
if (!STEAM_MODE) {
@@ -769,6 +809,7 @@ public static void loadConfigData() {
crossoverCharacters = config.getBool(PROP_CHAR_CROSSOVER);
crossoverModCharacters = config.getBool(PROP_MOD_CHAR_CROSSOVER);
useIconsForAppliedProperties = config.getBool(PROP_ICONS_FOR_APPLIED_PROPERTIES);
+ DeterministicConjure = config.getBool(NO_RNG_CONJURE);
} catch (Exception e) {
e.printStackTrace();
clearData();
@@ -923,7 +964,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//
@@ -931,7 +972,7 @@ private void initializeEvents() {
BaseMod.addEvent(new AddEventParams.Builder(WingStatue_Evil.ID, WingStatue_Evil.class) //Event ID//
//Event Spawn Condition//
- .spawnCondition(() -> evilMode)
+ .spawnCondition(() -> evilMode && !(AbstractDungeon.player instanceof AwakenedOneChar))
//Event ID to Override//
.overrideEvent(GoldenWing.ID)
//Event Type//
@@ -959,6 +1000,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//
@@ -1020,7 +1062,7 @@ private void initializeEvents() {
BaseMod.addEvent(new AddEventParams.Builder(TheNest_Evil.ID, TheNest_Evil.class) //Event ID//
//Event Spawn Condition//
- .spawnCondition(() -> evilMode)
+ .spawnCondition(() -> evilMode && !(AbstractDungeon.player instanceof AwakenedOneChar))
//Event ID to Override//
.overrideEvent(Nest.ID)
//Event Type//
@@ -1112,7 +1154,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 +1162,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 +1170,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 +1178,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 +1192,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 +1277,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 +1296,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 +1320,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 +1338,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;
@@ -1403,7 +1453,7 @@ public void receiveStartAct() {
public static boolean isDownfallCharacter(AbstractPlayer p) {
- if (p instanceof SlimeboundCharacter || p instanceof TheHexaghost || p instanceof GuardianCharacter || p instanceof TheSnecko || p instanceof ChampChar || p instanceof AutomatonChar || p instanceof GremlinCharacter || p instanceof hermit.characters.hermit || p instanceof CollectorChar) {
+ if (p instanceof SlimeboundCharacter || p instanceof TheHexaghost || p instanceof GuardianCharacter || p instanceof TheSnecko || p instanceof ChampChar || p instanceof AutomatonChar || p instanceof GremlinCharacter || p instanceof hermit.characters.hermit || p instanceof CollectorChar || p instanceof AwakenedOneChar) {
return true;
}
return false;
@@ -1442,7 +1492,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 +1569,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)) {
@@ -1621,7 +1665,7 @@ public void receivePostDeath() {
public enum otherPackagePaths {
- PACKAGE_SLIME, PACKAGE_GUARDIAN, PACKAGE_HEXAGHOST, PACKAGE_SNECKO, PACKAGE_EXPANSION, PACKAGE_CHAMP, PACKAGE_AUTOMATON, PACKAGE_GREMLIN, PACKAGE_HERMIT, PACKAGE_COLLECTOR, PACKAGE_DOWNFALL;
+ PACKAGE_SLIME, PACKAGE_GUARDIAN, PACKAGE_HEXAGHOST, PACKAGE_SNECKO, PACKAGE_EXPANSION, PACKAGE_CHAMP, PACKAGE_AUTOMATON, PACKAGE_GREMLIN, PACKAGE_HERMIT, PACKAGE_COLLECTOR, PACKAGE_DOWNFALL, PACKAGE_AWAKENED;;
otherPackagePaths() {
}
@@ -1656,25 +1700,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 +1737,43 @@ 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));
+ }
+ }
+
+ //awakened tutorial 11
+ if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if (downfallMod.unseenTutorials[11]) {
+ AbstractDungeon.actionManager.addToTop(new MessageCaller(11));
+ }
+ }
}
diff --git a/src/main/java/downfall/events/Beggar_Evil.java b/src/main/java/downfall/events/Beggar_Evil.java
index bca017c88..4572944f4 100644
--- a/src/main/java/downfall/events/Beggar_Evil.java
+++ b/src/main/java/downfall/events/Beggar_Evil.java
@@ -51,12 +51,18 @@ public Beggar_Evil() {
super(NAME, DESCRIPTIONS[0], "images/events/beggar.jpg");
this.noCardsInRewards = true;
+
+
if (AbstractDungeon.ascensionLevel >= 15) {
this.gold = 50;
} else {
this.gold = 75;
}
+ if (Cleric_Evil.encountered) {
+ this.gold = this.gold*2;
+ }
+
this.imageEventText.setDialogOption(OPTIONS[4]);
this.screen = CurScreen.INTRO;
this.cardsToRemove = 1;
diff --git a/src/main/java/downfall/events/CouncilOfGhosts_Evil.java b/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
index 9531e0420..dbcad3e9c 100644
--- a/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
+++ b/src/main/java/downfall/events/CouncilOfGhosts_Evil.java
@@ -7,12 +7,14 @@
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.colorless.Apparition;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import gremlin.patches.GremlinEnum;
import java.util.ArrayList;
import java.util.Collections;
@@ -45,15 +47,21 @@ public class CouncilOfGhosts_Evil extends AbstractImageEvent {
private int screenNum = 0;
private int hpLoss = 0;
- private int goldCost = 150;
+ private int goldCost = 100;
public CouncilOfGhosts_Evil() {
super(NAME, DESCRIPTIONSALT[0], "images/events/ghost.jpg");
this.hpLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.5F);
+ if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+ this.hpLoss = this.hpLoss*5;
+ }
if (this.hpLoss >= AbstractDungeon.player.maxHealth) {
this.hpLoss = AbstractDungeon.player.maxHealth - 1;
}
+ if (AbstractDungeon.ascensionLevel >= 15){
+ goldCost = 150;
+ }
if (AbstractDungeon.player.gold >= goldCost) {
this.imageEventText.setDialogOption(OPTIONSALT[0] + this.goldCost + OPTIONSALT[1], new Apparition());
diff --git a/src/main/java/downfall/events/ForgottenAltar_Evil.java b/src/main/java/downfall/events/ForgottenAltar_Evil.java
index b4f4d6095..327afd61c 100644
--- a/src/main/java/downfall/events/ForgottenAltar_Evil.java
+++ b/src/main/java/downfall/events/ForgottenAltar_Evil.java
@@ -4,10 +4,14 @@
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.cards.colorless.Apparition;
+import com.megacrit.cardcrawl.cards.curses.Pain;
+import com.megacrit.cardcrawl.cards.curses.Shame;
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;
public class ForgottenAltar_Evil extends AbstractImageEvent {
public static final String ID = "downfall:ForgottenAltar";
@@ -41,15 +45,30 @@ public ForgottenAltar_Evil() {
this.hpLoss = MathUtils.round((float) AbstractDungeon.player.maxHealth * 0.2F);
}
+
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.goldCost = 100;
+ } else {
+ this.goldCost = 50;
+ }
+
+ if (this.goldCost > AbstractDungeon.player.gold) {
+ this.goldCost = AbstractDungeon.player.gold;
+ }
+
if (AbstractDungeon.player.gold >= goldCost) {
this.imageEventText.setDialogOption(OPTIONSALT[0] + this.goldCost + OPTIONSALT[1] + (this.hpLoss + 10) + OPTIONSALT[2]);
} else {
this.imageEventText.setDialogOption(OPTIONSALT[3] + this.goldCost + OPTIONSALT[4], true);
-
}
this.imageEventText.setDialogOption(OPTIONS[2] + 5 + OPTIONS[3] + this.hpLoss + OPTIONS[4]);
- this.imageEventText.setDialogOption(OPTIONSALT[5]);
+
+ if (15 > AbstractDungeon.ascensionLevel) {
+ this.imageEventText.setDialogOption(OPTIONSALT[5]);
+ } else {
+ this.imageEventText.setDialogOption(OPTIONSALT[6]);
+ }
}
protected void buttonEffect(int buttonPressed) {
@@ -79,8 +98,15 @@ protected void buttonEffect(int buttonPressed) {
return;
case 2:
this.imageEventText.clearAllDialogs();
- this.imageEventText.updateBodyText(DESCRIPTIONSALT[1]);
- this.imageEventText.setDialogOption(OPTIONSALT[5]);
+ if (15 > AbstractDungeon.ascensionLevel) {
+ this.imageEventText.updateBodyText(DESCRIPTIONSALT[1]);
+ this.imageEventText.setDialogOption(OPTIONSALT[5]);
+ } else {
+ Shame curse = new Shame();
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
+ this.imageEventText.updateBodyText(DESCRIPTIONSALT[2]);
+ this.imageEventText.setDialogOption(OPTIONSALT[5]);
+ }
this.screenNum = 1;
logMetricIgnored(ID);
return;
diff --git a/src/main/java/downfall/events/GoldenIdol_Evil.java b/src/main/java/downfall/events/GoldenIdol_Evil.java
index 10cf63d2d..4177b18b1 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 = 50;
+ }
+
if (!trapAlreadySet) {
for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
if (c.hasTag(AbstractCard.CardTags.STARTER_STRIKE)) {
diff --git a/src/main/java/downfall/events/MindBloom_Evil.java b/src/main/java/downfall/events/MindBloom_Evil.java
index 6d0212250..d6e66eaf1 100644
--- a/src/main/java/downfall/events/MindBloom_Evil.java
+++ b/src/main/java/downfall/events/MindBloom_Evil.java
@@ -2,6 +2,7 @@
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import basemod.ReflectionHacks;
import champ.ChampChar;
import collector.CollectorChar;
@@ -16,9 +17,11 @@
import com.megacrit.cardcrawl.events.AbstractImageEvent;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.helpers.MonsterHelper;
+import com.megacrit.cardcrawl.helpers.RelicLibrary;
import com.megacrit.cardcrawl.localization.EventStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
+import com.megacrit.cardcrawl.monsters.beyond.AwakenedOne;
import com.megacrit.cardcrawl.monsters.city.BronzeAutomaton;
import com.megacrit.cardcrawl.monsters.city.Champ;
import com.megacrit.cardcrawl.monsters.city.GremlinLeader;
@@ -33,19 +36,14 @@
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;
import sneckomod.TheSnecko;
import theHexaghost.TheHexaghost;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
import static com.megacrit.cardcrawl.dungeons.AbstractDungeon.lastCombatMetricKey;
import static com.megacrit.cardcrawl.helpers.MonsterHelper.getGremlin;
@@ -77,10 +75,19 @@ public MindBloom_Evil() {
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]);
}
} 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) {
@@ -141,6 +148,13 @@ protected void buttonEffect(int buttonPressed) {
m.currentHealth = m.maxHealth;
m.powers.add(new StrengthPower(m, -3));
AbstractDungeon.getCurrRoom().monsters = new MonsterGroup(m);
+ }
+ else if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ AbstractMonster m = new AwakenedOne(0,0);
+ m.maxHealth = Math.round(m.maxHealth * .4F);
+ m.currentHealth = m.maxHealth;
+ m.powers.add(new StrengthPower(m, -4));
+ AbstractDungeon.getCurrRoom().monsters = new MonsterGroup(m);
} else {
ArrayList list = new ArrayList();
list.add("Slime Boss");
@@ -173,13 +187,15 @@ protected void buttonEffect(int buttonPressed) {
this.screen = CurScreen.LEAVE;
int effectCount = 0;
List upgradedCards = new ArrayList();
+ Iterator var11 = AbstractDungeon.player.masterDeck.group.iterator();
- for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ while(var11.hasNext()) {
+ AbstractCard c = (AbstractCard)var11.next();
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;
+ 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));
}
@@ -190,9 +206,7 @@ protected void buttonEffect(int buttonPressed) {
}
}
- AbstractDungeon.player.loseRelic(HeartBlessingRed.ID);
- AbstractDungeon.player.loseRelic(HeartBlessingBlue.ID);
- AbstractDungeon.player.loseRelic(HeartBlessingGreen.ID);
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float)Settings.WIDTH / 2.0F, (float)Settings.HEIGHT / 2.0F, RelicLibrary.getRelic("Mark of the Bloom").makeCopy());
logMetricUpgradeCards(ID, "Upgrade", upgradedCards);
diff --git a/src/main/java/downfall/events/Nloth_Evil.java b/src/main/java/downfall/events/Nloth_Evil.java
index c86a4785a..251cfd39c 100644
--- a/src/main/java/downfall/events/Nloth_Evil.java
+++ b/src/main/java/downfall/events/Nloth_Evil.java
@@ -1,19 +1,30 @@
package downfall.events;
+import automaton.relics.BottledCode;
+import awakenedOne.relics.MoonTalisman;
+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 guardian.relics.StasisEgg;
+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 +59,40 @@ 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(WingBoots.ID)) ||
+ r.relicId.equals(MoonTalisman.ID) ||
+ //event
+ r.relicId.equals(StasisEgg.ID) ||
+ r.relicId.equals(BottledCode.ID) ||
+ r.relicId.equals(D8.ID))
+ {
+ relicIterator.remove(); // Remove the blacklisted relic
+ }
+ }
+
Collections.shuffle(relics, new Random(AbstractDungeon.miscRng.randomLong()));
this.choice1 = relics.get(0);
this.choice2 = relics.get(1);
diff --git a/src/main/java/downfall/events/ShiningLight_Evil.java b/src/main/java/downfall/events/ShiningLight_Evil.java
index 2f3ae9c3f..2c3c433a4 100644
--- a/src/main/java/downfall/events/ShiningLight_Evil.java
+++ b/src/main/java/downfall/events/ShiningLight_Evil.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.curses.Pain;
import com.megacrit.cardcrawl.cards.curses.Regret;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -11,6 +12,7 @@
import com.megacrit.cardcrawl.vfx.UpgradeShineEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
+import downfall.cards.curses.Icky;
import downfall.cards.curses.Malfunctioning;
import java.util.*;
@@ -24,6 +26,7 @@ public class ShiningLight_Evil extends AbstractImageEvent {
private static final String INTRO;
private static final String AGREE_DIALOG;
private static final String DISAGREE_DIALOG;
+ private int curseObtainChance = 3;
private static final float HP_LOSS_PERCENT = 0.2F;
private static final float A_2_HP_LOSS_PERCENT = 0.3F;
@@ -45,7 +48,10 @@ public ShiningLight_Evil() {
this.screen = CUR_SCREEN.INTRO;
if (AbstractDungeon.player.masterDeck.hasUpgradableCards()) {
- this.imageEventText.setDialogOption(OPTIONS[0], new Malfunctioning());
+ if (AbstractDungeon.ascensionLevel >= 15) {
+ this.curseObtainChance = 2;
+ }
+ this.imageEventText.setDialogOption(OPTIONS[0] + this.curseObtainChance + OPTIONS[3], new Malfunctioning());
} else {
this.imageEventText.setDialogOption(OPTIONS[2], true);
}
@@ -116,17 +122,23 @@ private void upgradeCards() {
} else {
upgradableCards.get(0).upgrade();
upgradableCards.get(1).upgrade();
- upgradableCards.get(2).upgrade();
+ if (AbstractDungeon.ascensionLevel < 15) {
+ upgradableCards.get(2).upgrade();
+ }
cardMetrics.add(upgradableCards.get(0).cardID);
cardMetrics.add(upgradableCards.get(1).cardID);
- cardMetrics.add(upgradableCards.get(2).cardID);
- AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(0));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ cardMetrics.add(upgradableCards.get(2).cardID);
+ }
+ AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(0));
AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(1));
- AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(2));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ AbstractDungeon.player.bottledCardUpgradeCheck(upgradableCards.get(2));
+ }
AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(0).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F - 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(1).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(2).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F + 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
-
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(1).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F + 300.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
+ if (AbstractDungeon.ascensionLevel < 15) {
+ AbstractDungeon.effectList.add(new ShowCardBrieflyEffect(upgradableCards.get(2).makeStatEquivalentCopy(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));}
}
}
diff --git a/src/main/java/downfall/events/WeMeetAgain_Evil.java b/src/main/java/downfall/events/WeMeetAgain_Evil.java
index 8a689a348..a07e7489e 100644
--- a/src/main/java/downfall/events/WeMeetAgain_Evil.java
+++ b/src/main/java/downfall/events/WeMeetAgain_Evil.java
@@ -1,6 +1,11 @@
package downfall.events;
+import automaton.relics.BottledCode;
+import awakenedOne.relics.MoonTalisman;
+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 +13,19 @@
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.events.StasisEgg;
+import guardian.relics.BottledAnomaly;
+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;
@@ -54,11 +67,49 @@ 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 != Matryoshka.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) &&
+ (r.relicId != MoonTalisman.ID) &&
+
+ (r.relicId != BottledAnomaly.ID) &&
+ (r.relicId != BottledCode.ID) &&
+ (r.relicId != StasisEgg.ID) &&
+ (r.relicId != D8.ID) &&
+
+
+ //Boss
+ (r.relicId != Astrolabe.ID) &&
+ (r.relicId != ForbiddenFruit.ID) &&
+ (r.relicId != Libra.ID) &&
+ (r.relicId != SneckoBoss.ID) &&
+ (r.relicId != PandorasBox.ID)) {
+
+ if (r.tier == AbstractRelic.RelicTier.COMMON) {
+ playerCommonRelics.add(r);
+ }
+ if (r.tier == AbstractRelic.RelicTier.UNCOMMON) {
+ playerUncommonRelics.add(r);
+ }
}
}
diff --git a/src/main/java/downfall/events/WingStatue_Evil.java b/src/main/java/downfall/events/WingStatue_Evil.java
index 5838fb79c..d8d76764b 100644
--- a/src/main/java/downfall/events/WingStatue_Evil.java
+++ b/src/main/java/downfall/events/WingStatue_Evil.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
import downfall.relics.BrokenWingStatue;
import downfall.relics.ShatteredFragment;
+import gremlin.patches.GremlinEnum;
public class WingStatue_Evil extends AbstractImageEvent {
public static final String ID = "downfall:WingStatue";
@@ -28,13 +29,43 @@ public class WingStatue_Evil extends AbstractImageEvent {
}
private CurScreen screen;
- private int damage = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.15F);
+ private int goldLoss;
public WingStatue_Evil() {
super(NAME, DESCRIPTIONS[0], "images/events/goldenWing.jpg");
this.screen = CurScreen.INTRO;
- this.imageEventText.setDialogOption(OPTIONS[0] + this.damage + OPTIONS[1], new ShatteredFragment());
+
+
+ this.goldLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.25F);
+ if (AbstractDungeon.ascensionLevel >= 15){
+ this.goldLoss = MathUtils.ceil((float) AbstractDungeon.player.maxHealth * 0.35F);
+ }
+
+ if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+ this.goldLoss = this.goldLoss*5;
+ }
+
+// if (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN) {
+// }
+// if (this.goldLoss >= AbstractDungeon.player.maxHealth) {
+// this.goldLoss = AbstractDungeon.player.maxHealth - 1;
+// }
+
+// if (AbstractDungeon.ascensionLevel >= 15) {
+// this.goldLoss = AbstractDungeon.miscRng.random(100, 125);
+// } else {
+// this.goldLoss = AbstractDungeon.miscRng.random(75, 100);
+// }
+
+// if (this.goldLoss > AbstractDungeon.player.gold) {
+// this.goldLoss = AbstractDungeon.player.gold;
+// }
+
+
+ // lose 20 (25)% hp as damage, obtain relic
+ this.imageEventText.setDialogOption(OPTIONS [0] + goldLoss + OPTIONS[1], new ShatteredFragment());
+ //
this.imageEventText.setDialogOption(OPTIONS[2] + ((AbstractDungeon.ascensionLevel >= 15)?7:5) + OPTIONS[4], new BrokenWingStatue());
this.imageEventText.setDialogOption(OPTIONS[3]);
}
@@ -49,10 +80,11 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.setDialogOption(OPTIONS[3]);
AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new ShatteredFragment());
// AbstractDungeon.player.decreaseMaxHealth(this.damage);
- AbstractDungeon.player.damage(new DamageInfo(null, this.damage));
- AbstractDungeon.effectList.add(new FlashAtkImgEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, AttackEffect.FIRE));
+ // AbstractDungeon.player.damage(new DamageInfo(null, this.damage));
+ // AbstractDungeon.effectList.add(new FlashAtkImgEffect(AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY, AttackEffect.FIRE));
+ AbstractDungeon.player.damage(new DamageInfo(null, this.goldLoss));
this.screen = CurScreen.RESULT;
- logMetricObtainRelicAndDamage(ID, "Destroyed Statue", new ShatteredFragment(), damage);
+ logMetricObtainRelicAndDamage(ID, "Destroyed Statue", new ShatteredFragment(), goldLoss);
return;
case 1:
this.imageEventText.updateBodyText(DESCRIPTIONS[1]);
diff --git a/src/main/java/downfall/events/WorldOfGoop_Evil.java b/src/main/java/downfall/events/WorldOfGoop_Evil.java
index 4c4629038..5d684d69e 100644
--- a/src/main/java/downfall/events/WorldOfGoop_Evil.java
+++ b/src/main/java/downfall/events/WorldOfGoop_Evil.java
@@ -1,5 +1,6 @@
package downfall.events;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -40,14 +41,15 @@ public WorldOfGoop_Evil() {
this.screen = CurScreen.INTRO;
if (AbstractDungeon.ascensionLevel >= 15) {
- this.gold = 100;
- } else {
this.gold = 150;
+ } else {
+ this.gold = 175;
}
- this.imageEventText.setDialogOption(OPTIONS[0] + this.gold * 3 + OPTIONS[3], new Icky());
- this.imageEventText.setDialogOption(OPTIONS[1] + this.gold * 2 + OPTIONS[4], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[0] + (this.gold+50) * 3 + OPTIONS[3], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[1] + (this.gold+25) * 2 + OPTIONS[4], new Icky());
this.imageEventText.setDialogOption(OPTIONS[2] + this.gold + OPTIONS[5], new Icky());
+ this.imageEventText.setDialogOption(OPTIONS[6]);
}
public void onEnterRoom() {
@@ -80,7 +82,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .5F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .75F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new RainingGoldEffect(this.gold * 3));
- AbstractDungeon.player.gainGold(this.gold * 3);
+ AbstractDungeon.player.gainGold((this.gold+50) * 3);
logMetricGoop(3);
return;
case 1:
@@ -91,7 +93,7 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .75F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Icky(), (float) Settings.WIDTH * .25F + 10.0F * Settings.scale, (float) Settings.HEIGHT / 2.0F));
AbstractDungeon.effectList.add(new RainingGoldEffect(this.gold * 2));
- AbstractDungeon.player.gainGold(this.gold * 2);
+ AbstractDungeon.player.gainGold((this.gold+25) * 2);
logMetricGoop(2);
return;
case 2:
@@ -105,6 +107,7 @@ protected void buttonEffect(int buttonPressed) {
logMetricGoop(1);
return;
case 3:
+ //AbstractDungeon.player.damage(new DamageInfo(null, ((AbstractDungeon.ascensionLevel >= 15)?11:7)));
this.imageEventText.updateBodyText(LEAVE_DIALOG);
this.imageEventText.clearAllDialogs();
this.imageEventText.setDialogOption(OPTIONS[6]);
diff --git a/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java b/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
index fa3f098cd..6bde00a8a 100644
--- a/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/DuplicatorEvil.java
@@ -3,6 +3,8 @@
/* */
/* */
+import com.megacrit.cardcrawl.cards.curses.Pain;
+import downfall.cards.curses.Aged;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
/* */ import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -39,7 +41,7 @@ public DuplicatorEvil() {
DESCRIPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").DESCRIPTIONS;
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
- this.imageEventText.setDialogOption(OPTIONSALT[0], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[0], new Aged());
this.imageEventText.setDialogOption(OPTIONS[0]);
this.imageEventText.setDialogOption(OPTIONS[1]);
}
@@ -68,7 +70,7 @@ public void update() {
AbstractDungeon.effectList.add(new com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect(c, com.megacrit.cardcrawl.core.Settings.WIDTH * 0.75F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2.0F));
cards.add(c.cardID);
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Aged();
cards.add(curse.cardID);
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) (Settings.WIDTH * .5F), (float) (Settings.HEIGHT / 2)));// 66
diff --git a/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java b/src/main/java/downfall/events/shrines_evil/PurificationShrineEvil.java
index aba58ceee..4f20a5ea4 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,18 @@ 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);
+ logMetric(ID, "Desecrated and lost " + hpAmt + " Max HP.");
}
AbstractDungeon.gridSelectScreen.selectedCards.clear();
@@ -99,7 +111,7 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.updateBodyText(DESCRIPTIONSALT[0]);
AbstractDungeon.gridSelectScreen.open(
com.megacrit.cardcrawl.cards.CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck
- .getPurgeableCards()), 3, OPTIONS[2], false, false, false, true);
+ .getPurgeableCards()), 2, OPTIONS[2], false, false, false, true);
this.imageEventText.updateDialogOption(0, OPTIONS[1]);
diff --git a/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java b/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
index 5a6dd9013..ea7930455 100644
--- a/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/TransmogrifierEvil.java
@@ -2,6 +2,8 @@
package downfall.events.shrines_evil;
+import com.megacrit.cardcrawl.cards.curses.Pain;
+import downfall.cards.curses.Malfunctioning;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -42,7 +44,7 @@ public TransmogrifierEvil() {
DESCRIPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").DESCRIPTIONS;
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
- this.imageEventText.setDialogOption(OPTIONSALT[2], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[3], new Malfunctioning());
this.imageEventText.setDialogOption(OPTIONS[0]);
this.imageEventText.setDialogOption(OPTIONS[1]);
@@ -73,7 +75,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (bonusShrine3){
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Malfunctioning();
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (float) (Settings.WIDTH * .5F), (float) (Settings.HEIGHT / 2)));// 66
obtainedCards.add(curse.cardID);
diff --git a/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java b/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
index 1fb8dfcb9..573cff15e 100644
--- a/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
+++ b/src/main/java/downfall/events/shrines_evil/UpgradeShrineEvil.java
@@ -2,6 +2,7 @@
package downfall.events.shrines_evil;
+import com.megacrit.cardcrawl.cards.curses.Pain;
import downfall.cards.curses.Sapped;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -49,7 +50,7 @@ public UpgradeShrineEvil() {
OPTIONSALT = CardCrawlGame.languagePack.getEventString("downfall:EvilShrines").OPTIONS;
if (AbstractDungeon.player.masterDeck.getUpgradableCards().size() >= 2) {
- this.imageEventText.setDialogOption(OPTIONSALT[3], new Sapped());
+ this.imageEventText.setDialogOption(OPTIONSALT[4], new Pain());
} else {
this.imageEventText.setDialogOption(OPTIONS[3], true);
}
@@ -79,7 +80,7 @@ public void update() {
AbstractDungeon.gridSelectScreen.selectedCards.clear();
if (bonusShrine2){
- AbstractCard curse = new Sapped();
+ AbstractCard curse = new Pain();
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(curse, (Settings.WIDTH * .5F), Settings.HEIGHT * .5F));// 66
logMetric(ID, "Desecrated", Collections.singletonList(curse.cardID), null,
null, upgradedCards, null, null, null,
diff --git a/src/main/java/downfall/mainmenu/MainMenuAdPatch.java b/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
index e1177442e..ad43d3483 100644
--- a/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
+++ b/src/main/java/downfall/mainmenu/MainMenuAdPatch.java
@@ -59,6 +59,9 @@ private MainMenuAdInfo(String text, String text2, String text3, String text4, St
private static ArrayList ads = new ArrayList<>();
static {
+ // Star of Providence Info
+ ads.add(new MainMenuAdInfo("", "", "", "", "", "", "https://store.steampowered.com/app/603960/Star_of_Providence/", TextureLoader.getTexture("downfallResources/images/menustuff/"+ TalesAndTacticsPopup.langFolder() +"/menuSOP.png")));
+
// T9 Game Info
ads.add(new MainMenuAdInfo("", "", "", "", "", "", "https://store.steampowered.com/app/1652250/Tales__Tactics/", TextureLoader.getTexture("downfallResources/images/menustuff/" + TalesAndTacticsPopup.langFolder() + "/menuTNT.png")));
// STS Modding Info
@@ -223,10 +226,10 @@ public void update() {
btnTint.a = 0.25F;
if (InputHelper.justClickedLeft) {
CardCrawlGame.sound.play("UI_CLICK_1");
- if (advert.current == ads.get(0)) {
- advert.current = ads.get(1);
- } else {
+ if (advert.current == ads.get(2)) {
advert.current = ads.get(0);
+ } else {
+ advert.current = ads.get(ads.indexOf(advert.current) + 1);
}
}
} else {
diff --git a/src/main/java/downfall/monsters/ChangingTotem.java b/src/main/java/downfall/monsters/ChangingTotem.java
index d0ad51034..89db65155 100644
--- a/src/main/java/downfall/monsters/ChangingTotem.java
+++ b/src/main/java/downfall/monsters/ChangingTotem.java
@@ -44,7 +44,7 @@ public ChangingTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/DoomedDagger.java b/src/main/java/downfall/monsters/DoomedDagger.java
index cf037eb48..aafb98694 100644
--- a/src/main/java/downfall/monsters/DoomedDagger.java
+++ b/src/main/java/downfall/monsters/DoomedDagger.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -41,8 +42,8 @@ public void takeTurn() {
AbstractDungeon.actionManager.addToBottom(new WaitAction(0.3F));
AbstractDungeon.actionManager.addToBottom(new DamageAction(AbstractDungeon.player, this.damage.get(0), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
AbstractCard q = new ImpendingDoom();
- CardModifierManager.addModifier(q, new RetainCardMod());
- addToBot(new MakeTempCardInHandAction(q));
+ //CardModifierManager.addModifier(q, new RetainCardMod());
+ addToBot(new MakeTempCardInDrawPileAction((q), 1, false, true));
break;
case 2:
AbstractDungeon.actionManager.addToBottom(new ChangeStateAction(this, "SUICIDE"));
diff --git a/src/main/java/downfall/monsters/FleeingMerchant.java b/src/main/java/downfall/monsters/FleeingMerchant.java
index fb1ab8294..7fb8b147f 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.NORMAL;
+ // }
+
+
dialogX = -200.0F * Settings.scale;
dialogY = 10.0F * Settings.scale;
diff --git a/src/main/java/downfall/monsters/ForgetfulTotem.java b/src/main/java/downfall/monsters/ForgetfulTotem.java
index 0231d1fda..416d0628c 100644
--- a/src/main/java/downfall/monsters/ForgetfulTotem.java
+++ b/src/main/java/downfall/monsters/ForgetfulTotem.java
@@ -50,7 +50,7 @@ public ForgetfulTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/GrowingTotem.java b/src/main/java/downfall/monsters/GrowingTotem.java
index e4a70a0f0..5fe7c8f31 100644
--- a/src/main/java/downfall/monsters/GrowingTotem.java
+++ b/src/main/java/downfall/monsters/GrowingTotem.java
@@ -52,7 +52,7 @@ public GrowingTotem() {
AnimationState.TrackEntry e = this.state.setAnimation(0, "Idle", true);
e.setTime(e.getEndTime() * MathUtils.random());
- if (AbstractDungeon.ascensionLevel >= 19) {
+ if (AbstractDungeon.ascensionLevel >= 18) {
this.attackDmg = 6;
this.secondaryEffect = 2;
} else if (AbstractDungeon.ascensionLevel >= 4) {
diff --git a/src/main/java/downfall/monsters/Neow4Life30Heal.java b/src/main/java/downfall/monsters/Neow4Life30Heal.java
index 4b0f102f2..6d16b2960 100644
--- a/src/main/java/downfall/monsters/Neow4Life30Heal.java
+++ b/src/main/java/downfall/monsters/Neow4Life30Heal.java
@@ -90,11 +90,11 @@ public Neow4Life30Heal() {
e.setTime(e.getEndTime() * MathUtils.random());
if (AbstractDungeon.ascensionLevel >= 4) {
+ this.damage.add(new DamageInfo(this, 12)); //Eye Beam Damage
+ this.damage.add(new DamageInfo(this, 40)); //Scream Damage
+ } else {
this.damage.add(new DamageInfo(this, 9)); //Eye Beam Damage
this.damage.add(new DamageInfo(this, 25)); //Scream Damage
- } else {
- this.damage.add(new DamageInfo(this, 7)); //Eye Beam Damage
- this.damage.add(new DamageInfo(this, 20)); //Scream Damage
}
this.strAmt = 2; //Strength Scaling for growth ability
diff --git a/src/main/java/downfall/monsters/NeowBoss.java b/src/main/java/downfall/monsters/NeowBoss.java
index 3bb45d118..95069e6a5 100644
--- a/src/main/java/downfall/monsters/NeowBoss.java
+++ b/src/main/java/downfall/monsters/NeowBoss.java
@@ -85,14 +85,14 @@ public NeowBoss() {
type = EnemyType.ELITE;
this.baseDrawX = drawX;
-
+ StrGain = 1;
if (AbstractDungeon.ascensionLevel >= 9) {
StrGain = 2;
} else {
setHp(600);
}
if (AbstractDungeon.ascensionLevel >= 18) {
- StrGain = 2;
+ StrGain = 3;
}
diff --git a/src/main/java/downfall/monsters/NeowBossFinal.java b/src/main/java/downfall/monsters/NeowBossFinal.java
index 15ad54a08..489648826 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(800);
} else {
- setHp(550);
+ setHp(750);
}
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, 10)); //Eye Beam Damage - 45 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, 8)); //Eye Beam Damage - 32 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,30 +153,36 @@ 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));
}
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvinciblePower(this, invincibleAmt), invincibleAmt));
- if (AbstractDungeon.ascensionLevel < 19) {
- for (int i = 0; i < 3; i++) {
- AbstractDungeon.actionManager.addToBottom(new WaitAction(0.1F));
- }
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, null, new HeartsFavorPower(this, 2), 2));
-
- }
+// if (AbstractDungeon.ascensionLevel < 19) {
+// for (int i = 0; i < 3; i++) {
+// AbstractDungeon.actionManager.addToBottom(new WaitAction(0.1F));
+// }
+// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, null, new HeartsFavorPower(this, 2), 2));
+//
+// }
/*
for (int i = 0; i < 3; i++) {
@@ -224,30 +242,90 @@ 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));
+
+ // nerfed healing again
+ //Neow will only gain extra God of Life ONCE similar to the corrupt heart
+
+// int buf = 0;
+// if (this.hasPower(NeowInvulnerablePower.POWER_ID)) {
+// buf = this.getPower(NeowInvulnerablePower.POWER_ID).amount;
+// }
+// if (buf < 5) {
+// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, 1)));
+// }
+
+ 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));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new NeowInvulnerablePower(this, 1)));
+ if (AbstractDungeon.ascensionLevel >= 19) {
+ AbstractDungeon.actionManager.addToBottom(new HealAction(this, this, 50));
+ //this effectively makes her HP 700 - Not factoring in God of Life.
+ }
+ if (AbstractDungeon.ascensionLevel < 19) {
+ AbstractDungeon.actionManager.addToBottom(new HealAction(this, this, 30));
+ //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/Defect.java b/src/main/java/downfall/monsters/gauntletbosses/Defect.java
index 86792397d..fcb866407 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Defect.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Defect.java
@@ -6,10 +6,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.cards.blue.Buffer;
-import com.megacrit.cardcrawl.cards.blue.CoreSurge;
-import com.megacrit.cardcrawl.cards.blue.Defend_Blue;
-import com.megacrit.cardcrawl.cards.blue.Strike_Blue;
+import com.megacrit.cardcrawl.cards.blue.*;
import com.megacrit.cardcrawl.cards.curses.Doubt;
import com.megacrit.cardcrawl.cards.green.Strike_Green;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -23,6 +20,7 @@
import downfall.powers.DrawReductionPowerPlus;
import downfall.powers.gauntletpowers.MonsterVigor;
import downfall.powers.gauntletpowers.OnDeathEveryoneBuffer;
+import hermit.cards.Maintenance;
public class Defect extends GauntletBoss {
@@ -88,11 +86,15 @@ public void takeTurn() {
addToBot(new GainBlockAction(this, 10 + (dex * 2)));
break;
case 4:
- addToBot(new DamageAction(AbstractDungeon.player, this.damage.get(2), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- addToBot(new ApplyPowerAction(this, this, new ArtifactPower(this, 1), 1));
-
- if (hasPower(MonsterVigor.POWER_ID)) {
- addToBot(new RemoveSpecificPowerAction(this, this, MonsterVigor.POWER_ID));
+ if (AbstractDungeon.ascensionLevel < 18) {
+ this.addToBot(new ApplyPowerAction(this, this, new FocusPower(this, -1), -1));
+ this.addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 1), 1));
+ this.addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 1), 1));
+ }
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ this.addToBot(new ApplyPowerAction(this, this, new FocusPower(this, -2), -2));
+ this.addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 2), 2));
+ this.addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 2), 2));
}
break;
case 5:
@@ -121,8 +123,13 @@ private void bossMove() {
setMove(moveName(Defend_Blue.ID, Defend_Blue.ID), (byte) 3, Intent.DEFEND);
break;
case 3:
- isAttacking = true;
- setMove(moveName(CoreSurge.ID), (byte) 4, Intent.ATTACK_BUFF, this.damage.get(2).base);
+ isAttacking = false;
+ if (AbstractDungeon.ascensionLevel < 18) {
+ setMove(moveName(Reprogram.ID), (byte) 4, Intent.BUFF);
+ }
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ setMove(moveName(Reprogram.ID) + "+", (byte) 4, Intent.BUFF);
+ }
break;
}
}
diff --git a/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java b/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
index 52caa2ffb..6527fe754 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/GauntletBoss.java
@@ -39,7 +39,6 @@ public String moveName(String ID, String ID2) {
public void usePreBattleAction() {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new DexterityPower(this, 3), 3));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this, this, new StrengthPower(this, 3), 3));
-
}
@Override
diff --git a/src/main/java/downfall/monsters/gauntletbosses/Hermit.java b/src/main/java/downfall/monsters/gauntletbosses/Hermit.java
index e0c5fc664..f4de39512 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Hermit.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Hermit.java
@@ -84,8 +84,17 @@ public void takeTurn() {
addToBot(new ApplyPowerAction(this, this, new PlatedArmorPower(this, 4), 4));
break;
case 5:
- addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 3), 3));
- addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 3), 3));
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 4), 4));
+ addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 2), 2));
+ }
+
+ if (AbstractDungeon.ascensionLevel < 18) {
+ addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 3), 3));
+ addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 1), 1));
+ }
+
break;
}
@@ -118,7 +127,13 @@ protected void getMove(int num) {
turnNum++;
if (turnNum == 5) {
isAttacking = false;
- setMove(moveName(Maintenance.ID), (byte) 5, Intent.BUFF);
+ if (AbstractDungeon.ascensionLevel < 18) {
+ setMove(moveName(Maintenance.ID), (byte) 5, Intent.BUFF);
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ setMove(moveName(Maintenance.ID) + "+", (byte) 5, Intent.BUFF);
+ }
} else {
if (isThird && turnNum > 1 && ally1 != null && ally2 != null) {
diff --git a/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java b/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
index 1f33753b8..29b9c7eb8 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Ironclad.java
@@ -1,11 +1,13 @@
package downfall.monsters.gauntletbosses;
import charbosses.core.EnemyEnergyManager;
+import charbosses.powers.cardpowers.EnemyWraithFormPower;
import com.badlogic.gdx.math.MathUtils;
import com.esotericsoftware.spine.AnimationState;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.blue.Buffer;
import com.megacrit.cardcrawl.cards.blue.Defend_Blue;
import com.megacrit.cardcrawl.cards.curses.Doubt;
import com.megacrit.cardcrawl.cards.red.Bash;
@@ -94,7 +96,12 @@ public void takeTurn() {
}
break;
case 5:
- addToBot(new ApplyPowerAction(this, this, new EnemyDemonFormPower(this, 2), 2));
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ addToBot(new ApplyPowerAction(this, this, new EnemyDemonFormPower(this, 3), 3));
+ }
+ if (AbstractDungeon.ascensionLevel < 18) {
+ addToBot(new ApplyPowerAction(this, this, new EnemyDemonFormPower(this, 2), 2));
+ }
break;
}
@@ -104,6 +111,13 @@ public void takeTurn() {
private void bossMove() {
int rnd = AbstractDungeon.cardRandomRng.random(0, 3);
+ if (this.hasPower(EnemyDemonFormPower.POWER_ID)) {
+ if (rnd == 2) {
+ while (rnd == 2) {
+ rnd = AbstractDungeon.cardRandomRng.random(0, 3);
+ }
+ }
+ }
switch (rnd) {
case 0:
isAttacking = true;
@@ -121,14 +135,22 @@ private void bossMove() {
isAttacking = true;
setMove(moveName(Bash.ID), (byte) 4, Intent.ATTACK_DEBUFF, this.damage.get(2).base);
break;
- }
+ }
}
protected void getMove(int num) {
turnNum++;
if (turnNum == 5) {
isAttacking = false;
- setMove(moveName(DemonForm.ID), (byte) 5, Intent.BUFF);
+
+ if (AbstractDungeon.ascensionLevel < 18) {
+ setMove(moveName(DemonForm.ID), (byte) 5, Intent.BUFF);
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ setMove(moveName(DemonForm.ID) + "+", (byte) 5, Intent.BUFF);
+ }
+
} else {
if (isThird && turnNum > 1 && ally1 != null && ally2 != null) {
diff --git a/src/main/java/downfall/monsters/gauntletbosses/Silent.java b/src/main/java/downfall/monsters/gauntletbosses/Silent.java
index 2b41e3f16..01eef57b2 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Silent.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Silent.java
@@ -14,6 +14,7 @@
import com.megacrit.cardcrawl.cards.green.LegSweep;
import com.megacrit.cardcrawl.cards.green.Strike_Green;
import com.megacrit.cardcrawl.cards.green.WraithForm;
+import com.megacrit.cardcrawl.cards.red.DemonForm;
import com.megacrit.cardcrawl.cards.red.Strike_Red;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -92,7 +93,15 @@ public void takeTurn() {
addToBot(new GainBlockAction(this, 11));
break;
case 5:
- addToBot(new ApplyPowerAction(this, this, new IntangiblePower(this, 2), 2));
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ addToBot(new ApplyPowerAction(this, this, new IntangiblePower(this, 3), 3));
+ }
+
+ if (AbstractDungeon.ascensionLevel < 18) {
+ addToBot(new ApplyPowerAction(this, this, new IntangiblePower(this, 2), 2));
+ }
+
addToBot(new ApplyPowerAction(this, this, new EnemyWraithFormPower(this, -1), -1));
break;
}
@@ -130,7 +139,16 @@ protected void getMove(int num) {
turnNum++;
if (turnNum == 5) {
isAttacking = false;
- setMove(moveName(WraithForm.ID), (byte) 5, Intent.BUFF);
+
+ if (AbstractDungeon.ascensionLevel < 18) {
+ setMove(moveName(WraithForm.ID), (byte) 5, Intent.BUFF);
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ setMove(moveName(WraithForm.ID) + "+", (byte) 5, Intent.BUFF);
+ }
+
+
} else {
if (isThird && turnNum > 1 && ally1 != null && ally2 != null) {
diff --git a/src/main/java/downfall/monsters/gauntletbosses/Watcher.java b/src/main/java/downfall/monsters/gauntletbosses/Watcher.java
index bc95ff6db..992db861c 100644
--- a/src/main/java/downfall/monsters/gauntletbosses/Watcher.java
+++ b/src/main/java/downfall/monsters/gauntletbosses/Watcher.java
@@ -3,6 +3,7 @@
import charbosses.cards.purple.EnWish;
import charbosses.cards.purple.EnWishPlated;
import charbosses.core.EnemyEnergyManager;
+import charbosses.powers.cardpowers.EnemyEnergyDownPower;
import com.esotericsoftware.spine.AnimationState;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.*;
@@ -10,10 +11,7 @@
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.cards.blue.Defend_Blue;
import com.megacrit.cardcrawl.cards.curses.Doubt;
-import com.megacrit.cardcrawl.cards.purple.Defend_Watcher;
-import com.megacrit.cardcrawl.cards.purple.Strike_Purple;
-import com.megacrit.cardcrawl.cards.purple.Wallop;
-import com.megacrit.cardcrawl.cards.purple.Wish;
+import com.megacrit.cardcrawl.cards.purple.*;
import com.megacrit.cardcrawl.cards.red.Strike_Red;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -27,6 +25,7 @@
import downfall.powers.gauntletpowers.MonsterVigor;
import downfall.powers.gauntletpowers.OnDeathEveryoneBuffer;
import downfall.powers.gauntletpowers.OnDeathEveryoneVigor;
+import hermit.cards.Maintenance;
public class Watcher extends GauntletBoss {
@@ -95,7 +94,18 @@ public void takeTurn() {
}
break;
case 5:
- addToBot(new ApplyPowerAction(this, this, new PlatedArmorPower(this, 8), 8));
+ //addToBot(new ApplyPowerAction(this, this, new PlatedArmorPower(this, 8), 8));
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ this.addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 4), 4));
+ this.addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 4), 4));
+ }
+
+ if (AbstractDungeon.ascensionLevel < 18) {
+ this.addToBot(new ApplyPowerAction(this, this, new StrengthPower(this, 3), 3));
+ this.addToBot(new ApplyPowerAction(this, this, new DexterityPower(this, 3), 3));
+ }
+
+ this.addToBot(new ApplyPowerAction(this, this, new EnemyEnergyDownPower(this, 1,true), 1));
break;
}
@@ -130,7 +140,13 @@ protected void getMove(int num) {
turnNum++;
if (turnNum == 5) {
isAttacking = false;
- setMove(moveName(Wish.ID) + "+", (byte) 5, Intent.BUFF);
+ if (AbstractDungeon.ascensionLevel < 18) {
+ setMove(moveName(Fasting.ID), (byte) 5, Intent.BUFF);
+ }
+
+ if (AbstractDungeon.ascensionLevel >= 18) {
+ setMove(moveName(Fasting.ID) + "+", (byte) 5, Intent.BUFF);
+ }
} else {
if (isThird && turnNum > 1 && ally1 != null && ally2 != null) {
if (!ally1.isDeadOrEscaped() && !ally2.isDeadOrEscaped() && ally1.isAttacking && ally2.isAttacking) {
diff --git a/src/main/java/downfall/patches/ApotheosisStasisFunctionPatch.java b/src/main/java/downfall/patches/ApotheosisStasisFunctionPatch.java
index 324741e43..40efccf07 100644
--- a/src/main/java/downfall/patches/ApotheosisStasisFunctionPatch.java
+++ b/src/main/java/downfall/patches/ApotheosisStasisFunctionPatch.java
@@ -1,6 +1,7 @@
package downfall.patches;
import automaton.FunctionHelper;
+import awakenedOne.ui.OrbitingSpells;
import basemod.ReflectionHacks;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePrefixPatch;
@@ -25,6 +26,7 @@ public static class TimeToLearn {
public static void Prefix(ApotheosisAction instance) {
float duration = (float) ReflectionHacks.getPrivate(instance, AbstractGameAction.class, "duration");
if (duration == Settings.ACTION_DUR_MED) {
+ OrbitingSpells.upgradeall();
for (AbstractOrb o : AbstractDungeon.player.orbs) {
if (o instanceof StasisOrb) {
((StasisOrb) o).stasisCard.upgrade();
diff --git a/src/main/java/downfall/patches/BanCards.java b/src/main/java/downfall/patches/BanCards.java
index f742bf690..0523c5e0b 100644
--- a/src/main/java/downfall/patches/BanCards.java
+++ b/src/main/java/downfall/patches/BanCards.java
@@ -1,9 +1,21 @@
package downfall.patches;
+import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
+import champ.ChampChar;
+import collector.CollectorChar;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.colorless.SadisticNature;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.CardLibrary;
+import downfall.downfallMod;
+import expansioncontent.patches.CardColorEnumPatch;
+import guardian.characters.GuardianCharacter;
+import slimebound.characters.SlimeboundCharacter;
+import theHexaghost.TheHexaghost;
+
+import static expansioncontent.expansionContentMod.*;
public class BanCards {
@SpirePatch(
@@ -17,6 +29,58 @@ public static void Postfix(AbstractDungeon __instance) {
AbstractDungeon.colorlessCardPool.group.removeIf(c -> c instanceof SadisticNature);
AbstractDungeon.srcColorlessCardPool.group.removeIf(c -> c instanceof SadisticNature);
}
+
+ if (!EvilModeCharacterSelect.evilMode && downfallMod.contentSharing_colorlessCards) {
+ for (AbstractCard q : CardLibrary.getAllCards()) {
+ if (q.rarity != AbstractCard.CardRarity.SPECIAL && q.color == CardColorEnumPatch.CardColorPatch.BOSS) {
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter) {
+ if (q.hasTag(STUDY_SLIMEBOSS)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof TheHexaghost) {
+ if (q.hasTag(STUDY_HEXAGHOST)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof GuardianCharacter) {
+ if (q.hasTag(STUDY_GUARDIAN)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof ChampChar) {
+ if (q.hasTag(STUDY_CHAMP)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof AutomatonChar) {
+ if (q.hasTag(STUDY_AUTOMATON)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof CollectorChar) {
+ if (q.hasTag(STUDY_COLLECTOR)) {
+ continue;
+ }
+ }
+
+ if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if (q.hasTag(STUDY_AWAKENEDONE)) {
+ continue;
+ }
+ }
+ AbstractCard r = q.makeCopy();
+ AbstractDungeon.colorlessCardPool.group.add(r);
+ AbstractDungeon.srcColorlessCardPool.group.add(r);
+ }
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/BanSharedContentPatch.java b/src/main/java/downfall/patches/BanSharedContentPatch.java
index fa9c1911e..66e8c2efc 100644
--- a/src/main/java/downfall/patches/BanSharedContentPatch.java
+++ b/src/main/java/downfall/patches/BanSharedContentPatch.java
@@ -1,15 +1,19 @@
package downfall.patches;
import automaton.AutomatonChar;
+import automaton.potions.BurnAndBuffPotion;
import automaton.relics.BronzeIdol;
import automaton.relics.DecasWashers;
import automaton.relics.DonusWashers;
-import automaton.relics.MakeshiftBattery;
+import awakenedOne.AwakenedOneChar;
+import awakenedOne.relics.*;
import champ.ChampChar;
+import champ.potions.CounterstrikePotion;
import champ.relics.Barbells;
import champ.relics.DeflectingBracers;
import champ.relics.DuelingGlove;
import collector.CollectorChar;
+import collector.cards.WhirlingFlame;
import collector.relics.*;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -17,26 +21,29 @@
import com.megacrit.cardcrawl.helpers.PotionHelper;
import downfall.cards.curses.*;
import downfall.downfallMod;
-import downfall.events.HeartEvent;
import expansioncontent.actions.RandomCardWithTagAction;
import expansioncontent.cards.*;
+import expansioncontent.potions.BossPotion;
import expansioncontent.relics.StudyCardRelic;
-import gremlin.relics.ImpeccablePecs;
+import gremlin.characters.GremlinCharacter;
+import gremlin.potions.WizPotion;
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;
+import hermit.characters.hermit;
import hermit.relics.BloodyTooth;
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;
@@ -71,12 +78,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 +113,33 @@ 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);
@@ -109,37 +158,66 @@ public static void Postfix(AbstractDungeon __instance) {
AbstractDungeon.srcCurseCardPool.removeCard(Scatterbrained.ID);
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);
}
}
}
@@ -153,38 +231,109 @@ public static class RelicPatch {
public static void Prefix(AbstractDungeon __instance) {
if (!EvilModeCharacterSelect.evilMode && !downfallMod.contentSharing_relics) {
- //TODO: last checked in 5.12 ver in 2024.2.23 by Mwalls
- AbstractDungeon.relicsToRemoveOnStart.add(AutoCurser.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(Bagpipes.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(Barbells.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BottledAnomaly.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BlankCard.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BolsterEngine.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BronzeIdol.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BrassTacks.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(BloodyTooth.ID);
+ //last checked during awakened one dev, 5/14/25
+
+ if (!(AbstractDungeon.player instanceof CollectorChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(AutoCurser.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(Bagpipes.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof ChampChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(Barbells.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof GuardianCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(BottledAnomaly.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof TheSnecko)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(BlankCard.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof TheHexaghost)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(BolsterEngine.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof AutomatonChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(BronzeIdol.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof hermit)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(BrassTacks.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(BloodyTooth.ID);
+ }
// AbstractDungeon.relicsToRemoveOnStart.add(CandleOfCauterizing.ID); // red candle changed to hexa specific
- AbstractDungeon.relicsToRemoveOnStart.add(DeflectingBracers.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(DuelingGlove.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(DecasWashers.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(DonusWashers.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(ForbiddenFruit.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(FuelCanister.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(GemstoneGun.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(ImpeccablePecs.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(Incense.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(MakeshiftBattery.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(PocketSentry.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(PricklyShields.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(PreparedRelic.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(RoughDiamond.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(RyeStalk.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(StickyStick.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(StudyCardRelic.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(SuperSneckoEye.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(SneckoTalon.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(Sixitude.ID);
- AbstractDungeon.relicsToRemoveOnStart.add(SupplyScroll.ID);
+
+ if (!(AbstractDungeon.player instanceof ChampChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(DeflectingBracers.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(DuelingGlove.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof AutomatonChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(DecasWashers.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(DonusWashers.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof CollectorChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(ForbiddenFruit.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(FuelCanister.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof GuardianCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(GemstoneGun.ID);
+ }
+
+ //AbstractDungeon.relicsToRemoveOnStart.add(ImpeccablePecs.ID); impeccable pecs moved to gremlins exclusive
+ if (!(AbstractDungeon.player instanceof CollectorChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(Incense.ID);
+ }
+
+ //AbstractDungeon.relicsToRemoveOnStart.add(MakeshiftBattery.ID); makeshift battery moved to automaton exclusive
+ if (!(AbstractDungeon.player instanceof GuardianCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(PocketSentry.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof GremlinCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(PricklyShields.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof SlimeboundCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(PreparedRelic.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof CollectorChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(RoughDiamond.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof hermit)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(RyeStalk.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof SlimeboundCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(StickyStick.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof TheSnecko)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(StudyCardRelic.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(SuperSneckoEye.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(SneckoTalon.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof TheHexaghost)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(Sixitude.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof GremlinCharacter)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(SupplyScroll.ID);
+ }
+
+ if (!(AbstractDungeon.player instanceof AwakenedOneChar)) {
+ AbstractDungeon.relicsToRemoveOnStart.add(CawingCask.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(VioletPlumage.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(ShardOfNowak.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(MiniBlackHole.ID);
+ AbstractDungeon.relicsToRemoveOnStart.add(DeadBird.ID);
+ }
}
}
@@ -199,27 +348,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
+ // 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) -> {
- // Shared potions will never be banned from their base class
- if (chosenClass != playerClass) {
- if (!HeartEvent.hasPlayedRun(playerClass)) {
- PotionHelper.potions.removeAll(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);
+ // }
+ // });
+ // }
}
}
}
diff --git a/src/main/java/downfall/patches/BanStuffPatch.java b/src/main/java/downfall/patches/BanStuffPatch.java
index 4e00e70ac..eec4f96c6 100644
--- a/src/main/java/downfall/patches/BanStuffPatch.java
+++ b/src/main/java/downfall/patches/BanStuffPatch.java
@@ -1,9 +1,20 @@
package downfall.patches;
+import awakenedOne.AwakenedOneChar;
+import basemod.devcommands.relic.RelicRemove;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.PotionHelper;
+import com.megacrit.cardcrawl.relics.BirdFacedUrn;
+import com.megacrit.cardcrawl.relics.MummifiedHand;
+import com.megacrit.cardcrawl.relics.OrangePellets;
+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 +24,36 @@ 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");
+ }
+
+ boolean nukemummyhand = (AbstractDungeon.miscRng.randomBoolean());
+ boolean nukepellets = (AbstractDungeon.miscRng.randomBoolean());
+ boolean nukeurn = (AbstractDungeon.miscRng.randomBoolean());
+
+ if (nukemummyhand && (chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE)) {
+ relicsToRemoveOnStart.add(MummifiedHand.ID);
+ }
+
+ if (nukepellets && (chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE)) {
+ relicsToRemoveOnStart.add(OrangePellets.ID);
+ }
+
+ if (nukeurn && (chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE)) {
+ relicsToRemoveOnStart.add(BirdFacedUrn.ID);
+ }
+
}
}
-}
\ No newline at end of file
+}
+
diff --git a/src/main/java/downfall/patches/BlackCandlePatch.java b/src/main/java/downfall/patches/BlackCandlePatch.java
new file mode 100644
index 000000000..3a484f873
--- /dev/null
+++ b/src/main/java/downfall/patches/BlackCandlePatch.java
@@ -0,0 +1,23 @@
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import downfall.relics.BlackCandle;
+
+
+public class BlackCandlePatch {
+ @SpirePatch(clz = AbstractCard.class, method = "canUse")
+ public static class MakeActuallyUsable {
+ public static boolean Postfix(boolean __result, AbstractCard __instance) {
+
+ if ((__instance.type == AbstractCard.CardType.CURSE) && (__instance.cost == -2)) {
+ if (AbstractDungeon.player.hasRelic(BlackCandle.ID)) {
+ return true;
+ }
+ }
+ return (__result);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/CNCardTextColorPatch.java b/src/main/java/downfall/patches/CNCardTextColorPatch.java
index a52a363ee..0e6dd3580 100644
--- a/src/main/java/downfall/patches/CNCardTextColorPatch.java
+++ b/src/main/java/downfall/patches/CNCardTextColorPatch.java
@@ -44,7 +44,7 @@ public static void Insert(AbstractCard __instance, @ByRef String[] word, @ByRef
if (!Settings.manualLineBreak) {
// If the current line is reaching its end, then the ending punctuation's width should be ignored or it would result in
// a new line with a single punctuation as the text
- if( (letter == LocalizedStrings.PERIOD.charAt(0)) && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH) ){
+ if( (LocalizedStrings.PERIOD.length() != 0 && letter == LocalizedStrings.PERIOD.charAt(0)) && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH) ){
letterWidth = 0F;
}
if((letter == ',') && ((currentWidth[0] + letterWidth) >= 0.8 * CN_DESC_BOX_WIDTH ) ){
diff --git a/src/main/java/downfall/patches/DeathScreenCharUnlockPatch.java b/src/main/java/downfall/patches/DeathScreenCharUnlockPatch.java
index 5d8b23ab0..59ad766cc 100644
--- a/src/main/java/downfall/patches/DeathScreenCharUnlockPatch.java
+++ b/src/main/java/downfall/patches/DeathScreenCharUnlockPatch.java
@@ -2,16 +2,18 @@
package downfall.patches;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
+import collector.CollectorChar;
import com.evacipated.cardcrawl.modthespire.lib.*;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.city.TheCollector;
import com.megacrit.cardcrawl.ui.buttons.ReturnToMenuButton;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import gremlin.patches.GremlinEnum;
import guardian.patches.GuardianEnum;
-import slimebound.SlimeboundMod;
import theHexaghost.TheHexaghost;
@@ -45,17 +47,31 @@ public static void Postfix(ReturnToMenuButton __instance, float x, float y, Stri
// //SlimeboundMod.logger.info("second if");
__instance.appear(Settings.WIDTH / 2.0F, Settings.HEIGHT * 0.15F, TEXT[40]);
__instance.label = TEXT[40];
- } else if (UnlockTracker.isCharacterLocked("Gremlin") && EvilModeCharacterSelect.evilMode && AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON) {
+ } else if (UnlockTracker.isCharacterLocked("Collector") && EvilModeCharacterSelect.evilMode && AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON) {
// //SlimeboundMod.logger.info("second if");
__instance.appear(Settings.WIDTH / 2.0F, Settings.HEIGHT * 0.15F, TEXT[40]);
__instance.label = TEXT[40];
- } else if ((UnlockTracker.isCharacterLocked("Snecko")) &&
+ }
+ } else if (UnlockTracker.isCharacterLocked("Awakened") && EvilModeCharacterSelect.evilMode && AbstractDungeon.player.chosenClass == CollectorChar.Enums.THE_COLLECTOR) {
+ // //SlimeboundMod.logger.info("second if");
+ __instance.appear(Settings.WIDTH / 2.0F, Settings.HEIGHT * 0.15F, TEXT[40]);
+ __instance.label = TEXT[40];
+ }
+ else if (UnlockTracker.isCharacterLocked("Gremlin") && EvilModeCharacterSelect.evilMode && AbstractDungeon.player.chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE) {
+ // //SlimeboundMod.logger.info("second if");
+ __instance.appear(Settings.WIDTH / 2.0F, Settings.HEIGHT * 0.15F, TEXT[40]);
+ __instance.label = TEXT[40];
+ }
+
+ else if ((UnlockTracker.isCharacterLocked("Snecko")) &&
!(UnlockTracker.isCharacterLocked("SlimeBoss")) &&
!(UnlockTracker.isCharacterLocked("Guardian")) &&
!(UnlockTracker.isCharacterLocked("Hexaghost")) &&
!(UnlockTracker.isCharacterLocked("Champ")) &&
!(UnlockTracker.isCharacterLocked("Automaton")) &&
!(UnlockTracker.isCharacterLocked("Gremlin")) &&
+ !(UnlockTracker.isCharacterLocked("Awakened")) &&
+ !(UnlockTracker.isCharacterLocked("Collector")) &&
EvilModeCharacterSelect.evilMode && AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN){
// //SlimeboundMod.logger.info("third if");
__instance.appear(Settings.WIDTH / 2.0F, Settings.HEIGHT * 0.15F, TEXT[40]);
@@ -65,7 +81,5 @@ public static void Postfix(ReturnToMenuButton __instance, float x, float y, Stri
}
}
-}
-
diff --git a/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java b/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java
new file mode 100644
index 000000000..91aa91309
--- /dev/null
+++ b/src/main/java/downfall/patches/DeathScreenScoreBonusesPatch.java
@@ -0,0 +1,43 @@
+package downfall.patches;
+
+import basemod.ReflectionHacks;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import com.megacrit.cardcrawl.screens.DeathScreen;
+import com.megacrit.cardcrawl.screens.GameOverScreen;
+import com.megacrit.cardcrawl.screens.GameOverStat;
+import com.megacrit.cardcrawl.screens.VictoryScreen;
+import downfall.downfallMod;
+import theHexaghost.relics.TheBrokenSeal;
+
+import java.util.ArrayList;
+
+public class DeathScreenScoreBonusesPatch {
+
+ public static String CHECKAGAINST = CardCrawlGame.languagePack.getScoreString("Heartbreaker").NAME;
+ public static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString(downfallMod.makeID("WhaleHunter"));
+ public static final UIStrings uiStrings2 = CardCrawlGame.languagePack.getUIString(downfallMod.makeID("Unfettered"));
+
+ @SpirePatch(
+ clz = DeathScreen.class,
+ method = "createGameOverStats"
+ )
+ //use replaceheartkillbonuspatch too so it also counts on winning a run.
+ public static class DeathScreenPatch {
+ public static void Postfix(DeathScreen __instance) {
+ if (EvilModeCharacterSelect.evilMode) {
+ ArrayList stats = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ //insert evil mode score bonuses here.
+ }
+
+
+ //insert non evil exclusive score bonuses here
+ // ArrayList stats2 = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ // if (AbstractDungeon.player.hasRelic(TheBrokenSeal.ID)) {
+ // stats2.add(stats2.size()-2, new GameOverStat(uiStrings2.TEXT[0], uiStrings2.TEXT[1], Integer.toString(333)));
+ // }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/DeathScreenUnlockPatch.java b/src/main/java/downfall/patches/DeathScreenUnlockPatch.java
index c07954c6a..fcd4b3d5a 100644
--- a/src/main/java/downfall/patches/DeathScreenUnlockPatch.java
+++ b/src/main/java/downfall/patches/DeathScreenUnlockPatch.java
@@ -1,6 +1,7 @@
package downfall.patches;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
import collector.CollectorChar;
import com.evacipated.cardcrawl.modthespire.lib.*;
@@ -47,36 +48,53 @@ public static SpireReturn Insert(DeathScreen __instance) {
if ((AbstractDungeon.unlocks.isEmpty()) || (Settings.isDemo)) {
if ((Settings.isDemo) || (Settings.isDailyRun)) {
CardCrawlGame.startOver();
+
+
} else if (UnlockTracker.isCharacterLocked("Guardian") && !UnlockTracker.isCharacterLocked("The Silent") && (AbstractDungeon.player.chosenClass == SlimeboundEnum.SLIMEBOUND)) {
AbstractDungeon.unlocks.add(new GuardianUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Guardian Unlock screen!");
return SpireReturn.Return(null);
+
+
} else if ((UnlockTracker.isCharacterLocked("Hexaghost")) && (AbstractDungeon.player.chosenClass == GuardianEnum.GUARDIAN)) {
AbstractDungeon.unlocks.add(new HexaghostUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
// //SlimeboundMod.logger.info("Triggered Hexaghost Unlock screen!");
return SpireReturn.Return(null);
+
+
} else if ((UnlockTracker.isCharacterLocked("Champ")) && (AbstractDungeon.player.chosenClass == TheHexaghost.Enums.THE_SPIRIT)) {
AbstractDungeon.unlocks.add(new ChampUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Champ Unlock screen!");
return SpireReturn.Return(null);
+
+
} else if ((UnlockTracker.isCharacterLocked("Automaton")) && (AbstractDungeon.player.chosenClass == ChampChar.Enums.THE_CHAMP)) {
AbstractDungeon.unlocks.add(new AutomatonUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Automaton Unlock screen!");
return SpireReturn.Return(null);
+
+
} else if ((UnlockTracker.isCharacterLocked("Collector")) && (AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON)) {
AbstractDungeon.unlocks.add(new CollectorUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Gremlin Unlock screen!");
return SpireReturn.Return(null);
- } else if ((UnlockTracker.isCharacterLocked("Gremlin") && (AbstractDungeon.player.chosenClass == CollectorChar.Enums.THE_COLLECTOR))) {
+
+
+ } else if ((UnlockTracker.isCharacterLocked("Awakened") && (AbstractDungeon.player.chosenClass == CollectorChar.Enums.THE_COLLECTOR))) {
+ AbstractDungeon.unlocks.add(new AwakenedUnlock());
+ AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
+ return SpireReturn.Return(null);
+
+ } else if ((UnlockTracker.isCharacterLocked("Gremlin") && (AbstractDungeon.player.chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE))) {
AbstractDungeon.unlocks.add(new GremlinUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
- ////SlimeboundMod.logger.info("Triggered Snecko Unlock screen!");
return SpireReturn.Return(null);
+
} else if ((UnlockTracker.isCharacterLocked("Snecko") && (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN))) {
AbstractDungeon.unlocks.add(new SneckoUnlock());
AbstractDungeon.unlockScreen.open(AbstractDungeon.unlocks.remove(0));
diff --git a/src/main/java/downfall/patches/EvilModeCharacterSelect.java b/src/main/java/downfall/patches/EvilModeCharacterSelect.java
index 9d3a37e24..a37e36f6e 100644
--- a/src/main/java/downfall/patches/EvilModeCharacterSelect.java
+++ b/src/main/java/downfall/patches/EvilModeCharacterSelect.java
@@ -1,6 +1,7 @@
package downfall.patches;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import basemod.CustomCharacterSelectScreen;
import basemod.ReflectionHacks;
import champ.ChampChar;
@@ -55,7 +56,7 @@ public static void Insert(CustomCharacterSelectScreen __instance) {
Iterator options = __instance.options.iterator();
ArrayList basegameOptions = new ArrayList<>(), moddedOptions = new ArrayList<>();
- CharacterOption[] villainOptions = new CharacterOption[8];
+ CharacterOption[] villainOptions = new CharacterOption[9];
while (options.hasNext()) {
CharacterOption o = options.next();
@@ -107,18 +108,26 @@ public static void Insert(CustomCharacterSelectScreen __instance) {
ReflectionHacks.setPrivate(o, CharacterOption.class, "buttonImg", ImageMaster.CHAR_SELECT_LOCKED);
}
villainOptions[5] = o;
+
+ } else if (o.c.chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE) {
+ if (UnlockTracker.isCharacterLocked("Awakened")) {
+ o.locked = true;
+ ReflectionHacks.setPrivate(o, CharacterOption.class, "buttonImg", ImageMaster.CHAR_SELECT_LOCKED);
+ }
+ villainOptions[6] = o;
+
} else if (o.c.chosenClass == GremlinEnum.GREMLIN) {
if (UnlockTracker.isCharacterLocked("Gremlin")) {
o.locked = true;
ReflectionHacks.setPrivate(o, CharacterOption.class, "buttonImg", ImageMaster.CHAR_SELECT_LOCKED);
}
- villainOptions[6] = o;
+ villainOptions[7] = o;
} else if (o.c.chosenClass == TheSnecko.Enums.THE_SNECKO) {
if (UnlockTracker.isCharacterLocked("Snecko")) {
o.locked = true;
ReflectionHacks.setPrivate(o, CharacterOption.class, "buttonImg", ImageMaster.CHAR_SELECT_LOCKED);
}
- villainOptions[7] = o;
+ villainOptions[8] = o;
} else {
isVillain = false;
moddedOptions.add(o);
diff --git a/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java b/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java
new file mode 100644
index 000000000..d605e8219
--- /dev/null
+++ b/src/main/java/downfall/patches/FixInitializeDescriptionCNWidthLogic.java
@@ -0,0 +1,44 @@
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.ByRef;
+import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+
+// This patch, corrects the incorrect text rendering issue for non alphabetic languages(ZHS, JPN, KOR etc) when there exists double space in cards.json
+// For a comparison before and after the patch, visit https://github.com/daviscook477/BaseMod/pull/427
+
+public class FixInitializeDescriptionCNWidthLogic {
+
+ private static float currentWidthStore = -999F; // Initializing to an impossible value for checks, if it becomes any other value it means the value got updated.
+
+ @SpirePatch(
+ clz = AbstractCard.class,
+ method = "initializeDescriptionCN"
+ )
+ public static class InsertBefore {
+ @SpireInsertPatch(
+ rloc = 14,
+ localvars = {"currentWidth"}
+ )
+ public static void Insert(AbstractCard __instance, @ByRef float[] currentWidth) {
+ currentWidthStore = currentWidth[0]; // insert before the assignemnt currentWidth = 0; to store the original width
+ }
+ }
+
+ @SpirePatch(
+ clz = AbstractCard.class,
+ method = "initializeDescriptionCN"
+ )
+ public static class InsertAfter {
+ @SpireInsertPatch(
+ rloc = 15,
+ localvars = {"currentWidth","word","sbuilder"}
+ )
+ public static void Insert(AbstractCard __instance, @ByRef float[] currentWidth, @ByRef String[] word, @ByRef StringBuilder[] sbuilder) {
+ if(sbuilder[0].length() != 0 && currentWidthStore != -999F) currentWidth[0] = currentWidthStore ; // restores the width back if the width was set to 0 incorrectly
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/GlobalOnCardUsePatch.java b/src/main/java/downfall/patches/GlobalOnCardUsePatch.java
index b7cf776a0..42ff479d7 100644
--- a/src/main/java/downfall/patches/GlobalOnCardUsePatch.java
+++ b/src/main/java/downfall/patches/GlobalOnCardUsePatch.java
@@ -1,5 +1,6 @@
package downfall.patches;
+import awakenedOne.AwakenedOneMod;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
@@ -13,6 +14,7 @@
)
public class GlobalOnCardUsePatch {
public static void Prefix(CardGroup __instance, AbstractCard abstractCard) {
+
if(activeGhostFlame == null) return;
if (!activeGhostFlame.charged && renderFlames && activeGhostFlame.advanceOnCardUse)
activeGhostFlame.advanceTrigger(abstractCard);
diff --git a/src/main/java/downfall/patches/HecktoplasmPatch.java b/src/main/java/downfall/patches/HecktoplasmPatch.java
new file mode 100644
index 000000000..2f98e5f7a
--- /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] = 0;
+ }
+ }
+}
diff --git a/src/main/java/downfall/patches/MetricsPatches.java b/src/main/java/downfall/patches/MetricsPatches.java
index 1da78aebc..63520f84d 100644
--- a/src/main/java/downfall/patches/MetricsPatches.java
+++ b/src/main/java/downfall/patches/MetricsPatches.java
@@ -1,45 +1,44 @@
-//package downfall.patches;
-//
-//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
-//import com.megacrit.cardcrawl.core.Settings;
-//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-//import com.megacrit.cardcrawl.metrics.Metrics;
-//import com.megacrit.cardcrawl.screens.GameOverScreen;
-//import downfall.downfallMod;
-//import org.apache.logging.log4j.LogManager;
-//import org.apache.logging.log4j.Logger;
-//
-//import java.lang.reflect.InvocationTargetException;
-//import java.lang.reflect.Method;
-// disabled metric during beta since it get constant changes
-//public class MetricsPatches {
-//
-// private static final Logger logger = LogManager.getLogger(MetricsPatches.class);
-// private static final String url = "http://downfallstats.atwebpages.com/beta/";
-//
-// @SpirePatch(clz = GameOverScreen.class, method = "shouldUploadMetricData")
-// public static class ShouldUploadMetricData {
-// public static boolean Postfix(boolean returnValue) {
-// if (downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
-// returnValue = Settings.UPLOAD_DATA;
-// }
-// return returnValue;
-// }
-// }
-//
-// @SpirePatch(clz = Metrics.class, method = "run")
-// public static class RunPatch {
-// public static void Postfix(Metrics metrics) {
-// if (metrics.type == Metrics.MetricRequestType.UPLOAD_METRICS && downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
-// try {
-// Method m = Metrics.class.getDeclaredMethod("sendPost", String.class, String.class);
-// m.setAccessible(true);
-// m.invoke(metrics, url, null);
-// } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
-// logger.error("Exception while sending metrics", e);
-// }
-// }
-// }
-//
-// }
-//}
\ No newline at end of file
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.metrics.Metrics;
+import com.megacrit.cardcrawl.screens.GameOverScreen;
+import downfall.downfallMod;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class MetricsPatches {
+
+ private static final Logger logger = LogManager.getLogger(MetricsPatches.class);
+ private static final String url = "http://downfallstats.atwebpages.com/beta/";
+
+ @SpirePatch(clz = GameOverScreen.class, method = "shouldUploadMetricData")
+ public static class ShouldUploadMetricData {
+ public static boolean Postfix(boolean returnValue) {
+ if (downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
+ returnValue = Settings.UPLOAD_DATA;
+ }
+ return returnValue;
+ }
+ }
+@SpirePatch(clz = Metrics.class, method = "run")
+ public static class RunPatch {
+ public static void Postfix(Metrics metrics) {
+ if (metrics.type == Metrics.MetricRequestType.UPLOAD_METRICS && downfallMod.isDownfallCharacter(AbstractDungeon.player)) {
+ try {
+ Method m = Metrics.class.getDeclaredMethod("sendPost", String.class, String.class);
+ m.setAccessible(true);
+ m.invoke(metrics, url, null);
+ } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
+ logger.error("Exception while sending metrics", e);
+ }
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/RelicOverrides.java b/src/main/java/downfall/patches/RelicOverrides.java
index 01a28248f..7ff17b083 100644
--- a/src/main/java/downfall/patches/RelicOverrides.java
+++ b/src/main/java/downfall/patches/RelicOverrides.java
@@ -1,26 +1,34 @@
package downfall.patches;
-import basemod.BaseMod;
+import automaton.relics.BottledCode;
+import awakenedOne.relics.MoonTalisman;
import basemod.ReflectionHacks;
-import basemod.abstracts.DynamicVariable;
-import basemod.helpers.dynamicvariables.BlockVariable;
-import basemod.helpers.dynamicvariables.DamageVariable;
-import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.CardModifierPatches;
-import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.RenderCustomDynamicVariableCN;
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import champ.ChampChar;
+import champ.relics.SignatureFinisher;
+import collector.relics.BottledCollectible;
import com.evacipated.cardcrawl.modthespire.lib.*;
import com.evacipated.cardcrawl.modthespire.patcher.PatchingException;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.localization.RelicStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.relics.*;
import downfall.downfallMod;
+import downfall.relics.BlackCandle;
import downfall.util.TextureLoader;
-import javassist.CannotCompileException;
-import javassist.CtBehavior;
+import guardian.relics.BottledAnomaly;
+import guardian.relics.BottledStasis;
+import guardian.relics.StasisEgg;
+import javassist.*;
+import sneckomod.relics.D8;
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,225 @@ 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= BottledFlame.class,
+// method="onEquip"
+// )
+// public static class BottledFlamePatch {
+// @SpirePrefixPatch
+// public static void Prefix(BottledFlame _instance) {
+//
+// CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+//
+// for (AbstractCard c : AbstractDungeon.player.masterDeck.getPurgeableCards().getAttacks().group) {
+// if (!isDownfallBottle(c)) {
+// tmp.addToTop(c);
+// }
+// }
+//
+// if (tmp.size() > 0) {
+// //this.cardSelected = false;
+// if (AbstractDungeon.isScreenUp) {
+// AbstractDungeon.dynamicBanner.hide();
+// AbstractDungeon.overlayMenu.cancelButton.hide();
+// AbstractDungeon.previousScreen = AbstractDungeon.screen;
+// }
+//
+// AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.INCOMPLETE;
+// AbstractDungeon.gridSelectScreen.open(tmp, 1, _instance.DESCRIPTIONS[1] + _instance.name + LocalizedStrings.PERIOD, false, false, false, false);
+// }
+// }
+// }
+
+ // public CardGroup getPurgeableCards() {
+ // CardGroup retVal = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ // Iterator var2 = this.group.iterator();
+ //
+ // while(var2.hasNext()) {
+ // AbstractCard c = (AbstractCard)var2.next();
+ // if (!c.cardID.equals("Necronomicurse") && !c.cardID.equals("CurseOfTheBell") && !c.cardID.equals("AscendersBane")) {
+ // retVal.group.add(c);
+ // }
+ // }
+ //
+ // return retVal;
+ // }
+
+ //todo: make not a war crime
+ @SpirePatch(
+ clz = CardGroup.class,
+ method = "getPurgeableCards"
+ )
+ public static class CardGroup_getPurgeableCards {
+ public CardGroup_getPurgeableCards() {
+ }
+ @SpirePostfixPatch
+ public static CardGroup Postfix(CardGroup __result, CardGroup __instance) {
+ if (UnbottledBottles()) {
+
+ __result.group.removeIf((c) -> {
+ return (isDownfallBottle(c) && (__result.size() > 1));
+ });
+ }
+
+ return __result;
+ }
+ }
+
+ //todo: some of the worst code I've ever written, fix before release IMPORTANT
+ public static boolean UnbottledBottles() {
+ boolean result = false;
+ RelicStrings strings;
+
+ if (AbstractDungeon.player.hasRelic(BottledFlame.ID)) {
+ BottledFlame a = (BottledFlame) AbstractDungeon.player.getRelic(BottledFlame.ID);
+ strings = CardCrawlGame.languagePack.getRelicStrings(BottledFlame.ID);
+ if (a.description == strings.DESCRIPTIONS[0]) {
+ result = true;
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledLightning.ID)) {
+ BottledLightning a = (BottledLightning) AbstractDungeon.player.getRelic(BottledLightning.ID);
+ strings = CardCrawlGame.languagePack.getRelicStrings(BottledLightning.ID);
+ if (a.description == strings.DESCRIPTIONS[0]) {
+ result = true;
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledTornado.ID)) {
+ BottledTornado a = (BottledTornado) AbstractDungeon.player.getRelic(BottledTornado.ID);
+ strings = CardCrawlGame.languagePack.getRelicStrings(BottledTornado.ID);
+ if (a.description == strings.DESCRIPTIONS[0]) {
+ result = true;
+ }
+ }
+
+ return result;
+ }
+
+ public static boolean isDownfallBottle (AbstractCard card) {
+ boolean result = false;
+ if (AbstractDungeon.player.hasRelic(SignatureFinisher.ID)) {
+ SignatureFinisher a = (SignatureFinisher) AbstractDungeon.player.getRelic(SignatureFinisher.ID);
+ if (a.card != null) {
+ if (card.uuid == a.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledStasis.ID)) {
+ BottledStasis b = (BottledStasis) AbstractDungeon.player.getRelic(BottledStasis.ID);
+ if (b.card != null) {
+ if (card.uuid == b.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledAnomaly.ID)) {
+ BottledAnomaly crelic = (BottledAnomaly) AbstractDungeon.player.getRelic(BottledAnomaly.ID);
+ if (crelic.card != null) {
+ if (card.uuid == crelic.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(MoonTalisman.ID)) {
+ MoonTalisman d = (MoonTalisman) AbstractDungeon.player.getRelic(MoonTalisman.ID);
+ if (d.card != null) {
+ if (card.uuid == d.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledCollectible.ID)) {
+ BottledCollectible e = (BottledCollectible) AbstractDungeon.player.getRelic(BottledCollectible.ID);
+ if (e.card != null) {
+ if (card.uuid == e.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(D8.ID)) {
+ D8 f = (D8) AbstractDungeon.player.getRelic(D8.ID);
+ if (f.card != null) {
+ if (card.uuid == f.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(BottledCode.ID)) {
+ BottledCode g = (BottledCode) AbstractDungeon.player.getRelic(BottledCode.ID);
+ if (g.card != null) {
+ if (card.uuid == g.card.uuid) {
+ result = true;
+ }
+ }
+ }
+
+ if (AbstractDungeon.player.hasRelic(StasisEgg.ID)) {
+ StasisEgg s = (StasisEgg) AbstractDungeon.player.getRelic(StasisEgg.ID);
+ if (s.card != null) {
+ if (card.uuid == s.card.uuid) {
+ result = true;
+ }
+ }
+ }
+ return result;
+ }
+
+
+ @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 +278,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 +289,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 +352,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 +371,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 +390,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 +406,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 +425,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 +442,7 @@ public static class EctoTitle {
locator = Locator.class
)
public static void Insert(AbstractRelic __instance,String setId, String imgName, AbstractRelic.RelicTier tier, AbstractRelic.LandingSound sfx) {
- if(Objects.equals(__instance.relicId, "Ectoplasm") && EvilModeCharacterSelect.evilMode) {
+ if(Objects.equals(__instance.relicId, "Ectoplasm") && evilMode) {
ReflectionHacks.setPrivateFinal(__instance, AbstractRelic.class, "relicStrings", CardCrawlGame.languagePack.getRelicStrings("downfall:Hecktoplasm").NAME);
}
diff --git a/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java b/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
index ca69a3ddc..d0e885715 100644
--- a/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
+++ b/src/main/java/downfall/patches/ReplaceHeartKillBonusPatch.java
@@ -3,14 +3,18 @@
import basemod.ReflectionHacks;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.screens.GameOverScreen;
import com.megacrit.cardcrawl.screens.GameOverStat;
import com.megacrit.cardcrawl.screens.VictoryScreen;
import downfall.downfallMod;
+import theHexaghost.relics.TheBrokenSeal;
import java.util.ArrayList;
+import static downfall.patches.DeathScreenScoreBonusesPatch.uiStrings2;
+
public class ReplaceHeartKillBonusPatch {
public static String CHECKAGAINST = CardCrawlGame.languagePack.getScoreString("Heartbreaker").NAME;
@@ -35,6 +39,11 @@ public static void Postfix(VictoryScreen __instance) {
stats.remove(idx);
stats.add(idx, new GameOverStat(uiStrings.TEXT[0], uiStrings.TEXT[1], Integer.toString(250)));
}
- }
- }
-}
\ No newline at end of file
+ // ArrayList stats2 = ReflectionHacks.getPrivate(__instance, GameOverScreen.class, "stats");
+ // if (AbstractDungeon.player.hasRelic(TheBrokenSeal.ID)) {
+ // stats2.add(stats2.size()-2, new GameOverStat(uiStrings2.TEXT[0], uiStrings2.TEXT[1], Integer.toString(333)));
+ // }
+
+ }
+ }
+ }
diff --git a/src/main/java/downfall/patches/RestrictCardColor.java b/src/main/java/downfall/patches/RestrictCardColor.java
index efff7c1c7..068914335 100644
--- a/src/main/java/downfall/patches/RestrictCardColor.java
+++ b/src/main/java/downfall/patches/RestrictCardColor.java
@@ -1,5 +1,6 @@
package downfall.patches;
+import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -7,30 +8,41 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import hermit.characters.hermit;
+import sneckomod.SneckoMod;
+import theHexaghost.HexaMod;
@SpirePatch(clz = CardLibrary.class, method = "getAnyColorCard", paramtypez = {AbstractCard.CardRarity.class})
public class RestrictCardColor {
- public static AbstractCard.CardColor[] vanillaColors = new AbstractCard.CardColor[]{AbstractCard.CardColor.RED, AbstractCard.CardColor.GREEN, AbstractCard.CardColor.BLUE, AbstractCard.CardColor.PURPLE, AbstractCard.CardColor.COLORLESS, AbstractCard.CardColor.CURSE, hermit.Enums.COLOR_YELLOW};
+ // Instead of banning non Hero cards like it did previously,
+ // this bans cards that are additionally banned for Snecko. I was very harsh with banning useless
+ // cards from Snecko so it should be fine-ish to play with.
+ // If this still makes prismatic shard bad we can just revert it to the old version again.
+ //public static AbstractCard.CardColor[] vanillaColors = new AbstractCard.CardColor[]{AbstractCard.CardColor.RED, AbstractCard.CardColor.GREEN, AbstractCard.CardColor.BLUE, AbstractCard.CardColor.PURPLE, AbstractCard.CardColor.COLORLESS, AbstractCard.CardColor.CURSE, hermit.Enums.COLOR_YELLOW};
@SpireInsertPatch(rloc = 10, localvars = {"anyCard"})
public static void Insert(AbstractCard.CardRarity rarity, CardGroup anyCard) {
CardGroup cardsToRemove = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+
for (AbstractCard card : anyCard.group) {
boolean available = false;
if (card.color == AbstractDungeon.player.getCardColor()) {
available = true;
- } else {
- for (AbstractCard.CardColor color : vanillaColors) {
- if (card.color == color) {
- available = true;
- break;
- }
- }
}
- if (!available)
+ else if (!card.hasTag(SneckoMod.BANNEDFORSNECKO) && !card.hasTag(HexaMod.GHOSTWHEELCARD)) {
+ available = true;
+ }
+
+ //PLEASE WORK
+ if (card.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE){
+ available = false;
+ }
+
+ if (!available) {
cardsToRemove.addToBottom(card);
+ }
}
- for (AbstractCard card : cardsToRemove.group)
+ for (AbstractCard card : cardsToRemove.group) {
anyCard.removeCard(card);
+ }
}
}
diff --git a/src/main/java/downfall/patches/RestrictCardColorWithType.java b/src/main/java/downfall/patches/RestrictCardColorWithType.java
index 1a8f64018..3e0ec1176 100644
--- a/src/main/java/downfall/patches/RestrictCardColorWithType.java
+++ b/src/main/java/downfall/patches/RestrictCardColorWithType.java
@@ -1,18 +1,23 @@
package downfall.patches;
+import collector.patches.CollectiblesPatches.CollectibleCardColorEnumPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
-import hermit.characters.hermit;
-
-import static downfall.patches.RestrictCardColor.vanillaColors;
+import sneckomod.SneckoMod;
+import theHexaghost.HexaMod;
@SpirePatch(clz = CardLibrary.class, method = "getAnyColorCard", paramtypez = {AbstractCard.CardType.class, AbstractCard.CardRarity.class})
public class RestrictCardColorWithType {
+ // Instead of banning non Hero cards like it did previously,
+ // this bans cards that are additionally banned for Snecko. I was very harsh with banning useless
+ // cards from Snecko so it should be fine-ish to play with.
+ // If this still makes prismatic shard bad we can just revert it to the old version again.
+
@SpireInsertPatch(rloc = 11, localvars = {"anyCard"})
public static void Insert(AbstractCard.CardType type, AbstractCard.CardRarity rarity, CardGroup anyCard) {
CardGroup cardsToRemove = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
@@ -20,18 +25,21 @@ public static void Insert(AbstractCard.CardType type, AbstractCard.CardRarity ra
boolean available = false;
if (card.color == AbstractDungeon.player.getCardColor()) {
available = true;
- } else {
- for (AbstractCard.CardColor color : vanillaColors) {
- if (card.color == color) {
- available = true;
- break;
- }
- }
- }
- if (!available)
- cardsToRemove.addToBottom(card);
- }
- for (AbstractCard card : cardsToRemove.group)
- anyCard.removeCard(card);
+ }
+ else if (!card.hasTag(SneckoMod.BANNEDFORSNECKO) && !card.hasTag(HexaMod.GHOSTWHEELCARD)) {
+ available = true;
+ }
+
+ if (card.color == CollectibleCardColorEnumPatch.CardColorPatch.COLLECTIBLE){
+ available = false;
+ }
+
+ if (!available) {
+ cardsToRemove.addToBottom(card);
+ }
+ }
+ for (AbstractCard card : cardsToRemove.group) {
+ anyCard.removeCard(card);
+ }
}
}
diff --git a/src/main/java/downfall/patches/ReturnRandomScreenlessRelicPatch.java b/src/main/java/downfall/patches/ReturnRandomScreenlessRelicPatch.java
new file mode 100644
index 000000000..9d696f688
--- /dev/null
+++ b/src/main/java/downfall/patches/ReturnRandomScreenlessRelicPatch.java
@@ -0,0 +1,52 @@
+//package downfall.patches;
+//
+//import awakenedOne.relics.MoonTalisman;
+//import champ.relics.*;
+//import collector.relics.BottledCollectible;
+//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+//import com.evacipated.cardcrawl.modthespire.lib.SpirePostfixPatch;
+//import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+//import com.megacrit.cardcrawl.helpers.RelicLibrary;
+//import com.megacrit.cardcrawl.relics.AbstractRelic;
+//import guardian.GuardianMod;
+//import guardian.relics.BottledAnomaly;
+//import guardian.relics.BottledStasis;
+//import guardian.relics.GemstoneGun;
+//import guardian.relics.PickAxe;
+//import sneckomod.relics.SneckoCommon;
+//
+//import java.util.ArrayList;
+//import java.util.Objects;
+//
+//import static com.megacrit.cardcrawl.dungeons.AbstractDungeon.returnRandomRelicKey;
+//
+//@SpirePatch(
+// clz = AbstractDungeon.class,
+// method = "returnRandomScreenlessRelic"
+//)
+//public class ReturnRandomScreenlessRelicPatch {
+// @SpirePostfixPatch
+// public static void Postfix(AbstractDungeon __instance, AbstractRelic relic) {
+//
+// //I'm going to assume that this thing isn't going to be used to ask for event or boss relics
+// //so I'm not going to include thEm
+//
+//
+// AbstractRelic tmpRelic;
+// for(tmpRelic = RelicLibrary.getRelic(returnRandomRelicKey(relic.tier)).makeCopy();
+// Objects.equals(tmpRelic.relicId, "Bottled Flame") ||
+// (Objects.equals(tmpRelic.relicId, PickAxe.ID) && AbstractDungeon.getCurrRoom().eliteTrigger) ||
+// Objects.equals(tmpRelic.relicId, SneckoCommon.ID) ||
+// Objects.equals(tmpRelic.relicId, BottledStasis.ID) ||
+// Objects.equals(tmpRelic.relicId, BottledAnomaly.ID) ||
+// Objects.equals(tmpRelic.relicId, GemstoneGun.ID) ||
+// Objects.equals(tmpRelic.relicId, SignatureFinisher.ID) ||
+// Objects.equals(tmpRelic.relicId, BottledCollectible.ID) ||
+// Objects.equals(tmpRelic.relicId, MoonTalisman.ID) ||
+// Objects.equals(tmpRelic.relicId, "Bottled Lightning") || Objects.equals(tmpRelic.relicId, "Bottled Tornado") || Objects.equals(tmpRelic.relicId, "Whetstone"); tmpRelic = RelicLibrary.getRelic(returnRandomRelicKey(relic.tier)).makeCopy()) {
+// }
+//
+// relic = tmpRelic;
+//
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/SpireShieldPatch.java b/src/main/java/downfall/patches/SpireShieldPatch.java
new file mode 100644
index 000000000..2f5ed3d6e
--- /dev/null
+++ b/src/main/java/downfall/patches/SpireShieldPatch.java
@@ -0,0 +1,48 @@
+package downfall.patches;
+
+import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.RollMoveAction;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.ending.SpireShield;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import guardian.characters.GuardianCharacter;
+import slimebound.characters.SlimeboundCharacter;
+import slimebound.powers.PotencyPower;
+import sneckomod.TheSnecko;
+import theHexaghost.TheHexaghost;
+import theHexaghost.powers.EnhancePower;
+
+
+//thanks to ocean for the code from cranky mod
+@SpirePatch(clz=SpireShield.class, method="takeTurn")
+public class SpireShieldPatch {
+ @SpireInsertPatch(rloc=8)
+ public static SpireReturn Insert(SpireShield __instance) {
+ if ((AbstractDungeon.player instanceof SlimeboundCharacter || AbstractDungeon.player instanceof TheHexaghost || AbstractDungeon.player instanceof TheSnecko) && AbstractDungeon.aiRng.randomBoolean()) {
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter && !AbstractDungeon.player.orbs.isEmpty()) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new PotencyPower(AbstractDungeon.player, __instance, -1)));
+ }
+
+ if (AbstractDungeon.player instanceof SlimeboundCharacter && (AbstractDungeon.player.orbs.isEmpty())) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new StrengthPower(AbstractDungeon.player, -1)));
+ }
+
+ if (AbstractDungeon.player instanceof TheHexaghost) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new EnhancePower(-1), -1));
+ }
+
+ if (AbstractDungeon.player instanceof TheSnecko || AbstractDungeon.player instanceof GuardianCharacter) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, __instance, new StrengthPower(AbstractDungeon.player, -1)));
+ }
+
+ AbstractDungeon.actionManager.addToBottom(new RollMoveAction(__instance));
+ return SpireReturn.Return();
+ }
+
+ return SpireReturn.Continue();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/patches/VictoryScreenUnlockPatch.java b/src/main/java/downfall/patches/VictoryScreenUnlockPatch.java
index c1a1b9999..47b0d3b67 100644
--- a/src/main/java/downfall/patches/VictoryScreenUnlockPatch.java
+++ b/src/main/java/downfall/patches/VictoryScreenUnlockPatch.java
@@ -1,7 +1,9 @@
package downfall.patches;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
+import collector.CollectorChar;
import com.evacipated.cardcrawl.modthespire.lib.*;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -53,18 +55,25 @@ public static SpireReturn Insert(VictoryScreen __instance) {
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Automaton Unlock screen!");
return SpireReturn.Return(null);
- } else if ((UnlockTracker.isCharacterLocked("Gremlin")) && (AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON)) {
- AbstractDungeon.unlocks.add(new GremlinUnlock());
+ } else if ((UnlockTracker.isCharacterLocked("Collector")) && (AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON)) {
+ AbstractDungeon.unlocks.add(new CollectorUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
////SlimeboundMod.logger.info("Triggered Gremlin Unlock screen!");
return SpireReturn.Return(null);
- } else if ((UnlockTracker.isCharacterLocked("Snecko")) && (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN)) {
- AbstractDungeon.unlocks.add(new SneckoUnlock());
+
+ } else if ((UnlockTracker.isCharacterLocked("Awakened")) && (AbstractDungeon.player.chosenClass == CollectorChar.Enums.THE_COLLECTOR)) {
+ AbstractDungeon.unlocks.add(new AwakenedUnlock());
AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
- ////SlimeboundMod.logger.info("Triggered Snecko Unlock screen!");
+ ////SlimeboundMod.logger.info("Triggered Gremlin Unlock screen!");
return SpireReturn.Return(null);
- } else if ((UnlockTracker.isCharacterLocked("Collector") && (AbstractDungeon.player.chosenClass == TheSnecko.Enums.THE_SNECKO))) {
- AbstractDungeon.unlocks.add(new CollectorUnlock());
+
+
+ } else if ((UnlockTracker.isCharacterLocked("Gremlin")) && (AbstractDungeon.player.chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE)) {
+ AbstractDungeon.unlocks.add(new GremlinUnlock());
+ AbstractDungeon.unlockScreen.open((AbstractUnlock) AbstractDungeon.unlocks.remove(0));
+ return SpireReturn.Return(null);
+ } else if ((UnlockTracker.isCharacterLocked("Snecko") && (AbstractDungeon.player.chosenClass == GremlinEnum.GREMLIN))) {
+ AbstractDungeon.unlocks.add(new SneckoUnlock());
AbstractDungeon.unlockScreen.open(AbstractDungeon.unlocks.remove(0));
return SpireReturn.Return(null);
}
diff --git a/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java b/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
index 58302a79a..39282a700 100644
--- a/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
+++ b/src/main/java/downfall/patches/rooms/ShopRoomReplacePatch.java
@@ -35,8 +35,8 @@ public static void Postfix(ArrayList roomList, int availableRoomCo
roomList.add(new HeartShopRoom());
}
roomList.removeAll(shopRooms);
+ System.out.println("Shop rooms replaced with HeartShopRoom.");
}
-
}
}
@@ -51,6 +51,7 @@ public static SpireReturn Prefix(AbstractDungeon __instance, Event
if (EvilModeCharacterSelect.evilMode) {
if (roomType == EventHelper.RoomResult.SHOP) {
+ System.out.println("Replacing SHOP room with HeartShopRoom.");
return SpireReturn.Return(new HeartShopRoom());
}
}
@@ -59,7 +60,6 @@ public static SpireReturn Prefix(AbstractDungeon __instance, Event
}
}
-
@SpirePatch(
clz = RoomTypeAssigner.class,
method = "ruleParentMatches",
@@ -71,6 +71,7 @@ public static void patch(ArrayList parents, AbstractRoom roomToBeSe
if (EvilModeCharacterSelect.evilMode) {
applicableRooms[0] = new ArrayList<>(applicableRooms[0]);
applicableRooms[0].add(HeartShopRoom.class);
+ System.out.println("Added HeartShopRoom to applicableRooms.");
}
}
}
@@ -86,8 +87,8 @@ public static void patch(ArrayList parents, AbstractRoom roomToBeSe
if (EvilModeCharacterSelect.evilMode) {
applicableRooms[0] = new ArrayList<>(applicableRooms[0]);
applicableRooms[0].add(HeartShopRoom.class);
+ System.out.println("Added HeartShopRoom to sibling applicableRooms.");
}
}
}
}
-
diff --git a/src/main/java/downfall/patches/ui/map/FlipMap.java b/src/main/java/downfall/patches/ui/map/FlipMap.java
index 9697c03dd..c65bc5c9e 100644
--- a/src/main/java/downfall/patches/ui/map/FlipMap.java
+++ b/src/main/java/downfall/patches/ui/map/FlipMap.java
@@ -16,9 +16,11 @@
import com.megacrit.cardcrawl.map.MapEdge;
import com.megacrit.cardcrawl.map.MapRoomNode;
import com.megacrit.cardcrawl.map.RoomTypeAssigner;
+import com.megacrit.cardcrawl.potions.AbstractPotion;
import com.megacrit.cardcrawl.rooms.*;
import com.megacrit.cardcrawl.screens.DungeonMapScreen;
import com.megacrit.cardcrawl.ui.buttons.DynamicBanner;
+import com.megacrit.cardcrawl.ui.panels.TopPanel;
import downfall.downfallMod;
import downfall.patches.EvilModeCharacterSelect;
import downfall.patches.actlikeit.MapCompatiblity;
@@ -31,6 +33,7 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import java.lang.reflect.Field;
import java.util.*;
public class FlipMap {
@@ -636,4 +639,109 @@ public void edit(MethodCall m) throws CannotCompileException {
}
}
}
-}
+ @SpirePatch(
+ clz = DungeonMapScreen.class,
+ method = "updateControllerInput"
+ )
+ public static class FixDownfallControllerInput {
+ private static Field visibleMapNodesField;
+ private static MapRoomNode lastSelectedNode;
+
+ static {
+ try {
+ visibleMapNodesField = DungeonMapScreen.class.getDeclaredField("visibleMapNodes");
+ visibleMapNodesField.setAccessible(true);
+ } catch (NoSuchFieldException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SpireInsertPatch(
+ locator = Locator.class,
+ localvars = {"nodes", "index", "anyHovered"}
+ )
+ public static void Insert(DungeonMapScreen __instance, ArrayList nodes, @ByRef int[] index, @ByRef boolean[] anyHovered) {
+ if (EvilModeCharacterSelect.evilMode && !invalidActs.contains(AbstractDungeon.id) && !AbstractDungeon.firstRoomChosen) {
+ try {
+ @SuppressWarnings("unchecked")
+ ArrayList visibleMapNodes = (ArrayList) visibleMapNodesField.get(__instance);
+ nodes.clear();
+ for (MapRoomNode n : visibleMapNodes) {
+ if (n.y == FlipMap.MapFlipper.startY) {
+ nodes.add(n);
+ }
+ }
+
+ anyHovered[0] = false;
+
+ for (int i = 0; i < nodes.size(); i++) {
+ if (nodes.get(i).hb.hovered) {
+ index[0] = i;
+ anyHovered[0] = true;
+ lastSelectedNode = nodes.get(i);
+ break;
+ }
+ }
+
+ if (!anyHovered[0]) {
+ if (lastSelectedNode != null && nodes.contains(lastSelectedNode)) {
+ index[0] = nodes.indexOf(lastSelectedNode);
+ } else if (!nodes.isEmpty()) {
+ index[0] = nodes.size() / 2;
+ lastSelectedNode = nodes.get(index[0]);
+ }
+
+ if (!nodes.isEmpty()) {
+ Gdx.input.setCursorPosition((int)nodes.get(index[0]).hb.cX, Settings.HEIGHT - (int)nodes.get(index[0]).hb.cY);
+ __instance.mapNodeHb = nodes.get(index[0]).hb;
+ }
+ }
+
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private static class Locator extends SpireInsertLocator {
+ @Override
+ public int[] Locate(CtBehavior ctMethodToPatch) throws Exception {
+ Matcher finalMatcher = new Matcher.MethodCallMatcher(ArrayList.class, "isEmpty");
+ return LineFinder.findInOrder(ctMethodToPatch, finalMatcher);
+ }
+ }
+ }
+ @SpirePatch(clz = TopPanel.class, method = "update")
+ public static class DisableTopPanelHoveringPatch {
+ @SpireInsertPatch(locator = Locator.class)
+ public static void Insert(TopPanel __instance) {
+ if (Settings.isControllerMode && EvilModeCharacterSelect.evilMode && !__instance.selectPotionMode) {
+ __instance.goldHb.hovered = false;
+
+ for (AbstractPotion potion : AbstractDungeon.player.potions) {
+ potion.hb.hovered = false;
+ }
+ }
+ }
+
+ private static class Locator extends SpireInsertLocator {
+ @Override
+ public int[] Locate(CtBehavior ctBehavior) throws Exception {
+ Matcher finalMatcher = new Matcher.MethodCallMatcher(TopPanel.class, "updateButtons");
+ return LineFinder.findInOrder(ctBehavior, finalMatcher);
+ }
+ }
+ }
+
+ @SpirePatch(clz = TopPanel.class, method = "updateAscensionHover")
+ public static class DisableAscensionHoveringPatch {
+ @SpirePrefixPatch
+ public static SpireReturn Prefix(TopPanel __instance) {
+ if (Settings.isControllerMode && EvilModeCharacterSelect.evilMode && !__instance.selectPotionMode) {
+ __instance.ascensionHb.hovered = false;
+ return SpireReturn.Return(null);
+ }
+ return SpireReturn.Continue();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java b/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
index 913ec8f68..22cf21d02 100644
--- a/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
+++ b/src/main/java/downfall/powers/ExhaustEndOfTurnPower.java
@@ -29,7 +29,7 @@ public class ExhaustEndOfTurnPower extends AbstractPower implements CloneablePow
public ExhaustEndOfTurnPower(AbstractCreature owner) {
this.ID = POWER_ID;
this.owner = owner;
- this.type = PowerType.BUFF;
+ this.type = PowerType.DEBUFF;
this.isTurnBased = true;
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
diff --git a/src/main/java/downfall/powers/NextTurnPowerPower.java b/src/main/java/downfall/powers/NextTurnPowerPower.java
index 83e201bb8..6f8cffe39 100644
--- a/src/main/java/downfall/powers/NextTurnPowerPower.java
+++ b/src/main/java/downfall/powers/NextTurnPowerPower.java
@@ -8,8 +8,11 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import downfall.downfallMod;
+import static champ.ChampMod.vigor;
+
public class NextTurnPowerPower extends AbstractPower {
private AbstractPower powerToGain;
private static PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(downfallMod.makeID("NextTurnPowerPower"));
@@ -43,7 +46,12 @@ public void stackPower(int stackAmount) {
@Override
public void atStartOfTurn() {
flash();
- addToBot(new ApplyPowerAction(owner, owner, powerToGain, powerToGain.amount));
+ if (powerToGain.ID != VigorPower.POWER_ID) {
+ addToBot(new ApplyPowerAction(owner, owner, powerToGain, powerToGain.amount));
+ }
+ if (powerToGain.ID == VigorPower.POWER_ID) {
+ vigor(amount);
+ }
addToBot(new RemoveSpecificPowerAction(owner, owner, this.ID));
}
diff --git a/src/main/java/downfall/powers/TransformDrawnCardsPower.java b/src/main/java/downfall/powers/TransformDrawnCardsPower.java
index a5bcbc1f9..aac651288 100644
--- a/src/main/java/downfall/powers/TransformDrawnCardsPower.java
+++ b/src/main/java/downfall/powers/TransformDrawnCardsPower.java
@@ -32,7 +32,7 @@ public TransformDrawnCardsPower(final AbstractCreature owner, final int amount)
this.ID = POWER_ID;
this.owner = owner;
this.amount = amount;
- this.type = PowerType.BUFF;
+ this.type = PowerType.DEBUFF;
this.isTurnBased = true;
this.name = NAME;
diff --git a/src/main/java/downfall/powers/gauntletpowers/OnDeathEveryoneVigor.java b/src/main/java/downfall/powers/gauntletpowers/OnDeathEveryoneVigor.java
index 3ed7967de..f20c6f9a3 100644
--- a/src/main/java/downfall/powers/gauntletpowers/OnDeathEveryoneVigor.java
+++ b/src/main/java/downfall/powers/gauntletpowers/OnDeathEveryoneVigor.java
@@ -13,6 +13,8 @@
import downfall.downfallMod;
import downfall.util.TextureLoader;
+import static champ.ChampMod.vigor;
+
public class OnDeathEveryoneVigor extends AbstractPower {
public static final String POWER_ID = downfallMod.makeID("OnDeathEveryoneVigor");
public static final String NAME = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).NAME;
@@ -40,7 +42,8 @@ public OnDeathEveryoneVigor(final AbstractCreature owner, final int amount) {
@Override
public void onDeath() {
flash();
- addToBot(new ApplyPowerAction(AbstractDungeon.player, this.owner, new VigorPower(AbstractDungeon.player, amount), amount));
+ vigor(amount);
+ //addToBot(new ApplyPowerAction(AbstractDungeon.player, this.owner, new VigorPower(AbstractDungeon.player, amount), amount));
for(AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
if (!m.isDying && !m.isDead) {
addToBot(new ApplyPowerAction(m, this.owner, new MonsterVigor(m, amount), amount));
diff --git a/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java b/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
index 40b633a7e..fdf03ca11 100644
--- a/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
+++ b/src/main/java/downfall/powers/neowpowers/HeartsFavorPower.java
@@ -22,6 +22,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.ArtifactPower;
+import com.megacrit.cardcrawl.powers.BufferPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import downfall.cards.HeartsFavorWish;
import downfall.cards.OctoChoiceCard;
@@ -64,7 +65,12 @@ public void onSpecificTrigger() {
AbstractPlayer p = AbstractDungeon.player;
for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
if (m != null && !m.isDead && !m.isDying && !m.halfDead && m.id == NeowBossFinal.ID) {
- addToBot(new ApplyPowerAction(m, p, new NeowInvulnerablePower(m, -this.amount), -this.amount));
+ if (m.hasPower(NeowInvulnerablePower.POWER_ID)) {
+ int buf = m.getPower(NeowInvulnerablePower.POWER_ID).amount;
+ if (buf > 0) {
+ addToBot(new ApplyPowerAction(m, p, new NeowInvulnerablePower(m, -this.amount), -this.amount));
+ }
+ }
}
}
}
diff --git a/src/main/java/downfall/powers/neowpowers/UnbiasedCognition.java b/src/main/java/downfall/powers/neowpowers/UnbiasedCognition.java
index ae848aa06..588ae0464 100644
--- a/src/main/java/downfall/powers/neowpowers/UnbiasedCognition.java
+++ b/src/main/java/downfall/powers/neowpowers/UnbiasedCognition.java
@@ -1,6 +1,5 @@
package downfall.powers.neowpowers;
-import charbosses.bosses.AbstractCharBoss;
import charbosses.cards.AbstractBossCard;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
@@ -9,9 +8,6 @@
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.powers.AbstractPower;
-import com.megacrit.cardcrawl.powers.FocusPower;
import com.megacrit.cardcrawl.powers.StrengthPower;import downfall.downfallMod; import charbosses.powers.bossmechanicpowers.AbstractBossMechanicPower;
import downfall.util.TextureLoader;
diff --git a/src/main/java/downfall/powers/neowpowers/WheelOfDeath.java b/src/main/java/downfall/powers/neowpowers/WheelOfDeath.java
index 02c7f04b4..ed38e904a 100644
--- a/src/main/java/downfall/powers/neowpowers/WheelOfDeath.java
+++ b/src/main/java/downfall/powers/neowpowers/WheelOfDeath.java
@@ -4,16 +4,13 @@
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.actions.utility.UseCardAction;
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.powers.StrengthPower;
import downfall.downfallMod;
import downfall.util.TextureLoader;
-import expansioncontent.powers.DeEnergizedPower;
public class WheelOfDeath extends AbstractBossMechanicPower {
public static final String POWER_ID = downfallMod.makeID("NeowWheelOfDeath");
diff --git a/src/main/java/downfall/relics/BlackCandle.java b/src/main/java/downfall/relics/BlackCandle.java
new file mode 100644
index 000000000..7cb7c30e4
--- /dev/null
+++ b/src/main/java/downfall/relics/BlackCandle.java
@@ -0,0 +1,57 @@
+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 hermit.patches.EnumPatch;
+
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
+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, EnumPatch.HERMIT_GHOSTFIRE));
+ card.exhaust = true;
+ action.exhaustCard = true;
+ } else {
+ if (card.exhaust && card.cost !=0 && card.freeToPlay() && card.cost !=-2) {
+ this.flash();
+ this.addToBot(new LoseHPAction(AbstractDungeon.player, AbstractDungeon.player, 1, EnumPatch.HERMIT_GHOSTFIRE));
+ card.exhaust = true;
+ action.exhaustCard = true;
+ }
+ }
+ }
+ }
+
+ public boolean canSpawn() {
+ // return false;
+ return (evilMode || (AbstractDungeon.player instanceof hermit));
+ }
+
+ public AbstractRelic makeCopy() {
+ return new BlackCandle();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/relics/BurdenOfKnowledge.java b/src/main/java/downfall/relics/BurdenOfKnowledge.java
new file mode 100644
index 000000000..395ca7b66
--- /dev/null
+++ b/src/main/java/downfall/relics/BurdenOfKnowledge.java
@@ -0,0 +1,125 @@
+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.DEPRECATED, LandingSound.MAGICAL);
+ }
+
+ public String getUpdatedDescription() {
+ return this.DESCRIPTIONS[0];
+ }
+
+ //todo: variables
+
+ 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(20);
+ 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 atPreBattle() {
+ 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, -2), -2));
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DexterityPower(AbstractDungeon.player, -2), -2));
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ }
+
+ public AbstractRelic makeCopy() {
+ return new BurdenOfKnowledge();
+ }
+}
diff --git a/src/main/java/downfall/relics/ExtraCursedBell.java b/src/main/java/downfall/relics/ExtraCursedBell.java
index d082663e2..dba86d225 100644
--- a/src/main/java/downfall/relics/ExtraCursedBell.java
+++ b/src/main/java/downfall/relics/ExtraCursedBell.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.relics.*;
import com.megacrit.cardcrawl.rewards.RewardItem;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
import downfall.downfallMod;
@@ -35,7 +36,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));
@@ -44,12 +45,32 @@ public void onEquip() {
public void update() {
super.update();
if (!this.cardsReceived && !AbstractDungeon.isScreenUp) {
+ for (int i = 0; i < 3; i++) {
+ AbstractRelic coolcommon = AbstractDungeon.returnRandomScreenlessRelic(RelicTier.COMMON);
+ //sandtag wanted these relics removed from this things pool
+ if ((coolcommon.relicId == ArtOfWar.ID) ||
+ (coolcommon.relicId == AncientTeaSet.ID) ||
+ (coolcommon.relicId == DreamCatcher.ID) ||
+ (coolcommon.relicId == PotionBelt.ID) ||
+ (coolcommon.relicId == RegalPillow.ID) ||
+ (coolcommon.relicId == Boot.ID) ||
+ (coolcommon.relicId == TinyChest.ID)) {
+ while ((coolcommon.relicId == ArtOfWar.ID) ||
+ (coolcommon.relicId == AncientTeaSet.ID) ||
+ (coolcommon.relicId == DreamCatcher.ID) ||
+ (coolcommon.relicId == PotionBelt.ID) ||
+ (coolcommon.relicId == RegalPillow.ID) ||
+ (coolcommon.relicId == Boot.ID) ||
+ (coolcommon.relicId == TinyChest.ID)) {
+ coolcommon = AbstractDungeon.returnRandomScreenlessRelic(RelicTier.COMMON);
+ }
+ }
+ AbstractDungeon.getCurrRoom().rewards.add(new RewardItem(coolcommon));
+ System.out.println(coolcommon.relicId);
+ }
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.positionRewards();
+ //AbstractDungeon.combatRewardScreen.rewards.clear();
+ //AbstractDungeon.combatRewardScreen.positionRewards();
AbstractDungeon.overlayMenu.proceedButton.setLabel(this.DESCRIPTIONS[2]);
this.cardsReceived = true;
AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.25F;
@@ -60,6 +81,8 @@ public void update() {
CardCrawlGame.sound.playA("souls1", -0.1F);
this.flash();
}
-
}
+
+
+
}
diff --git a/src/main/java/downfall/relics/ExtraCursedKey.java b/src/main/java/downfall/relics/ExtraCursedKey.java
index 089dd12e6..4f10daf85 100644
--- a/src/main/java/downfall/relics/ExtraCursedKey.java
+++ b/src/main/java/downfall/relics/ExtraCursedKey.java
@@ -2,9 +2,15 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.curses.Injury;
+import com.megacrit.cardcrawl.cards.curses.Necronomicurse;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.rooms.TreasureRoom;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
@@ -15,6 +21,7 @@ public class ExtraCursedKey extends CustomRelic {
public static final String ID = downfallMod.makeID("ExtraCursedKey");
private static final Texture IMG = new Texture(downfallMod.assetPath("images/relics/ExtraCursedKey.png"));
private static final Texture OUTLINE = new Texture(downfallMod.assetPath("images/relics/Outline/ExtraCursedKey.png"));
+ private boolean triggeredThisTurn = false;
public ExtraCursedKey() {
super(ID, IMG, OUTLINE, RelicTier.SPECIAL, LandingSound.CLINK);
@@ -37,18 +44,26 @@ public void justEnteredRoom(AbstractRoom room) {
public void onChestOpen(boolean bossChest) {
if (!bossChest) {
- for (int i = 0; i < 2; i++) {
- AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(AbstractDungeon.returnRandomCurse(), (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
+ for (int i = 0; i < 1; i++) {
+ AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(new Injury(), (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
}
}
- public void onEquip() {
- ++AbstractDungeon.player.energy.energyMaster;
+ public void atTurnStart() {
+ this.triggeredThisTurn = false;
}
- public void onUnequip() {
- --AbstractDungeon.player.energy.energyMaster;
+ public void onCardDraw(AbstractCard card) {
+ if (card.color == AbstractCard.CardColor.CURSE) {
+ if (!this.triggeredThisTurn) {
+ this.triggeredThisTurn = true;
+ this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToBot(new GainEnergyAction(1));
+ }
+
+ }
}
}
diff --git a/src/main/java/downfall/relics/HeartBlessingBlue.java b/src/main/java/downfall/relics/HeartBlessingBlue.java
index 1f8efe590..4bdca0440 100644
--- a/src/main/java/downfall/relics/HeartBlessingBlue.java
+++ b/src/main/java/downfall/relics/HeartBlessingBlue.java
@@ -3,9 +3,12 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.common.HealAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import downfall.downfallMod;
+import gremlin.characters.GremlinCharacter;
+import gremlin.patches.GremlinEnum;
public class HeartBlessingBlue extends CustomRelic {
@@ -26,7 +29,13 @@ public String getUpdatedDescription() {
public void atBattleStart() {
if (AbstractDungeon.getCurrRoom().monsters.monsters.stream().anyMatch(q -> q.type == AbstractMonster.EnemyType.BOSS)) {
flash();
- addToBot(new AddTemporaryHPAction(AbstractDungeon.player, AbstractDungeon.player, 10));
+ //addToBot(new AddTemporaryHPAction(AbstractDungeon.player, AbstractDungeon.player, 10));
+ if (AbstractDungeon.player.chosenClass != GremlinEnum.GREMLIN) {
+ this.addToTop(new HealAction(AbstractDungeon.player, AbstractDungeon.player, 10, 0.0F));
+ }
+ else {
+ ((GremlinCharacter)AbstractDungeon.player).healGremlins(2);
+ }
}
}
}
diff --git a/src/main/java/downfall/relics/HeartsMalice.java b/src/main/java/downfall/relics/HeartsMalice.java
index 2f0e1c46a..7a97df785 100644
--- a/src/main/java/downfall/relics/HeartsMalice.java
+++ b/src/main/java/downfall/relics/HeartsMalice.java
@@ -8,6 +8,8 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.rooms.MonsterRoom;
+import com.megacrit.cardcrawl.rooms.ShopRoom;
import downfall.actions.WaitForEscapeAction;
import downfall.downfallMod;
import gremlin.characters.GremlinCharacter;
@@ -28,31 +30,32 @@ public String getUpdatedDescription() {
}
public void atBattleStart() {
- if (this.counter > 0) {
- --this.counter;
- if (this.counter == 0) {
- this.setCounter(-2);
- this.description = this.DESCRIPTIONS[1];
- this.tips.clear();
- this.tips.add(new PowerTip(this.name, this.description));
- this.initializeTips();
- }
+ if (!(AbstractDungeon.getCurrRoom() instanceof ShopRoom)) {
+ if (this.counter > 0) {
+ --this.counter;
+ if (this.counter == 0) {
+ this.setCounter(-2);
+ this.description = this.DESCRIPTIONS[1];
+ this.tips.clear();
+ this.tips.add(new PowerTip(this.name, this.description));
+ this.initializeTips();
+ }
- this.flash();
+ this.flash();
- //AbstractDungeon.actionManager.actions.removeIf((act)->act instanceof DrawCardAction); Works, but may cause issues if somehow not all enemies flee.
- AbstractDungeon.actionManager.addToTop(new WaitForEscapeAction()); //This works better.
- for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
- AbstractDungeon.actionManager.addToTop(new EscapeAction(m));
- }
+ //AbstractDungeon.actionManager.actions.removeIf((act)->act instanceof DrawCardAction); Works, but may cause issues if somehow not all enemies flee.
+ AbstractDungeon.actionManager.addToTop(new WaitForEscapeAction()); //This works better.
+ for (AbstractMonster m : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ AbstractDungeon.actionManager.addToTop(new EscapeAction(m));
+ }
- this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- if(AbstractDungeon.player instanceof GremlinCharacter) {
- ((GremlinCharacter) AbstractDungeon.player).mobState.startOfBattle((GremlinCharacter)AbstractDungeon.player);
+ if (AbstractDungeon.player instanceof GremlinCharacter) {
+ ((GremlinCharacter) AbstractDungeon.player).mobState.startOfBattle((GremlinCharacter) AbstractDungeon.player);
+ }
}
}
-
}
public void setCounter(int setCounter) {
diff --git a/src/main/java/downfall/relics/Hecktoplasm.java b/src/main/java/downfall/relics/Hecktoplasm.java
index 1e7ca3ea3..e8ce07c70 100644
--- a/src/main/java/downfall/relics/Hecktoplasm.java
+++ b/src/main/java/downfall/relics/Hecktoplasm.java
@@ -13,7 +13,8 @@
import downfall.downfallMod;
import downfall.patches.EvilModeCharacterSelect;
-@Deprecated
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
public class Hecktoplasm extends CustomRelic {
public static final String ID = downfallMod.makeID("Hecktoplasm");
@@ -38,7 +39,7 @@ public void onUnequip() {
}
public boolean canSpawn() {
- return (AbstractDungeon.actNum <= 1 && EvilModeCharacterSelect.evilMode);
+ return (AbstractDungeon.actNum <= 1 && evilMode);
}
public AbstractRelic makeCopy() {
diff --git a/src/main/java/downfall/relics/ShatteredFragment.java b/src/main/java/downfall/relics/ShatteredFragment.java
index 1c1799bf8..aab1d278c 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,13 +34,16 @@ 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() ) );
}
+ //Variables
+ public static final int AMOUNT = 1;
+
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
}
// @Override
@@ -30,10 +51,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, AMOUNT), AMOUNT));
+ }
+ }
+ }
+
+
+
+// public void atBattleStart() {
+// boolean isEliteOrBoss = AbstractDungeon.getCurrRoom().eliteTrigger;
+// Iterator var2 = AbstractDungeon.getMonsters().monsters.iterator();
+//
+// while(var2.hasNext()) {
+// AbstractMonster m = (AbstractMonster)var2.next();
+// if (m.type == AbstractMonster.EnemyType.BOSS) {
+// isEliteOrBoss = true;
+// }
+// }
+//
+// if (isEliteOrBoss) {
+// this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+// // AbstractCard q = new AwakenDeath();
+// // addToTop(new EchoACardAction(q, true));
+// atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)AbstractDungeon.player, (AbstractCreature)AbstractDungeon.player, (AbstractPower)new CuriosityPower((AbstractCreature)AbstractDungeon.player, 1), 1));
+//
+// }
+//
+// }
+
}
diff --git a/src/main/java/downfall/tutorials/AutomatonTutorials.java b/src/main/java/downfall/tutorials/AutomatonTutorials.java
new file mode 100644
index 000000000..258b3f96c
--- /dev/null
+++ b/src/main/java/downfall/tutorials/AutomatonTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class AutomatonTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:AutomatonTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public AutomatonTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/AutomatonTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/AutomatonTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/AwakenedOneTutorials.java b/src/main/java/downfall/tutorials/AwakenedOneTutorials.java
new file mode 100644
index 000000000..3dece52ed
--- /dev/null
+++ b/src/main/java/downfall/tutorials/AwakenedOneTutorials.java
@@ -0,0 +1,133 @@
+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;
+
+public class AwakenedOneTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:AwakenedOneTutorials");
+ 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 AwakenedOneTutorials() {
+
+ this.img1 = ImageMaster.loadImage("hermitResources/images/tip/awakened_t1.png");
+ this.img2 = ImageMaster.loadImage("hermitResources/images/tip/awakened_t2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/ChampTutorials.java b/src/main/java/downfall/tutorials/ChampTutorials.java
new file mode 100644
index 000000000..791307e6e
--- /dev/null
+++ b/src/main/java/downfall/tutorials/ChampTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class ChampTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:ChampTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public ChampTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/ChampTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/ChampTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/GremlinsTutorials.java b/src/main/java/downfall/tutorials/GremlinsTutorials.java
new file mode 100644
index 000000000..8a7901b32
--- /dev/null
+++ b/src/main/java/downfall/tutorials/GremlinsTutorials.java
@@ -0,0 +1,135 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+
+public class GremlinsTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:GremlinsTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public GremlinsTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/GremlinsTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/GremlinsTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/SlimeBossTutorials.java b/src/main/java/downfall/tutorials/SlimeBossTutorials.java
new file mode 100644
index 000000000..4486b5e01
--- /dev/null
+++ b/src/main/java/downfall/tutorials/SlimeBossTutorials.java
@@ -0,0 +1,135 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+
+public class SlimeBossTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:SlimeBossTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public SlimeBossTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/SlimeBossTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/SlimeBossTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/tutorials/SneckoTutorials.java b/src/main/java/downfall/tutorials/SneckoTutorials.java
new file mode 100644
index 000000000..74192fb71
--- /dev/null
+++ b/src/main/java/downfall/tutorials/SneckoTutorials.java
@@ -0,0 +1,134 @@
+package downfall.tutorials;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.SpriteBatch;
+import com.badlogic.gdx.math.Interpolation;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.FontHelper;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.helpers.controller.CInputActionSet;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
+import com.megacrit.cardcrawl.localization.TutorialStrings;
+import com.megacrit.cardcrawl.ui.FtueTip;
+import downfall.util.TextureLoader;
+
+public class SneckoTutorials extends FtueTip {
+
+ private static final TutorialStrings tutorialStrings = CardCrawlGame.languagePack.getTutorialString("HermitMod:SneckoTutorials");
+ public static final String[] txt = tutorialStrings.TEXT;
+ public static final String[] LABEL = tutorialStrings.LABEL;
+ private Texture img1;
+ private Texture img2;
+ private Texture img3;
+ private Color screen = Color.valueOf("1c262a00");
+ private float x;
+ private float x1;
+ private float x2;
+ private float x3;
+ private float targetX;
+ private float startX;
+ private float scrollTimer = 0.0F;
+ private int currentSlot = 0;
+ private static String txt1 = txt[0];
+ private static String txt2 = txt[1];
+
+ private int closeScreen;
+
+
+ public SneckoTutorials() {
+
+ this.img1 = TextureLoader.getTexture("hermitResources/images/tip/SneckoTip1.png");
+ this.img2 = TextureLoader.getTexture("hermitResources/images/tip/SneckoTip2.png");
+
+ txt1 = txt[0];
+ txt2 = txt[1];
+ this.closeScreen = -1;
+
+ AbstractDungeon.player.releaseCard();
+ if (AbstractDungeon.isScreenUp) {
+ AbstractDungeon.dynamicBanner.hide();
+ AbstractDungeon.previousScreen = AbstractDungeon.screen;
+ }
+ AbstractDungeon.isScreenUp = true;
+ AbstractDungeon.screen = AbstractDungeon.CurrentScreen.FTUE;
+ AbstractDungeon.overlayMenu.showBlackScreen();
+ this.x = 0.0F;
+ this.x1 = 567.0F * Settings.scale;
+ this.x2 = this.x1 + Settings.WIDTH;
+ AbstractDungeon.overlayMenu.proceedButton.show();
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ }
+
+
+ public void update() {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[0]);
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ if (this.screen.a != 0.8F) {
+ this.screen.a += Gdx.graphics.getDeltaTime();
+ if (this.screen.a > 0.8F) {
+ this.screen.a = 0.8F;
+ }
+ }
+ if ((AbstractDungeon.overlayMenu.proceedButton.isHovered && InputHelper.justClickedLeft) || CInputActionSet.proceed
+ .isJustPressed()) {
+
+ CInputActionSet.proceed.unpress();
+ if (this.currentSlot <= this.closeScreen) {
+
+ CardCrawlGame.sound.play("DECK_CLOSE");
+ AbstractDungeon.closeCurrentScreen();
+ AbstractDungeon.overlayMenu.proceedButton.hide();
+ AbstractDungeon.effectList.clear();
+
+ }
+
+
+ this.currentSlot--;
+ this.startX = this.x;
+ this.targetX = (this.currentSlot * Settings.WIDTH);
+ this.scrollTimer = 0.3F;
+ if (this.currentSlot <= this.closeScreen) {
+ AbstractDungeon.overlayMenu.proceedButton.setLabel(LABEL[1]);
+ }
+ }
+ if (this.scrollTimer != 0.0F) {
+ this.scrollTimer -= Gdx.graphics.getDeltaTime();
+ if (this.scrollTimer < 0.0F) {
+ this.scrollTimer = 0.0F;
+ }
+ }
+ this.x = Interpolation.fade.apply(this.targetX, this.startX, this.scrollTimer / 0.3F);
+ }
+
+
+ public void render(SpriteBatch sb) {
+ sb.setColor(this.screen);
+ sb.draw(ImageMaster.WHITE_SQUARE_IMG, 0.0F, 0.0F, Settings.WIDTH, Settings.HEIGHT);
+
+ sb.setColor(Color.WHITE);
+ sb.draw(this.img1, this.x + this.x1 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ sb.draw(this.img2, this.x + this.x2 - 380.0F, Settings.HEIGHT / 2.0F - 290.0F, 380.0F, 290.0F, 760.0F, 580.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 760, 580, false, false);
+ /* */
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt1, this.x + this.x1 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt1, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderSmartText(sb, FontHelper.panelNameFont, txt2, this.x + this.x2 + 400.0F * Settings.scale, Settings.HEIGHT / 2.0F -
+ FontHelper.getSmartHeight(FontHelper.panelNameFont, txt2, 700.0F * Settings.scale, 40.0F * Settings.scale) / 2.0F, 700.0F * Settings.scale, 40.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.panelNameFont, LABEL[2], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 360.0F * Settings.scale, Settings.GOLD_COLOR);
+
+ FontHelper.renderFontCenteredWidth(sb, FontHelper.tipBodyFont, LABEL[3] + Integer.toString(Math.abs(this.currentSlot - 1)) + "/" +
+ Math.abs(this.closeScreen - 1) + LABEL[4], Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F - 400.0F * Settings.scale, Settings.CREAM_COLOR);
+
+ AbstractDungeon.overlayMenu.proceedButton.render(sb);
+ }
+
+
+}
diff --git a/src/main/java/downfall/ui/campfire/BustKeyOption.java b/src/main/java/downfall/ui/campfire/BustKeyOption.java
index 7ca066a19..5471f4229 100644
--- a/src/main/java/downfall/ui/campfire/BustKeyOption.java
+++ b/src/main/java/downfall/ui/campfire/BustKeyOption.java
@@ -1,6 +1,7 @@
package downfall.ui.campfire;
import basemod.ReflectionHacks;
+import champ.relics.DeflectingBracers;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -14,9 +15,7 @@
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.downfallMod;
import downfall.patches.ui.campfire.AddBustKeyButtonPatches;
-import downfall.relics.HeartBlessingBlue;
-import downfall.relics.HeartBlessingGreen;
-import downfall.relics.HeartBlessingRed;
+import downfall.relics.*;
import downfall.util.TextureLoader;
import downfall.vfx.campfire.BustKeyEffect;
@@ -35,7 +34,7 @@ public BustKeyOption() {
public BustKeyOption(Keys key) {
this.key = key;
- if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) soulToCost = 0;
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID) || AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) soulToCost = 0;
if (AbstractDungeon.player.gold < soulToCost) {
this.usable = false;
updateImage(key);
@@ -47,7 +46,7 @@ public BustKeyOption(Keys key) {
public void updateImage(Keys key) {
- if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) {
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID) || AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) {
this.description = TEXT[10];
} else {
this.description = TEXT[3];
@@ -162,21 +161,40 @@ public void useOption() {
AbstractDungeon.effectList.add(new BustKeyEffect());
AbstractPlayer p = AbstractDungeon.player;
p.loseGold(soulToCost);
+ if (soulToCost == 0) {
+
+ if (AbstractDungeon.player.hasRelic(Hecktoplasm.ID)) {
+ AbstractDungeon.player.getRelic(Hecktoplasm.ID).flash();
+ System.out.println("Saved Souls with Hecktoplasm.");
+ }
+
+ if (AbstractDungeon.player.hasRelic(Ectoplasm.ID)) {
+ AbstractDungeon.player.getRelic(Ectoplasm.ID).flash();
+ System.out.println("Saved Souls with Ectoplasm.");
+ }
+
+ }
this.used = true;
this.usable = false;
switch (key) {
case SAPPHIRE:
AddBustKeyButtonPatches.KeyFields.bustedSapphire.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingBlue());
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingBlue());
+ }
break;
case EMERALD:
AddBustKeyButtonPatches.KeyFields.bustedEmerald.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingGreen());
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingGreen());
+ }
break;
default:
AddBustKeyButtonPatches.KeyFields.bustedRuby.set(p, true);
- AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingRed());
- }
+ if (!AbstractDungeon.player.hasRelic(BurdenOfKnowledge.ID)) {
+ AbstractDungeon.getCurrRoom().spawnRelicAndObtain((float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F, new HeartBlessingRed());
+ }
+ }
updateImage(key);
}
diff --git a/src/main/java/downfall/unlocks/AwakenedUnlock.java b/src/main/java/downfall/unlocks/AwakenedUnlock.java
new file mode 100644
index 000000000..28f60fff7
--- /dev/null
+++ b/src/main/java/downfall/unlocks/AwakenedUnlock.java
@@ -0,0 +1,21 @@
+package downfall.unlocks;
+
+import awakenedOne.AwakenedOneChar;
+import collector.CollectorChar;
+import com.megacrit.cardcrawl.core.Settings;
+
+public class AwakenedUnlock extends com.megacrit.cardcrawl.unlock.AbstractUnlock {
+ public static final String KEY = "Awakened";
+
+ public AwakenedUnlock() {
+ this.type = UnlockType.CHARACTER;
+ this.key = "Awakened";
+ this.title = "Awakened";
+ }
+
+ public void onUnlockScreenOpen() {
+ this.player = com.megacrit.cardcrawl.core.CardCrawlGame.characterManager.getCharacter(AwakenedOneChar.Enums.AWAKENED_ONE);
+ this.player.drawX = (Settings.WIDTH / 2.0F - 20.0F * Settings.scale);
+ this.player.drawY = (Settings.HEIGHT / 2.0F - 118.0F * Settings.scale);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/downfall/util/RareCardReward.java b/src/main/java/downfall/util/RareCardReward.java
index 075368b7c..2d21b7441 100644
--- a/src/main/java/downfall/util/RareCardReward.java
+++ b/src/main/java/downfall/util/RareCardReward.java
@@ -160,7 +160,7 @@ public void render(SpriteBatch sb) {
sb.setBlendFunction(770, 771);
}
- Texture cardImg = ImageMaster.REWARD_CARD_NORMAL;
+ Texture cardImg = ImageMaster.REWARD_CARD_BOSS;
sb.setColor(Color.WHITE);
sb.draw(cardImg, REWARD_ITEM_X - 32.0F, this.y - 32.0F - 2.0F * Settings.scale, 32.0F, 32.0F, 64.0F, 64.0F, Settings.scale, Settings.scale, 0.0F, 0, 0, 64, 64, false, false);
diff --git a/src/main/java/expansioncontent/actions/BloodthirstAction.java b/src/main/java/expansioncontent/actions/BloodthirstAction.java
new file mode 100644
index 000000000..fa932fdb0
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/BloodthirstAction.java
@@ -0,0 +1,91 @@
+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.orbs.AbstractOrb;
+import com.megacrit.cardcrawl.potions.AbstractPotion;
+import com.megacrit.cardcrawl.potions.PowerPotion;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Sozu;
+import guardian.orbs.StasisOrb;
+
+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;
+ private boolean potion;
+
+ public BloodthirstAction(AbstractCreature target, DamageInfo info, UUID targetUUID, boolean powerpotion) {
+ this.info = info;
+ this.setValues(target, info);
+ this.actionType = ActionType.DAMAGE;
+ this.duration = DURATION;
+ this.uuid = targetUUID;
+ potion = powerpotion;
+ }
+
+ @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)) {
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.hand, true));
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile, false));
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.limbo, true));
+ }
+ }
+ for (var1 = GetAllInBattleInstances.get(this.uuid).iterator(); var1.hasNext();) {
+ AbstractCard c = var1.next();
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.hand, true));
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.discardPile, false));
+ addToBot((AbstractGameAction)new ExhaustSpecificCardAction(c, AbstractDungeon.player.limbo, true));
+ }
+
+ for (AbstractOrb o : AbstractDungeon.player.orbs) {
+ if (o instanceof StasisOrb) {
+ if (((StasisOrb) o).stasisCard.uuid == this.uuid) {
+ AbstractDungeon.player.orbs.remove(o);
+ }
+ }
+ }
+
+ AbstractRelic sozu = AbstractDungeon.player.getRelic(Sozu.ID);
+ if (sozu != null) {
+ sozu.flash();
+ } else {
+ if (!potion) {
+ AbstractDungeon.player.obtainPotion(AbstractDungeon.returnRandomPotion(true));
+ }
+ if (potion) {
+ AbstractPotion potion = new PowerPotion();
+ AbstractDungeon.player.obtainPotion(potion.makeCopy());
+ }
+ }
+ }
+
+ if (AbstractDungeon.getCurrRoom().monsters.areMonstersBasicallyDead()) {
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ }
+ }
+ this.tickDuration();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/actions/DiscoverBossAction.java b/src/main/java/expansioncontent/actions/DiscoverBossAction.java
index 1d5ed2b9a..d6d7a53c5 100644
--- a/src/main/java/expansioncontent/actions/DiscoverBossAction.java
+++ b/src/main/java/expansioncontent/actions/DiscoverBossAction.java
@@ -1,6 +1,8 @@
package expansioncontent.actions;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
+import basemod.BaseMod;
import champ.ChampChar;
import collector.CollectorChar;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
@@ -44,7 +46,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,22 +68,33 @@ 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;
+ }
+ } else if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if (q.hasTag(expansionContentMod.STUDY_AWAKENEDONE)) {
+ continue;
+ }
+ }
AbstractCard r = q.makeCopy();
cardsList.add(r);
}
diff --git a/src/main/java/expansioncontent/actions/DrawSpecificAction.java b/src/main/java/expansioncontent/actions/DrawSpecificAction.java
new file mode 100644
index 000000000..ef88d896a
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/DrawSpecificAction.java
@@ -0,0 +1,46 @@
+package expansioncontent.actions;
+
+import basemod.BaseMod;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+
+import java.util.function.Predicate;
+
+public class DrawSpecificAction extends AbstractGameAction {
+ public AbstractPlayer p;
+ public Predicate predicate;
+
+ public DrawSpecificAction(int number, Predicate condition) {
+ this.predicate = condition;
+ this.p = AbstractDungeon.player;
+ this.setValues(this.p, this.p, number);
+ this.actionType = AbstractGameAction.ActionType.CARD_MANIPULATION;
+ this.duration = Settings.ACTION_DUR_XFAST;
+ }
+
+ public void update() {
+ this.isDone = true;
+ if (this.p.drawPile.isEmpty())
+ return;
+
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
+ this.p.createHandIsFullDialog();
+ return;
+ }
+
+ for (AbstractCard c : this.p.drawPile.group)
+ if (this.predicate.test(c)) {
+ if (this.amount > 1)
+ addToTop(new DrawSpecificAction(this.amount-1, this.predicate));
+
+ this.p.drawPile.group.remove(c);
+ this.p.drawPile.addToTop(c);
+ addToTop(new DrawCardAction(1));
+ return;
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/actions/EchoACardAction.java b/src/main/java/expansioncontent/actions/EchoACardAction.java
index 29d4b4701..732ad95db 100644
--- a/src/main/java/expansioncontent/actions/EchoACardAction.java
+++ b/src/main/java/expansioncontent/actions/EchoACardAction.java
@@ -38,7 +38,7 @@ public void update() {
mod.addProperty(PropertiesMod.supportedProperties.ETHEREAL, false);
if (!card.exhaust)
mod.addProperty(PropertiesMod.supportedProperties.EXHAUST, false);
- if(this.free){
+ if (this.free) {
card.freeToPlayOnce = true;
}
diff --git a/src/main/java/expansioncontent/actions/EchoACardNextTurnAction.java b/src/main/java/expansioncontent/actions/EchoACardNextTurnAction.java
new file mode 100644
index 000000000..a6043a23f
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/EchoACardNextTurnAction.java
@@ -0,0 +1,52 @@
+package expansioncontent.actions;
+
+import basemod.helpers.CardModifierManager;
+import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import expansioncontent.cardmods.PropertiesMod;
+import expansioncontent.expansionContentMod;
+
+import static collector.util.Wiz.applyToSelfTop;
+
+public class EchoACardNextTurnAction extends AbstractGameAction {
+ private final AbstractCard cardToEcho;
+ private boolean free = false;
+
+ public EchoACardNextTurnAction(AbstractCard cardToEcho, int amount) {
+ this.cardToEcho = cardToEcho;
+ this.amount = amount;
+ }
+
+ public EchoACardNextTurnAction(AbstractCard cardToEcho) {
+ this(cardToEcho, 1);
+ }
+
+ public EchoACardNextTurnAction(AbstractCard cardToEcho, boolean freeToUse) {
+ this(cardToEcho, 1);
+ this.free = freeToUse;
+ }
+
+ @Override
+ public void update() {
+ isDone = true;
+ if (cardToEcho.hasTag(expansionContentMod.ECHO))
+ return;
+
+ AbstractCard card = cardToEcho.makeStatEquivalentCopy();
+ PropertiesMod mod = new PropertiesMod(PropertiesMod.supportedProperties.ECHO, false);
+
+ if (!card.isEthereal)
+ mod.addProperty(PropertiesMod.supportedProperties.ETHEREAL, false);
+ if (!card.exhaust)
+ mod.addProperty(PropertiesMod.supportedProperties.EXHAUST, false);
+ if(this.free){
+ card.freeToPlayOnce = true;
+ }
+
+ CardModifierManager.addModifier(card, mod);
+
+ applyToSelfTop(new AddCopyNextTurnPower(card));
+ }
+}
diff --git a/src/main/java/expansioncontent/actions/ExhaustVirusAction.java b/src/main/java/expansioncontent/actions/ExhaustVirusAction.java
new file mode 100644
index 000000000..9b07b23d1
--- /dev/null
+++ b/src/main/java/expansioncontent/actions/ExhaustVirusAction.java
@@ -0,0 +1,132 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.actions;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Insight;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import downfall.cards.MajorBeam;
+
+import java.util.Iterator;
+
+public class ExhaustVirusAction extends AbstractGameAction {
+ private static final UIStrings uiStrings;
+ public static final String[] TEXT;
+ private AbstractPlayer p;
+ private boolean isRandom;
+ private boolean anyNumber;
+ private boolean canPickZero;
+ public static int numExhausted;
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this.anyNumber = anyNumber;
+ this.p = AbstractDungeon.player;
+ this.canPickZero = canPickZero;
+ this.isRandom = isRandom;
+ this.amount = 5;
+ this.duration = this.startDuration = Settings.ACTION_DUR_FAST;
+ this.actionType = ActionType.EXHAUST;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom, boolean anyNumber) {
+ this(amount, isRandom, anyNumber);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom) {
+ this(amount, isRandom, false, false);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(AbstractCreature target, AbstractCreature source, int amount, boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this(amount, isRandom, anyNumber, canPickZero);
+ this.target = target;
+ this.source = source;
+ }
+
+ public ExhaustVirusAction(boolean isRandom, boolean anyNumber, boolean canPickZero) {
+ this(99, isRandom, anyNumber, canPickZero);
+ }
+
+ public ExhaustVirusAction(int amount, boolean canPickZero) {
+ this(amount, false, false, canPickZero);
+ }
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber) {
+ this(amount, isRandom, anyNumber, false);
+ }
+
+ public ExhaustVirusAction(int amount, boolean isRandom, boolean anyNumber, boolean canPickZero, float duration) {
+ this(amount, isRandom, anyNumber, canPickZero);
+ this.duration = this.startDuration = duration;
+ }
+
+ public void update() {
+ if (this.duration == this.startDuration) {
+ if (this.p.hand.size() == 0) {
+ this.isDone = true;
+ return;
+ }
+
+ int i;
+ if (!this.anyNumber && this.p.hand.size() <= this.amount) {
+ this.amount = this.p.hand.size();
+ numExhausted = this.amount;
+ i = this.p.hand.size();
+
+ for(int z = 0; z < z; ++z) {
+ AbstractCard c = this.p.hand.getTopCard();
+ this.p.hand.moveToExhaustPile(c);
+ }
+
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ return;
+ }
+
+ if (!this.isRandom) {
+ numExhausted = this.amount;
+ AbstractDungeon.handCardSelectScreen.open(TEXT[0], 5, this.anyNumber, this.canPickZero);
+ this.tickDuration();
+ return;
+ }
+
+ for(i = 0; i < this.amount; ++i) {
+ this.p.hand.moveToExhaustPile(this.p.hand.getRandomCard(AbstractDungeon.cardRandomRng));
+ }
+ //this.addToBot(new MakeTempCardInDrawPileAction(new MajorBeam(), this.amount, true, true));
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ }
+
+ if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {
+ Iterator var4 = AbstractDungeon.handCardSelectScreen.selectedCards.group.iterator();
+
+ while(var4.hasNext()) {
+ AbstractCard c = (AbstractCard)var4.next();
+ this.p.hand.moveToExhaustPile(c);
+ this.addToBot(new MakeTempCardInDrawPileAction(new MajorBeam(), 1, true, true));
+ }
+ CardCrawlGame.dungeon.checkForPactAchievement();
+ AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;
+ }
+
+ this.tickDuration();
+ }
+
+ static {
+ uiStrings = CardCrawlGame.languagePack.getUIString("ExhaustAction");
+ TEXT = uiStrings.TEXT;
+ }
+}
diff --git a/src/main/java/expansioncontent/actions/ManipulateTimeAction.java b/src/main/java/expansioncontent/actions/ManipulateTimeAction.java
new file mode 100644
index 000000000..ea82b7517
--- /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.addToTop(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/actions/RandomCardWithTagAction.java b/src/main/java/expansioncontent/actions/RandomCardWithTagAction.java
index ea69a127a..dd6ece104 100644
--- a/src/main/java/expansioncontent/actions/RandomCardWithTagAction.java
+++ b/src/main/java/expansioncontent/actions/RandomCardWithTagAction.java
@@ -2,13 +2,16 @@
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
+import collector.CollectorChar;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
+import downfall.unlocks.AwakenedUnlock;
import downfall.unlocks.CollectorUnlock;
import expansioncontent.expansionContentMod;
import guardian.patches.GuardianEnum;
@@ -66,6 +69,10 @@ public static boolean collectorLocked() {
return UnlockTracker.isCharacterLocked(CollectorUnlock.KEY);
}
+ public static boolean awakenedLocked() {
+ return UnlockTracker.isCharacterLocked(AwakenedUnlock.KEY);
+ }
+
public void update() {
ArrayList tmp = new ArrayList<>();
@@ -85,6 +92,11 @@ public void update() {
&& (AbstractDungeon.player.chosenClass == ChampChar.Enums.THE_CHAMP || champLocked())))
&& (!(c.getValue().hasTag(expansionContentMod.STUDY_AUTOMATON)
&& (AbstractDungeon.player.chosenClass == AutomatonChar.Enums.THE_AUTOMATON || autoLocked())))
+ && (!(c.getValue().hasTag(expansionContentMod.STUDY_COLLECTOR)
+ && (AbstractDungeon.player.chosenClass == CollectorChar.Enums.THE_COLLECTOR || collectorLocked())))
+ && (!(c.getValue().hasTag(expansionContentMod.STUDY_AWAKENEDONE)
+ && (AbstractDungeon.player.chosenClass == AwakenedOneChar.Enums.AWAKENED_ONE || awakenedLocked())))
+
) {
tmp.add(c.getKey());
}
diff --git a/src/main/java/expansioncontent/cardmods/EtherealMod.java b/src/main/java/expansioncontent/cardmods/EtherealMod.java
index a2560622d..a7b942ad0 100644
--- a/src/main/java/expansioncontent/cardmods/EtherealMod.java
+++ b/src/main/java/expansioncontent/cardmods/EtherealMod.java
@@ -42,8 +42,9 @@ public String identifier(AbstractCard card) {
}
//Retain Override - do not remove - Stanek
+ //sorry - blue
@Override
- public void onRetained(AbstractCard card) {
- AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
- }
+ public void onRetained(AbstractCard card) {
+ AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
+ }
}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cardmods/PropertiesMod.java b/src/main/java/expansioncontent/cardmods/PropertiesMod.java
index cbfe9b576..4fac405ed 100644
--- a/src/main/java/expansioncontent/cardmods/PropertiesMod.java
+++ b/src/main/java/expansioncontent/cardmods/PropertiesMod.java
@@ -358,7 +358,8 @@ public String identifier(AbstractCard card) {
}
//Retain Override - do not remove - even if it is technically different from how the game usually works, I will do what I am allowed to force the mechanics to work as they are described - Stanek
- @Override
+ //sorry - blue
+ @Override
public void onRetained(AbstractCard card) {
if (card.isEthereal)
AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
diff --git a/src/main/java/expansioncontent/cardmods/RetainCardMod.java b/src/main/java/expansioncontent/cardmods/RetainCardMod.java
index 7b552443a..dea7fc735 100644
--- a/src/main/java/expansioncontent/cardmods/RetainCardMod.java
+++ b/src/main/java/expansioncontent/cardmods/RetainCardMod.java
@@ -44,9 +44,9 @@ public String identifier(AbstractCard card) {
}
//Ethereal check - do not remove - Stanek
- @Override
- public void onRetained(AbstractCard card) {
- if (card.isEthereal)
+ @Override
+ public void onRetained(AbstractCard card) {
+ if (card.isEthereal)
AbstractDungeon.actionManager.addToTop(new ExhaustSpecificCardAction(card, AbstractDungeon.player.hand, true));
}
}
diff --git a/src/main/java/expansioncontent/cards/AbstractExpansionCard.java b/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
index 4278fa426..95b3bdaed 100644
--- a/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
+++ b/src/main/java/expansioncontent/cards/AbstractExpansionCard.java
@@ -1,9 +1,18 @@
package expansioncontent.cards;
+import basemod.helpers.CardModifierManager;
+import collector.cardmods.PyreMod;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.unlock.UnlockTracker;
@@ -11,6 +20,9 @@
import expansioncontent.expansionContentMod;
import expansioncontent.patches.CardColorEnumPatch;
import hermit.util.TextureLoader;
+import theHexaghost.HexaMod;
+import theHexaghost.cards.AbstractHexaCard;
+import theHexaghost.vfx.AfterlifePlayEffect;
import static expansioncontent.expansionContentMod.*;
@@ -96,6 +108,50 @@ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
return super.canUse(p, m);
}
+ @Override
+ public void triggerOnExhaust() {
+ int bonus = 0;
+
+ att(new AbstractGameAction() {
+ @Override
+ public void update() {
+ if (useAfterlifeVFX() && duration == startDuration) {
+ atb(new VFXAction(new AfterlifePlayEffect(AbstractExpansionCard.this)));
+ }
+ tickDuration();
+ if (isDone) {
+
+ atb(new WaitAction(0.2F)); // from ShowCardAction
+
+ applyPowers();
+ afterlife();
+
+ atb(new WaitAction(0.15F)); // from UseCardAction
+
+ if (type == AbstractCard.CardType.POWER) { // special case for powers in UseCardAction
+ if (com.megacrit.cardcrawl.core.Settings.FAST_MODE) {
+ atb(new WaitAction(0.1F));
+ } else {
+ atb(new WaitAction(0.7F));
+ }
+ }
+ }
+ }
+ });
+
+ }
+
+ protected boolean useAfterlifeVFX() {
+ return AbstractExpansionCard.this.tags.contains(HexaMod.AFTERLIFE);
+ }
+
+ public void afterlife() {}
+
+ //collector pyre code
+ protected void isPyre() {
+ CardModifierManager.addModifier(this, new PyreMod());
+ }
+
@Override
protected Texture getPortraitImage() {
if (Settings.PLAYTESTER_ART_MODE || UnlockTracker.betaCardPref.getBoolean(this.cardID, false)) {
diff --git a/src/main/java/expansioncontent/cards/AwakenDeath.java b/src/main/java/expansioncontent/cards/AwakenDeath.java
index 775bad848..48af5a0d2 100644
--- a/src/main/java/expansioncontent/cards/AwakenDeath.java
+++ b/src/main/java/expansioncontent/cards/AwakenDeath.java
@@ -1,44 +1,35 @@
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");
-
- private static final int MAGIC = 8;
- private static final int UPGRADE_MAGIC = 4;
+ public static final String ID = makeID("AwakenDeath");
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);
+ this.tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
+ this.baseMagicNumber = this.magicNumber = 1;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "AwakenDeath.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- // atb(new ApplyPowerAction(p, p, new StrengthPower(p, 1), 1));
- atb(new ApplyPowerAction(p, p, new AwakenDeathPower(p, p, this.magicNumber), this.magicNumber));
-
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new CuriosityPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeMagicNumber(1);
}
}
-
}
-
-
diff --git a/src/main/java/expansioncontent/cards/BeatOfDeath.java b/src/main/java/expansioncontent/cards/BeatOfDeath.java
new file mode 100644
index 000000000..7f05e52f1
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/BeatOfDeath.java
@@ -0,0 +1,33 @@
+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.magicNumber = this.baseMagicNumber = 2;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BeatOfDeath.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf((AbstractPower)new BeatOfDeathThatDoesntKillYouPower((AbstractCreature)p, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/BloodBarrage.java b/src/main/java/expansioncontent/cards/BloodBarrage.java
new file mode 100644
index 000000000..07370bc8a
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/BloodBarrage.java
@@ -0,0 +1,40 @@
+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.baseDamage = 3;
+ this.exhaust = true;
+ this.baseMagicNumber = 5;
+ this.magicNumber = this.baseMagicNumber;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BloodBarrage.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ for (int i = 1; i < this.magicNumber; i++)
+ addToBot((AbstractGameAction)new PummelDamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, this.damageTypeForTurn)));
+ addToBot((AbstractGameAction)new DamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/ChargeUp.java b/src/main/java/expansioncontent/cards/ChargeUp.java
new file mode 100644
index 000000000..b9a2d4356
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/ChargeUp.java
@@ -0,0 +1,47 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
+import guardian.GuardianMod;
+import hermit.actions.ReduceDebuffsAction;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class ChargeUp extends AbstractExpansionCard {
+ public static final String ID = makeID("ChargeUp");
+
+ private static final int BLOCK = 20;
+
+ private static final int UPGRADE_BLOCK = 10;
+
+ private static final int MAGIC = 2;
+
+ public ChargeUp() {
+ super(ID, 0, AbstractCard.CardType.SKILL, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ this.tags.add(expansionContentMod.STUDY_GUARDIAN);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 2;
+ this.exhaust = true;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "BronzeArmor.png");
+
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new ReduceDebuffsAction((AbstractCreature)AbstractDungeon.player, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ this.exhaust = false;
+ this.rawDescription = this.UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/Chronoboost.java b/src/main/java/expansioncontent/cards/Chronoboost.java
index 079575cb5..62355b7d1 100644
--- a/src/main/java/expansioncontent/cards/Chronoboost.java
+++ b/src/main/java/expansioncontent/cards/Chronoboost.java
@@ -1,43 +1,37 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import expansioncontent.expansionContentMod;
import expansioncontent.powers.ChronoBoostPower;
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
-
public class Chronoboost extends AbstractExpansionCard {
- public final static String ID = makeID("Chronoboost");
+ public static final String ID = makeID("Chronoboost");
- private static final int MAGIC = 1;
+ private static final int MAGIC = 2;
public Chronoboost() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- tags.add(expansionContentMod.STUDY_TIMEEATER);
- tags.add(expansionContentMod.STUDY);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
- loadJokeCardImage(this, "Chronoboost.png");
+ super(ID, 1, AbstractCard.CardType.POWER, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ this.tags.add(expansionContentMod.STUDY_TIMEEATER);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 2;
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_timeeater.png", "expansioncontentResources/images/1024/bg_boss_timeeater.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "Chronoboost.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- if (upgraded) atb(new ApplyPowerAction(p, p, new StrengthPower(p, 2), 2));
-
- atb(new ApplyPowerAction(p, p, new ChronoBoostPower(p, p, 2), 2));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new ChronoBoostPower((AbstractCreature)p, (AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(1);
}
}
-
}
-
-
diff --git a/src/main/java/expansioncontent/cards/DashGenerateEvil.java b/src/main/java/expansioncontent/cards/DashGenerateEvil.java
index 621cc4691..c0bac8a53 100644
--- a/src/main/java/expansioncontent/cards/DashGenerateEvil.java
+++ b/src/main/java/expansioncontent/cards/DashGenerateEvil.java
@@ -1,114 +1,42 @@
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");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "DashGenerateEvil.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- this.addToBot(new VFXAction(new HemokinesisEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY), 0.5F));
-
- // atb(new GainBlockAction(p, p, this.block));
- atb(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
-
- atb(new RandomCardWithTagAction(upgraded, expansionContentMod.STUDY, true));
-
-
+ if (!AbstractDungeon.player.hasPower("expansioncontent:EvilWithinPower"))
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new EvilWithinPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
+ addToBot((AbstractGameAction)new ApplyPowerAction((AbstractCreature)p, (AbstractCreature)p, (AbstractPower)new EvilWithinPower((AbstractCreature)p, this.magicNumber), this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- upgradeDamage(UPGRADE_DAMAGE);
- rawDescription = UPGRADE_DESCRIPTION;
- for (AbstractCard q : this.dupeListForPrev) {
- q.upgrade();
- }
- initializeDescription();
- }
- }
-
- @Override
- public void update() {
- super.update();
- if (dupeListForPrev.isEmpty()) {
- dupeListForPrev.addAll(getList());
- }
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (dupeListForPrev.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = dupeListForPrev.get(previewIndex);
- }
- if (previewIndex == dupeListForPrev.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
+ upgradeMagicNumber(4);
}
}
-
- @Override
- public void unhover() {
- super.unhover();
- cardsToPreview = null;
- }
}
-
diff --git a/src/main/java/expansioncontent/cards/DecaShield.java b/src/main/java/expansioncontent/cards/DecaShield.java
index d2acbfddf..b6ea4c936 100644
--- a/src/main/java/expansioncontent/cards/DecaShield.java
+++ b/src/main/java/expansioncontent/cards/DecaShield.java
@@ -1,4 +1,4 @@
-/*
+package expansioncontent.cards;/*
package expansioncontent.cards;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
diff --git a/src/main/java/expansioncontent/cards/DoubleAct.java b/src/main/java/expansioncontent/cards/DoubleAct.java
new file mode 100644
index 000000000..71991160a
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/DoubleAct.java
@@ -0,0 +1,49 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.actions.unique.LoseEnergyAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.*;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+import downfall.actions.OctoChoiceAction;
+import downfall.cards.OctoChoiceCard;
+import downfall.util.OctopusCard;
+import expansioncontent.expansionContentMod;
+
+import static collector.util.Wiz.applyToEnemy;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+import java.util.ArrayList;
+
+public class DoubleAct extends AbstractExpansionCard{
+ public final static String ID = makeID("DoubleAct");
+
+ private static final int downfallMagic = 0;
+
+ public DoubleAct() {
+ super(ID, 3, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ //todo skill bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_donudeca.png", "expansioncontentResources/images/1024/bg_boss_donudeca.png");
+ tags.add(expansionContentMod.STUDY_SHAPES);
+ tags.add(expansionContentMod.STUDY);
+ baseDownfallMagic = downfallMagic;
+ baseMagicNumber = magicNumber = 0;
+ loadJokeCardImage(this, "DoubleAct.png");
+ exhaust = true;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ applyToSelf(new EnergizedBluePower(AbstractDungeon.player, p.energy.energyMaster));
+ applyToSelf(new DrawCardNextTurnPower(AbstractDungeon.player, p.gameHandSize));
+ }
+
+ @Override
+ public void upp() {
+upgradeBaseCost(2);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/ExploitVulnerability.java b/src/main/java/expansioncontent/cards/ExploitVulnerability.java
new file mode 100644
index 000000000..edc104509
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/ExploitVulnerability.java
@@ -0,0 +1,82 @@
+package expansioncontent.cards;
+
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.vfx.combat.CleaveEffect;
+import downfall.actions.OctoChoiceAction;
+import downfall.cards.OctoChoiceCard;
+import downfall.util.OctopusCard;
+import expansioncontent.expansionContentMod;
+import guardian.vfx.SmallLaserEffectColored;
+
+import static collector.util.Wiz.*;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+import java.util.ArrayList;
+
+public class ExploitVulnerability extends AbstractExpansionCard{
+ public final static String ID = makeID("ExploitVulnerability");
+
+ private static final int downfallMagic = 2;
+
+ public ExploitVulnerability() {
+ //todo attack bg instead of power bg
+ super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_donudeca.png", "expansioncontentResources/images/1024/bg_boss_donudeca.png");
+ tags.add(expansionContentMod.STUDY_SHAPES);
+ tags.add(expansionContentMod.STUDY);
+ baseDamage = 10;
+ baseDownfallMagic = downfallMagic;
+ baseMagicNumber = magicNumber = 999;
+ loadJokeCardImage(this, "ExploitVulnerability.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (m != null) {
+ AbstractDungeon.actionManager.addToBottom(new SFXAction("ATTACK_MAGIC_BEAM_SHORT", 0.5F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SmallLaserEffectColored(m.hb.cX, m.hb.cY, p.hb.cX, p.hb.cY, Color.WHITE), 0.2F));
+ }
+ if (m.currentBlock > 0) {
+ int toSteal = Math.min(magicNumber, m.currentBlock);
+ atb(new AbstractGameAction() {
+ @Override
+ public void update() {
+ isDone = true;
+ m.loseBlock(toSteal);
+ }
+ });
+ atb(new GainBlockAction(p, toSteal));
+ }
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ dmg(m, AbstractGameAction.AttackEffect.BLUNT_HEAVY);
+ }
+
+ @Override
+ public void triggerOnGlowCheck() {
+ for (AbstractMonster m : getEnemies()) {
+ if (m.currentBlock > 0) {
+ this.glowColor = AbstractCard.GOLD_BORDER_GLOW_COLOR;
+ return;
+ }
+ }
+ this.glowColor = AbstractCard.BLUE_BORDER_GLOW_COLOR;
+ }
+
+ @Override
+ public void upp() {
+ upgradeDamage(4);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/FaceSlap.java b/src/main/java/expansioncontent/cards/FaceSlap.java
new file mode 100644
index 000000000..cfa090466
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/FaceSlap.java
@@ -0,0 +1,65 @@
+package expansioncontent.cards;
+
+
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+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.monsters.city.Champ;
+import expansioncontent.expansionContentMod;
+
+import static champ.ChampMod.vigor;
+
+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));
+ }
+
+ private String getTaunt() {
+ ArrayList derp = new ArrayList<>();
+ derp.add(Champ.DIALOG[0]);
+ derp.add(Champ.DIALOG[1]);
+ derp.add(Champ.DIALOG[2]);
+ derp.add(Champ.DIALOG[3]);
+ return derp.get(MathUtils.random(derp.size() - 1));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDownfall(UPGRADE_downfallMagic);
+ upgradeMagicNumber(UPGRADE_MAGIC);
+ }
+ }
+
+}
+
diff --git a/src/main/java/expansioncontent/cards/deprecated/Flail.java b/src/main/java/expansioncontent/cards/Flail.java
similarity index 52%
rename from src/main/java/expansioncontent/cards/deprecated/Flail.java
rename to src/main/java/expansioncontent/cards/Flail.java
index 038f7fead..ecde603d0 100644
--- a/src/main/java/expansioncontent/cards/deprecated/Flail.java
+++ b/src/main/java/expansioncontent/cards/Flail.java
@@ -1,62 +1,49 @@
-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);
+ tags.add(CardTags.STRIKE);
+
baseDamage = DAMAGE;
this.isMultiDamage = true;
this.exhaust = true;
this.baseMagicNumber = this.magicNumber = 1;
+ baseDownfallMagic = downfallMagic;
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new SFXAction("ATTACK_WHIRLWIND"));
-
- for (int i = 0; i < 2; i++) {
- atb(new SFXAction("ATTACK_HEAVY"));
-
- atb(new VFXAction(p, new CleaveEffect(), 0.1F));
- atb(new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.NONE));
- //atb(new WaitAction(0.1F));
-
-
+ for (int i = 0; i < downfallMagic; i++) {
+ allDmg(AbstractGameAction.AttackEffect.SLASH_HORIZONTAL);
}
atb(new ApplyPowerAction(p, p, new ArtifactPower(p, this.magicNumber), this.magicNumber));
-
-
}
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeDamage(UPGRADE_DAMAGE);
- upgradeMagicNumber(1);
+ // upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/expansioncontent/cards/GoopSpray.java b/src/main/java/expansioncontent/cards/GoopSpray.java
new file mode 100644
index 000000000..0a50d8984
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/GoopSpray.java
@@ -0,0 +1,70 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import expansioncontent.expansionContentMod;
+import slimebound.SlimeboundMod;
+import slimebound.powers.SlimedPower;
+import slimebound.vfx.SlimeProjectileEffect;
+
+import java.util.Iterator;
+
+public class GoopSpray extends AbstractExpansionCard {
+ public static final String ID = makeID("SuperGoopSpray");
+
+ private static final int MAGIC = 8;
+
+ private static final int UPGRADE_MAGIC = 3;
+
+ private static final int downfallMagic = 2;
+
+ private static final int UPGRADE_downfallMagic = 1;
+
+ public GoopSpray() {
+ super(ID, 1, AbstractCard.CardType.SKILL, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ this.tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseDownfallMagic = 2;
+ this.baseMagicNumber = this.magicNumber = 8;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "GoopSpray.png");
+ }
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (!this.upgraded) {
+ atb((AbstractGameAction)new VFXAction((AbstractGameEffect)new SlimeProjectileEffect(p.hb.cX, p.hb.cY, m.hb.cX, m.hb.cY, 3.0F, false, 0.6F), 0.01F));
+ atb((AbstractGameAction)new WaitAction(0.2F));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)m, (AbstractCreature)p, (AbstractPower)new SlimedPower((AbstractCreature)m, (AbstractCreature)p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+
+ this.addToBot(new ApplyPowerAction(m, p, new WeakPower(m, downfallMagic, false), downfallMagic));
+ } else {
+ Iterator var3 = AbstractDungeon.getCurrRoom().monsters.monsters.iterator();
+ while(var3.hasNext()) {
+ AbstractMonster mo = (AbstractMonster)var3.next();
+ atb((AbstractGameAction)new VFXAction((AbstractGameEffect)new SlimeProjectileEffect(p.hb.cX, p.hb.cY, mo.hb.cX, mo.hb.cY, 3.0F, false, 0.6F), 0.01F));
+ atb((AbstractGameAction)new ApplyPowerAction((AbstractCreature)mo, (AbstractCreature)p, (AbstractPower)new SlimedPower((AbstractCreature)mo, (AbstractCreature)p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
+ this.addToBot(new ApplyPowerAction(mo, p, new WeakPower(mo, downfallMagic, false), downfallMagic, true, AbstractGameAction.AttackEffect.NONE));
+ }
+ }
+
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(2);
+ this.target = CardTarget.ALL_ENEMY;
+ this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/GuardianWhirl.java b/src/main/java/expansioncontent/cards/GuardianWhirl.java
index 103c4833c..01f1b97ba 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;
- 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, 2, 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 = 4;
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(2);
}
}
-
-}
\ No newline at end of file
+}
diff --git a/src/main/java/expansioncontent/cards/Hexaburn.java b/src/main/java/expansioncontent/cards/Hexaburn.java
index a6553552e..741f77af6 100644
--- a/src/main/java/expansioncontent/cards/Hexaburn.java
+++ b/src/main/java/expansioncontent/cards/Hexaburn.java
@@ -1,40 +1,43 @@
package expansioncontent.cards;
-
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import expansioncontent.expansionContentMod;
-import expansioncontent.powers.PretendHexWheelPower;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
+import hermit.vfx.ShortScreenFire;
public class Hexaburn extends AbstractExpansionCard {
- public final static String ID = makeID("Hexaburn");
+ public static final String ID = makeID("Hexaburn");
public Hexaburn() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
- tags.add(expansionContentMod.STUDY_HEXAGHOST);
- tags.add(expansionContentMod.STUDY);
- baseMagicNumber = magicNumber = 3;
- baseDamage = 6;
- loadJokeCardImage(this, "Hexaburn.png");
+ super(ID, 2, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ALL_ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_hexaghost.png", "expansioncontentResources/images/1024/bg_boss_hexaghost.png");
+ this.tags.add(expansionContentMod.STUDY_HEXAGHOST);
+ this.tags.add(expansionContentMod.STUDY);
+ this.baseMagicNumber = this.magicNumber = 6;
+ this.baseDamage = 4;
+ this.exhaust = true;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "Hexaburn.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new PretendHexWheelPower(magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new ShortScreenFire(), 0.5F));
+ for (int i = 0; i < this.magicNumber; i++)
+ addToBot((AbstractGameAction)new AttackDamageRandomEnemyAction((AbstractCard)this, AbstractGameAction.AttackEffect.FIRE));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(-1);
+ this.exhaust = false;
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
}
}
}
-
-
-
-
-
diff --git a/src/main/java/expansioncontent/cards/HyperBeam.java b/src/main/java/expansioncontent/cards/HyperBeam.java
index 91790dedb..8f948d4f9 100644
--- a/src/main/java/expansioncontent/cards/HyperBeam.java
+++ b/src/main/java/expansioncontent/cards/HyperBeam.java
@@ -4,8 +4,10 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
@@ -19,32 +21,27 @@ public class HyperBeam extends AbstractExpansionCard {
public final static String ID = makeID("HyperBeam");
- private static final int DAMAGE = 26;
- private static final int UPGRADE_DAMAGE = 8;
+ private static final int DAMAGE = 17;
+ private static final int UPGRADE_DAMAGE = 4;
public HyperBeam() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_automaton.png", "expansioncontentResources/images/1024/bg_boss_automaton.png");
tags.add(expansionContentMod.STUDY_AUTOMATON);
tags.add(expansionContentMod.STUDY);
-
+ cardsToPreview = new VoidCard();
baseDamage = DAMAGE;
- this.exhaust = true;
+ this.exhaust = true;
this.isMultiDamage = true;
loadJokeCardImage(this, "HyperBeam.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
atb(new SFXAction("ATTACK_HEAVY"));
this.addToBot(new VFXAction(p, new MindblastEffect(p.hb.cX, p.hb.cY, p.flipHorizontal), 0.1F));
- atb(new WaitAction(0.1F));
-
+ addToBot(new MakeTempCardInDrawPileAction(new VoidCard(), 1, false, true));
allDmg(AbstractGameAction.AttackEffect.NONE);
- atb(new ApplyPowerAction(p, p, new DeEnergizedPower(1), 1));
-
-
}
public void upgrade() {
diff --git a/src/main/java/expansioncontent/cards/InvincibleStrength.java b/src/main/java/expansioncontent/cards/InvincibleStrength.java
index 4598554ef..49d7bec35 100644
--- a/src/main/java/expansioncontent/cards/InvincibleStrength.java
+++ b/src/main/java/expansioncontent/cards/InvincibleStrength.java
@@ -1,33 +1,31 @@
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;
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "InvincibleStrength.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- applyToSelf(new VexVinciblePower(p, 1));
+ applyToSelf((AbstractPower)new VexVinciblePower((AbstractCreature)p, 1, this.magicNumber, this.magicNumber));
}
public void upgrade() {
- if (!upgraded) {
+ if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(1);
+ upgradeMagicNumber(-5);
}
}
}
-
diff --git a/src/main/java/expansioncontent/cards/LastStand.java b/src/main/java/expansioncontent/cards/LastStand.java
index d1fddf5da..953cd35ea 100644
--- a/src/main/java/expansioncontent/cards/LastStand.java
+++ b/src/main/java/expansioncontent/cards/LastStand.java
@@ -21,11 +21,11 @@
public class LastStand extends AbstractExpansionCard {
public final static String ID = makeID("LastStand");
- private static final int MAGIC = 8;
- private static final int UPGRADE_MAGIC = 10;
+ private static final int MAGIC = 6;
+ private static final int UPGRADE_MAGIC = 3;
public LastStand() {
- super(ID, 2, CardType.POWER, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, 3, CardType.POWER, CardRarity.RARE, CardTarget.SELF);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_champ.png", "expansioncontentResources/images/1024/bg_boss_champ.png");
tags.add(expansionContentMod.STUDY_CHAMP);
@@ -48,27 +48,28 @@ public void use(AbstractPlayer p, AbstractMonster m) {
atb(new ApplyPowerAction(p, p, new StrengthPower(p, 1), 1));
double currentPct = p.currentHealth * 1.001 / p.maxHealth * 1.001;
- if (currentPct < 0.5) {
- AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, Champ.DIALOG[6], true));
+ // if (currentPct < 0.5) {
+ // AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, Champ.DIALOG[6], true));
atb(new VFXAction(p, new InflameEffect(p), 0.1F));
- atb(new ApplyPowerAction(p, p, new StrengthPower(p, 2), 2));
+ atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
atb(new VFXAction(p, new InflameEffect(p), 0.1F));
- if (upgraded) atb(new HealAction(p, p, this.magicNumber));
- }
+ // if (upgraded) atb(new HealAction(p, p, this.magicNumber));
+ // }
}
- @Override
- public void triggerOnGlowCheck() {
- this.glowColor = AbstractDungeon.player.currentHealth < AbstractDungeon.player.maxHealth / 2 ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
- }
+ // @Override
+ // public void triggerOnGlowCheck() {
+ // this.glowColor = AbstractDungeon.player.currentHealth < AbstractDungeon.player.maxHealth / 2 ? GOLD_BORDER_GLOW_COLOR : BLUE_BORDER_GLOW_COLOR;
+ // }
public void upgrade() {
if (!upgraded) {
upgradeName();
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
+ upgradeMagicNumber(3);
+ // rawDescription = UPGRADE_DESCRIPTION;
+ // initializeDescription();
}
}
diff --git a/src/main/java/expansioncontent/cards/ManipulateTime.java b/src/main/java/expansioncontent/cards/ManipulateTime.java
new file mode 100644
index 000000000..141172d8b
--- /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.addToTop(new ManipulateTimeAction(this.upgraded));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+
+}
+
diff --git a/src/main/java/expansioncontent/cards/Pandemonium.java b/src/main/java/expansioncontent/cards/Pandemonium.java
new file mode 100644
index 000000000..a91cf8504
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Pandemonium.java
@@ -0,0 +1,35 @@
+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);
+ baseMagicNumber = magicNumber = 1;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_power.png", "expansioncontentResources/images/1024/bg_boss_power.png");
+ loadJokeCardImage(this, "Pandemonium.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, p, new PandemoniumPower(p, this.magicNumber)));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(1);
+ }
+ }
+}
+
diff --git a/src/main/java/expansioncontent/cards/PeekPages.java b/src/main/java/expansioncontent/cards/PeekPages.java
new file mode 100644
index 000000000..5a2b60d5a
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/PeekPages.java
@@ -0,0 +1,52 @@
+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;
+ loadJokeCardImage(this, "PeekPages.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new MakeTempCardInDrawPileAction(this.cardsToPreview.makeStatEquivalentCopy(), magicNumber, false, true));
+
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeMagicNumber(1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/PrepareCrush.java b/src/main/java/expansioncontent/cards/PrepareCrush.java
deleted file mode 100644
index 45d55d290..000000000
--- a/src/main/java/expansioncontent/cards/PrepareCrush.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package expansioncontent.cards;
-
-
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.GainBlockAction;
-import com.megacrit.cardcrawl.actions.utility.ShakeScreenAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.ScreenShake;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.monsters.exordium.SlimeBoss;
-import com.megacrit.cardcrawl.powers.EnergizedPower;
-import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
-import expansioncontent.expansionContentMod;
-import slimebound.cards.SlimeCrush;
-import slimebound.powers.NextTurnGainSlimeCrush;
-
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
-
-public class PrepareCrush extends AbstractExpansionCard {
- public final static String ID = makeID("PrepareCrush");
-
-
- private static final int BLOCK = 10;
- private static final int UPGRADE_BLOCK = 5;
- private static final int MAGIC = 3;
-
- public PrepareCrush() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
- this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
-
- tags.add(expansionContentMod.STUDY_SLIMEBOSS);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- cardsToPreview = new SlimeCrush();
- loadJokeCardImage(this, "PrepareCrush.png");
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
- AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, SlimeBoss.DIALOG[0], true));
- atb(new ShakeScreenAction(0.3F, ScreenShake.ShakeDur.MED, ScreenShake.ShakeIntensity.LOW));
-
- atb(new GainBlockAction(p, p, this.block));
- atb(new ApplyPowerAction(p, p, new EnergizedPower(p, magicNumber), magicNumber));
- atb(new ApplyPowerAction(p, p, new NextTurnGainSlimeCrush(p, p, 1, false), 1));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- initializeDescription();
- }
- }
-
-}
diff --git a/src/main/java/expansioncontent/cards/QuickStudy.java b/src/main/java/expansioncontent/cards/QuickStudy.java
index 2786c0013..a5dfea6f1 100644
--- a/src/main/java/expansioncontent/cards/QuickStudy.java
+++ b/src/main/java/expansioncontent/cards/QuickStudy.java
@@ -1,6 +1,7 @@
package expansioncontent.cards;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
import collector.CollectorChar;
import com.badlogic.gdx.Gdx;
@@ -20,7 +21,7 @@
import java.util.ArrayList;
import java.util.Collections;
-import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import static expansioncontent.expansionContentMod.*;
public class QuickStudy extends AbstractExpansionCard {
@@ -31,30 +32,41 @@ private ArrayList getList() {
for (AbstractCard q : CardLibrary.getAllCards()) {
if (q.rarity != CardRarity.SPECIAL && q.hasTag(expansionContentMod.STUDY)) {
+ if(q.hasTag(CardTags.HEALING)){continue;}
+
if (AbstractDungeon.player instanceof SlimeboundCharacter) {
- if(q.cardID.equals(PrepareCrush.ID)){continue;}
+ if(q.hasTag(STUDY_SLIMEBOSS)){continue;}
}
+
if (AbstractDungeon.player instanceof TheHexaghost ) {
- if(q.cardID.equals(Hexaburn.ID)){continue;}
+ if(q.hasTag(STUDY_HEXAGHOST)){continue;}
}
+
if (AbstractDungeon.player instanceof GuardianCharacter ) {
- if(q.cardID.equals(GuardianWhirl.ID)){continue;}
+ if(q.hasTag(STUDY_GUARDIAN)){continue;}
}
+
if (AbstractDungeon.player instanceof ChampChar ) {
- if(q.cardID.equals(LastStand.ID)){continue;}
+ if(q.hasTag(STUDY_CHAMP)){continue;}
}
+
if (AbstractDungeon.player instanceof AutomatonChar ) {
- if(q.cardID.equals(HyperBeam.ID)){continue;}
+ if(q.hasTag(STUDY_AUTOMATON)){continue;}
}
+
if (AbstractDungeon.player instanceof CollectorChar ) {
- if(q.cardID.equals(YouAreMine.ID)){continue;}
+ if(q.hasTag(STUDY_COLLECTOR)){continue;}
+ }
+
+ if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if(q.hasTag(STUDY_AWAKENEDONE)){continue;}
}
AbstractCard r = q.makeCopy();
if (upgraded) {
r.upgrade();
}
- r.modifyCostForCombat(-99);
+ r.freeToPlayOnce = true;
myList.add(r);
}
}
@@ -70,6 +82,7 @@ public QuickStudy() {
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_skill.png", "expansioncontentResources/images/1024/bg_boss_skill.png");
this.exhaust = true;
loadJokeCardImage(this, "QuickStudy.png");
+ //this.tags.add(expansionContentMod.STUDY);
}
public void use(AbstractPlayer p, AbstractMonster m) {
diff --git a/src/main/java/expansioncontent/cards/Reverie.java b/src/main/java/expansioncontent/cards/Reverie.java
new file mode 100644
index 000000000..28d39413c
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Reverie.java
@@ -0,0 +1,42 @@
+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, 2, 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);
+ }
+ }
+
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/ShapePower.java b/src/main/java/expansioncontent/cards/ShapePower.java
index 4c6a48963..634845a59 100644
--- a/src/main/java/expansioncontent/cards/ShapePower.java
+++ b/src/main/java/expansioncontent/cards/ShapePower.java
@@ -15,7 +15,7 @@
import java.util.ArrayList;
-public class ShapePower extends AbstractExpansionCard implements OctopusCard {
+public class ShapePower extends AbstractExpansionCard {
public final static String ID = makeID("ShapePower");
public ShapePower() {
@@ -24,37 +24,18 @@ public ShapePower() {
tags.add(expansionContentMod.STUDY_SHAPES);
tags.add(expansionContentMod.STUDY);
baseMagicNumber = magicNumber = 2;
- baseDownfallMagic = downfallMagic = 5;
+ baseDownfallMagic = downfallMagic = 4;
loadJokeCardImage(this, "ShapePower.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
- atb(new OctoChoiceAction(m, this));
- }
-
- public ArrayList choiceList() {
- ArrayList cardList = new ArrayList<>();
- cardList.add(new OctoChoiceCard("expansioncontent:PolyBeam", EXTENDED_DESCRIPTION[0], "expansioncontentResources/images/cards/PolyBeam.png", EXTENDED_DESCRIPTION[1], -1, -1, magicNumber, CardType.POWER));
- cardList.add(new OctoChoiceCard("expansioncontent:DecaShield", EXTENDED_DESCRIPTION[2], "expansioncontentResources/images/cards/DecaShield.png", EXTENDED_DESCRIPTION[3], -1, -1, downfallMagic, CardType.POWER));
- return cardList;
- }
-
- public void doChoiceStuff(AbstractMonster m, OctoChoiceCard card) {
- AbstractPlayer p = AbstractDungeon.player;
- switch (card.cardID) {
- case "expansioncontent:PolyBeam": {
- atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
- break;
- }
- case "expansioncontent:DecaShield": {
- atb(new ApplyPowerAction(p, p, new PlatedArmorPower(p, downfallMagic)));
- }
- }
+ atb(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ atb(new ApplyPowerAction(p, p, new PlatedArmorPower(p, downfallMagic)));
}
@Override
public void upp() {
upgradeMagicNumber(1);
- upgradeDownfall(3);
+ upgradeDownfall(1);
}
}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/StudyTheSpire.java b/src/main/java/expansioncontent/cards/StudyTheSpire.java
index 891627f6f..5b9b493b8 100644
--- a/src/main/java/expansioncontent/cards/StudyTheSpire.java
+++ b/src/main/java/expansioncontent/cards/StudyTheSpire.java
@@ -2,6 +2,7 @@
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import champ.ChampChar;
import collector.CollectorChar;
import com.badlogic.gdx.Gdx;
@@ -34,22 +35,19 @@ 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;}
+ } else if (AbstractDungeon.player instanceof AwakenedOneChar) {
+ if(q.hasTag(expansionContentMod.STUDY_AWAKENEDONE)){continue;}
}
AbstractCard r = q.makeCopy();
diff --git a/src/main/java/expansioncontent/cards/SuperBloodthirst.java b/src/main/java/expansioncontent/cards/SuperBloodthirst.java
new file mode 100644
index 000000000..17447dddb
--- /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);
+ tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ //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, false));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeDamage(UPGRADE_DAMAGE);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/SuperBodyCrash.java b/src/main/java/expansioncontent/cards/SuperBodyCrash.java
new file mode 100644
index 000000000..04b989ee5
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperBodyCrash.java
@@ -0,0 +1,58 @@
+package expansioncontent.cards;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import expansioncontent.expansionContentMod;
+import guardian.GuardianMod;
+import guardian.cards.BodySlam;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class SuperBodyCrash extends AbstractExpansionCard {
+ public static final String ID = makeID("SuperBodyCrash");
+
+ private static final int BLOCK = 7;
+
+ public SuperBodyCrash() {
+ super(ID, 1, AbstractCard.CardType.ATTACK, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.ENEMY);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_guardian.png", "expansioncontentResources/images/1024/bg_boss_guardian.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperBodyCrash.png");
+ this.baseBlock = 6;
+ this.tags.add(expansionContentMod.STUDY_GUARDIAN);
+ this.tags.add(expansionContentMod.STUDY);
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ calculateCardDamage(m);
+ this.baseDamage = p.currentBlock + this.block;
+ calculateCardDamage(m);
+ addToBot((AbstractGameAction)new GainBlockAction((AbstractCreature)p, this.block));
+ addToBot((AbstractGameAction)new DamageAction((AbstractCreature)m, new DamageInfo((AbstractCreature)p, this.damage, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ this.rawDescription = this.DESCRIPTION;
+ initializeDescription();
+
+ }
+
+ public void applyPowers() {
+ super.applyPowers();
+ this.baseDamage = AbstractDungeon.player.currentBlock + this.block;
+ super.applyPowers();
+ this.rawDescription = this.DESCRIPTION;
+ this.rawDescription += BodySlam.UPGRADED_DESCRIPTION;
+ initializeDescription();
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeBaseCost(0);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/SuperClobber.java b/src/main/java/expansioncontent/cards/SuperClobber.java
new file mode 100644
index 000000000..6fe496bce
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperClobber.java
@@ -0,0 +1,61 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperClobber extends AbstractExpansionCard {
+
+ //Super Clobber
+ public final static String ID = makeID("SuperClobber");
+
+ private static final int DAMAGE = 6;
+
+ public SuperClobber() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
+ baseDamage = DAMAGE;
+ tags.add(CardTags.STRIKE);
+ //todo attack bg instead of power bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_champ.png", "expansioncontentResources/images/1024/bg_boss_champ.png");
+
+ tags.add(expansionContentMod.STUDY_CHAMP);
+ tags.add(expansionContentMod.STUDY);
+
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperClobber.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ atb(new WallopAction(m, makeInfo()));
+ }
+
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(3);
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/SuperEtherStep.java b/src/main/java/expansioncontent/cards/SuperEtherStep.java
new file mode 100644
index 000000000..be033e103
--- /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) {
+ dmg(m, AbstractGameAction.AttackEffect.FIRE);
+ this.addToBot(new ExhaustAction(1, false));
+ this.addToBot(new DrawCardAction(p, this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeDamage(UPG_DAMAGE);
+ upgradeMagicNumber(1);
+ rawDescription = UPGRADE_DESCRIPTION;
+ initializeDescription();
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/SuperGhostShield.java b/src/main/java/expansioncontent/cards/SuperGhostShield.java
new file mode 100644
index 000000000..3cfa3e2a1
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperGhostShield.java
@@ -0,0 +1,79 @@
+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.helpers.GameDictionary;
+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);
+
+ this.keywords.add(GameDictionary.BLOCK.NAMES[0].toLowerCase());
+
+ 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);
+ }
+
+ }
+ }
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperLivingWall.java b/src/main/java/expansioncontent/cards/SuperLivingWall.java
new file mode 100644
index 000000000..bd7c1a348
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperLivingWall.java
@@ -0,0 +1,130 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import com.badlogic.gdx.graphics.Color;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import slimebound.SlimeboundMod;
+import slimebound.patches.AbstractCardEnum;
+import slimebound.powers.SlimedThornsPower;
+import slimebound.vfx.FakeFlashAtkImgEffect;
+import slimebound.vfx.SlimeDripsEffectPurple;
+import slimebound.vfx.SlimeProjectileEffect;
+import expansioncontent.expansionContentMod;
+import slimebound.vfx.FakeFlashAtkImgEffect;
+import slimebound.vfx.SlimeProjectileEffect;
+
+import java.util.ArrayList;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperLivingWall extends AbstractExpansionCard {
+
+ public static final String ID = "expansioncontent:SuperLivingWall";
+ public static final String NAME;
+ public static final String DESCRIPTION;
+ public static final String IMG_PATH = "cards/slimewave.png";
+ private static final CardType TYPE = CardType.SKILL;
+ private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardTarget TARGET = CardTarget.SELF;
+ private static final CardStrings cardStrings;
+ private static final int COST = 2;
+ private static final int MAGIC = 6;
+ private static final int UPGRADE_BONUS = 3;
+ public static String UPGRADED_DESCRIPTION;
+
+ static {
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ NAME = cardStrings.NAME;
+ DESCRIPTION = cardStrings.DESCRIPTION;
+ UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+
+ }
+
+
+ public SuperLivingWall() {
+ super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "LivingWall.png");
+ tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ tags.add(expansionContentMod.STUDY);
+
+ this.baseBlock = 14;
+ baseMagicNumber = magicNumber = MAGIC;
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY - 40 * Settings.scale, 2F, false, 0.6F, false, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 40 * Settings.scale, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 80 * Settings.scale, 2F, false, 0.6F, true, false), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, p.hb.cX + 275 * Settings.scale, p.hb.cY + 120 * Settings.scale, 2F, false, 0.6F, true, false), 0.325F));
+
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY - 30 * Settings.scale, Color.PURPLE, 1F, true, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 50 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 90 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.0F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new FakeFlashAtkImgEffect(p.hb.cX + 275 * Settings.scale, p.hb.cY + 130 * Settings.scale, Color.PURPLE, 1F, false, .4F), 0.1F));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY - 40 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 40 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 80 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 290 * Settings.scale, p.hb.cY + 120 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY - 30 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 10 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 50 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 80 * Settings.scale, 4), 0.0f));
+ AbstractDungeon.actionManager.addToBottom(new VFXAction(new SlimeDripsEffectPurple(p.hb.cX + 310 * Settings.scale, p.hb.cY + 130 * Settings.scale, 4), 0.0f));
+
+ AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.GainBlockAction(p, p, this.block));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new SlimedThornsPower(p, p, this.magicNumber), this.magicNumber));
+
+ }
+
+ public AbstractCard makeCopy() {
+
+ return new SuperLivingWall();
+
+ }
+
+ public void upgrade() {
+
+ if (!this.upgraded) {
+
+ upgradeName();
+
+ upgradeMagicNumber(2);
+ upgradeBlock(4);
+ }
+
+ }
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperPrepareCrush.java b/src/main/java/expansioncontent/cards/SuperPrepareCrush.java
new file mode 100644
index 000000000..c67fbfbca
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperPrepareCrush.java
@@ -0,0 +1,68 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.utility.ShakeScreenAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ScreenShake;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
+import expansioncontent.expansionContentMod;
+import slimebound.cards.SlimeCrush;
+import slimebound.powers.EnergizedSlimeboundPower;
+import slimebound.powers.NextTurnGainSlimeCrush;
+import slimebound.powers.NextTurnGainStrengthPower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+public class SuperPrepareCrush extends AbstractExpansionCard {
+ public final static String ID = makeID("SuperPrepareCrush");
+
+
+ private static final int BLOCK = 10;
+ private static final int UPGRADE_BLOCK = 5;
+ private static final int MAGIC = 3;
+
+ public SuperPrepareCrush() {
+ super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+
+ tags.add(expansionContentMod.STUDY_SLIMEBOSS);
+ tags.add(expansionContentMod.STUDY);
+ this.exhaust = true;
+ this.cardsToPreview = new SlimeCrush();
+ this.magicNumber = this.baseMagicNumber = 3;
+ cardsToPreview = new SlimeCrush();
+ loadJokeCardImage(this, "SuperPrepareCrush.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.effectList.add(new MegaSpeechBubble(p.hb.cX, p.hb.cY, 1.0F, EXTENDED_DESCRIPTION[0], true));
+ AbstractDungeon.actionManager.addToBottom(new ShakeScreenAction(0.3F, ScreenShake.ShakeDur.MED, ScreenShake.ShakeIntensity.LOW));
+
+ if (upgraded)
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedSlimeboundPower(p, p, 4), 4));
+ else
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedSlimeboundPower(p, p, 3), 3));
+
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new NextTurnGainStrengthPower(p, p, this.magicNumber), this.magicNumber));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new NextTurnGainSlimeCrush(p, p, 1, this.upgraded), 1));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ AbstractCard q = new SlimeCrush();
+ q.upgrade();
+ cardsToPreview = q;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_slime.png", "expansioncontentResources/images/1024/bg_boss_slime.png");
+ upgradeMagicNumber(2);
+ this.rawDescription = UPGRADE_DESCRIPTION;
+ this.initializeDescription();
+ }
+ }
+}
+
+
diff --git a/src/main/java/expansioncontent/cards/SuperSomberShield.java b/src/main/java/expansioncontent/cards/SuperSomberShield.java
new file mode 100644
index 000000000..ad76ad3f4
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperSomberShield.java
@@ -0,0 +1,69 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import collector.cards.AbstractCollectorCard;
+import collector.cards.OnPyreCard;
+import collector.cards.SomberShield;
+import collector.powers.AddCopyNextTurnPower;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import static hermit.util.Wiz.applyToSelfTop;
+
+import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+
+public class SuperSomberShield extends AbstractExpansionCard implements OnPyreCard {
+ public final static String ID = makeID(SuperSomberShield.class.getSimpleName());
+ // intellij stuff skill, self, common, , , 7, 3, ,
+
+ public SuperSomberShield() {
+ super(ID, 1, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
+ baseBlock = 9;
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
+
+ tags.add(expansionContentMod.STUDY_COLLECTOR);
+ tags.add(expansionContentMod.STUDY);
+
+ isPyre();
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperSomberShield.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ blck();
+ }
+
+ @Override
+ public void onPyred(AbstractCard card) {
+ applyToSelfTop(new AddCopyNextTurnPower(card));
+ }
+
+ public void upp() {
+ upgradeBlock(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java b/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java
new file mode 100644
index 000000000..c3c1b2d35
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/SuperWhirlingFlame.java
@@ -0,0 +1,66 @@
+package expansioncontent.cards;
+
+
+import champ.ChampMod;
+import champ.relics.PowerArmor;
+import collector.cards.AbstractCollectorCard;
+import collector.cards.OnPyreCard;
+import collector.cards.SomberShield;
+import collector.powers.AddCopyNextTurnPower;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.TalkAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
+import com.megacrit.cardcrawl.actions.unique.DiscardPileToTopOfDeckAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.watcher.WallopAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.monsters.city.Champ;
+import com.megacrit.cardcrawl.powers.VulnerablePower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
+import downfall.util.CardIgnore;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+import static expansioncontent.cards.AbstractExpansionCard.makeID;
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+import static hermit.util.Wiz.applyToSelfTop;
+
+import collector.powers.AddCopyNextTurnPower;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+
+
+public class SuperWhirlingFlame extends AbstractExpansionCard {
+ public final static String ID = makeID(SuperWhirlingFlame.class.getSimpleName());
+ // intellij stuff skill, self, common, , , 7, 3, ,
+
+ public SuperWhirlingFlame() {
+ super(ID, 1, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ baseDamage = 8;
+ isMultiDamage = true;
+ //todo attack bg instead of skill bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
+
+ tags.add(expansionContentMod.STUDY_COLLECTOR);
+ tags.add(expansionContentMod.STUDY);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "SuperWhirlingFlame.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ allDmg(AbstractGameAction.AttackEffect.FIRE);
+ atb(new DiscardPileToTopOfDeckAction(p));
+ }
+
+ public void upp() {
+ upgradeDamage(3);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/TakeFlight.java b/src/main/java/expansioncontent/cards/TakeFlight.java
new file mode 100644
index 000000000..dbb375999
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/TakeFlight.java
@@ -0,0 +1,86 @@
+package expansioncontent.cards;
+
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.powers.RisingChantPower;
+import awakenedOne.relics.CursedBlessing;
+import awakenedOne.relics.WhiteRibbon;
+import awakenedOne.util.Wiz;
+import com.megacrit.cardcrawl.actions.common.HealAction;
+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 expansioncontent.expansionContentMod;
+
+import static awakenedOne.AwakenedOneMod.ACTIVECHANT;
+import static awakenedOne.AwakenedOneMod.CHANT;
+
+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;
+
+ public TakeFlight() {
+ super(ID, 1, AbstractCard.CardType.POWER, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.SELF);
+ this.tags.add(expansionContentMod.STUDY);
+ this.tags.add(expansionContentMod.STUDY_AWAKENEDONE);
+ setBackgroundTexture("expansioncontentResources/images/512/bg_boss_awakenedone.png", "expansioncontentResources/images/1024/bg_boss_awakenedone.png");
+ this.baseMagicNumber = this.magicNumber = 6;
+ this.baseDownfallMagic = this.downfallMagic = 8;
+ tags.add(CardTags.HEALING);
+ this.tags.add(AwakenedOneMod.CHANT);
+ expansionContentMod.loadJokeCardImage((AbstractCard)this, "TakeFlight.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ if (Wiz.isChantActive()) {
+ chant();
+ }
+ if (!Wiz.isChantActive()) {
+ atb(new HealAction(p, p, magicNumber));
+ }
+ }
+
+ public void chant() {
+ atb(new HealAction(AbstractDungeon.player, AbstractDungeon.player, downfallMagic));
+
+ if (!this.hasTag(ACTIVECHANT) && this.hasTag(CHANT)) {
+ this.tags.add(ACTIVECHANT);
+ }
+
+ if (AbstractDungeon.player.hasPower(RisingChantPower.POWER_ID)) {
+ applyToSelf(new StrengthPower(AbstractDungeon.player, AbstractDungeon.player.getPower(RisingChantPower.POWER_ID).amount));
+ AbstractDungeon.player.getPower(RisingChantPower.POWER_ID).onSpecificTrigger();
+ }
+
+ if (AbstractDungeon.player.hasRelic(CursedBlessing.ID)) {
+ AbstractDungeon.player.getRelic(CursedBlessing.ID).onTrigger();
+ }
+ if (AbstractDungeon.player.hasRelic(WhiteRibbon.ID)) {
+ AbstractDungeon.player.getRelic(WhiteRibbon.ID).onTrigger();
+ }
+
+ }
+
+ public void triggerOnGlowCheck() {
+ if (!AbstractDungeon.actionManager.cardsPlayedThisCombat.isEmpty() && ((AbstractCard)AbstractDungeon.actionManager.cardsPlayedThisCombat.get(AbstractDungeon.actionManager.cardsPlayedThisCombat.size() - 1)).type == CardType.POWER) {
+ this.glowColor = AbstractCard.GOLD_BORDER_GLOW_COLOR.cpy();
+ } else {
+ this.glowColor = AbstractCard.BLUE_BORDER_GLOW_COLOR.cpy();
+ }
+
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ upgradeName();
+ upgradeMagicNumber(2);
+ upgradeDownfall(4);
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/cards/Virus.java b/src/main/java/expansioncontent/cards/Virus.java
new file mode 100644
index 000000000..acbb5e5ff
--- /dev/null
+++ b/src/main/java/expansioncontent/cards/Virus.java
@@ -0,0 +1,55 @@
+package expansioncontent.cards;
+
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ExhaustAction;
+import com.megacrit.cardcrawl.actions.common.MakeTempCardInDrawPileAction;
+import com.megacrit.cardcrawl.actions.utility.SFXAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.status.VoidCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.MindblastEffect;
+import downfall.cards.MajorBeam;
+import expansioncontent.actions.ExhaustVirusAction;
+import expansioncontent.expansionContentMod;
+import expansioncontent.powers.DeEnergizedPower;
+
+import static expansioncontent.expansionContentMod.loadJokeCardImage;
+
+
+public class Virus extends AbstractExpansionCard {
+ public final static String ID = makeID("Virus");
+
+
+ private static final int MAGIC = 5;
+
+ public Virus() {
+ super(ID, 1, CardType.SKILL, CardRarity.RARE, CardTarget.SELF);
+ //todo skill bg instead of attack bg
+ this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_automaton.png", "expansioncontentResources/images/1024/bg_boss_automaton.png");
+
+ tags.add(expansionContentMod.STUDY_AUTOMATON);
+ tags.add(expansionContentMod.STUDY);
+ cardsToPreview = new MajorBeam();
+ baseMagicNumber = MAGIC;
+ this.exhaust = true;
+
+ loadJokeCardImage(this, "Virus.png");
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ExhaustVirusAction(5, false, true, true));
+
+ }
+
+ public void upgrade() {
+ if (!upgraded) {
+ upgradeName();
+ upgradeBaseCost(0);
+ }
+ }
+
+}
diff --git a/src/main/java/expansioncontent/cards/YouAreMine.java b/src/main/java/expansioncontent/cards/YouAreMine.java
index 83c98f32c..fb80250de 100644
--- a/src/main/java/expansioncontent/cards/YouAreMine.java
+++ b/src/main/java/expansioncontent/cards/YouAreMine.java
@@ -1,6 +1,7 @@
package expansioncontent.cards;
+import collector.powers.DoomPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
@@ -13,6 +14,8 @@
import com.megacrit.cardcrawl.vfx.CollectorCurseEffect;
import expansioncontent.expansionContentMod;
+import static collector.util.Wiz.applyToEnemy;
+import static collector.util.Wiz.forAllMonstersLiving;
import static expansioncontent.expansionContentMod.loadJokeCardImage;
public class YouAreMine extends AbstractExpansionCard {
@@ -20,14 +23,17 @@ public class YouAreMine extends AbstractExpansionCard {
private static final int MAGIC = 3;
private static final int UPGRADE_MAGIC = 2;
+ private static final int downfallMagic = 6;
+ private static final int UPGRADE_downfallMagic = 4;
public YouAreMine() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
+ super(ID, 2, CardType.SKILL, CardRarity.RARE, CardTarget.ALL_ENEMY);
this.setBackgroundTexture("expansioncontentResources/images/512/bg_boss_collector.png", "expansioncontentResources/images/1024/bg_boss_collector.png");
tags.add(expansionContentMod.STUDY_COLLECTOR);
tags.add(expansionContentMod.STUDY);
+ baseDownfallMagic = downfallMagic;
baseMagicNumber = magicNumber = MAGIC;
this.exhaust = true;
loadJokeCardImage(this, "YouAreMine.png");
@@ -41,24 +47,19 @@ public void use(AbstractPlayer p, AbstractMonster m) {
for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
if ((!monster.isDead) && (!monster.isDying) && !monster.halfDead) {
atb(new VFXAction(new CollectorCurseEffect(monster.hb.cX, monster.hb.cY), .5F));
- atb(new RemoveAllBlockAction(monster, p));
-
atb(new ApplyPowerAction(monster, p, new WeakPower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
atb(new ApplyPowerAction(monster, p, new VulnerablePower(monster, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
}
+ }
+ forAllMonstersLiving(q -> applyToEnemy(q, new DoomPower(q, 2*magicNumber)));
}
}
-
-
- }
-
public void upgrade() {
if (!upgraded) {
upgradeName();
upgradeMagicNumber(UPGRADE_MAGIC);
+ upgradeDownfall(4);
}
}
diff --git a/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java b/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java
deleted file mode 100644
index aeb909b1b..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/ChargeUp.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.utility.SFXAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-import slimebound.powers.NextTurnGainStrengthPower;
-
-@CardIgnore
-public class ChargeUp extends AbstractExpansionCard {
- public final static String ID = makeID("ChargeUp");
-
- private static final int BLOCK = 20;
- private static final int UPGRADE_BLOCK = 10;
- private static final int MAGIC = 2;
-
- public ChargeUp() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_GUARDIAN);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new SFXAction("MONSTER_GUARDIAN_DESTROY"));
- atb(new ApplyPowerAction(p, p, new NextTurnBlockPower(p, this.block), this.block));
- atb(new ApplyPowerAction(p, p, new NextTurnGainStrengthPower(p, p, this.magicNumber), this.magicNumber));
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- }
- }
-
-}
-
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java b/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java
deleted file mode 100644
index ce5133c7d..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/FaceSlap.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.common.DamageAction;
-import com.megacrit.cardcrawl.actions.common.RemoveAllBlockAction;
-import com.megacrit.cardcrawl.cards.DamageInfo;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.VulnerablePower;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-
-@CardIgnore
-public class FaceSlap extends AbstractExpansionCard {
- public final static String ID = makeID("FaceSlap");
-
- private static final int DAMAGE = 12;
- private static final int UPGRADE_DAMAGE = 3;
- private static final int MAGIC = 2;
- private static final int UPGRADE_MAGIC = 1;
-
- public FaceSlap() {
- super(ID, 2, CardType.ATTACK, CardRarity.UNCOMMON, CardTarget.ENEMY);
-
- tags.add(expansionContentMod.STUDY_CHAMP);
- tags.add(expansionContentMod.STUDY);
-
- baseDamage = DAMAGE;
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- atb(new RemoveAllBlockAction(m, p));
- atb(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- atb(new ApplyPowerAction(m, p, new VulnerablePower(m, this.magicNumber, false), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeDamage(UPGRADE_DAMAGE);
- upgradeMagicNumber(UPGRADE_MAGIC);
- }
- }
-
-}
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java b/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java
deleted file mode 100644
index b2a7384ba..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/GoopSpray.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.actions.animations.VFXAction;
-import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-import com.megacrit.cardcrawl.actions.utility.WaitAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import com.megacrit.cardcrawl.powers.VulnerablePower;
-import downfall.util.CardIgnore;
-import expansioncontent.cards.AbstractExpansionCard;
-import expansioncontent.expansionContentMod;
-import slimebound.powers.SlimedPower;
-import slimebound.vfx.SlimeProjectileEffect;
-
-@CardIgnore
-public class GoopSpray extends AbstractExpansionCard {
- public final static String ID = makeID("GoopSpray");
-
- private static final int MAGIC = 12;
- private static final int UPGRADE_MAGIC = 4;
-
- public GoopSpray() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.ALL_ENEMY);
-
- tags.add(expansionContentMod.STUDY_SLIMEBOSS);
- tags.add(expansionContentMod.STUDY);
-
- baseMagicNumber = magicNumber = MAGIC;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- if (!AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
- flash();
- for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
- if ((!monster.isDead) && (!monster.isDying)) {
- atb(new VFXAction(new SlimeProjectileEffect(p.hb.cX, p.hb.cY, monster.hb.cX, monster.hb.cY, 3F, false, 0.6F), 0.01F));
-
-
- }
- atb(new WaitAction(0.2F));
- }
- for (AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
- if ((!monster.isDead) && (!monster.isDying)) {
-
- atb(new ApplyPowerAction(monster, p, new SlimedPower(monster, p, this.magicNumber), this.magicNumber, true, AbstractGameAction.AttackEffect.NONE));
- int vuln = 2;
- if (upgraded) vuln++;
- atb(new ApplyPowerAction(monster, p, new VulnerablePower(monster, vuln, false), vuln, true, AbstractGameAction.AttackEffect.NONE));
-
-
- }
-
- }
- }
-
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_MAGIC);
- rawDescription = UPGRADE_DESCRIPTION;
- initializeDescription();
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java b/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
index 9175c03df..e97fb2214 100644
--- a/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
+++ b/src/main/java/expansioncontent/cards/deprecated/HeadSlam.java
@@ -1,4 +1,4 @@
-/*
+package expansioncontent.cards.deprecated;/*
package expansioncontent.cards;
diff --git a/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java b/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java
deleted file mode 100644
index 2ba8d99f3..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/ManipulateTime.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import downfall.util.CardIgnore;
-import expansioncontent.expansionContentMod;
-import expansioncontent.cards.AbstractExpansionCard;
-import slimebound.actions.TriggerStartOfTurnEffectsAction;
-
-@CardIgnore
-public class ManipulateTime extends AbstractExpansionCard {
- public final static String ID = makeID("ManipulateTime");
-
- private static final int BLOCK = 10;
- private static final int UPGRADE_BLOCK = 4;
-
- public ManipulateTime() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_TIMEEATER);
- tags.add(expansionContentMod.STUDY);
-
- baseBlock = BLOCK;
- this.exhaust = true;
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
-
- CardCrawlGame.sound.play("POWER_TIME_WARP", 0.05F);
- AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.BorderFlashEffect(com.badlogic.gdx.graphics.Color.GOLD, true));
- AbstractDungeon.topLevelEffectsQueue.add(new com.megacrit.cardcrawl.vfx.combat.TimeWarpTurnEndEffect());
- atb(new com.megacrit.cardcrawl.actions.common.GainBlockAction(p, p, this.block));
-
- atb(new TriggerStartOfTurnEffectsAction(p));
-
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPGRADE_BLOCK);
- }
- }
-
-}
-
diff --git a/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java b/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java
deleted file mode 100644
index 0ebbbc3fb..000000000
--- a/src/main/java/expansioncontent/cards/deprecated/SuperHexaguard.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package expansioncontent.cards.deprecated;
-
-
-import com.megacrit.cardcrawl.actions.common.DrawCardAction;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.monsters.AbstractMonster;
-import downfall.util.CardIgnore;
-import expansioncontent.cards.AbstractExpansionCard;
-import expansioncontent.expansionContentMod;
-
-@CardIgnore
-public class SuperHexaguard extends AbstractExpansionCard {
- public final static String ID = makeID("SuperHexaguard");
-
-
- private static final int BLOCK = 12;
- private static final int UPG_BLOCK = 4;
-
- public SuperHexaguard() {
- super(ID, 2, CardType.SKILL, CardRarity.UNCOMMON, CardTarget.SELF);
-
- tags.add(expansionContentMod.STUDY_HEXAGHOST);
- tags.add(expansionContentMod.STUDY);
- baseBlock = BLOCK;
- isEthereal = true;
-
- }
-
- public void use(AbstractPlayer p, AbstractMonster m) {
-
- blck();
- atb(new DrawCardAction(p, 1));
-
- }
-
- public void triggerOnExhaust() {
- blck();
- atb(new DrawCardAction(AbstractDungeon.player, 1));
- }
-
- public void upgrade() {
- if (!upgraded) {
- upgradeName();
- upgradeBlock(UPG_BLOCK);
- }
- }
-
-}
-
-
diff --git a/src/main/java/expansioncontent/patches/ShopBossPatch.java b/src/main/java/expansioncontent/patches/ShopBossPatch.java
index 85936aa9d..aa198ae96 100644
--- a/src/main/java/expansioncontent/patches/ShopBossPatch.java
+++ b/src/main/java/expansioncontent/patches/ShopBossPatch.java
@@ -1,6 +1,7 @@
package expansioncontent.patches;
import automaton.AutomatonChar;
+import awakenedOne.AwakenedOneChar;
import basemod.ReflectionHacks;
import champ.ChampChar;
import collector.CollectorChar;
@@ -13,6 +14,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 +29,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 +38,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;
@@ -46,6 +50,31 @@ public static void Postfix(ShopScreen __instance) {
}
}
+ //public class ShopBossPatch {
+ // public static void Postfix(ShopScreen __instance) {
+ // //if (EvilModeCharacterSelect.evilMode) {
+ // ArrayList colorlessCards = (ArrayList) ReflectionHacks.getPrivate(__instance, ShopScreen.class, "colorlessCards");
+ // 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;
+ // for (final AbstractRelic r : AbstractDungeon.player.relics) {
+ // r.onPreviewObtainCard(colorlessCards.get(0));
+ // }
+ // }
+ // if (EvilModeCharacterSelect.evilMode || (downfallMod.contentSharing_colorlessCards && (AbstractDungeon.merchantRng.randomBoolean()))) {
+ // // if (AbstractDungeon.merchantRng.randomBoolean()) {
+ // int x = colorlessCards.get(1).price;
+ // colorlessCards.set(1, getReplacement(colorlessCards.get(1).rarity));
+ // colorlessCards.get(1).price = x;
+ // for (final AbstractRelic r : AbstractDungeon.player.relics) {
+ // r.onPreviewObtainCard(colorlessCards.get(1));
+ // }
+ // }
+ // }
+ // //}
+
public static AbstractCard getReplacement(AbstractCard.CardRarity rarity) {
ArrayList potentialCardsList = new ArrayList<>();
for (AbstractCard q : CardLibrary.getAllCards()) {
@@ -60,25 +89,40 @@ 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;
+ }
}
+
+ if (AbstractDungeon.player instanceof AwakenedOneChar || RandomCardWithTagAction.awakenedLocked()) {
+ return !q.hasTag(expansionContentMod.STUDY_AWAKENEDONE);
+ }
+
return true;
}
}
diff --git a/src/main/java/expansioncontent/powers/AwakenDeathPower.java b/src/main/java/expansioncontent/powers/AwakenDeathPower.java
index 7f4855977..eae219168 100644
--- a/src/main/java/expansioncontent/powers/AwakenDeathPower.java
+++ b/src/main/java/expansioncontent/powers/AwakenDeathPower.java
@@ -1,13 +1,17 @@
package expansioncontent.powers;
+import awakenedOne.AwakenedOneMod;
+import awakenedOne.ui.OrbitingSpells;
import basemod.interfaces.CloneablePowerInterface;
+import champ.powers.PushThroughPower;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.OnPlayerDeathPower;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.HealAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
+import com.megacrit.cardcrawl.actions.unique.RemoveDebuffsAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -15,10 +19,13 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.vfx.combat.IntenseZoomEffect;
import expansioncontent.expansionContentMod;
import downfall.util.TextureLoader;
+import static awakenedOne.util.Wiz.*;
+
public class AwakenDeathPower extends AbstractPower implements OnPlayerDeathPower, CloneablePowerInterface {
public static final String POWER_ID = expansionContentMod.makeID("AwakenDeathPower");
@@ -50,19 +57,24 @@ public boolean onPlayerDeath(AbstractPlayer abstractPlayer, DamageInfo damageInf
return false;
}
- public void onVictory()
- {
- AbstractPlayer p = com.megacrit.cardcrawl.dungeons.AbstractDungeon.player;
+ public void onVictory() {
+ AbstractPlayer p = AbstractDungeon.player;
if (p.currentHealth > 0) {
p.heal(this.amount);
}
- }
+ }
public void trigger(AbstractPlayer abstractPlayer) {
AbstractDungeon.actionManager.addToTop(new RemoveSpecificPowerAction(this.owner, this.owner, AwakenDeathPower.POWER_ID));
+ atb(new RemoveDebuffsAction(this.owner));
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ applyToSelfTop(new PushThroughPower(1));
+ }
AbstractDungeon.actionManager.addToTop(new HealAction(abstractPlayer, abstractPlayer, this.amount));
AbstractDungeon.actionManager.addToTop(new VFXAction(this.owner, new IntenseZoomEffect(this.owner.hb.cX, this.owner.hb.cY, true), 0.05F, true));
AbstractDungeon.actionManager.addToTop(new SFXAction("VO_AWAKENEDONE_1"));
+ AwakenedOneMod.awakenedthiscombat = true;
+ OrbitingSpells.upgradeall();
}
@Override
diff --git a/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java b/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java
new file mode 100644
index 000000000..4f6a04488
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/BeatOfDeathThatDoesntKillYouPower.java
@@ -0,0 +1,42 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
+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.powers.AbstractPower;
+
+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 onAfterCardPlayed(AbstractCard card) {
+ 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/DeEnergizedPower.java b/src/main/java/expansioncontent/powers/DeEnergizedPower.java
index 51b7b43e5..91300eaee 100644
--- a/src/main/java/expansioncontent/powers/DeEnergizedPower.java
+++ b/src/main/java/expansioncontent/powers/DeEnergizedPower.java
@@ -29,7 +29,7 @@ public DeEnergizedPower(final int amount) {
this.owner = AbstractDungeon.player;
this.amount = amount;
this.type = PowerType.DEBUFF;
- this.isTurnBased = true;
+ this.isTurnBased = false;
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/expansioncontent/powers/EvilWithinPower.java b/src/main/java/expansioncontent/powers/EvilWithinPower.java
new file mode 100644
index 000000000..46b92bc43
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/EvilWithinPower.java
@@ -0,0 +1,66 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
+import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
+import com.megacrit.cardcrawl.actions.utility.UseCardAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.cards.DamageInfo.DamageType;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class EvilWithinPower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:EvilWithinPower";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+ public static final int DEBUFF_AMT = 5;
+ private int damage;
+
+ public EvilWithinPower(AbstractCreature owner, int damage) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.type = PowerType.BUFF;
+ this.amount = 5;
+ this.isTurnBased = false;
+ this.updateDescription();
+ this.loadRegion("sadistic");
+ }
+
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0] + this.damage + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[3];
+ } else {
+ this.description = DESCRIPTIONS[0] + this.damage + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+
+ }
+
+ public void stackPower(int stackAmount) {
+ this.fontScale = 8.0F;
+ this.damage += stackAmount;
+ this.updateDescription();
+ }
+
+ public void onApplyPower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if (power.type == PowerType.DEBUFF && !power.ID.equals("Shackled") && source == this.owner && target != this.owner && !target.hasPower("Artifact")) {
+ --this.amount;
+ if (this.amount == 0) {
+ this.flash();
+ this.amount = 5;
+ this.addToBot(new DamageAllEnemiesAction(AbstractDungeon.player, DamageInfo.createDamageMatrix(this.damage, true), DamageType.THORNS, AttackEffect.SLASH_DIAGONAL));
+ }
+ this.updateDescription();
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/PandemoniumPower.java b/src/main/java/expansioncontent/powers/PandemoniumPower.java
new file mode 100644
index 000000000..35fa02271
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/PandemoniumPower.java
@@ -0,0 +1,75 @@
+package expansioncontent.powers;
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.utility.UnlimboAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+
+public class PandemoniumPower extends AbstractPower {
+ public static final String POWER_ID = "expansioncontent:PandemoniumPower";
+ private static final PowerStrings powerStrings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
+ public static final String NAME = powerStrings.NAME;
+ public static final String[] DESCRIPTIONS = powerStrings.DESCRIPTIONS;
+
+ public PandemoniumPower(AbstractCreature owner, int amount) {
+ this.name = NAME;
+ this.ID = POWER_ID;
+ this.owner = owner;
+ this.amount = amount;
+ this.type = PowerType.BUFF;
+ this.isTurnBased = false;
+ this.updateDescription();
+ this.loadRegion("mayhem");
+ priority = -999;
+ }
+
+ @Override
+ public void updateDescription() {
+ if (this.amount == 1) {
+ this.description = DESCRIPTIONS[0];
+ } else {
+ this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
+ }
+ }
+
+ @Override
+ public void atStartOfTurn() {
+ this.flash();
+ for (int i = 0; i < this.amount; ++i) {
+ if (!AbstractDungeon.player.discardPile.isEmpty()) {
+ AbstractCard cardToPlay = AbstractDungeon.player.discardPile.getRandomCard(AbstractDungeon.cardRandomRng);
+ AbstractDungeon.player.discardPile.removeCard(cardToPlay);
+ this.addToBot(new AbstractGameAction() {
+ @Override
+ public void update() {
+ AbstractMonster randomMonster = AbstractDungeon.getCurrRoom().monsters.getRandomMonster(null, true, AbstractDungeon.cardRandomRng);
+ //cardToPlay.freeToPlayOnce = true;
+ cardToPlay.applyPowers();
+ cardToPlay.calculateCardDamage(randomMonster);
+
+ // Add the card to the player's limbo (temporary play area)
+ AbstractDungeon.player.limbo.addToBottom(cardToPlay);
+ cardToPlay.current_y = -200.0F * Settings.scale;
+ cardToPlay.target_x = (Settings.WIDTH / 2.0F - 300.0F * Settings.scale);
+ cardToPlay.target_y = (Settings.HEIGHT / 2.0F);
+ // Calculate the damage for the target
+ cardToPlay.calculateCardDamage(randomMonster);
+
+ // Add the card to the action manager's card queue, targeting the selected monster
+ AbstractDungeon.actionManager.cardQueue.add(new com.megacrit.cardcrawl.cards.CardQueueItem(cardToPlay, randomMonster, cardToPlay.energyOnUse));
+ this.addToTop(new UnlimboAction(cardToPlay));
+ this.isDone = true;
+ }
+ });
+
+ }
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/ReveriePower.java b/src/main/java/expansioncontent/powers/ReveriePower.java
new file mode 100644
index 000000000..0ebd37c41
--- /dev/null
+++ b/src/main/java/expansioncontent/powers/ReveriePower.java
@@ -0,0 +1,77 @@
+package expansioncontent.powers;
+
+import basemod.BaseMod;
+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 hermit.util.Wiz;
+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() {
+ if (Wiz.hand().size() < BaseMod.MAX_HAND_SIZE) {
+ this.flash();
+ if (!AbstractDungeon.player.discardPile.isEmpty()) {
+ ArrayList cardsToChooseFrom = new ArrayList<>();
+
+ for (int i = 0; i < this.amount && i < AbstractDungeon.player.discardPile.size(); ++i) {
+ cardsToChooseFrom.add(AbstractDungeon.player.discardPile.group.get(i));
+ }
+
+ if (!cardsToChooseFrom.isEmpty()) {
+ this.addToBot(new SelectCardsCenteredAction(
+ cardsToChooseFrom,
+ 1,
+ DESCRIPTIONS[3],
+ (selectedCards) -> {
+ AbstractCard chosenCard = selectedCards.get(0);
+ AbstractDungeon.player.discardPile.removeCard(chosenCard);
+ AbstractDungeon.player.hand.addToHand(chosenCard);
+
+ chosenCard.lighten(false);
+ chosenCard.unhover();
+ chosenCard.applyPowers();
+ }
+ ));
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/expansioncontent/powers/VexVinciblePower.java b/src/main/java/expansioncontent/powers/VexVinciblePower.java
index 0a123ae32..969ac0214 100644
--- a/src/main/java/expansioncontent/powers/VexVinciblePower.java
+++ b/src/main/java/expansioncontent/powers/VexVinciblePower.java
@@ -1,29 +1,36 @@
package expansioncontent.powers;
import com.evacipated.cardcrawl.mod.stslib.powers.abstracts.TwoAmountPower;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
-
-import static expansioncontent.expansionContentMod.makeID;
+import com.megacrit.cardcrawl.powers.AbstractPower;
+import expansioncontent.expansionContentMod;
public class VexVinciblePower extends TwoAmountPower {
- public static final String POWER_ID = makeID("VexVinciblePower");
- public static final String NAME = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).NAME;
- public static final String[] DESCRIPTIONS = CardCrawlGame.languagePack.getPowerStrings(POWER_ID).DESCRIPTIONS;
+ public static final String POWER_ID = expansionContentMod.makeID("VexVinciblePower");
+
+ public static final String NAME = (CardCrawlGame.languagePack.getPowerStrings(POWER_ID)).NAME;
+
+ public static final String[] DESCRIPTIONS = (CardCrawlGame.languagePack.getPowerStrings(POWER_ID)).DESCRIPTIONS;
+
public int maxAmt;
+ public int variable;
+
private boolean activated = false;
- public VexVinciblePower(AbstractCreature owner, int amount) {
+ public VexVinciblePower(AbstractCreature owner, int amount, int amount2, int amount3) {
this.name = NAME;
this.ID = POWER_ID;
this.owner = owner;
- this.amount = amount; //duration
- this.amount2 = 10; //damage cap, also "damage remaining this turn"
+ this.amount = amount;
+ this.amount2 = amount2;
+ this.variable = amount3;
this.maxAmt = amount;
- this.updateDescription();
- this.loadRegion("heartDef");
+ updateDescription();
+ loadRegion("heartDef");
this.priority = 99;
this.activated = false;
}
@@ -31,32 +38,26 @@ public VexVinciblePower(AbstractCreature owner, int amount) {
public int onLoseHp(int damageAmount) {
if (damageAmount > this.amount2) {
damageAmount = this.amount2;
- activated = true;
+ this.activated = true;
}
-
this.amount2 -= damageAmount;
- if (this.amount2 < 0) {
+ if (this.amount2 < 0)
this.amount2 = 0;
- }
-
- this.updateDescription();
-
+ updateDescription();
return damageAmount;
}
- @Override
- public void atEndOfRound(){
- if (activated) {
- addToBot(new ReducePowerAction(owner, owner, this, 1));
- }
- this.amount2 = 10;
+ public void atEndOfRound() {
+ if (this.activated)
+ addToBot((AbstractGameAction)new ReducePowerAction(this.owner, this.owner, (AbstractPower)this, 1));
+ this.amount2 = this.variable;
}
public void updateDescription() {
if (this.amount == 1) {
this.description = DESCRIPTIONS[0] + this.amount2 + DESCRIPTIONS[1];
} else {
- this.description = DESCRIPTIONS[2] + this.amount2 + DESCRIPTIONS[3] + amount + DESCRIPTIONS[4];
+ this.description = DESCRIPTIONS[2] + this.amount2 + DESCRIPTIONS[3] + this.amount + DESCRIPTIONS[4];
}
}
}
diff --git a/src/main/java/expansioncontent/relics/StudyCardRelic.java b/src/main/java/expansioncontent/relics/StudyCardRelic.java
index 6df7b2331..f493d8e2f 100644
--- a/src/main/java/expansioncontent/relics/StudyCardRelic.java
+++ b/src/main/java/expansioncontent/relics/StudyCardRelic.java
@@ -23,7 +23,7 @@ public class StudyCardRelic extends CustomRelic {
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("tinybowlerhatOutline.png"));
public StudyCardRelic() {
- super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.FLAT);
+ super(ID, IMG, OUTLINE, RelicTier.DEPRECATED, LandingSound.FLAT);
this.tips.add(new CardPowerTip(new StudyTheSpire()));
}
diff --git a/src/main/java/gremlin/GremlinMod.java b/src/main/java/gremlin/GremlinMod.java
index 305044840..ebcda8b5b 100644
--- a/src/main/java/gremlin/GremlinMod.java
+++ b/src/main/java/gremlin/GremlinMod.java
@@ -175,7 +175,7 @@ public void receiveEditRelics() {
addRelicToCustomPool(new WizardHat(), AbstractCardEnum.GREMLIN);
// Uncommon
- addRelic(new ImpeccablePecs(), RelicType.SHARED);
+ addRelicToCustomPool(new ImpeccablePecs(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new MagicalMallet(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new WizardStaff(), AbstractCardEnum.GREMLIN);
addRelicToCustomPool(new WoundPoker(), AbstractCardEnum.GREMLIN);
diff --git a/src/main/java/gremlin/actions/CounterStrikeAction.java b/src/main/java/gremlin/actions/CounterStrikeAction.java
index 388588121..d4b8a2676 100644
--- a/src/main/java/gremlin/actions/CounterStrikeAction.java
+++ b/src/main/java/gremlin/actions/CounterStrikeAction.java
@@ -2,11 +2,19 @@
import com.megacrit.cardcrawl.actions.*;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.monsters.*;
import com.megacrit.cardcrawl.dungeons.*;
import com.megacrit.cardcrawl.actions.common.*;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
import gremlin.GremlinMod;
import gremlin.cards.Ward;
+import gremlin.characters.GremlinCharacter;
+import gremlin.orbs.MadGremlin;
+import gremlin.orbs.SneakyGremlin;
+import gremlin.powers.ModifiedLoseStrengthPower;
+import gremlin.powers.WizPower;
public class CounterStrikeAction extends AbstractGameAction
{
@@ -23,12 +31,55 @@ public CounterStrikeAction(final AbstractMonster m, final int amount, boolean is
@Override
public void update() {
if (GremlinMod.doesEnemyIntendToAttack(this.m)) {
- AbstractCard c = new Ward();
- if(isUpgraded){
- c.upgrade();
+ String gremlin = "";
+ boolean isNob = false;
+ if(AbstractDungeon.player instanceof GremlinCharacter) {
+ if(((GremlinCharacter) AbstractDungeon.player).nob){
+ isNob = true;
+ } else {
+ gremlin = ((GremlinCharacter) AbstractDungeon.player).currentGremlin;
+ }
+ }
+
+ if(gremlin.equals("shield")){
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, 2));
+ }
+
+ if(gremlin.equals("angry")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new StrengthPower(AbstractDungeon.player, MadGremlin.STRENGTH)));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new ModifiedLoseStrengthPower(AbstractDungeon.player, MadGremlin.STRENGTH)));
+ }
+
+ else if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new WizPower(AbstractDungeon.player, 1), 1));
+ } else {
+ // AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
+ // this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("fat")){
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(mo, AbstractDungeon.player,
+ new WeakPower(mo, 1, false), 1));
+ }
+ }
+ }
+
+ if(gremlin.equals("sneak")){
+ AbstractDungeon.actionManager.addToBottom(
+ new DamageRandomEnemyAction(new DamageInfo(AbstractDungeon.player, SneakyGremlin.DAMAGE, DamageInfo.DamageType.THORNS),
+ AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ new WizPower(AbstractDungeon.player, 1), 1));
+ }
}
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(c, amount));
- }
this.isDone = true;
}
}
diff --git a/src/main/java/gremlin/actions/DamageRandomEnemyActionButItsRelicRng.java b/src/main/java/gremlin/actions/DamageRandomEnemyActionButItsRelicRng.java
new file mode 100644
index 000000000..b41efea2e
--- /dev/null
+++ b/src/main/java/gremlin/actions/DamageRandomEnemyActionButItsRelicRng.java
@@ -0,0 +1,40 @@
+package gremlin.actions;
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import gremlin.relics.FragmentationGrenade;
+
+public class DamageRandomEnemyActionButItsRelicRng extends AbstractGameAction {
+ private DamageInfo info;
+
+ public DamageRandomEnemyActionButItsRelicRng(DamageInfo info, AbstractGameAction.AttackEffect effect) {
+ this.info = info;
+ this.actionType = ActionType.DAMAGE;
+ this.attackEffect = effect;
+ }
+
+ public void update() {
+
+ if (AbstractDungeon.player.hasRelic(FragmentationGrenade.ID)) {
+ AbstractDungeon.player.getRelic(FragmentationGrenade.ID).flash();
+ DamageInfo old = this.info;
+ this.info = new DamageInfo(old.owner, old.base + FragmentationGrenade.OOMPH, old.type);
+ }
+
+ this.target = AbstractDungeon.getMonsters().getRandomMonster((AbstractMonster)null, true, AbstractDungeon.relicRng);
+ if (this.target != null) {
+ this.addToTop(new DamageAction(this.target, this.info, this.attackEffect));
+ }
+
+ this.isDone = true;
+ }
+}
diff --git a/src/main/java/gremlin/actions/DuplicatePowerAction.java b/src/main/java/gremlin/actions/DuplicatePowerAction.java
new file mode 100644
index 000000000..11842ccc1
--- /dev/null
+++ b/src/main/java/gremlin/actions/DuplicatePowerAction.java
@@ -0,0 +1,89 @@
+package gremlin.actions;
+
+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.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.localization.UIStrings;
+import expansioncontent.actions.EchoACardAction;
+import expansioncontent.actions.EchoACardNextTurnAction;
+import expansioncontent.expansionContentMod;
+
+import java.util.ArrayList;
+
+public class DuplicatePowerAction extends AbstractGameAction {
+ private static final UIStrings uiStrings = CardCrawlGame.languagePack.getUIString("DualWieldAction");
+ public static final String[] TEXT = uiStrings.TEXT;
+ private final AbstractPlayer p;
+ private final int dupeAmount;
+ private ArrayList cannotDuplicate = new ArrayList<>();
+
+ public DuplicatePowerAction(AbstractCreature source, int amount) {
+ setValues(AbstractDungeon.player, source, amount);
+ this.actionType = AbstractGameAction.ActionType.DRAW;
+ this.duration = Settings.ACTION_DUR_FAST;
+ this.p = AbstractDungeon.player;
+ this.dupeAmount = amount;
+ }
+
+ public void update() {
+ if (this.duration == Settings.ACTION_DUR_FAST) {
+ if (this.p.hand.group.isEmpty()) {
+ this.isDone = true;
+ return;
+ }
+
+ for (AbstractCard c : this.p.hand.group) {
+ if (c.type != AbstractCard.CardType.POWER || c.hasTag(expansionContentMod.ECHO)) {
+ this.cannotDuplicate.add(c);
+ }
+ }
+
+ if (this.p.hand.size() == this.cannotDuplicate.size()) {
+ this.isDone = true;
+ return;
+ }
+
+ if (this.p.hand.group.size() - this.cannotDuplicate.size() == 1) {
+ for (AbstractCard c : this.p.hand.group) {
+ if (!this.cannotDuplicate.contains(c)) {
+ createEchoes(c);
+ this.isDone = true;
+ return;
+ }
+ }
+ }
+
+ this.p.hand.group.removeAll(this.cannotDuplicate);
+
+ AbstractDungeon.handCardSelectScreen.open(TEXT[0], 1, false, false, false, false);
+
+ } else if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {
+ for (AbstractCard c : AbstractDungeon.handCardSelectScreen.selectedCards.group) {
+ this.p.hand.addToTop(c);
+ createEchoes(c);
+ }
+ returnCards();
+
+ AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;
+ AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();
+ this.isDone = true;
+ }
+ tickDuration();
+ }
+
+ private void returnCards() {
+ for (AbstractCard c : this.cannotDuplicate) {
+ this.p.hand.addToTop(c);
+ }
+ this.p.hand.refreshHandLayout();
+ }
+
+ private void createEchoes(AbstractCard card) {
+ AbstractCard c = card.makeStatEquivalentCopy();
+ addToTop(new EchoACardNextTurnAction(c, dupeAmount));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java b/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
index f6d3cd695..7dae12288 100644
--- a/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
+++ b/src/main/java/gremlin/actions/ShivPerCardPlayedAction.java
@@ -1,5 +1,6 @@
package gremlin.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.*;
import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.dungeons.*;
@@ -20,11 +21,16 @@ public void update() {
this.isDone = true;
int count = AbstractDungeon.actionManager.cardsPlayedThisTurn.size();
--count;
+ int availableSpace = BaseMod.MAX_HAND_SIZE - AbstractDungeon.player.hand.size();
+ if (count > availableSpace) {
+ count = availableSpace;
+ }
AbstractCard c = new Shiv();
- if(upgraded){
+ if (upgraded) {
c.upgrade();
}
AbstractDungeon.actionManager.addToTop(new MakeTempCardInHandAction(c, count));
}
+
}
diff --git a/src/main/java/gremlin/cards/AbstractGremlinCard.java b/src/main/java/gremlin/cards/AbstractGremlinCard.java
index 04c48fc90..39fd40bf4 100644
--- a/src/main/java/gremlin/cards/AbstractGremlinCard.java
+++ b/src/main/java/gremlin/cards/AbstractGremlinCard.java
@@ -19,6 +19,16 @@ protected static String getID(String ID) {
public boolean wizardry = false;
public boolean sorcery = false;
+ //Variables
+ //Second Magic - Downfall Magic (DM)
+ public int gremlinMagic;
+ public int basegremlinMagic;
+ public boolean isgremlinUpgraded;
+ public boolean isgremlinModified;
+
+ public boolean upgradedsecondMagic;
+ public boolean issecondMagicModified;
+
public boolean isBlamageModifed = false;
public int baseBlamage = 0;
public int blamage = 0;
@@ -45,9 +55,27 @@ public void displayUpgrades() {
blamage = baseBlamage;
isBlamageModifed = true;
}
+ if (isgremlinUpgraded) {
+ gremlinMagic = basegremlinMagic;
+ isgremlinModified = true;
+ }
+ }
+ protected void upgradeBlammage(int amount) {
+ baseBlamage += amount;
+ blamage = baseBlamage;
+ upgradedBlamage = true;
}
+
+ public void resetAttributes() {
+ super.resetAttributes();
+ gremlinMagic = basegremlinMagic;
+ isgremlinModified = false;
+ }
+
+
+
public void setBackgrounds() {
//Call this immediately after any tag changes.
if (getGremlinEnumFromCard(this).equals(ART_GREMLIN.NONE)) {
diff --git a/src/main/java/gremlin/cards/AggressiveDefense.java b/src/main/java/gremlin/cards/AggressiveDefense.java
index 63bd2ab87..29d81f4de 100644
--- a/src/main/java/gremlin/cards/AggressiveDefense.java
+++ b/src/main/java/gremlin/cards/AggressiveDefense.java
@@ -26,7 +26,7 @@ public class AggressiveDefense extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 6;
+ private static final int POWER = 8;
private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 3;
private static final int UPGRADE_MAGIC_BONUS = 1;
diff --git a/src/main/java/gremlin/cards/ArmsTheft.java b/src/main/java/gremlin/cards/ArmsTheft.java
index b75287fb9..d60223d37 100644
--- a/src/main/java/gremlin/cards/ArmsTheft.java
+++ b/src/main/java/gremlin/cards/ArmsTheft.java
@@ -8,6 +8,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.WeakPower;
import gremlin.GremlinMod;
import static gremlin.GremlinMod.MAD_GREMLIN;
@@ -39,6 +40,8 @@ public ArmsTheft() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p,
+ new WeakPower(m, magicNumber, false), magicNumber));
AbstractDungeon.actionManager.addToBottom(
new ApplyPowerAction(m, p, new StrengthPower(m, -this.magicNumber), -this.magicNumber));
if (!m.hasPower("Artifact")) {
diff --git a/src/main/java/gremlin/cards/Astound.java b/src/main/java/gremlin/cards/Astound.java
index fef88f2e0..383671f4a 100644
--- a/src/main/java/gremlin/cards/Astound.java
+++ b/src/main/java/gremlin/cards/Astound.java
@@ -24,7 +24,7 @@ public class Astound extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 0;
- private static final int BLOCK = 3;
+ private static final int BLOCK = 5;
private static final int MAGIC = 2;
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/gremlin/cards/BrokenShin.java b/src/main/java/gremlin/cards/BrokenShin.java
index 626337f7a..164acdfca 100644
--- a/src/main/java/gremlin/cards/BrokenShin.java
+++ b/src/main/java/gremlin/cards/BrokenShin.java
@@ -24,7 +24,7 @@ public class BrokenShin extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.RARE;
private static final AbstractCard.CardTarget TARGET = CardTarget.ENEMY;
- private static final int COST = 0;
+ private static final int COST = 2;
private static final int MAGIC = 4;
private static final int UPGRADE_BONUS = -1;
diff --git a/src/main/java/gremlin/cards/BubbleBarrier.java b/src/main/java/gremlin/cards/BubbleBarrier.java
index a219ad56b..53c46e025 100644
--- a/src/main/java/gremlin/cards/BubbleBarrier.java
+++ b/src/main/java/gremlin/cards/BubbleBarrier.java
@@ -19,7 +19,7 @@ public class BubbleBarrier extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/bubble_barrier.png";
private static final AbstractCard.CardType TYPE = AbstractCard.CardType.SKILL;
- private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 1;
diff --git a/src/main/java/gremlin/cards/BulkUp.java b/src/main/java/gremlin/cards/BulkUp.java
index ca4a1ca4b..e5dd62efb 100644
--- a/src/main/java/gremlin/cards/BulkUp.java
+++ b/src/main/java/gremlin/cards/BulkUp.java
@@ -10,6 +10,7 @@
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
import gremlin.orbs.FatGremlin;
+import sneckomod.SneckoMod;
import static gremlin.GremlinMod.FAT_GREMLIN;
@@ -24,7 +25,7 @@ public class BulkUp extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
private static final int COST = 1;
- private static final int MAGIC = 5;
+ private static final int MAGIC = 4;
private static final int UPGRADE_BONUS = 2;
public BulkUp()
@@ -36,6 +37,7 @@ public BulkUp()
this.tags.add(FAT_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "BulkUp.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m)
diff --git a/src/main/java/gremlin/cards/BurlyBlow.java b/src/main/java/gremlin/cards/BurlyBlow.java
index bc0e4e7b4..c13309547 100644
--- a/src/main/java/gremlin/cards/BurlyBlow.java
+++ b/src/main/java/gremlin/cards/BurlyBlow.java
@@ -26,7 +26,7 @@ public class BurlyBlow extends AbstractGremlinCard {
private static final int COST = 2;
private static final int POWER = 4;
- private static final int UPGRADE_BONUS = 1;
+ private static final int UPGRADE_BONUS = 2;
public BurlyBlow()
{
@@ -44,7 +44,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if(m.hasPower(WeakPower.POWER_ID)){
count = m.getPower(WeakPower.POWER_ID).amount;
}
- for(int i=0; i cardsList = new ArrayList<>();
@@ -37,58 +50,121 @@ public class GremlinArms extends AbstractGremlinCard {
public GremlinArms()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.baseMagicNumber = MAGIC;
this.magicNumber = baseMagicNumber;
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
- this.cardsToPreview = new Shiv();
- this.tags.add(SNEAKY_GREMLIN);
- setBackgrounds();
GremlinMod.loadJokeCardImage(this, "GremlinArms.png");
}
public void use(AbstractPlayer p, AbstractMonster m)
{
+
+ if(hasOptions){
+ addToBot(new ChooseOneAction(updateModal()));
+ }
+
for(int i = 0; i < magicNumber; i++){
- int shiv = AbstractDungeon.cardRandomRng.random(0, 1);
- if (shiv == 1)
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Shiv(), 1));
- else
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Ward(), 1));
+ String gremlin = "";
+ boolean isNob = false;
+ if(AbstractDungeon.player instanceof GremlinCharacter) {
+ if(((GremlinCharacter) AbstractDungeon.player).nob){
+ isNob = true;
+ } else {
+ gremlin = ((GremlinCharacter) AbstractDungeon.player).currentGremlin;
+ }
+ }
+
+ if(gremlin.equals("shield")){
+ AbstractDungeon.actionManager.addToTop(new GainBlockAction(p, p, 2));
+ }
+
+ if(gremlin.equals("angry")){
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new StrengthPower(p, MadGremlin.STRENGTH)));
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new ModifiedLoseStrengthPower(p, MadGremlin.STRENGTH)));
+ }
+
+ else if(gremlin.equals("wizard")){
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(p, p,
+ new WizPower(p, 1), 1));
+ } else {
+ // AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
+ // this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
+
+ if(gremlin.equals("fat")){
+ for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
+ if (!mo.isDeadOrEscaped()) {
+ AbstractDungeon.actionManager.addToTop(new ApplyPowerAction(mo, p,
+ new WeakPower(mo, 1, false), 1));
+ }
+ }
+ }
+
+ if(gremlin.equals("sneak")){
+ AbstractDungeon.actionManager.addToTop(
+ new DamageRandomEnemyAction(new DamageInfo(AbstractDungeon.player, SneakyGremlin.DAMAGE, DamageInfo.DamageType.THORNS),
+ AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+ }
}
}
+ private ArrayList updateModal(){
+ if(AbstractDungeon.player != null){
+ ArrayList living = new ArrayList<>();
+ for(AbstractOrb orb : AbstractDungeon.player.orbs){
+ if(orb instanceof GremlinStandby){
+ living.add((GremlinStandby) orb);
+ }
+ }
+ if(living.size() == 0){
+ hasOptions = false;
+ return new ArrayList<>();
+ }
+ else {
+ hasOptions = true;
+ ArrayList options = new ArrayList<>();
+ for(AbstractOrb grem : living){
+ if(grem instanceof MadGremlin){
+ options.add(new MadGremlinCard());
+ }
+ else if(grem instanceof FatGremlin){
+ options.add(new FatGremlinCard());
+ }
+ else if(grem instanceof ShieldGremlin){
+ options.add(new ShieldGremlinCard());
+ }
+ else if(grem instanceof SneakyGremlin){
+ options.add(new SneakyGremlinCard());
+ }
+ else if(grem instanceof GremlinWizard){
+ options.add(new GremlinWizardCard());
+ }
+ }
+ return options;
+ }
+ }
+ hasOptions = false;
+ return new ArrayList<>();
+ }
+
+ @Override
+ public void applyPowers() {
+ updateModal();
+ super.applyPowers();
+ }
+
public void upgrade()
{
if (!this.upgraded)
{
upgradeName();
upgradeMagicNumber(UPGRADE_BONUS);
+ this.rawDescription = strings.UPGRADE_DESCRIPTION;
+ initializeDescription();
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
}
diff --git a/src/main/java/gremlin/cards/GremlinDance.java b/src/main/java/gremlin/cards/GremlinDance.java
index eb4c5b96c..d396ea6fa 100644
--- a/src/main/java/gremlin/cards/GremlinDance.java
+++ b/src/main/java/gremlin/cards/GremlinDance.java
@@ -37,7 +37,7 @@ public class GremlinDance extends AbstractGremlinCard {
private static final int POWER = 6;
private static final int BLOCK = 6;
private static final int MAGIC = 2;
- private static final int UPGRADE_BONUS = 3;
+ private static final int UPGRADE_BONUS = 2;
private String gremlin;
private float rotationTimer;
@@ -96,6 +96,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if(gremlin.equals("angry")){
AbstractDungeon.actionManager.addToBottom(new DamageAllEnemiesAction(p, this.multiDamage,
this.damageTypeForTurn, AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
+
} else if(gremlin.equals("wizard")){
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
@@ -137,6 +138,7 @@ public void update() {
if (previewIndex == cardsList.size() - 1) {
previewIndex = 0;
} else {
+
previewIndex++;
}
} else {
@@ -239,7 +241,8 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
- upgradeDamage(UPGRADE_BONUS);
+ upgradeDamage(3);
+ upgradeBlock(3);
}
}
diff --git a/src/main/java/gremlin/cards/GremlinOffensive.java b/src/main/java/gremlin/cards/GremlinOffensive.java
index df23db363..75cccd608 100644
--- a/src/main/java/gremlin/cards/GremlinOffensive.java
+++ b/src/main/java/gremlin/cards/GremlinOffensive.java
@@ -25,7 +25,7 @@ public class GremlinOffensive extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 6;
+ private static final int POWER = 7;
private static final int UPGRADE_BONUS = 3;
private boolean real = true;
diff --git a/src/main/java/gremlin/cards/GremlinToss.java b/src/main/java/gremlin/cards/GremlinToss.java
index 2ae4efcd3..6ec46368b 100644
--- a/src/main/java/gremlin/cards/GremlinToss.java
+++ b/src/main/java/gremlin/cards/GremlinToss.java
@@ -27,7 +27,7 @@ public class GremlinToss extends AbstractGremlinCard {
private static final int COST = 1;
private static final int POWER = 0;
- private static final int MAGIC = 0;
+ private static final int MAGIC = 3;
private static final int UPGRADE_BONUS = 3;
public GremlinToss()
@@ -44,9 +44,7 @@ public GremlinToss()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
- if(upgraded) {
- AbstractDungeon.actionManager.addToBottom(new AddTemporaryHPAction(p, p, magicNumber));
- }
+ AbstractDungeon.actionManager.addToBottom(new AddTemporaryHPAction(p, p, magicNumber));
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
}
@@ -100,9 +98,7 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
- upgradeMagicNumber(UPGRADE_BONUS);
- this.rawDescription = strings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
+ upgradeBaseCost(0);
}
}
}
diff --git a/src/main/java/gremlin/cards/Heckle.java b/src/main/java/gremlin/cards/Heckle.java
index 99cd5d4b9..4a7e638d6 100644
--- a/src/main/java/gremlin/cards/Heckle.java
+++ b/src/main/java/gremlin/cards/Heckle.java
@@ -19,11 +19,11 @@ public class Heckle extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/heckle.png";
private static final AbstractCard.CardType TYPE = CardType.POWER;
- private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.RARE;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.SELF;
- private static final int COST = 3;
- private static final int UPGRADE_COST = 2;
+ private static final int COST = 2;
+ private static final int UPGRADE_COST = 1;
private static final int MAGIC = 2;
public Heckle()
diff --git a/src/main/java/gremlin/cards/IrksomeBlow.java b/src/main/java/gremlin/cards/IrksomeBlow.java
index fc19aff31..c96c9ef44 100644
--- a/src/main/java/gremlin/cards/IrksomeBlow.java
+++ b/src/main/java/gremlin/cards/IrksomeBlow.java
@@ -24,8 +24,8 @@ public class IrksomeBlow extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
- private static final int COST = 0;
- private static final int POWER = 1;
+ private static final int COST = 1;
+ private static final int POWER = 5;
private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 4;
diff --git a/src/main/java/gremlin/cards/Irritability.java b/src/main/java/gremlin/cards/Irritability.java
index 290268819..58fceed5e 100644
--- a/src/main/java/gremlin/cards/Irritability.java
+++ b/src/main/java/gremlin/cards/Irritability.java
@@ -16,6 +16,7 @@
import gremlin.actions.GremlinSwapAction;
import gremlin.orbs.MadGremlin;
import guardian.powers.LoseThornsPower;
+import sneckomod.SneckoMod;
import static gremlin.GremlinMod.MAD_GREMLIN;
@@ -42,6 +43,7 @@ public Irritability()
this.magicNumber = baseMagicNumber;
this.baseBlock = BLOCK;
this.tags.add(MAD_GREMLIN);
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Irritability.png");
}
diff --git a/src/main/java/gremlin/cards/Kablamo.java b/src/main/java/gremlin/cards/Kablamo.java
index ee208a1af..61a2188c3 100644
--- a/src/main/java/gremlin/cards/Kablamo.java
+++ b/src/main/java/gremlin/cards/Kablamo.java
@@ -23,8 +23,8 @@ public class Kablamo extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 2;
- private static final int POWER = 13;
- private static final int UPGRADE_BONUS = 4;
+ private static final int POWER = 4;
+ private static final int UPGRADE_BONUS = 2;
public Kablamo()
{
@@ -44,6 +44,9 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(
new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn,
AbstractGameAction.AttackEffect.FIRE));
+ AbstractDungeon.actionManager.addToBottom(
+ new DamageAllEnemiesAction(p, this.multiDamage, this.damageTypeForTurn,
+ AbstractGameAction.AttackEffect.FIRE));
}
@Override
diff --git a/src/main/java/gremlin/cards/Mockery.java b/src/main/java/gremlin/cards/Mockery.java
index 0d54b77c4..f939f29a8 100644
--- a/src/main/java/gremlin/cards/Mockery.java
+++ b/src/main/java/gremlin/cards/Mockery.java
@@ -24,7 +24,7 @@ public class Mockery extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ENEMY;
private static final int COST = 1;
- private static final int BLOCK = 10;
+ private static final int BLOCK = 9;
private static final int UPGRADE_BONUS = 3;
private static final int MAGIC = 1;
private static final int MAGIC_UPGRADE_BONUS = 1;
diff --git a/src/main/java/gremlin/cards/Nob.java b/src/main/java/gremlin/cards/Nob.java
index 827d3cec3..630d790d8 100644
--- a/src/main/java/gremlin/cards/Nob.java
+++ b/src/main/java/gremlin/cards/Nob.java
@@ -1,6 +1,7 @@
package gremlin.cards;
import basemod.helpers.BaseModCardTags;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.MathUtils;
import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
@@ -8,6 +9,7 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.utility.SFXAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.tempCards.Shiv;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -59,6 +61,7 @@ public Nob() {
this.tags.add(NOB_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Nob.png");
+ MultiCardPreview.add(new Bellow(), new SkullBash(), new Rush());
}
public void use(AbstractPlayer p, AbstractMonster m) {
@@ -75,32 +78,11 @@ public void upgrade() {
}
}
- @Override
- public boolean canSpawn(ArrayList currentRewardCards) {
- return AbstractDungeon.cardRandomRng.randomBoolean();
- }
+// @Override
+// public boolean canSpawn(ArrayList currentRewardCards) {
+// return AbstractDungeon.cardRandomRng.randomBoolean();
+// }
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
private void playSfx() {
int roll = MathUtils.random(2);
diff --git a/src/main/java/gremlin/cards/Patsy.java b/src/main/java/gremlin/cards/Patsy.java
index e08f5008a..30eaffb41 100644
--- a/src/main/java/gremlin/cards/Patsy.java
+++ b/src/main/java/gremlin/cards/Patsy.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
+import sneckomod.SneckoMod;
public class Patsy extends AbstractGremlinCard {
public static final String ID = getID("Patsy");
@@ -27,7 +28,7 @@ public class Patsy extends AbstractGremlinCard {
public Patsy()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.baseBlock = BLOCK;
GremlinMod.loadJokeCardImage(this, "Patsy.png");
}
diff --git a/src/main/java/gremlin/cards/Pickpocket.java b/src/main/java/gremlin/cards/Pickpocket.java
index eeaa71cfd..7dbdc1116 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,27 +26,32 @@ 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 POWER = 9;
+ private static final int COST = 2;
+ private static final int POWER = 10;
+ private static final int MAGIC = 10;
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.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.player.gainGold(magicNumber);
+ for (int i = 0; i < magicNumber; ++i) {
+ AbstractDungeon.effectList.add(new GainPennyEffect(p, p.hb.cX, p.hb.cY, p.hb.cX, p.hb.cY, true));
+ }
+ }
@Override
public void upgrade() {
@@ -52,6 +59,7 @@ public void upgrade() {
{
upgradeName();
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(4);
}
}
}
diff --git a/src/main/java/gremlin/cards/Polish.java b/src/main/java/gremlin/cards/Polish.java
index 987993615..e9b73427b 100644
--- a/src/main/java/gremlin/cards/Polish.java
+++ b/src/main/java/gremlin/cards/Polish.java
@@ -1,5 +1,6 @@
package gremlin.cards;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -35,15 +36,12 @@ public class Polish extends AbstractGremlinCard {
public Polish()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
-
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
this.baseMagicNumber = MAGIC;
this.magicNumber = baseMagicNumber;
this.tags.add(SHIELD_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Polish.png");
+ MultiCardPreview.add(this, new Shiv(), new Ward());
}
public void use(AbstractPlayer p, AbstractMonster m)
@@ -63,28 +61,6 @@ public void upgrade()
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
-
private float rotationTimer;
private int previewIndex;
private ArrayList cardsList = new ArrayList<>();
diff --git a/src/main/java/gremlin/cards/Presto.java b/src/main/java/gremlin/cards/Presto.java
index 54583d046..65f48f7cd 100644
--- a/src/main/java/gremlin/cards/Presto.java
+++ b/src/main/java/gremlin/cards/Presto.java
@@ -26,8 +26,8 @@ public class Presto extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 1;
- private static final int POWER = 7;
- private static final int UPGRADE_BONUS = 4;
+ private static final int POWER = 9;
+ private static final int UPGRADE_BONUS = 2;
private static final int MAGIC = 1;
private static final int UPGRADE_MAGIC = 1;
diff --git a/src/main/java/gremlin/cards/Pretaliation.java b/src/main/java/gremlin/cards/Pretaliation.java
index d904ac53c..e185137ad 100644
--- a/src/main/java/gremlin/cards/Pretaliation.java
+++ b/src/main/java/gremlin/cards/Pretaliation.java
@@ -35,17 +35,17 @@ public class Pretaliation extends AbstractGremlinCard {
private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
- private static final int COST = 2;
- private static final int POWER = 20;
+ private static final int COST = 1;
+ private static final int POWER = 6;
private static final int BLAMAGE = 5;
- private static final int UPGRADE_POWER = 7;
+ private static final int UPGRADE_POWER = 2;
public Pretaliation()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
this.baseDamage = POWER;
- this.baseBlamage = BLAMAGE;
+ this.baseMagicNumber = magicNumber = 3;
this.tags.add(MAD_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "Pretaliation.png");
@@ -53,14 +53,9 @@ public Pretaliation()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
- if (GremlinMod.doesEnemyIntendToAttack(m)) {
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage,
- this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- } else {
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.blamage,
- this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
- }
-// AbstractDungeon.actionManager.addToBottom(new PretaliationAction(this.magicNumber, m));
+ addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ addToBot(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HORIZONTAL));
+ addToBot(new DamageAction(p, new DamageInfo(m, this.magicNumber, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
}
@Override
@@ -69,96 +64,7 @@ public void upgrade() {
{
upgradeName();
upgradeDamage(UPGRADE_POWER);
- }
- }
-
- public void applyPowers() {
- super.applyPowers();
- AbstractPlayer player = AbstractDungeon.player;
- this.isBlamageModifed = false;
- float tmp = (float)this.baseBlamage;
- Iterator var3 = player.relics.iterator();
-
- while(var3.hasNext()) {
- AbstractRelic r = (AbstractRelic)var3.next();
- tmp = r.atDamageModify(tmp, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
- }
-
- AbstractPower p;
- for(var3 = player.powers.iterator(); var3.hasNext(); tmp = p.atDamageGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var3.next();
- }
-
- tmp = player.stance.atDamageGive(tmp, this.damageTypeForTurn, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
-
- for(var3 = player.powers.iterator(); var3.hasNext(); tmp = p.atDamageFinalGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var3.next();
- }
-
- if (tmp < 0.0F) {
- tmp = 0.0F;
- }
-
- if (this.baseBlamage != MathUtils.floor(tmp)) {
- this.isBlamageModifed = true;
- }
-
- this.blamage = MathUtils.floor(tmp);
- }
-
- public void calculateCardDamage(AbstractMonster mo) {
- super.calculateCardDamage(mo);
- AbstractPlayer player = AbstractDungeon.player;
- if (mo != null) {
- this.isBlamageModifed = false;
- float tmp = (float)this.baseBlamage;
- Iterator var9 = player.relics.iterator();
-
- while(var9.hasNext()) {
- AbstractRelic r = (AbstractRelic)var9.next();
- tmp = r.atDamageModify(tmp, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
- }
-
- AbstractPower p;
- for(var9 = player.powers.iterator(); var9.hasNext(); tmp = p.atDamageGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- tmp = player.stance.atDamageGive(tmp, this.damageTypeForTurn, this);
- if (this.baseBlamage != (int)tmp) {
- this.isBlamageModifed = true;
- }
-
- for(var9 = mo.powers.iterator(); var9.hasNext(); tmp = p.atDamageReceive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- for(var9 = player.powers.iterator(); var9.hasNext(); tmp = p.atDamageFinalGive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- for(var9 = mo.powers.iterator(); var9.hasNext(); tmp = p.atDamageFinalReceive(tmp, this.damageTypeForTurn, this)) {
- p = (AbstractPower)var9.next();
- }
-
- if (tmp < 0.0F) {
- tmp = 0.0F;
- }
-
- if (this.baseBlamage != MathUtils.floor(tmp)) {
- this.isBlamageModifed = true;
- }
-
- this.blamage = MathUtils.floor(tmp);
+ upgradeMagicNumber(-2);
}
}
diff --git a/src/main/java/gremlin/cards/ProperTools.java b/src/main/java/gremlin/cards/ProperTools.java
index e4a8099f4..c6f2d1412 100644
--- a/src/main/java/gremlin/cards/ProperTools.java
+++ b/src/main/java/gremlin/cards/ProperTools.java
@@ -1,5 +1,6 @@
package gremlin.cards;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
@@ -14,6 +15,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.ProperToolsAction;
+import guardian.cards.*;
import java.util.ArrayList;
@@ -45,10 +47,7 @@ public ProperTools()
this.baseDamage = POWER;
this.baseMagicNumber = MAGIC;
this.magicNumber = MAGIC;
- cardsList.add(new Shiv());
- cardsList.add(new Ward());
-
- this.cardsToPreview = new Shiv();
+ MultiCardPreview.add(this, new Shiv(), new Ward());
this.tags.add(SNEAKY_GREMLIN);
setBackgrounds();
GremlinMod.loadJokeCardImage(this, "ProperTools.png");
@@ -67,28 +66,8 @@ public void upgrade() {
{
upgradeName();
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
- @Override
- public void update() {
- super.update();
- if (hb.hovered) {
- if (rotationTimer <= 0F) {
- rotationTimer = 2F;
- if (cardsList.size() == 0) {
- cardsToPreview = CardLibrary.cards.get("Madness");
- } else {
- cardsToPreview = cardsList.get(previewIndex);
- }
- if (previewIndex == cardsList.size() - 1) {
- previewIndex = 0;
- } else {
- previewIndex++;
- }
- } else {
- rotationTimer -= Gdx.graphics.getDeltaTime();
- }
- }
- }
}
diff --git a/src/main/java/gremlin/cards/Rhythm.java b/src/main/java/gremlin/cards/Rhythm.java
index f0f69b297..8ac79a8f1 100644
--- a/src/main/java/gremlin/cards/Rhythm.java
+++ b/src/main/java/gremlin/cards/Rhythm.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import gremlin.GremlinMod;
import gremlin.actions.GremlinSwapAction;
+import sneckomod.SneckoMod;
import java.util.List;
import java.util.function.Consumer;
@@ -31,6 +32,7 @@ public Rhythm()
{
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
GremlinMod.loadJokeCardImage(this, "Rhythm.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
public void use(AbstractPlayer p, AbstractMonster m)
diff --git a/src/main/java/gremlin/cards/SecondVolley.java b/src/main/java/gremlin/cards/SecondVolley.java
index cec499d55..ae71d7cc8 100644
--- a/src/main/java/gremlin/cards/SecondVolley.java
+++ b/src/main/java/gremlin/cards/SecondVolley.java
@@ -26,7 +26,7 @@ public class SecondVolley extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.ENEMY;
private static final int COST = 2;
- private static final int POWER = 6;
+ private static final int POWER = 4;
public SecondVolley()
{
@@ -89,6 +89,7 @@ public void upgrade() {
if (!this.upgraded)
{
upgradeName();
+ upgradeDamage(2);
this.rawDescription = strings.UPGRADE_DESCRIPTION;
initializeDescription();
this.cardsToPreview.upgrade();
diff --git a/src/main/java/gremlin/cards/ShankStone.java b/src/main/java/gremlin/cards/ShankStone.java
index 9774d16f9..0a3538493 100644
--- a/src/main/java/gremlin/cards/ShankStone.java
+++ b/src/main/java/gremlin/cards/ShankStone.java
@@ -19,7 +19,7 @@ public class ShankStone extends AbstractGremlinCard {
private static final String IMG_PATH = "cards/shank_stone.png";
private static final AbstractCard.CardType TYPE = AbstractCard.CardType.SKILL;
- private static final AbstractCard.CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final AbstractCard.CardRarity RARITY = CardRarity.COMMON;
private static final AbstractCard.CardTarget TARGET = AbstractCard.CardTarget.NONE;
private static final int COST = -2;
diff --git a/src/main/java/gremlin/cards/ShowStopper.java b/src/main/java/gremlin/cards/ShowStopper.java
index 2bad36b60..473f65d95 100644
--- a/src/main/java/gremlin/cards/ShowStopper.java
+++ b/src/main/java/gremlin/cards/ShowStopper.java
@@ -27,7 +27,7 @@ public class ShowStopper extends AbstractGremlinCard {
private static final AbstractCard.CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 0;
- private static final int POWER = 0;
+ private static final int POWER = 3;
private static final int UPGRADE_BONUS = 2;
private static final int SHOWMANSHIP = 7;
@@ -36,7 +36,7 @@ public ShowStopper()
super(ID, NAME, IMG_PATH, COST, strings.DESCRIPTION, TYPE, RARITY, TARGET);
this.baseDamage = POWER;
-
+ this.magicNumber = this.baseMagicNumber = 5;
this.isMultiDamage = true;
this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(WIZARD_GREMLIN);
@@ -47,10 +47,9 @@ public ShowStopper()
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new VFXAction(new GrandFinalEffect(), 1.0F));
- for(int i=0;i<5;i++) {
+ for(int i=0;i getStartingDeck() {
retVal.add("Gremlin:Defend");
retVal.add("Gremlin:Defend");
retVal.add("Gremlin:Defend");
+ //welp, rip "draw relic means additional cards in starter deck"
+ //retVal.add("Gremlin:Defend");
retVal.add("Gremlin:TagTeam");
retVal.add("Gremlin:GremlinDance");
return retVal;
diff --git a/src/main/java/gremlin/orbs/SneakyGremlin.java b/src/main/java/gremlin/orbs/SneakyGremlin.java
index 9050366ec..efd4af090 100644
--- a/src/main/java/gremlin/orbs/SneakyGremlin.java
+++ b/src/main/java/gremlin/orbs/SneakyGremlin.java
@@ -5,7 +5,7 @@
import gremlin.powers.SneakyGremlinPower;
public class SneakyGremlin extends GremlinStandby{
- public static final int DAMAGE = 3;
+ public static final int DAMAGE = 2;
public SneakyGremlin(int hp) {
super(hp, "Gremlin:SneakyGremlin", "sneak", "animation", 25);
@@ -13,7 +13,7 @@ public SneakyGremlin(int hp) {
@Override
public void updateDescription() {
- this.description = this.descriptions[0] + DAMAGE + this.descriptions[1];
+ this.description = this.descriptions[0] + DAMAGE + this.descriptions[1] + DAMAGE + this.descriptions[2];
}
@Override
diff --git a/src/main/java/gremlin/patches/ApplyPowerPatch.java b/src/main/java/gremlin/patches/ApplyPowerPatch.java
index b189e599c..94cd30d7c 100644
--- a/src/main/java/gremlin/patches/ApplyPowerPatch.java
+++ b/src/main/java/gremlin/patches/ApplyPowerPatch.java
@@ -1,6 +1,9 @@
package gremlin.patches;
+import awakenedOne.relics.StrengthBooster;
import basemod.ReflectionHacks;
+import champ.powers.CounterPower;
+import champ.relics.PowerArmor;
import com.evacipated.cardcrawl.modthespire.lib.*;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -8,6 +11,7 @@
import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.WeakPower;
+import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import gremlin.relics.ImpeccablePecs;
import gremlin.relics.MagicalMallet;
import javassist.CtBehavior;
@@ -31,6 +35,29 @@ public static void patch(ApplyPowerAction __instance) {
((ImpeccablePecs)(AbstractDungeon.player.getRelic(ImpeccablePecs.ID))).onTrigger(powerToApply.amount);
}
}
+
+// if (AbstractDungeon.player.hasRelic(StrengthBooster.ID)) {
+// AbstractPower powerToApply = ReflectionHacks.getPrivate(__instance, ApplyPowerAction.class, "powerToApply");
+// if (__instance.target != null && __instance.target.isPlayer && powerToApply.ID.equals(StrengthPower.POWER_ID)) {
+// ((StrengthBooster)(AbstractDungeon.player.getRelic(StrengthBooster.ID))).onTrigger(powerToApply.amount);
+// }
+// }
+
+// if (AbstractDungeon.player.hasRelic(PowerArmor.ID)) {
+// AbstractPower powerToApply = ReflectionHacks.getPrivate(__instance, ApplyPowerAction.class, "powerToApply");
+// if (__instance.target != null && __instance.target.isPlayer && powerToApply.ID.equals(VigorPower.POWER_ID)) {
+// ((PowerArmor)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger(powerToApply.amount);
+// }
+// }
+//
+// if (AbstractDungeon.player.hasRelic(PowerArmor.ID)) {
+// AbstractPower powerToApply = ReflectionHacks.getPrivate(__instance, ApplyPowerAction.class, "powerToApply");
+// if (__instance.target != null && __instance.target.isPlayer && powerToApply.ID.equals(CounterPower.POWER_ID)) {
+// ((PowerArmor)(AbstractDungeon.player.getRelic(PowerArmor.ID))).onTrigger2(powerToApply.amount);
+// }
+// }
+
+
}
public static class Locator extends SpireInsertLocator {
diff --git a/src/main/java/gremlin/patches/CrippledPowerPatch.java b/src/main/java/gremlin/patches/CrippledPowerPatch.java
index 2a0253b40..973a50ad0 100644
--- a/src/main/java/gremlin/patches/CrippledPowerPatch.java
+++ b/src/main/java/gremlin/patches/CrippledPowerPatch.java
@@ -1,19 +1,19 @@
-package gremlin.patches;
-
-import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
-import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
-import com.megacrit.cardcrawl.powers.WeakPower;
-import gremlin.powers.CrippledPower;
-
-@SpirePatch(
- clz= WeakPower.class,
- method="atEndOfRound"
-)
-public class CrippledPowerPatch {
- public static SpireReturn Prefix(WeakPower __instance){
- if(__instance.owner.hasPower(CrippledPower.POWER_ID)){
- return SpireReturn.Return(null);
- }
- return SpireReturn.Continue();
- }
-}
+//package gremlin.patches;
+//
+//import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
+//import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
+//import com.megacrit.cardcrawl.powers.WeakPower;
+//import gremlin.powers.CrippledPower;
+//
+//@SpirePatch(
+// clz= WeakPower.class,
+// method="atEndOfRound"
+//)
+//public class CrippledPowerPatch {
+// public static SpireReturn Prefix(WeakPower __instance){
+// if(__instance.owner.hasPower(CrippledPower.POWER_ID)){
+// return SpireReturn.Return(null);
+// }
+// return SpireReturn.Continue();
+// }
+//}
\ No newline at end of file
diff --git a/src/main/java/gremlin/patches/DamageConditionalGivePatchApply.java b/src/main/java/gremlin/patches/DamageConditionalGivePatchApply.java
index 342321064..d1e68b1c0 100644
--- a/src/main/java/gremlin/patches/DamageConditionalGivePatchApply.java
+++ b/src/main/java/gremlin/patches/DamageConditionalGivePatchApply.java
@@ -1,6 +1,8 @@
package gremlin.patches;
+import awakenedOne.powers.IntensifyPower;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import gremlin.powers.DamageConditionalGivePower;
import com.evacipated.cardcrawl.modthespire.lib.ByRef;
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
@@ -9,6 +11,9 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import static awakenedOne.AwakenedOneMod.UP_NEXT;
+
+
@SpirePatch(clz = AbstractCard.class, method = "applyPowers")
public class DamageConditionalGivePatchApply {
@SpireInsertPatch(
diff --git a/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java b/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
index ef6722e1a..4995f647b 100644
--- a/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
+++ b/src/main/java/gremlin/patches/GremlinPostBossHealPatch.java
@@ -22,7 +22,15 @@ public static SpireReturn Insert() {
}
// Only rez 1
+ // a4 and under, full rez
+ // a5 and up, rez 2
if (((GremlinCharacter) AbstractDungeon.player).canRez()) {
+ if (AbstractDungeon.ascensionLevel < 5) {
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
+ }
+ ((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
((GremlinCharacter) AbstractDungeon.player).resurrect(multiplier);
}
diff --git a/src/main/java/gremlin/potions/WizPotion.java b/src/main/java/gremlin/potions/WizPotion.java
index 3d0e4584a..5fe3459bf 100644
--- a/src/main/java/gremlin/potions/WizPotion.java
+++ b/src/main/java/gremlin/potions/WizPotion.java
@@ -13,6 +13,8 @@
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import gremlin.powers.WizPower;
+import static champ.ChampMod.vigor;
+
public class WizPotion extends CustomPotion {
public static final String POTION_ID = "gremlin:WizPotion";
private static final PotionStrings potionStrings = CardCrawlGame.languagePack.getPotionString(POTION_ID);
@@ -39,8 +41,9 @@ public void initializeData() {
public void use(AbstractCreature target) {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
- new VigorPower(AbstractDungeon.player, this.potency), this.potency));
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player,
+ //new VigorPower(AbstractDungeon.player, this.potency), this.potency));
+ vigor(this.potency);
}
public CustomPotion makeCopy() {
diff --git a/src/main/java/gremlin/powers/CrippledPower.java b/src/main/java/gremlin/powers/CrippledPower.java
index 992aa9882..9acd83227 100644
--- a/src/main/java/gremlin/powers/CrippledPower.java
+++ b/src/main/java/gremlin/powers/CrippledPower.java
@@ -3,24 +3,28 @@
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.HealthBarRenderPower;
+import com.evacipated.cardcrawl.mod.stslib.powers.interfaces.OnReceivePowerPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.unique.PoisonLoseHpAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
+import com.megacrit.cardcrawl.powers.AbstractPower;
import com.megacrit.cardcrawl.powers.WeakPower;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import gremlin.GremlinMod;
-public class CrippledPower extends AbstractGremlinPower implements HealthBarRenderPower {
+public class CrippledPower extends AbstractGremlinPower implements OnReceivePowerPower {
public static final String POWER_ID = getID("Crippled");
private static final PowerStrings strings = CardCrawlGame.languagePack.getPowerStrings(POWER_ID);
private static final Texture IMG = new Texture(GremlinMod.getResourcePath("powers/crippled.png"));
private AbstractCreature source;
- public CrippledPower(AbstractCreature owner, AbstractCreature source) {
+ public CrippledPower(AbstractCreature owner, AbstractCreature source, int amount) {
this.name = strings.NAME;
this.ID = POWER_ID;
this.owner = owner;
@@ -28,35 +32,21 @@ public CrippledPower(AbstractCreature owner, AbstractCreature source) {
this.img = IMG;
this.type = PowerType.DEBUFF;
- this.amount = -1;
+ this.amount = amount;
this.updateDescription();
}
- public void updateDescription()
- {
- this.description = strings.DESCRIPTIONS[0];
- }
-
- public void atEndOfTurn(boolean player) {
- if (!player) {
- if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT && !AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
- this.flashWithoutSound();
- AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.LoseHPAction(this.owner, this.source, getHealthBarAmount(), AbstractGameAction.AttackEffect.POISON));
- }
- }
+ public void updateDescription() {
+ this.description = strings.DESCRIPTIONS[0] + this.amount + strings.DESCRIPTIONS[1];
}
@Override
- public int getHealthBarAmount() {
- if (owner.hasPower(WeakPower.POWER_ID)) {
- return owner.getPower(WeakPower.POWER_ID).amount;
+ public boolean onReceivePower(AbstractPower power, AbstractCreature target, AbstractCreature source) {
+ if ((power instanceof WeakPower) && (target == this.owner) &&
+ (!target.hasPower("Artifact"))) {
+ this.addToBot(new DamageAction(owner, new DamageInfo(owner, amount, DamageInfo.DamageType.HP_LOSS), AbstractGameAction.AttackEffect.POISON));
}
- return 0;
- }
-
- @Override
- public Color getColor() {
- return Color.YELLOW;
+ return true;
}
}
diff --git a/src/main/java/gremlin/powers/ShadowShivPower.java b/src/main/java/gremlin/powers/ShadowShivPower.java
index 5b6dda159..35914a4fb 100644
--- a/src/main/java/gremlin/powers/ShadowShivPower.java
+++ b/src/main/java/gremlin/powers/ShadowShivPower.java
@@ -40,7 +40,7 @@ public void updateDescription()
@Override
public void onUseCard(final AbstractCard card, final UseCardAction action) {
if (card.type == AbstractCard.CardType.ATTACK && !card.exhaust) {
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(new Shiv(), this.amount));
+ AbstractDungeon.actionManager.addToTop(new MakeTempCardInHandAction(new Shiv(), this.amount));
this.flash();
}
}
diff --git a/src/main/java/gremlin/powers/SneakyGremlinPower.java b/src/main/java/gremlin/powers/SneakyGremlinPower.java
index cfff00c40..ecb1b5a69 100644
--- a/src/main/java/gremlin/powers/SneakyGremlinPower.java
+++ b/src/main/java/gremlin/powers/SneakyGremlinPower.java
@@ -22,7 +22,12 @@ public SneakyGremlinPower(int amount) {
}
public void updateDescription() {
- this.description = (strings.DESCRIPTIONS[0] + this.pot + strings.DESCRIPTIONS[1]);
+ this.description = (strings.DESCRIPTIONS[0] + this.pot + strings.DESCRIPTIONS[1] + this.pot + strings.DESCRIPTIONS[2]);
+ }
+
+ @Override
+ public float atDamageGive(float damage, DamageInfo.DamageType type, AbstractCard card) {
+ return super.atDamageGive(card.costForTurn == 0 ? damage + this.pot : damage, type, card);
}
@Override
@@ -33,4 +38,5 @@ public void onUseCard(final AbstractCard card, final UseCardAction action) {
AbstractGameAction.AttackEffect.SLASH_DIAGONAL));
}
}
+
}
diff --git a/src/main/java/gremlin/powers/WizPower.java b/src/main/java/gremlin/powers/WizPower.java
index 9b1f8e51a..6ff480b3a 100644
--- a/src/main/java/gremlin/powers/WizPower.java
+++ b/src/main/java/gremlin/powers/WizPower.java
@@ -7,6 +7,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.BufferPower;
import gremlin.GremlinMod;
import gremlin.relics.WizardHat;
import gremlin.relics.WizardStaff;
@@ -43,14 +44,24 @@ public void updateDescription()
@Override
public void onInitialApplication() {
- if(amount >= 3){
- if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
- {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10 + WizardStaff.OOMPH), 1));
- } else {
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10), 1));
+ if(amount >= 3) {
+ if(!this.owner.hasPower(BangPower.POWER_ID)) {
+ if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
+ {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
+ new BangPower(this.owner, 7 + WizardStaff.OOMPH + buf), 1));
+ } else {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
+ new BangPower(this.owner, 7 + buf), 1));
+ }
}
}
}
@@ -58,15 +69,23 @@ public void onInitialApplication() {
@Override
public void stackPower(int stackAmount) {
super.stackPower(stackAmount);
- if(amount >= 3){
+ if(amount >= 3) {
if(!this.owner.hasPower(BangPower.POWER_ID)) {
if(AbstractDungeon.player.hasRelic(WizardStaff.ID))
{
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10 + WizardStaff.OOMPH), 1));
+ new BangPower(this.owner, 7 + WizardStaff.OOMPH + buf), 1));
} else {
+ int buf = 0;
+ if (AbstractDungeon.player.hasPower(EncorePower.POWER_ID)) {
+ buf = AbstractDungeon.player.getPower(EncorePower.POWER_ID).amount;
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner,
- new BangPower(this.owner, 10), 1));
+ new BangPower(this.owner, 7 + buf), 1));
}
}
}
@@ -74,9 +93,9 @@ public void stackPower(int stackAmount) {
@Override
public void onRemove() {
- if(this.owner.hasPower(EncorePower.POWER_ID)){
- this.owner.getPower(EncorePower.POWER_ID).onSpecificTrigger();
- }
+ // if(this.owner.hasPower(EncorePower.POWER_ID)){
+ // this.owner.getPower(EncorePower.POWER_ID).onSpecificTrigger();
+ // }
if(AbstractDungeon.player.hasRelic(WizardHat.ID)) {
AbstractDungeon.player.getRelic(WizardHat.ID).onTrigger();
}
diff --git a/src/main/java/gremlin/relics/FragmentationGrenade.java b/src/main/java/gremlin/relics/FragmentationGrenade.java
index 8615c3958..b67b2d83c 100644
--- a/src/main/java/gremlin/relics/FragmentationGrenade.java
+++ b/src/main/java/gremlin/relics/FragmentationGrenade.java
@@ -1,5 +1,6 @@
package gremlin.relics;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.localization.RelicStrings;
import com.megacrit.cardcrawl.relics.AbstractRelic;
@@ -7,7 +8,7 @@
public class FragmentationGrenade extends AbstractGremlinRelic {
public static final String ID = getID("FragmentationGrenade");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.COMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
private static final String IMG = "relics/fragmentation_grenade.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.CLINK;
@@ -17,6 +18,10 @@ public FragmentationGrenade() {
super(ID, IMG, TIER, SOUND);
}
+// public float atDamageModify(float damage, AbstractCard c) {
+// return c.costForTurn != 0 && (!c.freeToPlayOnce || c.cost == -1) ? damage : damage + 2.0F;
+// }
+
@Override
public String getUpdatedDescription() {
return strings.DESCRIPTIONS[0] + OOMPH + strings.DESCRIPTIONS[1];
diff --git a/src/main/java/gremlin/relics/ImpeccablePecs.java b/src/main/java/gremlin/relics/ImpeccablePecs.java
index 8e1e1edb5..5139244d8 100644
--- a/src/main/java/gremlin/relics/ImpeccablePecs.java
+++ b/src/main/java/gremlin/relics/ImpeccablePecs.java
@@ -22,7 +22,10 @@ public ImpeccablePecs() {
super(ID, IMG, TIER, SOUND);
}
- //TODO Rework this Relic at some point
+ // Rework this Relic at some point
+ // I mean I also want to rework this, it's very weird
+ // Removed to-do, made grems exclusive instead. Not worth the effort.
+
@Override
public String getUpdatedDescription() {
diff --git a/src/main/java/gremlin/relics/PricklyShields.java b/src/main/java/gremlin/relics/PricklyShields.java
index fc5d18cab..2df10a0f7 100644
--- a/src/main/java/gremlin/relics/PricklyShields.java
+++ b/src/main/java/gremlin/relics/PricklyShields.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.RelicStrings;
import com.megacrit.cardcrawl.relics.AbstractRelic;
+import gremlin.actions.DamageRandomEnemyActionButItsRelicRng;
public class PricklyShields extends AbstractGremlinRelic {
public static final String ID = getID("PricklyShields");
@@ -35,7 +36,7 @@ public int onPlayerGainedBlock(float blockAmount)
this.flash();
AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- AbstractDungeon.actionManager.addToBottom(new DamageRandomEnemyAction(new DamageInfo(AbstractDungeon.player, DMG_AMT, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
+ AbstractDungeon.actionManager.addToBottom(new DamageRandomEnemyActionButItsRelicRng(new DamageInfo(AbstractDungeon.player, DMG_AMT, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
}
return MathUtils.floor(blockAmount);
}
diff --git a/src/main/java/gremlin/relics/StolenMerchandise.java b/src/main/java/gremlin/relics/StolenMerchandise.java
index b012b6f19..476c39d4f 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;
@@ -43,14 +44,14 @@ public void onGremlinSwap() {
this.flash();
AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- AbstractCard colorless = AbstractDungeon.returnTrulyRandomColorlessCardInCombat().makeCopy();
+ AbstractCard colorless = AbstractDungeon.returnTrulyRandomColorlessCardInCombat(AbstractDungeon.relicRng).makeCopy();
addToBot(new EchoACardAction(colorless));
}
public void atBattleStart() {
for (final AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
if (!mo.isDeadOrEscaped()) {
- if (mo instanceof FleeingMerchant || mo instanceof CharBossMerchant) {
+ if (mo instanceof FleeingMerchant || mo instanceof CharBossMerchant || mo instanceof CorruptHeart) {
flash();
addToBot(new RelicAboveCreatureAction(mo, this));
AbstractDungeon.actionManager.addToBottom(
diff --git a/src/main/java/gremlin/relics/SupplyScroll.java b/src/main/java/gremlin/relics/SupplyScroll.java
index a62d0f98d..2512d2619 100644
--- a/src/main/java/gremlin/relics/SupplyScroll.java
+++ b/src/main/java/gremlin/relics/SupplyScroll.java
@@ -36,7 +36,7 @@ public void atTurnStart() {
if (this.counter == 3) {
this.flash();
this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- addToBot(new GainEnergyAction(1));
+ addToBot(new GainEnergyAction(2));
addToBot(new DrawCardAction(2));
this.counter = -1;
diff --git a/src/main/java/gremlin/relics/WizardHat.java b/src/main/java/gremlin/relics/WizardHat.java
index 7531fd91d..73cbbb040 100644
--- a/src/main/java/gremlin/relics/WizardHat.java
+++ b/src/main/java/gremlin/relics/WizardHat.java
@@ -9,7 +9,7 @@
public class WizardHat extends AbstractGremlinRelic {
public static final String ID = getID("WizardHat");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.RARE;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
private static final String IMG = "relics/wizard_hat.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.MAGICAL;
diff --git a/src/main/java/gremlin/relics/WizardStaff.java b/src/main/java/gremlin/relics/WizardStaff.java
index 6d45c8d26..7ca7d878f 100644
--- a/src/main/java/gremlin/relics/WizardStaff.java
+++ b/src/main/java/gremlin/relics/WizardStaff.java
@@ -7,7 +7,7 @@
public class WizardStaff extends AbstractGremlinRelic {
public static final String ID = getID("WizardStaff");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.RARE;
private static final String IMG = "relics/wizard_staff.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.MAGICAL;
diff --git a/src/main/java/gremlin/relics/WoundPoker.java b/src/main/java/gremlin/relics/WoundPoker.java
index 7635e5192..3fa4c71f4 100644
--- a/src/main/java/gremlin/relics/WoundPoker.java
+++ b/src/main/java/gremlin/relics/WoundPoker.java
@@ -13,11 +13,11 @@
public class WoundPoker extends AbstractGremlinRelic {
public static final String ID = getID("WoundPoker");
private static final RelicStrings strings = CardCrawlGame.languagePack.getRelicStrings(ID);
- private static final AbstractRelic.RelicTier TIER = RelicTier.UNCOMMON;
+ private static final AbstractRelic.RelicTier TIER = RelicTier.COMMON;
private static final String IMG = "relics/wound_poker.png";
private static final AbstractRelic.LandingSound SOUND = LandingSound.CLINK;
- public static final int OOMPH = 6;
+ public static final int OOMPH = 4;
public WoundPoker() {
super(ID, IMG, TIER, SOUND);
diff --git a/src/main/java/guardian/GuardianMod.java b/src/main/java/guardian/GuardianMod.java
index 291d77455..c4908b300 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,85 @@ 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("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("GREEN");
+ if (!onlyCommon) allGemCards.add("PURPLE");
+ if (!onlyCommon) allGemCards.add("SYNTHETIC");
+ if (!onlyCommon) allGemCards.add("YELLOW");
+ int rando;
+ String ID;
+ for (int i = 0; i < count; i++) {
+ rando = AbstractDungeon.cardRng.random(0, allGemCards.size() - 1);
+ ID = allGemCards.get(rando);
+ switch (ID) {
+ case "RED":
+ rewardGemCards.add(new Gem_Red());
+ break;
+ case "GREEN":
+ rewardGemCards.add(new Gem_Green());
+ break;
+ case "LIGHTBLUE":
+ rewardGemCards.add(new Gem_Lightblue());
+ break;
+ case "ORANGE":
+ rewardGemCards.add(new Gem_Orange());
+ break;
+ case "CYAN":
+ rewardGemCards.add(new Gem_Cyan());
+ break;
+ case "WHITE":
+ rewardGemCards.add(new Gem_White());
+ break;
+ case "BLUE":
+ rewardGemCards.add(new Gem_Blue());
+ break;
+ case "CRIMSON":
+ rewardGemCards.add(new Gem_Crimson());
+ break;
+ case "FRAGMENTED":
+ rewardGemCards.add(new Gem_Fragmented());
+ break;
+ case "PURPLE":
+ rewardGemCards.add(new Gem_Purple());
+ break;
+ case "SYNTHETIC":
+ rewardGemCards.add(new Gem_Synthetic());
+ break;
+ case "YELLOW":
+ rewardGemCards.add(new Gem_Yellow());
+ break;
+ }
+ allGemCards.remove(rando);
+ }
+
+ return rewardGemCards;
+ }
+
+ public static ArrayList getRewardGemCardsButRelicRng(boolean onlyCommon, int count) {
+ ArrayList allGemCards = new ArrayList<>();
+ ArrayList rewardGemCards = new ArrayList<>();
+
+ allGemCards.add("RED");
+ allGemCards.add("LIGHTBLUE");
+ 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");
@@ -368,7 +410,7 @@ public static ArrayList getRewardGemCards(boolean onlyCommon, int
int rando;
String ID;
for (int i = 0; i < count; i++) {
- rando = AbstractDungeon.cardRng.random(0, allGemCards.size() - 1);
+ rando = AbstractDungeon.relicRng.random(0, allGemCards.size() - 1);
ID = allGemCards.get(rando);
switch (ID) {
case "RED":
@@ -447,7 +489,7 @@ public static boolean canSpawnStasisOrb() {
return false;
}
- //TODO - Part of shared relics
+ //Part of shared relics
/*
public void addSharedRelics(){
if (contentSharing_relics){
@@ -562,7 +604,7 @@ public void receiveSetUnlocks() {
FierceBash.ID,
ChargeUp.ID,
- GemFire.ID,
+ ShieldSpikes.ID,
GemFinder.ID,
StasisEngine.ID,
@@ -594,6 +636,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 +718,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 +941,8 @@ 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(() -> (evilMode || downfallMod.contentSharing_events))
.create());
BaseMod.addEvent(new AddEventParams.Builder(CrystalForge.ID, CrystalForge.class) //Event ID//
//Event Character//
@@ -1080,7 +1124,7 @@ public void receivePostCreateStartingDeck(AbstractPlayer.PlayerClass playerClass
AbstractGemCard starter_gem = (AbstractGemCard) GuardianMod.getRewardGemCards(true, 1).get(0).makeStatEquivalentCopy();
cardGroup.addToTop(starter_gem);
// this adds the real save&load friendly gem on floor 0, sentences below enable the
- // show-card-and-card-flies-to-deck visual effect, by adding a dummy card and remove it instantly
+ // show-card-and-card-flies-to-deck visual effect ,by adding a dummy card and remove it instantly
AbstractGemCard dummy_starter_gem_to_be_removed = (AbstractGemCard) starter_gem.makeStatEquivalentCopy();
AbstractDungeon.effectList.add(new AddGemToStartingDeckEffect(dummy_starter_gem_to_be_removed, (Settings.WIDTH * 0.5F), (Settings.HEIGHT * 0.5F)));
diff --git a/src/main/java/guardian/actions/BraceAction.java b/src/main/java/guardian/actions/BraceAction.java
index 8c6aacdf9..8544a880c 100644
--- a/src/main/java/guardian/actions/BraceAction.java
+++ b/src/main/java/guardian/actions/BraceAction.java
@@ -55,7 +55,4 @@ public void update() {
}
this.isDone = true;
}
-}
-
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/actions/BraceWallopAction.java b/src/main/java/guardian/actions/BraceWallopAction.java
new file mode 100644
index 000000000..3ebec1fdb
--- /dev/null
+++ b/src/main/java/guardian/actions/BraceWallopAction.java
@@ -0,0 +1,46 @@
+package guardian.actions;
+
+import com.evacipated.cardcrawl.mod.stslib.actions.tempHp.AddTemporaryHPAction;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.utility.WaitAction;
+import com.megacrit.cardcrawl.cards.DamageInfo;
+import com.megacrit.cardcrawl.core.AbstractCreature;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.vfx.combat.FlashAtkImgEffect;
+import static guardian.cards.AbstractGuardianCard.brace;
+
+
+//thorton code
+public class BraceWallopAction extends AbstractGameAction {
+ private int damage;
+
+ public BraceWallopAction(AbstractCreature target, AbstractCreature source, int amount, DamageInfo.DamageType type, AbstractGameAction.AttackEffect effect) {
+ setValues(target, source, amount);
+ this.damage = amount;
+ this.actionType = AbstractGameAction.ActionType.DAMAGE;
+ this.damageType = type;
+ this.attackEffect = effect;
+ }
+
+ public void update() {
+ if (this.duration == 0.5F)
+ AbstractDungeon.effectList.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, this.attackEffect));
+ tickDuration();
+ if (this.isDone) {
+ braceattack();
+ this.target.damage(new DamageInfo(this.source, this.damage, this.damageType));
+ if (AbstractDungeon.getMonsters().areMonstersBasicallyDead())
+ AbstractDungeon.actionManager.clearPostCombatActions();
+ AbstractDungeon.actionManager.addToTop((AbstractGameAction) new WaitAction(0.1F));
+ }
+ }
+
+ private void braceattack() {
+ int tmp = this.damage;
+ tmp -= this.target.currentBlock;
+ if (tmp > this.target.currentHealth)
+ tmp = this.target.currentHealth;
+ if (tmp > 0)
+ brace(tmp);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/actions/CompilePackageAction.java b/src/main/java/guardian/actions/CompilePackageAction.java
index 1db793e3b..d9b9ea5b6 100644
--- a/src/main/java/guardian/actions/CompilePackageAction.java
+++ b/src/main/java/guardian/actions/CompilePackageAction.java
@@ -39,13 +39,7 @@ public void update() {
disCard.current_x = -1000.0F * Settings.scale;
AbstractGuardianCard disG = (AbstractGuardianCard) disCard;
disG.flipPreviewMode = true;
- if (AbstractDungeon.player.hand.size() < 10) {
- AbstractDungeon.effectList.add(new ShowCardAndAddToHandEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- } else {
- AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(disCard, (float) Settings.WIDTH / 2.0F, (float) Settings.HEIGHT / 2.0F));
- }
-
-
+ AbstractDungeon.actionManager.addToBottom(new PlaceActualCardIntoStasis(disCard));
AbstractDungeon.cardRewardScreen.discoveryCard = null;
}
diff --git a/src/main/java/guardian/actions/GemFireAction.java b/src/main/java/guardian/actions/GemFireAction.java
index 015dd22ce..968ce5ab9 100644
--- a/src/main/java/guardian/actions/GemFireAction.java
+++ b/src/main/java/guardian/actions/GemFireAction.java
@@ -38,34 +38,34 @@ public class GemFireAction extends AbstractGameAction {
private int exhaustCount;
private ArrayList shots = new ArrayList<>();
- public GemFireAction(AbstractCreature target, DamageInfo info) {
+ public GemFireAction(AbstractCreature target) {
this.info = info;
this.setValues(target, info);
this.actionType = ActionType.WAIT;
this.attackEffect = AttackEffect.FIRE;
this.startingDuration = Settings.ACTION_DUR_FAST;
this.duration = this.startingDuration;
+ this.target = target;
}
- public class GemShootEffect extends AbstractGameEffect {
+ public static class GemShootEffect extends AbstractGameEffect {
private GuardianMod.socketTypes gem;
private float x1, y1, x2, y2, x3, y3, sX, sY, scaleX, scaleY;
private Color glowColor;
- public GemShootEffect(GuardianMod.socketTypes gem, int hitNo) {
+ public GemShootEffect(GuardianMod.socketTypes gem, int hitNo, AbstractCreature target, int total) {
this.gem = gem;
this.color = Color.WHITE.cpy();
this.duration = this.startingDuration = Settings.FAST_MODE
- ? (1.0f + Settings.ACTION_DUR_XFAST * exhaustCount)
- : (1.0f + Settings.ACTION_DUR_FAST * exhaustCount);
+ ? (1.0f + Settings.ACTION_DUR_XFAST * total)
+ : (1.0f + Settings.ACTION_DUR_FAST * total);
this.duration += hitNo * (Settings.FAST_MODE ? 0.1 : 0.2);
sX = x1 = AbstractDungeon.player.hb.cX - AbstractDungeon.player.animX;
sY = y1 = AbstractDungeon.player.hb.cY - AbstractDungeon.player.animY;
float theta = MathUtils.random(-1.0f, 1.0f);
x2 = x1 + MathUtils.sin(theta) * 200 * Settings.xScale;
y2 = y1 + MathUtils.cos(theta) * 200 * Settings.yScale;
- AbstractMonster target = AbstractDungeon.getMonsters().getRandomMonster((AbstractMonster)null, true, AbstractDungeon.cardRandomRng);
if (target == null) {
x3 = Settings.WIDTH * 2;
y3 = Settings.HEIGHT / 2f + MathUtils.random(-100f, 100f) * Settings.yScale;
@@ -110,7 +110,7 @@ public void render(SpriteBatch sb) {
@Override
public void update() {
- float deployed = this.startingDuration - 0.25f;
+ float deployed = this.startingDuration - 0.05f;
this.duration -= Gdx.graphics.getDeltaTime();
this.rotation = this.duration * 1080.0f;
@@ -148,9 +148,7 @@ public class GemFireDamageAction extends AbstractGameAction {
@Override
public void update() {
if (this.duration == this.startDuration) {
- for (GuardianMod.socketTypes socket : shots) {
- addToTop(new DamageRandomEnemyAction(info, AttackEffect.SLASH_DIAGONAL));
- }
+ //addToTop(new DamageRandomEnemyAction(info, AttackEffect.SLASH_DIAGONAL));
this.duration = 0.0f;
this.isDone = true;
}
@@ -159,18 +157,18 @@ public void update() {
public int get_cards(){
addGemsFromGroup(AbstractDungeon.player.hand);
-// addGemsFromGroup(AbstractDungeon.player.drawPile);
-// addGemsFromGroup(AbstractDungeon.player.discardPile);
-// addGemsFromGroup(this.gatherStasisCards());
+ addGemsFromGroup(AbstractDungeon.player.drawPile);
+ addGemsFromGroup(AbstractDungeon.player.discardPile);
+ addGemsFromGroup(this.gatherStasisCards());
return exhaustCount;
}
public void update() {
if (this.duration == this.startingDuration) {
- addToTop(new GemFireDamageAction());
+ //addToTop(new GemFireDamageAction());
addToTop(new AbstractGameAction() {
- { duration = 0.5f; }
+ { duration = 0.1f; }
@Override
public void update() {
tickDuration();
@@ -179,7 +177,7 @@ public void update() {
this.get_cards();
int i = 0;
for (GuardianMod.socketTypes socket : shots) {
- AbstractDungeon.effectsQueue.add(new GemShootEffect(socket, i++));
+ // AbstractDungeon.effectsQueue.add(new GemShootEffect(socket, i++, target));
}
}
@@ -226,7 +224,7 @@ private void addGemsFromGroup(CardGroup group) {
}
private void exhaustCard(CardGroup group, AbstractCard c) {
- addToTop(new ExhaustGemAction(c, group, exhaustCount));
+ // addToTop(new ExhaustGemAction(c, group, exhaustCount));
}
public class ExhaustGemAction extends AbstractGameAction {
diff --git a/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java b/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
index 2466d1932..89d23be0f 100644
--- a/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
+++ b/src/main/java/guardian/actions/PlaceCardsInHandIntoStasisAction.java
@@ -30,13 +30,14 @@ public PlaceCardsInHandIntoStasisAction(AbstractCreature source, int amount, boo
public void update() {
if (this.duration == 0.5F) {
// removing Ethereal cards for Future Plans for consistency with similar affects.
+ // deprecated ethereal override
if (this.endOfTurn) {
ArrayList toMove = new ArrayList<>();
toMove.addAll(AbstractDungeon.player.hand.group);
for (AbstractCard c : toMove) {
if (c.isEthereal) {
- AbstractDungeon.player.hand.removeCard(c);
- invalidTargets.add(c);
+ // AbstractDungeon.player.hand.removeCard(c);
+ // invalidTargets.add(c);
}
}
diff --git a/src/main/java/guardian/actions/PolyBeamAction.java b/src/main/java/guardian/actions/PolyBeamAction.java
index 7a31f8440..8e96609d0 100644
--- a/src/main/java/guardian/actions/PolyBeamAction.java
+++ b/src/main/java/guardian/actions/PolyBeamAction.java
@@ -38,8 +38,8 @@ public void update() {
AbstractDungeon.topLevelEffects.add(new SmallLaserEffect(this.target.hb.cX + (randoX * Settings.scale), this.target.hb.cY + (randoY * Settings.scale), AbstractDungeon.player.hb.cX, AbstractDungeon.player.hb.cY));
AbstractDungeon.topLevelEffects.add(new FlashAtkImgEffect(this.target.hb.cX, this.target.hb.cY, this.attackEffect));
- this.card.calculateCardDamage((AbstractMonster)this.target);
- addToTop(new PseudoDamageRandomEnemyAction(target, new DamageInfo(AbstractDungeon.player, this.card.damage, this.card.damageTypeForTurn)));
+ // this.card.calculateCardDamage((AbstractMonster)this.target);
+ // addToTop(new PseudoDamageRandomEnemyAction(target, new DamageInfo(AbstractDungeon.player, this.card.damage, this.card.damageTypeForTurn)));
}
this.isDone = true;
}
diff --git a/src/main/java/guardian/cards/AbstractGemCard.java b/src/main/java/guardian/cards/AbstractGemCard.java
index e9270b222..7ea3ac2e3 100644
--- a/src/main/java/guardian/cards/AbstractGemCard.java
+++ b/src/main/java/guardian/cards/AbstractGemCard.java
@@ -1,43 +1,43 @@
-package guardian.cards;
-
-import basemod.BaseMod;
-import basemod.helpers.TooltipInfo;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import downfall.downfallMod;
-import guardian.GuardianMod;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class AbstractGemCard extends AbstractGuardianCard {
- //private String[] descriptorStrings = CardCrawlGame.languagePack.getUIString(GuardianMod.makeID("gemDescriptor")).TEXT;
-
- public AbstractGemCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target) {
- super(id, name, img, cost, rawDescription, type, color, rarity, target);
- /*
- if (downfallMod.disableDescriptors && !this.rawDescription.contains(descriptorStrings[1])) {
- //If zht & zhs & kor need/needn't add in end you can add there if()
- this.rawDescription = descriptorStrings[1] + this.rawDescription;
- initializeDescription();
- }
- }
-
- @Override
- public List getCardDescriptors() {
- List tags = new ArrayList<>();
- if (!downfallMod.disableDescriptors) {
- tags.add(descriptorStrings[0]);
- }
- return tags;
- }
-
- @Override
- public List getCustomTooltipsTop() {
- List tips = new ArrayList<>();
- if (!downfallMod.disableDescriptors && !keywords.contains(("guardianmod:" + descriptorStrings[0]).toLowerCase())) {
- tips.add(new TooltipInfo(BaseMod.getKeywordTitle("guardianmod:gem"), BaseMod.getKeywordDescription("guardianmod:gem")));
- }
- return tips;
- */
- }
-}
+package guardian.cards;
+
+import basemod.BaseMod;
+import basemod.helpers.TooltipInfo;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import downfall.downfallMod;
+import guardian.GuardianMod;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractGemCard extends AbstractGuardianCard {
+ //private String[] descriptorStrings = CardCrawlGame.languagePack.getUIString(GuardianMod.makeID("gemDescriptor")).TEXT;
+
+ public AbstractGemCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target) {
+ super(id, name, img, cost, rawDescription, type, color, rarity, target);
+ /*
+ if (downfallMod.disableDescriptors && !this.rawDescription.contains(descriptorStrings[1])) {
+ //If zht & zhs & kor need/needn't add in end you can add there if()
+ this.rawDescription = descriptorStrings[1] + this.rawDescription;
+ initializeDescription();
+ }
+ }
+
+ @Override
+ public List getCardDescriptors() {
+ List tags = new ArrayList<>();
+ if (!downfallMod.disableDescriptors) {
+ tags.add(descriptorStrings[0]);
+ }
+ return tags;
+ }
+
+ @Override
+ public List getCustomTooltipsTop() {
+ List tips = new ArrayList<>();
+ if (!downfallMod.disableDescriptors && !keywords.contains(("guardianmod:" + descriptorStrings[0]).toLowerCase())) {
+ tips.add(new TooltipInfo(BaseMod.getKeywordTitle("guardianmod:gem"), BaseMod.getKeywordDescription("guardianmod:gem")));
+ }
+ return tips;
+ */
+ }
+}
diff --git a/src/main/java/guardian/cards/AncientConstruct.java b/src/main/java/guardian/cards/AncientConstruct.java
index 3db29c8da..a3800f504 100644
--- a/src/main/java/guardian/cards/AncientConstruct.java
+++ b/src/main/java/guardian/cards/AncientConstruct.java
@@ -56,7 +56,7 @@ public AncientConstruct() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
AbstractDungeon.effectsQueue.add(new com.megacrit.cardcrawl.vfx.BorderFlashEffect(com.badlogic.gdx.graphics.Color.GOLD, true));
- if (upgraded) AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, 2), 2));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, 1), 1));
//AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p,this.magicNumber)));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ConstructPower(p, p, this.magicNumber), this.magicNumber));
@@ -71,7 +71,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-
+ upgradeBaseCost(2);
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
diff --git a/src/main/java/guardian/cards/ArmoredProtocol.java b/src/main/java/guardian/cards/ArmoredProtocol.java
index c23dc86a7..c33f5acdd 100644
--- a/src/main/java/guardian/cards/ArmoredProtocol.java
+++ b/src/main/java/guardian/cards/ArmoredProtocol.java
@@ -2,38 +2,38 @@
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.MetallicizePower;
import guardian.GuardianMod;
import guardian.powers.BracePerTurnPower;
-import guardian.stances.DefensiveMode;
import guardian.patches.AbstractCardEnum;
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 +54,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 +64,19 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(0);
-// upgradeMagicNumber(3);
+ upgradeMagicNumber(3);
}
}
public void updateDescription() {
-//
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
}
diff --git a/src/main/java/guardian/cards/BaubleBeam.java b/src/main/java/guardian/cards/BaubleBeam.java
index 06419d751..b4a995ef3 100644
--- a/src/main/java/guardian/cards/BaubleBeam.java
+++ b/src/main/java/guardian/cards/BaubleBeam.java
@@ -63,7 +63,7 @@ public BaubleBeam() {
this.socketCount = SOCKETS;
updateDescription();
loadGemMisc();
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("BaubleBeam.png"));
}
diff --git a/src/main/java/guardian/cards/BodySlam.java b/src/main/java/guardian/cards/BodySlam.java
index 877282d18..f760ace71 100644
--- a/src/main/java/guardian/cards/BodySlam.java
+++ b/src/main/java/guardian/cards/BodySlam.java
@@ -1,7 +1,11 @@
package guardian.cards;
+import basemod.helpers.BaseModCardTags;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -9,6 +13,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.actions.BraceAction;
import guardian.patches.AbstractCardEnum;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -17,7 +22,7 @@
public class BodySlam extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("BodySlam");
public static final String NAME;
- public static final String IMG_PATH = "cards/BodySlam.png";
+ public static final String IMG_PATH = "cards/bodySlam.png";
private static final CardType TYPE = CardType.ATTACK;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.ENEMY;
@@ -27,6 +32,8 @@ public class BodySlam extends AbstractGuardianCard {
public static String DESCRIPTION;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
diff --git a/src/main/java/guardian/cards/BronzeOrb.java b/src/main/java/guardian/cards/BronzeOrb.java
index 088be4808..18d2fcb40 100644
--- a/src/main/java/guardian/cards/BronzeOrb.java
+++ b/src/main/java/guardian/cards/BronzeOrb.java
@@ -1,6 +1,7 @@
package guardian.cards;
+import collector.powers.DoomPower;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
@@ -8,15 +9,18 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.actions.BraceWallopAction;
import guardian.actions.PlaceRandomCardIntoStasisAction;
import guardian.patches.AbstractCardEnum;
import guardian.vfx.BronzeOrbEffect;
+import static collector.util.Wiz.applyToEnemy;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -28,11 +32,11 @@ public class BronzeOrb extends AbstractGuardianCard {
private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.ENEMY;
private static final CardStrings cardStrings;
- private static final int COST = 0;
- private static final int DAMAGE = 8;
+ private static final int COST = 2;
+ private static final int DAMAGE = 9;
//TUNING CONSTANTS
- private static final int UPGRADE_DAMAGE = 4;
+ private static final int UPGRADE_DAMAGE = 3;
private static final int BLOCK = 5;
private static final int UPGRADE_BLOCK = 2;
private static final int SOCKETS = 0;
@@ -54,10 +58,10 @@ public BronzeOrb() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.baseDamage = DAMAGE;
- // this.baseBlock = BLOCK;
+ // this.baseBlock = BLOCK;
//this.sockets.add(GuardianMod.socketTypes.RED);
- this.isInnate = true;
+ // this.isInnate = true;
this.exhaust = true;
this.socketCount = SOCKETS;
this.tags.add(GuardianMod.BEAM);
@@ -67,24 +71,13 @@ public BronzeOrb() {
}
- @Override
- public float calculateModifiedCardDamage(AbstractPlayer player, AbstractMonster mo, float tmp) {
- return tmp + calculateBeamDamage();
- }
-
- @Override
- public float calculateModifiedCardDamage(AbstractPlayer player, float tmp) {
- return tmp + calculateBeamDamage();
- }
-
-
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
+
AbstractDungeon.actionManager.addToBottom(new VFXAction(new BronzeOrbEffect(p, m), 0.5F));
- AbstractDungeon.actionManager.addToBottom(new PlaceRandomCardIntoStasisAction(1));
- // AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
- AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
+ AbstractDungeon.actionManager.addToBottom((AbstractGameAction)new BraceWallopAction((AbstractCreature)m, (AbstractCreature)p, this.damage, this.damageTypeForTurn, AbstractGameAction.AttackEffect.FIRE));
+
this.useGems(p, m);
}
@@ -96,23 +89,8 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
upgradeDamage(UPGRADE_DAMAGE);
- // upgradeBlock(UPGRADE_BLOCK);
+ // upgradeBlock(UPGRADE_BLOCK);
}
-
-
- }
-
- public void updateDescription() {
-
- if (this.socketCount > 0) {
- if (upgraded && UPGRADED_DESCRIPTION != null) {
- this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
- } else {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
- }
- }
- this.initializeDescription();
}
}
-
diff --git a/src/main/java/guardian/cards/ChargeUp.java b/src/main/java/guardian/cards/ChargeUp.java
index bdd07338a..6216f705f 100644
--- a/src/main/java/guardian/cards/ChargeUp.java
+++ b/src/main/java/guardian/cards/ChargeUp.java
@@ -23,7 +23,7 @@ public ChargeUp() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.GUARDIAN, CardRarity.COMMON, CardTarget.SELF);
this.baseBlock = 7;
this.baseMagicNumber = this.magicNumber = 2;
- this.socketCount = 0;
+ this.socketCount = 1;
updateDescription();
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("ChargeUp.png"));
diff --git a/src/main/java/guardian/cards/CompilePackage.java b/src/main/java/guardian/cards/CompilePackage.java
index a7d2a919f..a4732937b 100644
--- a/src/main/java/guardian/cards/CompilePackage.java
+++ b/src/main/java/guardian/cards/CompilePackage.java
@@ -1,10 +1,13 @@
package guardian.cards;
+import automaton.FunctionHelper;
import automaton.cards.Batch;
import automaton.cards.Debug;
import automaton.cards.Decompile;
+import basemod.patches.com.megacrit.cardcrawl.cards.AbstractCard.MultiCardPreview;
import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.math.Interpolation;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -41,12 +44,14 @@ public class CompilePackage extends AbstractGuardianCard {
private float rotationTimer;
private int previewIndex;
private ArrayList cardsList = new ArrayList<>();
+ public static final String[] TEXT;
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
DESCRIPTION = cardStrings.DESCRIPTION;
UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+ TEXT = CardCrawlGame.languagePack.getUIString("Guardian:UIOptions").TEXT;
}
public CompilePackage() {
@@ -57,6 +62,8 @@ public CompilePackage() {
updateDescription();
loadGemMisc();
+ //cardsList.add(new PackageDefect());
+
cardsList.add(new PackageDefect());
cardsList.add(new PackageWalker());
cardsList.add(new PackageSphere());
@@ -64,6 +71,7 @@ public CompilePackage() {
cardsList.add(new PackageSentry());
cardsList.add(new PackageDonuDeca());
cardsList.add(new PackageAutomaton());
+ //MultiCardPreview.add(this, new PackageDefect(), new PackageWalker(), new PackageSphere(), new PackageShapes(), new PackageSentry(), new PackageDonuDeca(), new PackageAutomaton());
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("CompilePackage.png"));
}
@@ -84,12 +92,16 @@ public void upgrade() {
upgradeName();
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
- for(AbstractCard c:cardsList){
- c.upgrade();
- }
+ MultiCardPreview.multiCardPreview.get(this).forEach(AbstractCard::upgrade);
}
}
+ @Override
+ public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ this.cantUseMessage = TEXT[5];
+ return AbstractDungeon.player.hasEmptyOrb();
+ }
+
public void updateDescription() {
if (this.socketCount > 0) {
@@ -124,6 +136,4 @@ public void update() {
}
}
}
-}
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/cards/CrystalBeam.java b/src/main/java/guardian/cards/CrystalBeam.java
index 3a1c8442b..1e86fdb66 100644
--- a/src/main/java/guardian/cards/CrystalBeam.java
+++ b/src/main/java/guardian/cards/CrystalBeam.java
@@ -122,6 +122,7 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
upgradeDamage(UPGRADE_BONUS);
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/CrystalShiv.java b/src/main/java/guardian/cards/CrystalShiv.java
index 194af614c..de728b459 100644
--- a/src/main/java/guardian/cards/CrystalShiv.java
+++ b/src/main/java/guardian/cards/CrystalShiv.java
@@ -24,7 +24,7 @@ public class CrystalShiv extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.ENEMY;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int DAMAGE = 4;
+ private static final int DAMAGE = 3;
//TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/guardian/cards/CrystalWard.java b/src/main/java/guardian/cards/CrystalWard.java
index 346776724..505fe9316 100644
--- a/src/main/java/guardian/cards/CrystalWard.java
+++ b/src/main/java/guardian/cards/CrystalWard.java
@@ -23,7 +23,7 @@ public class CrystalWard extends AbstractGuardianCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int BLOCK = 3;
+ private static final int BLOCK = 4;
//TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
diff --git a/src/main/java/guardian/cards/DecasProtection.java b/src/main/java/guardian/cards/DecasProtection.java
index 9fe80f27a..a65482be1 100644
--- a/src/main/java/guardian/cards/DecasProtection.java
+++ b/src/main/java/guardian/cards/DecasProtection.java
@@ -22,7 +22,7 @@ public class DecasProtection extends AbstractGuardianCard {
public static final String DESCRIPTION;
public static final String IMG_PATH = "cards/ancientProtection.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 = 1;
diff --git a/src/main/java/guardian/cards/DonusPower.java b/src/main/java/guardian/cards/DonusPower.java
index b1a81239b..ed2620a11 100644
--- a/src/main/java/guardian/cards/DonusPower.java
+++ b/src/main/java/guardian/cards/DonusPower.java
@@ -49,7 +49,7 @@ public class DonusPower extends AbstractGuardianCard {
public DonusPower() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
- baseMagicNumber = magicNumber = 4;
+ baseMagicNumber = magicNumber = 2;
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("DonusPower.png"));
}
@@ -57,10 +57,7 @@ public DonusPower() {
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new DrawCardAction(magicNumber));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DrawLessNextTurnPower(2), 2));
- if (upgraded){
- AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, 1));
- }
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, 1));
}
public AbstractCard makeCopy() {
@@ -70,8 +67,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- this.rawDescription = UPGRADED_DESCRIPTION;
- this.initializeDescription();
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/Emergency.java b/src/main/java/guardian/cards/Emergency.java
index 388eb84b8..47506ab53 100644
--- a/src/main/java/guardian/cards/Emergency.java
+++ b/src/main/java/guardian/cards/Emergency.java
@@ -9,6 +9,7 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.orbs.AbstractOrb;
import guardian.GuardianMod;
+import guardian.actions.AccelerateAllCardsInStasisAction;
import guardian.orbs.StasisOrb;
import guardian.patches.AbstractCardEnum;
import sneckomod.SneckoMod;
@@ -51,19 +52,10 @@ public Emergency() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
- for (AbstractOrb o : p.orbs) {
- if (o instanceof StasisOrb) {
- int stasisCount = o.passiveAmount;
- ((StasisOrb) o).stasisCard.superFlash(Color.GOLDENROD);
- if(stasisCount <= 0) {
- o.onStartOfTurn();
- }else {
- for (int i = 0; i < stasisCount; i++) {
- o.onStartOfTurn();
- }
- }
- break;
- }
+ addToBot(new AccelerateAllCardsInStasisAction());
+
+ if (this.upgraded) {
+ addToBot(new AccelerateAllCardsInStasisAction());
}
super.useGems(p, m);
@@ -76,7 +68,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- exhaust = false;
+ // exhaust = false;
rawDescription = UPGRADED_DESCRIPTION;
initializeDescription();
}
diff --git a/src/main/java/guardian/cards/EvasiveProtocol.java b/src/main/java/guardian/cards/EvasiveProtocol.java
index fd312b464..4072addc9 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 || mods >= moda) {
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, magicNumber));
+ }
+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EvasiveProtocolPower(p, magicNumber)));
-// if (p.stance instanceof DefensiveMode) {
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new DexterityPower(p, magicNumber), magicNumber));
-// }
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
+
+ // if (((moda - mods) <= 0)) {
+ // AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, magicNumber));
+ // }
+
+ //AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
}
public AbstractCard makeCopy() {
@@ -64,21 +99,10 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeMagicNumber(2);
- upgradeBaseCost(0);
+ upgradeMagicNumber(1);
+ upgradeSecondaryM(3);
}
}
-
- public void updateDescription() {
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
- this.initializeDescription();
- }
}
diff --git a/src/main/java/guardian/cards/ExploitGems.java b/src/main/java/guardian/cards/ExploitGems.java
index bcef66384..a3985a4f9 100644
--- a/src/main/java/guardian/cards/ExploitGems.java
+++ b/src/main/java/guardian/cards/ExploitGems.java
@@ -1,59 +1,50 @@
package guardian.cards;
-
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
+import com.megacrit.cardcrawl.actions.common.GainEnergyAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardQueueItem;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import guardian.GuardianMod;
+import guardian.orbs.StasisOrb;
import guardian.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import static guardian.GuardianMod.makeBetaCardPath;
-public class ExploitGems extends AbstractGuardianCard {
+public class ExploitGems extends AbstractGuardianCard implements InStasisCard {
public static final String ID = GuardianMod.makeID("ExploitGems");
- public static final String NAME;
- public static final String DESCRIPTION;
+ private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
+ public static final String NAME = cardStrings.NAME;
+ public static final String DESCRIPTION = cardStrings.DESCRIPTION;
+ public static final String UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
public static final String IMG_PATH = "cards/exploitGems.png";
- private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 0;
- //TUNING CONSTANTS
+ // Tuning Constants
private static final int SOCKETS = 2;
- private static final boolean SOCKETSAREAFTER = true;
- public static String UPGRADED_DESCRIPTION;
-
- //END TUNING CONSTANTS
-
- static {
- cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
- NAME = cardStrings.NAME;
- DESCRIPTION = cardStrings.DESCRIPTION;
- UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
- }
+ private static final boolean SOCKETS_ARE_AFTER = true;
public ExploitGems() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
this.socketCount = SOCKETS;
updateDescription();
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("ExploitGems.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
- super.use(p, m);
-
- // if (upgraded) AbstractDungeon.actionManager.addToBottom(new GainEnergyAction(1));
AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, 1));
super.useGems(p, m);
-
}
public AbstractCard makeCopy() {
@@ -67,20 +58,13 @@ public void upgrade() {
this.socketCount++;
this.saveGemMisc();
}
- // this.rawDescription = UPGRADED_DESCRIPTION;
-
- this.updateDescription();
-
-
+ updateDescription();
}
}
public void updateDescription() {
-
this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-
this.initializeDescription();
}
-}
-
+}
diff --git a/src/main/java/guardian/cards/FastForward.java b/src/main/java/guardian/cards/FastForward.java
index 2ebf42987..2a3ba704b 100644
--- a/src/main/java/guardian/cards/FastForward.java
+++ b/src/main/java/guardian/cards/FastForward.java
@@ -19,8 +19,6 @@ public class FastForward extends AbstractGuardianCard {
public static final String IMG_PATH = GuardianMod.getResourcePath("cards/accelerate.png");
private static final CardStrings cardStrings;
- // speed boost
-
public FastForward() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.GUARDIAN, CardRarity.RARE, CardTarget.NONE);
this.magicNumber = this.baseMagicNumber = 3;
@@ -48,9 +46,10 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- selfRetain = true;
- this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
+// selfRetain = true;
+// this.rawDescription = cardStrings.UPGRADE_DESCRIPTION;
+// this.initializeDescription();
+ upgradeBaseCost(0);
}
}
diff --git a/src/main/java/guardian/cards/FierceBash.java b/src/main/java/guardian/cards/FierceBash.java
index cd96009ec..1769ed091 100644
--- a/src/main/java/guardian/cards/FierceBash.java
+++ b/src/main/java/guardian/cards/FierceBash.java
@@ -28,11 +28,11 @@ 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 COST = 2;
private static final int DAMAGE = 18;
//TUNING CONSTANTS
- private static final int UPGRADE_BONUS = 6;
+ private static final int UPGRADE_BONUS = 4;
private static final int DAMAGEPERTURNINSTASIS = 2;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
@@ -83,7 +83,8 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeDamage(UPGRADE_BONUS);
+ upgradeDamage(4);
+ // upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/FloatingOrbs.java b/src/main/java/guardian/cards/FloatingOrbs.java
index ecc8ff6e6..09a2bdfa5 100644
--- a/src/main/java/guardian/cards/FloatingOrbs.java
+++ b/src/main/java/guardian/cards/FloatingOrbs.java
@@ -18,7 +18,7 @@ public class FloatingOrbs extends AbstractGuardianCard {
public static final String ID = GuardianMod.makeID("FloatingOrbs");
public static final String NAME;
public static final String DESCRIPTION;
- public static final String IMG_PATH = "cards/FloatingOrbs.png";
+ public static final String IMG_PATH = "cards/floatingOrbs.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
@@ -54,7 +54,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(2);
+ upgradeMagicNumber(1);
}
}
diff --git a/src/main/java/guardian/cards/FuturePlans.java b/src/main/java/guardian/cards/FuturePlans.java
index 3e88d1b90..2ea6c8317 100644
--- a/src/main/java/guardian/cards/FuturePlans.java
+++ b/src/main/java/guardian/cards/FuturePlans.java
@@ -19,7 +19,7 @@ public class FuturePlans extends AbstractGuardianCard {
private static final CardStrings cardStrings;
public FuturePlans() {
- super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
+ super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.RARE, CardTarget.SELF);
this.baseMagicNumber = this.magicNumber = 1;
this.socketCount = 0;
updateDescription();
diff --git a/src/main/java/guardian/cards/GearUp.java b/src/main/java/guardian/cards/GearUp.java
index 4856102d3..7bd7db69f 100644
--- a/src/main/java/guardian/cards/GearUp.java
+++ b/src/main/java/guardian/cards/GearUp.java
@@ -17,7 +17,7 @@ public class GearUp extends AbstractGuardianCard {
public GearUp() {
super(ID, cardStrings.NAME, IMG_PATH, 1, cardStrings.DESCRIPTION, CardType.SKILL, CardColor.COLORLESS, CardRarity.SPECIAL, CardTarget.SELF);
- this.baseMagicNumber = magicNumber = 15;
+ this.baseMagicNumber = magicNumber = 10;
this.selfRetain = true;
this.exhaust = true;
updateDescription();
diff --git a/src/main/java/guardian/cards/GemFinder.java b/src/main/java/guardian/cards/GemFinder.java
index b9ded7296..ce80c143d 100644
--- a/src/main/java/guardian/cards/GemFinder.java
+++ b/src/main/java/guardian/cards/GemFinder.java
@@ -11,6 +11,7 @@
import guardian.GuardianMod;
import guardian.patches.AbstractCardEnum;
import guardian.powers.GemFinderPower;
+import sneckomod.SneckoMod;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -23,13 +24,15 @@ public class GemFinder extends AbstractGuardianCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 1;
+ private static final int COST = 2;
- private static final int UPGRADENEWCOST = 0;
+ //TUNING CONSTANTS
+ private static final int UPGRADENEWCOST = 1;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
@@ -40,7 +43,7 @@ public class GemFinder extends AbstractGuardianCard {
public GemFinder() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
+ isEthereal = true;
this.baseMagicNumber = this.magicNumber = 1;
this.socketCount = SOCKETS;
updateDescription();
diff --git a/src/main/java/guardian/cards/GemFire.java b/src/main/java/guardian/cards/GemFire.java
index d4eb525de..2abc4a52e 100644
--- a/src/main/java/guardian/cards/GemFire.java
+++ b/src/main/java/guardian/cards/GemFire.java
@@ -1,155 +1,211 @@
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);
+
+ 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()));
+ }
- public void applyPowers() {
- this.countCards();
- baseMagicNumber = magicNumber = GemFire.gem_count;
- super.applyPowers();
- this.rawDescription = cardStrings.DESCRIPTION+cardStrings.UPGRADE_DESCRIPTION;
- this.initializeDescription();
- }
- 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());
+ AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
+
+
+ // 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);
+ upgradeDamage(4);
+ }
+ }
+}
diff --git a/src/main/java/guardian/cards/Gem_Blue.java b/src/main/java/guardian/cards/Gem_Blue.java
index 7c057bf36..ec8ae0160 100644
--- a/src/main/java/guardian/cards/Gem_Blue.java
+++ b/src/main/java/guardian/cards/Gem_Blue.java
@@ -50,7 +50,7 @@ public Gem_Blue() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = BLUE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Sapphire.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Crimson.java b/src/main/java/guardian/cards/Gem_Crimson.java
index bd9880650..d178625a4 100644
--- a/src/main/java/guardian/cards/Gem_Crimson.java
+++ b/src/main/java/guardian/cards/Gem_Crimson.java
@@ -50,7 +50,7 @@ public Gem_Crimson() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = CRIMSON;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Garnet.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Cyan.java b/src/main/java/guardian/cards/Gem_Cyan.java
index 89fd8fd49..a0416d671 100644
--- a/src/main/java/guardian/cards/Gem_Cyan.java
+++ b/src/main/java/guardian/cards/Gem_Cyan.java
@@ -47,7 +47,7 @@ public Gem_Cyan() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = CYAN;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
this.cardsToPreview = new CrystalWard();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Aquamarine.png"));
diff --git a/src/main/java/guardian/cards/Gem_Fragmented.java b/src/main/java/guardian/cards/Gem_Fragmented.java
index fd0d1209c..8c854efe7 100644
--- a/src/main/java/guardian/cards/Gem_Fragmented.java
+++ b/src/main/java/guardian/cards/Gem_Fragmented.java
@@ -21,7 +21,7 @@ public class Gem_Fragmented extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemFrag.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -48,7 +48,7 @@ public Gem_Fragmented() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = FRAGMENTED;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
this.cardsToPreview = new CrystalShiv();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Fragmented_Gem.png"));
diff --git a/src/main/java/guardian/cards/Gem_Green.java b/src/main/java/guardian/cards/Gem_Green.java
index 76c154b7f..3a7c13477 100644
--- a/src/main/java/guardian/cards/Gem_Green.java
+++ b/src/main/java/guardian/cards/Gem_Green.java
@@ -23,7 +23,7 @@ public class Gem_Green extends AbstractGemCard {
public static final String NAME;
public static final String IMG_PATH = "cards/gemGreen.png";
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
@@ -52,7 +52,7 @@ public Gem_Green() {
this.baseMagicNumber = this.magicNumber = DAMAGEBUFF;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = GREEN;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Emerald.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Lightblue.java b/src/main/java/guardian/cards/Gem_Lightblue.java
index 57c36d519..1c284e570 100644
--- a/src/main/java/guardian/cards/Gem_Lightblue.java
+++ b/src/main/java/guardian/cards/Gem_Lightblue.java
@@ -30,7 +30,7 @@ public class Gem_Lightblue extends AbstractGemCard {
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
private static final int COST = 0;
- private static final int Thorns = 2; //HARDCODED IN DESCRIPTION
+ private static final int Thorns = 4; //HARDCODED IN DESCRIPTION
//TUNING CONSTANTS
private static final int SOCKETS = 0;
@@ -55,14 +55,14 @@ public Gem_Lightblue() {
this.baseMagicNumber = this.magicNumber = Thorns;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = LIGHTBLUE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Tourmaline.png"));
}
public static void gemEffect(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, Thorns), Thorns));
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, Thorns), Thorns));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, Thorns), Thorns));
}
diff --git a/src/main/java/guardian/cards/Gem_Orange.java b/src/main/java/guardian/cards/Gem_Orange.java
index e9e0b02d3..51bcf9293 100644
--- a/src/main/java/guardian/cards/Gem_Orange.java
+++ b/src/main/java/guardian/cards/Gem_Orange.java
@@ -48,7 +48,7 @@ public Gem_Orange() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = ORANGE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Citrine.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Purple.java b/src/main/java/guardian/cards/Gem_Purple.java
index 6c44c8a62..aca494e77 100644
--- a/src/main/java/guardian/cards/Gem_Purple.java
+++ b/src/main/java/guardian/cards/Gem_Purple.java
@@ -55,7 +55,7 @@ public Gem_Purple() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = PURPLE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Amethyst.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Red.java b/src/main/java/guardian/cards/Gem_Red.java
index b089dce3b..cee34c652 100644
--- a/src/main/java/guardian/cards/Gem_Red.java
+++ b/src/main/java/guardian/cards/Gem_Red.java
@@ -52,7 +52,7 @@ public Gem_Red() {
this.baseMagicNumber = this.magicNumber = DAMAGEBUFF;
this.tags.add(GuardianMod.GEM);
this.thisGemsType = RED;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ //this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Ruby.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Synthetic.java b/src/main/java/guardian/cards/Gem_Synthetic.java
index 8af11e266..234c2de6d 100644
--- a/src/main/java/guardian/cards/Gem_Synthetic.java
+++ b/src/main/java/guardian/cards/Gem_Synthetic.java
@@ -45,7 +45,7 @@ public Gem_Synthetic() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = SYNTHETIC;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Onyx.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_White.java b/src/main/java/guardian/cards/Gem_White.java
index b50b5b800..1e92933ee 100644
--- a/src/main/java/guardian/cards/Gem_White.java
+++ b/src/main/java/guardian/cards/Gem_White.java
@@ -49,7 +49,7 @@ public Gem_White() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = WHITE;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Quartz.png"));
}
diff --git a/src/main/java/guardian/cards/Gem_Yellow.java b/src/main/java/guardian/cards/Gem_Yellow.java
index e518b5bb6..696c49cfe 100644
--- a/src/main/java/guardian/cards/Gem_Yellow.java
+++ b/src/main/java/guardian/cards/Gem_Yellow.java
@@ -47,7 +47,7 @@ public Gem_Yellow() {
this.tags.add(GuardianMod.GEM);
this.thisGemsType = YELLOW;
- this.tags.add(SneckoMod.BANNEDFORSNECKO);
+ // this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.tags.add(CardTags.HEALING);
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Amber.png"));
}
diff --git a/src/main/java/guardian/cards/GuardianWhirl.java b/src/main/java/guardian/cards/GuardianWhirl.java
index e3befbfbe..cbbad40e5 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 int COST = 1;
- private static final int DAMAGE = 4;
+ private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
- //TUNING CONSTANTS
- private static final int MULTICOUNT = 4;
+ private static final int COST = 2;
+ private static final int DAMAGE = 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,56 @@ 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();
+ upgradeDamage(2);
+ //upgradeMagicNumber(1);
+ updateDescription();
}
-
-
}
+ @Override
public void updateDescription() {
-
if (this.socketCount > 0) {
- if (upgraded && UPGRADED_DESCRIPTION != null) {
- this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
- } else {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
- }
+ this.rawDescription = upgraded && UPGRADED_DESCRIPTION != null ? updateGemDescription(UPGRADED_DESCRIPTION, true) : updateGemDescription(DESCRIPTION, true);
}
this.initializeDescription();
}
-}
-
+ @Override
+ public AbstractCard makeCopy() {
+ return new GuardianWhirl();
+ }
+}
diff --git a/src/main/java/guardian/cards/Metallicize.java b/src/main/java/guardian/cards/Metallicize.java
index 67743124a..412e532fe 100644
--- a/src/main/java/guardian/cards/Metallicize.java
+++ b/src/main/java/guardian/cards/Metallicize.java
@@ -1,48 +1,51 @@
-//package guardian.cards;
-//
-//import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
-//import com.megacrit.cardcrawl.cards.AbstractCard;
-//import com.megacrit.cardcrawl.characters.AbstractPlayer;
-//import com.megacrit.cardcrawl.core.CardCrawlGame;
-//import com.megacrit.cardcrawl.core.Settings;
-//import com.megacrit.cardcrawl.localization.CardStrings;
-//import com.megacrit.cardcrawl.monsters.AbstractMonster;
-//import com.megacrit.cardcrawl.powers.MetallicizePower;
-//import guardian.GuardianMod;
-//import guardian.patches.AbstractCardEnum;
-//
-//import static guardian.GuardianMod.makeBetaCardPath;
-//
-//public class Metallicize extends AbstractGuardianCard {
-// public static final String ID = GuardianMod.makeID("Metallicize");
-// private static final CardStrings cardStrings;
-//
-// public Metallicize() {
-// super(ID, cardStrings.NAME, GuardianMod.getResourcePath("cards/Metallicize.png"), 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
-// this.baseMagicNumber = magicNumber = 3;
-// GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Metallicize.png"));
-// }
-//
-// public void use(AbstractPlayer p, AbstractMonster m) {
-// this.addToBot(new ApplyPowerAction(p, p, new MetallicizePower(p, this.magicNumber), this.magicNumber));
-// }
-//
-// public void upgrade() {
-// if (!this.upgraded) {
-// this.upgradeName();
-// this.upgradeMagicNumber(1);
-// }
-// }
-//
-// public AbstractCard makeCopy() {
-// return new Metallicize();
-// }
-//
-// static {
-// if( Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT ){
-// cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
-// }else{
-// cardStrings = CardCrawlGame.languagePack.getCardStrings("Metallicize");
-// }
-// }
-//}
+package guardian.cards;
+
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.characters.AbstractPlayer;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.localization.CardStrings;
+import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.MetallicizePower;
+import com.megacrit.cardcrawl.powers.PlatedArmorPower;
+import guardian.GuardianMod;
+import guardian.patches.AbstractCardEnum;
+
+import static guardian.GuardianMod.makeBetaCardPath;
+
+public class Metallicize extends AbstractGuardianCard {
+ public static final String ID = GuardianMod.makeID("Metallicize");
+ private static final CardStrings cardStrings;
+
+
+ //Harden
+ public Metallicize() {
+ super(ID, cardStrings.NAME, GuardianMod.getResourcePath("cards/Metallicize.png"), 1, cardStrings.DESCRIPTION, CardType.POWER, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.SELF);
+ this.baseMagicNumber = magicNumber = 4;
+ GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Metallicize.png"));
+ }
+
+ public void use(AbstractPlayer p, AbstractMonster m) {
+ this.addToBot(new ApplyPowerAction(p, p, new PlatedArmorPower(p, this.magicNumber), this.magicNumber));
+ }
+
+ public void upgrade() {
+ if (!this.upgraded) {
+ this.upgradeName();
+ this.upgradeMagicNumber(2);
+ }
+ }
+
+ public AbstractCard makeCopy() {
+ return new Metallicize();
+ }
+
+ static {
+ if( Settings.language == Settings.GameLanguage.ZHS || Settings.language == Settings.GameLanguage.ZHT ){
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
+ }else{
+ cardStrings = CardCrawlGame.languagePack.getCardStrings(GuardianMod.makeID("Metallicize"));
+ }
+ }
+}
diff --git a/src/main/java/guardian/cards/ModeShift.java b/src/main/java/guardian/cards/ModeShift.java
index 705c8d03e..173fac988 100644
--- a/src/main/java/guardian/cards/ModeShift.java
+++ b/src/main/java/guardian/cards/ModeShift.java
@@ -25,12 +25,15 @@ public class ModeShift extends AbstractGuardianCard {
private static final int COST = 1;
private static final int DAMAGE = 4;
+ //TUNING CONSTANTS
private static final int UPGRADE_BONUS = 2;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String DESCRIPTION;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
static {
cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
NAME = cardStrings.NAME;
diff --git a/src/main/java/guardian/cards/MultiBeam.java b/src/main/java/guardian/cards/MultiBeam.java
index 4df8100fb..7ac0e1137 100644
--- a/src/main/java/guardian/cards/MultiBeam.java
+++ b/src/main/java/guardian/cards/MultiBeam.java
@@ -29,11 +29,11 @@ public class MultiBeam extends AbstractGuardianCard implements InStasisCard {
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final CardStrings cardStrings;
private static final int COST = -1;
- private static final int DAMAGE = 5;
+ private static final int DAMAGE = 6;
//TUNING CONSTANTS
private static final int UPGRADE_DAMAGE = 2;
- private static final int BEAMBUFF = 1;
+ private static final int BEAMBUFF = 2;
private static final int UPGRADE_BEAMBUFF = 1;
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
diff --git a/src/main/java/guardian/cards/Orbwalk.java b/src/main/java/guardian/cards/Orbwalk.java
index faf6b50c0..23db49bc8 100644
--- a/src/main/java/guardian/cards/Orbwalk.java
+++ b/src/main/java/guardian/cards/Orbwalk.java
@@ -19,7 +19,7 @@ public class Orbwalk extends AbstractGuardianCard implements InStasisCard {
public static final String ID = GuardianMod.makeID("Orbwalk");
public static final String NAME;
public static final String DESCRIPTION;
- public static final String IMG_PATH = "cards/Orbwalk.png";
+ public static final String IMG_PATH = "cards/orbwalk.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.UNCOMMON;
@@ -44,7 +44,7 @@ public class Orbwalk extends AbstractGuardianCard implements InStasisCard {
public Orbwalk() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
- this.baseMagicNumber = this.magicNumber = 2;
+ this.baseMagicNumber = this.magicNumber = 3;
this.tags.add(GuardianMod.TICK);
this.tags.add(GuardianMod.VOLATILE);
this.socketCount = SOCKETS;
diff --git a/src/main/java/guardian/cards/PackageAutomaton.java b/src/main/java/guardian/cards/PackageAutomaton.java
index 4c23221d7..e828222c8 100644
--- a/src/main/java/guardian/cards/PackageAutomaton.java
+++ b/src/main/java/guardian/cards/PackageAutomaton.java
@@ -25,7 +25,7 @@ public class PackageAutomaton extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageDefect.java b/src/main/java/guardian/cards/PackageDefect.java
index 00259c82e..a6b98af69 100644
--- a/src/main/java/guardian/cards/PackageDefect.java
+++ b/src/main/java/guardian/cards/PackageDefect.java
@@ -25,7 +25,7 @@ public class PackageDefect extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageDonuDeca.java b/src/main/java/guardian/cards/PackageDonuDeca.java
index e7b40e217..0de699722 100644
--- a/src/main/java/guardian/cards/PackageDonuDeca.java
+++ b/src/main/java/guardian/cards/PackageDonuDeca.java
@@ -26,7 +26,7 @@ public class PackageDonuDeca extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 2;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageSentry.java b/src/main/java/guardian/cards/PackageSentry.java
index 94d5f5a60..355219a59 100644
--- a/src/main/java/guardian/cards/PackageSentry.java
+++ b/src/main/java/guardian/cards/PackageSentry.java
@@ -26,7 +26,7 @@ public class PackageSentry extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
diff --git a/src/main/java/guardian/cards/PackageSphere.java b/src/main/java/guardian/cards/PackageSphere.java
index db6641b78..1287478a0 100644
--- a/src/main/java/guardian/cards/PackageSphere.java
+++ b/src/main/java/guardian/cards/PackageSphere.java
@@ -23,17 +23,19 @@ public class PackageSphere extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.SPECIAL;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 2;
//TUNING CONSTANTS
private static final int SOCKETS = 0;
private static final boolean SOCKETSAREAFTER = true;
public static String UPGRADED_DESCRIPTION;
+ //END TUNING CONSTANTS
+
public AbstractGuardianCard constPrev1 = new SphericShield();
public AbstractGuardianCard constPrev2 = new FloatingOrbs();
- public AbstractGuardianCard constPrev3 = new ArmoredProtocol();
+ public AbstractGuardianCard constPrev3 = new Metallicize();
public AbstractGuardianCard prev1;
public AbstractGuardianCard prev2;
@@ -92,7 +94,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if (upgraded) tmp.upgrade();
addToBot(new MakeTempCardInHandAction(tmp, true));
- tmp = new ArmoredProtocol();
+ tmp = new Metallicize();
if (upgraded) tmp.upgrade();
addToBot(new MakeTempCardInHandAction(tmp, true));
}
diff --git a/src/main/java/guardian/cards/PiercingHide.java b/src/main/java/guardian/cards/PiercingHide.java
index 564e67bf9..ad65604f2 100644
--- a/src/main/java/guardian/cards/PiercingHide.java
+++ b/src/main/java/guardian/cards/PiercingHide.java
@@ -69,7 +69,12 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, this.magicNumber), this.magicNumber));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseThornsPower(p, this.magicNumber), this.magicNumber));
- brace(3);
+ if (!upgraded) {
+ brace(3);
+ }
+ if (upgraded) {
+ brace(4);
+ }
super.useGems(p, m);
}
@@ -82,6 +87,8 @@ public void upgrade() {
upgradeName();
upgradeBlock(UPGRADE_BLOCK);
upgradeMagicNumber(UPGRADE_THORNS);
+ this.rawDescription = UPGRADED_DESCRIPTION;
+ this.updateDescription();
}
}
diff --git a/src/main/java/guardian/cards/Planning.java b/src/main/java/guardian/cards/Planning.java
index 8ebb2f329..64fda62d8 100644
--- a/src/main/java/guardian/cards/Planning.java
+++ b/src/main/java/guardian/cards/Planning.java
@@ -1,6 +1,7 @@
package guardian.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;
@@ -10,6 +11,7 @@
import guardian.GuardianMod;
import guardian.actions.PlaceTopCardIntoStasisAction;
import guardian.patches.AbstractCardEnum;
+import hermit.actions.ReduceDebuffsAction;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -23,9 +25,9 @@ public class Planning extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 2;
- private static final int CARDS = 2;
+ private static final int CARDS = 1;
private static final int UPGRADE_CARDS = 1;
private static final int SOCKETS = 1;
private static final boolean SOCKETSAREAFTER = true;
@@ -41,21 +43,18 @@ public class Planning extends AbstractGuardianCard {
public Planning() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
-
+ baseBlock = 12;
this.baseMagicNumber = this.magicNumber = CARDS;
- this.socketCount = SOCKETS;
+ this.socketCount = 0;
updateDescription();
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Planning.png"));
}
public void use(AbstractPlayer p, AbstractMonster m) {
+ AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, this.block));
super.use(p, m);
-
- for (int i = 0; i < this.magicNumber; i++) {
- AbstractDungeon.actionManager.addToBottom(new PlaceTopCardIntoStasisAction());
- }
-
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, this.magicNumber));
super.useGems(p, m);
}
@@ -66,11 +65,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- if (this.socketCount < 4) {
- this.socketCount++;
- this.saveGemMisc();
- }
- this.updateDescription();
+ upgradeBlock(4);
}
}
diff --git a/src/main/java/guardian/cards/PolyBeam.java b/src/main/java/guardian/cards/PolyBeam.java
index 70b9bdd3f..852cf8850 100644
--- a/src/main/java/guardian/cards/PolyBeam.java
+++ b/src/main/java/guardian/cards/PolyBeam.java
@@ -1,6 +1,8 @@
package guardian.cards;
+import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.common.AttackDamageRandomEnemyAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -12,6 +14,7 @@
import guardian.GuardianMod;
import guardian.actions.PolyBeamAction;
import guardian.patches.AbstractCardEnum;
+import hermit.patches.EnumPatch;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -21,7 +24,7 @@ public class PolyBeam extends AbstractGuardianCard {
public static final String NAME;
public static final String IMG_PATH = "cards/polybeam.png";
private static final CardType TYPE = CardType.ATTACK;
- private static final CardRarity RARITY = CardRarity.UNCOMMON;
+ private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final CardStrings cardStrings;
private static final int COST = 1;
@@ -67,6 +70,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
for(int i=0; i 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
}
diff --git a/src/main/java/guardian/cards/RevengeProtocol.java b/src/main/java/guardian/cards/RevengeProtocol.java
index 314695959..d9dcfd624 100644
--- a/src/main/java/guardian/cards/RevengeProtocol.java
+++ b/src/main/java/guardian/cards/RevengeProtocol.java
@@ -2,14 +2,20 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.watcher.ChangeStanceAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.powers.StrengthPower;
+import com.megacrit.cardcrawl.powers.ThornsPower;
import guardian.GuardianMod;
-import guardian.patches.AbstractCardEnum;
import guardian.powers.BracePerTurnPower;
+import guardian.stances.DefensiveMode;
+import guardian.patches.AbstractCardEnum;
+import guardian.powers.RevengePower;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -22,13 +28,13 @@ public class RevengeProtocol extends AbstractGuardianCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 1;
+ private static final int COST = 2;
public static String UPGRADED_DESCRIPTION;
public RevengeProtocol() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.magicNumber = this.baseMagicNumber = 2;
- this.secondaryM = 5;
+ this.secondaryM = 4;
this.socketCount = 0;
updateDescription();
loadGemMisc();
@@ -37,10 +43,10 @@ public RevengeProtocol() {
public void use(AbstractPlayer p, AbstractMonster m) {
super.use(p, m);
-// addToBot(new ApplyPowerAction(p, p, new RevengePower(p, p, magicNumber), magicNumber));
-// if (p.stance instanceof DefensiveMode) {
-// addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
-// }
+ addToBot(new ApplyPowerAction(p, p, new RevengePower(p, p, magicNumber), magicNumber));
+ if (p.stance instanceof DefensiveMode) {
+ addToBot(new ApplyPowerAction(p, p, new StrengthPower(p, magicNumber), magicNumber));
+ }
addToBot(new ApplyPowerAction(p, p, new BracePerTurnPower(p, secondaryM)));
}
@@ -51,20 +57,19 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(0);
-// upgradeMagicNumber(1);
-// upgradeSecondaryM(1);
+ upgradeMagicNumber(1);
+ upgradeSecondaryM(2);
}
}
public void updateDescription() {
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
+ if (this.socketCount > 0) {
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
+ }
this.initializeDescription();
}
diff --git a/src/main/java/guardian/cards/ShieldSpikes.java b/src/main/java/guardian/cards/ShieldSpikes.java
index f8e81bf25..6e283145d 100644
--- a/src/main/java/guardian/cards/ShieldSpikes.java
+++ b/src/main/java/guardian/cards/ShieldSpikes.java
@@ -51,9 +51,8 @@ public void use(AbstractPlayer p, AbstractMonster m) {
if (p.stance instanceof DefensiveMode) {
addToBot(new ApplyPowerAction(p, p, new ThornsPower(p, this.magicNumber), this.magicNumber));
- } else {
- brace(8);
}
+ brace(8);
}
public void triggerOnGlowCheck() {
diff --git a/src/main/java/guardian/cards/SphericShield.java b/src/main/java/guardian/cards/SphericShield.java
index 1bf65b5be..8eb13ecb9 100644
--- a/src/main/java/guardian/cards/SphericShield.java
+++ b/src/main/java/guardian/cards/SphericShield.java
@@ -1,18 +1,17 @@
package guardian.cards;
-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.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.potions.AbstractPotion;
+import com.megacrit.cardcrawl.relics.AbstractRelic;
+import com.megacrit.cardcrawl.relics.Sozu;
import guardian.GuardianMod;
-import guardian.powers.DontLeaveDefensiveModePower;
-import guardian.stances.DefensiveMode;
+import guardian.potions.DefensiveModePotion;
import guardian.patches.AbstractCardEnum;
import static guardian.GuardianMod.makeBetaCardPath;
@@ -26,7 +25,7 @@ public class SphericShield extends AbstractGuardianCard {
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 = 2;
+ private static final int COST = 3;
public static String UPGRADED_DESCRIPTION;
static {
@@ -37,10 +36,10 @@ 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.socketCount = 0;
exhaust = true;
+ this.isEthereal = true;
updateDescription();
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("SphericShield.png"));
@@ -48,10 +47,13 @@ public SphericShield() {
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));
- 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));
+ AbstractRelic sozu = AbstractDungeon.player.getRelic(Sozu.ID);
+ if (sozu != null) {
+ sozu.flash();
+ } else {
+ AbstractPotion potion = new DefensiveModePotion();
+ AbstractDungeon.player.obtainPotion(potion.makeCopy());
+ }
}
public AbstractCard makeCopy() {
@@ -61,7 +63,9 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBlock(5);
+ this.isEthereal = false;
+ rawDescription = UPGRADED_DESCRIPTION;
+ initializeDescription();
}
}
diff --git a/src/main/java/guardian/cards/SpikerProtocol.java b/src/main/java/guardian/cards/SpikerProtocol.java
index 3eada9242..472a2353f 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 || mods >= moda) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, magicNumber), magicNumber));
+ }
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new SpikerProtocolPower(p, magicNumber)));
-// if (p.stance instanceof DefensiveMode) {
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ThornsPower(p, magicNumber), magicNumber));
-// }
-// AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
+ // AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new BracePerTurnPower(p, this.secondaryM)));
}
public AbstractCard makeCopy() {
@@ -71,22 +100,11 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeMagicNumber(UPGRADE_THORNS);
- upgradeBaseCost(0);
+ upgradeMagicNumber(UPGRADE_THORNS);
+ upgradeSecondaryM(3);
}
}
- public void updateDescription() {
-
-// if (this.socketCount > 0) {
-// if (upgraded && UPGRADED_DESCRIPTION != null) {
-// this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
-// } else {
-// this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
-// }
-// }
- this.initializeDescription();
- }
}
diff --git a/src/main/java/guardian/cards/StasisField.java b/src/main/java/guardian/cards/StasisField.java
index 4662f8c05..74b7e491c 100644
--- a/src/main/java/guardian/cards/StasisField.java
+++ b/src/main/java/guardian/cards/StasisField.java
@@ -50,10 +50,10 @@ public void use(AbstractPlayer p, AbstractMonster m) {
this.useGems(p, m);
}
- @Override
- public void onEvoke(StasisOrb orb) {
- addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, this.block));
- }
+// @Override
+// public void onEvoke(StasisOrb orb) {
+// addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, this.block));
+// }
public AbstractCard makeCopy() {
@@ -83,6 +83,4 @@ public void updateDescription() {
public void onStartOfTurn(StasisOrb orb) {
}
-}
-
-
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/cards/StasisStrike.java b/src/main/java/guardian/cards/StasisStrike.java
index a8b019033..5db26f4f9 100644
--- a/src/main/java/guardian/cards/StasisStrike.java
+++ b/src/main/java/guardian/cards/StasisStrike.java
@@ -22,7 +22,7 @@ public class StasisStrike extends AbstractGuardianCard {
public StasisStrike() {
super(ID, cardStrings.NAME, IMG_PATH, 2, cardStrings.DESCRIPTION, CardType.ATTACK, AbstractCardEnum.GUARDIAN, CardRarity.UNCOMMON, CardTarget.ENEMY);
- this.baseDamage = 15;
+ this.baseDamage = 16;
this.socketCount = 0;
this.tags.add(CardTags.STRIKE);
updateDescription();
@@ -44,7 +44,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeDamage(5);
+ upgradeDamage(4);
}
}
diff --git a/src/main/java/guardian/cards/Suspension.java b/src/main/java/guardian/cards/Suspension.java
index 812946fd0..4df8b8fc7 100644
--- a/src/main/java/guardian/cards/Suspension.java
+++ b/src/main/java/guardian/cards/Suspension.java
@@ -23,7 +23,7 @@ public class Suspension extends AbstractGuardianCard {
private static final CardType TYPE = CardType.SKILL;
private static final CardRarity RARITY = CardRarity.COMMON;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 0;
+ private static final int COST = 1;
private static final int SOCKETS = 1;
private static final boolean SOCKETSAREAFTER = true;
@@ -39,7 +39,7 @@ public class Suspension extends AbstractGuardianCard {
public Suspension() {
super(ID, NAME, GuardianMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.GUARDIAN, RARITY, TARGET);
this.socketCount = SOCKETS;
- baseBlock = 2;
+ baseBlock = 6;
updateDescription();
loadGemMisc();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("Suspension.png"));
@@ -64,8 +64,13 @@ public void upgrade() {
}
public void updateDescription() {
+
if (this.socketCount > 0) {
- this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ if (upgraded && UPGRADED_DESCRIPTION != null) {
+ this.rawDescription = this.updateGemDescription(UPGRADED_DESCRIPTION, true);
+ } else {
+ this.rawDescription = this.updateGemDescription(DESCRIPTION, true);
+ }
}
this.initializeDescription();
}
diff --git a/src/main/java/guardian/cards/TemporalStrike.java b/src/main/java/guardian/cards/TemporalStrike.java
index 08091632c..1d974407e 100644
--- a/src/main/java/guardian/cards/TemporalStrike.java
+++ b/src/main/java/guardian/cards/TemporalStrike.java
@@ -50,10 +50,11 @@ public TemporalStrike() {
this.baseDamage = DAMAGE;
this.socketCount = SOCKETS;
+ tags.add(CardTags.STRIKE);
updateDescription();
loadGemMisc();
- tags.add(CardTags.STRIKE);
+
//this.sockets.add(GuardianMod.socketTypes.RED);
this.updateDescription();
GuardianMod.loadJokeCardImage(this, makeBetaCardPath("TemporalStrike.png"));
diff --git a/src/main/java/guardian/cards/TimeSifter.java b/src/main/java/guardian/cards/TimeSifter.java
index 89c5ca517..5590f714e 100644
--- a/src/main/java/guardian/cards/TimeSifter.java
+++ b/src/main/java/guardian/cards/TimeSifter.java
@@ -22,7 +22,7 @@ public class TimeSifter extends AbstractGuardianCard {
public static final String IMG_PATH = "cards/hourglass.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.POWER;
- private static final CardRarity RARITY = CardRarity.RARE;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
diff --git a/src/main/java/guardian/cards/VentSteam.java b/src/main/java/guardian/cards/VentSteam.java
index 55b4461b7..924405f8e 100644
--- a/src/main/java/guardian/cards/VentSteam.java
+++ b/src/main/java/guardian/cards/VentSteam.java
@@ -20,7 +20,7 @@ public class VentSteam extends AbstractGuardianCard {
public static final String IMG_PATH = "cards/ventSteam.png";
private static final CardStrings cardStrings;
private static final CardType TYPE = CardType.SKILL;
- private static final CardRarity RARITY = CardRarity.COMMON;
+ private static final CardRarity RARITY = CardRarity.UNCOMMON;
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
private static final int COST = 1;
diff --git a/src/main/java/guardian/characters/GuardianCharacter.java b/src/main/java/guardian/characters/GuardianCharacter.java
index 41d748c53..551aa8641 100644
--- a/src/main/java/guardian/characters/GuardianCharacter.java
+++ b/src/main/java/guardian/characters/GuardianCharacter.java
@@ -1,9 +1,12 @@
package guardian.characters;
+import automaton.vfx.CompileVictoryEffect;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.*;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.scene.DefectVictoryNumberEffect;
import downfall.util.TextureLoader;
import guardian.modules.EnergyOrbGuardian;
import guardian.powers.ModeShiftPower;
@@ -114,8 +117,6 @@ public GuardianCharacter(String name, PlayerClass setClass) {
}
- //TODO - Victory screens
-
public CharSelectInfo getInfo() {
return getLoadout();
}
@@ -332,6 +333,14 @@ public String getVampireText() {
return charStrings.TEXT[3];
}
+
+ @Override
+ public void updateVictoryVfx(ArrayList effects) {
+ if (effects.stream().filter(e -> e instanceof DefectVictoryNumberEffect).count() < 8)
+ effects.add(new DefectVictoryNumberEffect());
+ }
+
+
@Override
public void onVictory() {
super.onVictory();
diff --git a/src/main/java/guardian/commands/SocketGems.java b/src/main/java/guardian/commands/SocketGems.java
index f564e701b..cf705317e 100644
--- a/src/main/java/guardian/commands/SocketGems.java
+++ b/src/main/java/guardian/commands/SocketGems.java
@@ -1,33 +1,33 @@
-package guardian.commands;
-
-import basemod.devcommands.ConsoleCommand;
-import com.badlogic.gdx.math.MathUtils;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import guardian.GuardianMod;
-import guardian.cards.AbstractGuardianCard;
-
-public class SocketGems extends ConsoleCommand {
- // Fills all empty sockets with random gems, for testing purposes
- @Override
- protected void execute(String[] strings, int i) {
- socketGems(AbstractDungeon.player.hand);
- socketGems(AbstractDungeon.player.drawPile);
- socketGems(AbstractDungeon.player.discardPile);
-
- }
-
- private void socketGems(CardGroup group) {
- for (AbstractCard card : group.group) {
- if(card instanceof AbstractGuardianCard) {
- AbstractGuardianCard gc = (AbstractGuardianCard) card;
- gc.sockets.clear();
- while(gc.socketCount > gc.sockets.size()) {
- gc.sockets.add(GuardianMod.socketTypes.values()[MathUtils.random(GuardianMod.socketTypes.values().length-1)]);
- }
- gc.updateDescription();
- }
- }
- }
-}
+package guardian.commands;
+
+import basemod.devcommands.ConsoleCommand;
+import com.badlogic.gdx.math.MathUtils;
+import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import guardian.GuardianMod;
+import guardian.cards.AbstractGuardianCard;
+
+public class SocketGems extends ConsoleCommand {
+ // Fills all empty sockets with random gems, for testing purposes
+ @Override
+ protected void execute(String[] strings, int i) {
+ socketGems(AbstractDungeon.player.hand);
+ socketGems(AbstractDungeon.player.drawPile);
+ socketGems(AbstractDungeon.player.discardPile);
+
+ }
+
+ private void socketGems(CardGroup group) {
+ for (AbstractCard card : group.group) {
+ if(card instanceof AbstractGuardianCard) {
+ AbstractGuardianCard gc = (AbstractGuardianCard) card;
+ gc.sockets.clear();
+ while(gc.socketCount > gc.sockets.size()) {
+ gc.sockets.add(GuardianMod.socketTypes.values()[MathUtils.random(GuardianMod.socketTypes.values().length-1)]);
+ }
+ gc.updateDescription();
+ }
+ }
+ }
+}
diff --git a/src/main/java/guardian/events/CrystalForge.java b/src/main/java/guardian/events/CrystalForge.java
index 95f633c04..adc47a53c 100644
--- a/src/main/java/guardian/events/CrystalForge.java
+++ b/src/main/java/guardian/events/CrystalForge.java
@@ -245,14 +245,18 @@ protected void buttonEffect(int buttonPressed) {
this.pickCardForSalvageGems = true;
this.imageEventText.updateBodyText(SALVAGE);
this.imageEventText.updateDialogOption(0, OPTIONS[4], true);
+ this.imageEventText.updateDialogOption(1, OPTIONS[4], true);
+ this.imageEventText.updateDialogOption(2, OPTIONS[4], true);
AbstractDungeon.gridSelectScreen.open(GuardianMod.getCardsWithFilledSockets(), 1, false, DESCRIPTIONS[5]);
-
break;
case 1:
this.pickCardForGemRemoval = true;
AbstractDungeon.gridSelectScreen.open(GuardianMod.getCardsWithFilledSockets(), 1, DESCRIPTIONS[6], false, false, false, false);
this.imageEventText.updateBodyText(PRY);
+
+ this.imageEventText.updateDialogOption(0, OPTIONS[4], true);
this.imageEventText.updateDialogOption(1, OPTIONS[4], true);
+ this.imageEventText.updateDialogOption(2, OPTIONS[4], true);
break;
case 2:
@@ -260,6 +264,8 @@ protected void buttonEffect(int buttonPressed) {
this.imageEventText.updateBodyText(TRANSMUTE);
AbstractDungeon.gridSelectScreen.open(CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck.getPurgeableCards()), 1, DESCRIPTIONS[7], false, false, false, true);
+ this.imageEventText.updateDialogOption(0, OPTIONS[4], true);
+ this.imageEventText.updateDialogOption(1, OPTIONS[4], true);
this.imageEventText.updateDialogOption(2, OPTIONS[4], true);
break;
diff --git a/src/main/java/guardian/events/GemMine.java b/src/main/java/guardian/events/GemMine.java
index e4d2ac74f..008f80895 100644
--- a/src/main/java/guardian/events/GemMine.java
+++ b/src/main/java/guardian/events/GemMine.java
@@ -19,8 +19,10 @@
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
+import downfall.relics.HeartBlessingRed;
import guardian.GuardianMod;
import guardian.relics.PickAxe;
+import guardian.rewards.GemReward;
import java.util.ArrayList;
@@ -102,10 +104,20 @@ protected void buttonEffect(int buttonPressed) {
AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(card, (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
CardCrawlGame.sound.play("MONSTER_BOOK_STAB_0");
+
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
+
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
+
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
+
+ AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
+
AbstractDungeon.player.getRelic(PickAxe.ID).onTrigger();
if (AbstractDungeon.player.getRelic(PickAxe.ID).counter == -2) {
this.imageEventText.updateDialogOption(0, OPTIONS[5], true);
+ AbstractDungeon.player.loseRelic(PickAxe.ID);
}
this.tookGems = true;
} else {
@@ -125,13 +137,18 @@ protected void buttonEffect(int buttonPressed) {
case 1:
this.imageEventText.updateBodyText(DIALOG_MINE);
- ArrayList gems = GuardianMod.getRewardGemCards(false, 1);
- AbstractCard card = gems.get(0);
- cardsAdded.add(card.cardID);
+ // ArrayList gems = GuardianMod.getRewardGemCards(false, 1);
+ // AbstractCard card = gems.get(0);
+ // cardsAdded.add(card.cardID);
- AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(card, (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
+ // AbstractDungeon.effectList.add(new ShowCardAndObtainEffect(card, (float) (Settings.WIDTH / 2), (float) (Settings.HEIGHT / 2)));
CardCrawlGame.sound.play("MONSTER_BOOK_STAB_0");
AbstractDungeon.player.damage(new DamageInfo(null, this.damage));
+
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
+
+ AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
+
this.damageTaken += damage;
this.tookGems = true;
return;
diff --git a/src/main/java/guardian/events/StasisEgg.java b/src/main/java/guardian/events/StasisEgg.java
index b09512883..d7e8388c4 100644
--- a/src/main/java/guardian/events/StasisEgg.java
+++ b/src/main/java/guardian/events/StasisEgg.java
@@ -6,7 +6,9 @@
package guardian.events;
+import automaton.AutomatonMod;
import com.megacrit.cardcrawl.cards.AbstractCard;
+import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.cards.curses.Pain;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
@@ -19,6 +21,7 @@
import downfall.cards.curses.Aged;
import guardian.ui.RelicPreviewButton;
+import java.util.ArrayList;
import java.util.Collections;
public class StasisEgg extends AbstractImageEvent {
@@ -31,6 +34,7 @@ public class StasisEgg extends AbstractImageEvent {
private static final String DIALOG_LEAVE;
private static final String DIALOG_USE;
private static final String DIALOG_SMASH;
+ private ArrayList validCards;
static {
eventStrings = CardCrawlGame.languagePack.getEventString(ID);
@@ -54,7 +58,21 @@ public StasisEgg() {
} else {
this.maxHP = (int) ((float) AbstractDungeon.player.maxHealth * 0.15F);
}
- imageEventText.optionList.add(new RelicPreviewButton(0, OPTIONS[0], new guardian.relics.StasisEgg(), false, new Aged()));
+
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
+ validCards.add(c);
+ }
+
+
+ if (validCards.size() > 0) {
+ imageEventText.optionList.add(new RelicPreviewButton(0, OPTIONS[0], new guardian.relics.StasisEgg(), false, new Aged()));
+ } else {
+ this.imageEventText.setDialogOption(OPTIONS[4], true);
+ }
+
+
+ //imageEventText.optionList.add(new RelicPreviewButton(0, OPTIONS[0], new guardian.relics.StasisEgg(), false, new Aged()));
this.imageEventText.setDialogOption(OPTIONS[1] + this.maxHP + OPTIONS[2], CardLibrary.getCopy(Pain.ID, 0, 0));
this.imageEventText.setDialogOption(OPTIONS[3]);
}
diff --git a/src/main/java/guardian/patches/AddEnhanceButtonPatch.java b/src/main/java/guardian/patches/AddEnhanceButtonPatch.java
index a5df0a0a7..91f333ed7 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,23 +26,22 @@ 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()) {
___buttons.add(new StashAwayCampfireOption());
diff --git a/src/main/java/guardian/patches/BottledStasisPatch.java b/src/main/java/guardian/patches/BottledStasisPatch.java
index 3213e1fea..7e72012f4 100644
--- a/src/main/java/guardian/patches/BottledStasisPatch.java
+++ b/src/main/java/guardian/patches/BottledStasisPatch.java
@@ -1,5 +1,6 @@
package guardian.patches;
+import awakenedOne.util.Wiz;
import com.evacipated.cardcrawl.modthespire.lib.SpireField;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -23,10 +24,20 @@ public class BottledStasisPatch {
)
public static class MakeStatEquivalentCopy {
public static AbstractCard Postfix(AbstractCard __result, AbstractCard __instance) {
- inBottledStasis.set(__result, inBottledStasis.get(__instance));
- inStasisEgg.set(__result, inStasisEgg.get(__instance));
- inBottledAnomaly.set(__result, inBottledAnomaly.get(__instance));
- inBottledCode.set(__result, inBottledCode.get(__instance));
+ if (Wiz.isInCombat()) {
+ inBottledStasis.set(__result, inBottledStasis.get(__instance));
+ inStasisEgg.set(__result, inStasisEgg.get(__instance));
+ inBottledAnomaly.set(__result, inBottledAnomaly.get(__instance));
+ inBottledCode.set(__result, inBottledCode.get(__instance));
+ }
+
+ if (!Wiz.isInCombat()) {
+ inBottledStasis.set(__result, Boolean.FALSE);
+ inStasisEgg.set(__result, Boolean.FALSE);
+ inBottledAnomaly.set(__result, Boolean.FALSE);
+ inBottledCode.set(__result, Boolean.FALSE);
+ }
+
if (__instance instanceof AbstractGuardianCard) {
((AbstractGuardianCard) __result).socketCount = ((AbstractGuardianCard) __instance).socketCount;
diff --git a/src/main/java/guardian/potions/DefensiveModePotion.java b/src/main/java/guardian/potions/DefensiveModePotion.java
index e4c76ac32..6cfa0dcc5 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,43 @@ 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)) {
+ modeShifterPlusInstance.onTrigger();
+ }
+
+ 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 +94,7 @@ public CustomPotion makeCopy() {
}
public int getPotency(int ascensionLevel) {
- return 10;
+ return 16;
}
}
diff --git a/src/main/java/guardian/powers/ArmoredProtocolPower.java b/src/main/java/guardian/powers/ArmoredProtocolPower.java
index 511b4f8a2..cd3b7bf27 100644
--- a/src/main/java/guardian/powers/ArmoredProtocolPower.java
+++ b/src/main/java/guardian/powers/ArmoredProtocolPower.java
@@ -11,7 +11,7 @@
import guardian.stances.DefensiveMode;
-public class ArmoredProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class ArmoredProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:ArmoredProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -30,25 +30,15 @@ public ArmoredProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
-//
-// public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
-// flash();
-// if (AbstractDungeon.player.stance instanceof DefensiveMode) {
-// addToBot(new com.megacrit.cardcrawl.actions.common.GainBlockAction(this.owner, this.owner, this.amount));
-// }
-// }
- public void updateDescription() {
- this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
- }
-
- @Override
- public void onEnter() {
- this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new MetallicizePower(AbstractDungeon.player, amount), amount));
+ public void atEndOfTurnPreEndTurnCards(boolean isPlayer) {
+ flash();
+ if (AbstractDungeon.player.stance instanceof DefensiveMode) {
+ addToBot(new com.megacrit.cardcrawl.actions.common.GainBlockAction(this.owner, this.owner, this.amount));
+ }
}
- @Override
- public void onLeave() {
-
+ public void updateDescription() {
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/guardian/powers/ConstructModePower.java b/src/main/java/guardian/powers/ConstructModePower.java
index ee8e288cb..3a3887f3c 100644
--- a/src/main/java/guardian/powers/ConstructModePower.java
+++ b/src/main/java/guardian/powers/ConstructModePower.java
@@ -33,14 +33,19 @@ public ConstructModePower(AbstractCreature owner, int amount) {
}
public void updateDescription() {
- this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
+ this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];;
}
public void atStartOfTurn() {
- if (AbstractDungeon.player.hasPower(BufferPower.POWER_ID)){
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, amount), amount));
+ ;
+ if (AbstractDungeon.player.hasPower(BufferPower.POWER_ID)) {
+ if (AbstractDungeon.player.hasPower("Buffer")) {
+ int buf = AbstractDungeon.player.getPower("Buffer").amount;
+ if (buf >= amount) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(this.owner, this.owner, new StrengthPower(this.owner, amount), amount));
+ }
+ }
}
}
-
}
diff --git a/src/main/java/guardian/powers/EvasiveProtocolPower.java b/src/main/java/guardian/powers/EvasiveProtocolPower.java
index 446856cb8..b15f5945a 100644
--- a/src/main/java/guardian/powers/EvasiveProtocolPower.java
+++ b/src/main/java/guardian/powers/EvasiveProtocolPower.java
@@ -2,13 +2,17 @@
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.ReducePowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.DexterityPower;
+import com.megacrit.cardcrawl.powers.ThornsPower;
+import hermit.actions.ReduceDebuffsAction;
+import hermit.util.Wiz;
-public class EvasiveProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class EvasiveProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:EvasiveProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -27,17 +31,11 @@ public EvasiveProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
- @Override
- public void onEnter() {
+ public void onActivateCallE(AbstractCreature target) {
flash();
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new DexterityPower(AbstractDungeon.player, amount), amount));
+ AbstractDungeon.actionManager.addToBottom(new ReduceDebuffsAction(AbstractDungeon.player, amount));
}
- @Override
- public void onLeave() {
-// flash();
-// addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, DexterityPower.POWER_ID, amount));
- }
public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
diff --git a/src/main/java/guardian/powers/ExhaustStatusesPower.java b/src/main/java/guardian/powers/ExhaustStatusesPower.java
index b3bb810da..fdfe0a28b 100644
--- a/src/main/java/guardian/powers/ExhaustStatusesPower.java
+++ b/src/main/java/guardian/powers/ExhaustStatusesPower.java
@@ -29,6 +29,8 @@ public ExhaustStatusesPower(AbstractCreature owner, AbstractCreature source, int
}
+ //ACTUAL EFFECTS IN RECEIVE POST DRAW OF GUARDIANMOD
+
@Override
public void atStartOfTurn() {
super.atStartOfTurn();
diff --git a/src/main/java/guardian/powers/LoseThornsPower.java b/src/main/java/guardian/powers/LoseThornsPower.java
index db16b7282..0d52ae8ff 100644
--- a/src/main/java/guardian/powers/LoseThornsPower.java
+++ b/src/main/java/guardian/powers/LoseThornsPower.java
@@ -1,12 +1,16 @@
package guardian.powers;
+import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
+import com.megacrit.cardcrawl.actions.common.GainBlockAction;
import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction;
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.ArtifactPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
+import guardian.relics.ObsidianScales;
+import sneckomod.relics.LoadedDie;
public class LoseThornsPower extends AbstractGuardianPower {
@@ -60,6 +64,11 @@ public void atStartOfTurn() {
} else {
this.owner.getPower(ArtifactPower.POWER_ID).onSpecificTrigger();
}
+ ObsidianScales OScalesInstance = new ObsidianScales();
+ if (AbstractDungeon.player.hasRelic(ObsidianScales.ID)) {
+ this.addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, 1), 1));
+ OScalesInstance.flash();
+ }
}
}
diff --git a/src/main/java/guardian/powers/ModeShiftPower.java b/src/main/java/guardian/powers/ModeShiftPower.java
index 41a31a90b..6db49f9ff 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,52 @@ 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)) {
+ modeShifterPlusInstance.onTrigger();
+ }
+
+
+ int turns;
+ if (AbstractDungeon.actionManager.turnHasEnded)
+ turns = 2;
+ else
+ turns = 1;
AbstractPlayer p = AbstractDungeon.player;
- actionManager.addToBottom(new ApplyPowerAction(p, p, new DontLeaveDefensiveModePower(p, 2), 2));
+
+ actionManager.addToBottom(new ApplyPowerAction(p, p, new DontLeaveDefensiveModePower(p, turns), turns));
+
+ if (AbstractDungeon.player.hasPower(RevengePower.POWER_ID)) {
+ RevengePower revengePower =
+ (RevengePower) AbstractDungeon.player.getPower(RevengePower.POWER_ID);
+
+ if (revengePower != null) {
+ revengePower.onActivateCallR(p);
+ }
+ }
+
+ if (AbstractDungeon.player.hasPower(SpikerProtocolPower.POWER_ID)) {
+ SpikerProtocolPower spikerProtocolPower =
+ (SpikerProtocolPower) AbstractDungeon.player.getPower(SpikerProtocolPower.POWER_ID);
+
+ if (spikerProtocolPower != null) {
+ spikerProtocolPower.onActivateCallS(p);
+ }
+ }
+
+
+ if (AbstractDungeon.player.hasPower(EvasiveProtocolPower.POWER_ID)) {
+ EvasiveProtocolPower evasiveProtocolPower =
+ (EvasiveProtocolPower) AbstractDungeon.player.getPower(EvasiveProtocolPower.POWER_ID);
+
+ if (evasiveProtocolPower != null) {
+ evasiveProtocolPower.onActivateCallE(p);
+ }
+
+
+ }
+
+
this.activations++;
this.amount += Math.min(STARTING_AMOUNT + (AMOUNT_GAIN_PER_ACTIVATION * activations), MAX_AMOUNT); //Set max of 40 Brace
diff --git a/src/main/java/guardian/powers/RepulsiveProtocolPower.java b/src/main/java/guardian/powers/RepulsiveProtocolPower.java
deleted file mode 100644
index 5de897f1a..000000000
--- a/src/main/java/guardian/powers/RepulsiveProtocolPower.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package guardian.powers;
-
-
-import com.megacrit.cardcrawl.actions.common.ExhaustAction;
-import com.megacrit.cardcrawl.core.AbstractCreature;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-
-
-public class RepulsiveProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
- public static final String POWER_ID = "Guardian:RepulsiveProtocolPower";
- public static PowerType POWER_TYPE = PowerType.BUFF;
- public static String[] DESCRIPTIONS;
-
- public RepulsiveProtocolPower(AbstractCreature owner, int amount) {
-
- this.ID = POWER_ID;
- this.owner = owner;
- this.setImage("EvasiveProtocolPower84.png", "EvasiveProtocolPower32.png");
- this.type = POWER_TYPE;
- DESCRIPTIONS = CardCrawlGame.languagePack.getPowerStrings(this.ID).DESCRIPTIONS;
-
- this.name = CardCrawlGame.languagePack.getPowerStrings(this.ID).NAME;
- this.amount = amount;
-
- updateDescription();
- }
-
- @Override
- public void onEnter() {
- flash();
- addToBot(new ExhaustAction(this.amount, false, true, true));
- }
-
- @Override
- public void onLeave() {
- }
-
- public void updateDescription() {
- if( amount == 1){
- this.description = DESCRIPTIONS[0];
- }else{
- this.description = DESCRIPTIONS[1] + this.amount + DESCRIPTIONS[2];
- }
-
- }
-}
diff --git a/src/main/java/guardian/powers/RevengePower.java b/src/main/java/guardian/powers/RevengePower.java
index 1ac9c3ccd..411310e77 100644
--- a/src/main/java/guardian/powers/RevengePower.java
+++ b/src/main/java/guardian/powers/RevengePower.java
@@ -8,9 +8,10 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.powers.LoseStrengthPower;
import com.megacrit.cardcrawl.powers.StrengthPower;
+import sneckomod.powers.VenomDebuff;
-public class RevengePower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class RevengePower extends AbstractGuardianPower{
public static final String POWER_ID = "Guardian:RevengePower";
public static PowerType POWER_TYPE = PowerType.BUFF;
@@ -37,15 +38,10 @@ public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
- @Override
- public void onEnter() {
+
+ public void onActivateCallR(AbstractCreature target) {
flash();
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner, new StrengthPower(owner, amount), amount));
}
- @Override
- public void onLeave() {
- flash();
- AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(owner, owner, StrengthPower.POWER_ID, amount));
- }
}
\ No newline at end of file
diff --git a/src/main/java/guardian/powers/SpikerProtocolPower.java b/src/main/java/guardian/powers/SpikerProtocolPower.java
index 45825da74..e6866fb8e 100644
--- a/src/main/java/guardian/powers/SpikerProtocolPower.java
+++ b/src/main/java/guardian/powers/SpikerProtocolPower.java
@@ -6,10 +6,11 @@
import com.megacrit.cardcrawl.core.AbstractCreature;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.powers.StrengthPower;
import com.megacrit.cardcrawl.powers.ThornsPower;
-public class SpikerProtocolPower extends AbstractGuardianPower implements DefensiveModeBooster {
+public class SpikerProtocolPower extends AbstractGuardianPower {
public static final String POWER_ID = "Guardian:SpikerProtocolPower";
public static PowerType POWER_TYPE = PowerType.BUFF;
public static String[] DESCRIPTIONS;
@@ -28,18 +29,11 @@ public SpikerProtocolPower(AbstractCreature owner, int amount) {
updateDescription();
}
- @Override
- public void onEnter() {
+ public void onActivateCallS(AbstractCreature target) {
flash();
addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new ThornsPower(AbstractDungeon.player, amount), amount));
}
- @Override
- public void onLeave() {
-// flash();
-// addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, ThornsPower.POWER_ID, amount));
- }
-
public void updateDescription() {
this.description = DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1];
}
diff --git a/src/main/java/guardian/relics/BottledAnomaly.java b/src/main/java/guardian/relics/BottledAnomaly.java
index 2f3695c4a..e139308ec 100644
--- a/src/main/java/guardian/relics/BottledAnomaly.java
+++ b/src/main/java/guardian/relics/BottledAnomaly.java
@@ -4,22 +4,26 @@
import basemod.abstracts.CustomRelic;
import basemod.abstracts.CustomSavable;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import com.megacrit.cardcrawl.actions.common.MakeTempCardInHandAction;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
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 com.megacrit.cardcrawl.helpers.FontHelper;
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import guardian.GuardianMod;
import guardian.patches.BottledStasisPatch;
import sneckomod.cards.unknowns.AbstractUnknownCard;
import java.util.function.Predicate;
-public class BottledAnomaly extends CustomRelic implements CustomBottleRelic, CustomSavable {
+public class BottledAnomaly extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
public static final String ID = "Guardian:BottledAnomaly";
public static final String IMG_PATH = "relics/bottledAnomaly.png";
public static final String OUTLINE_IMG_PATH = "relics/bottledAnomalyOutline.png";
@@ -29,7 +33,18 @@ 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
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
}
@Override
@@ -102,23 +117,52 @@ public void update() {
BottledStasisPatch.inBottledAnomaly.set(card, true);
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
- private void setDescriptionAfterLoading() {
- if(cardRemoved){
+// @Override
+// public void onRemoveCardFromMasterDeck(AbstractCard var1){
+// if (var1.uuid == card.uuid) {
+// setDescriptionAfterLoading();
+// }
+// }
+
+
+ public void setDescriptionAfterLoading() {
+ boolean cardExists = false;
+
+ if (cardSelected) {
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if (!cardExists) {
+ cardRemoved = true;
tips.clear();
+ this.grayscale = true;
this.description = this.DESCRIPTIONS[4];
tips.add(new PowerTip(name, description));
initializeTips();
- return ;
}
- this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
- tips.clear();
- tips.add(new PowerTip(name, description));
- initializeTips();
+
+ if (cardExists) {
+ this.grayscale = false;
+ this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
+ tips.clear();
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ }
}
@Override
@@ -172,10 +216,10 @@ public void atTurnStartPostDraw() {
addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
if (card instanceof AbstractUnknownCard) {
AbstractCard unknowncard = ( (AbstractUnknownCard)card ).generateFromPoolButNotIntoHand();
- unknowncard.modifyCostForCombat(-999);
+ unknowncard.setCostForTurn(0);
addToBot( new MakeTempCardInHandAction( unknowncard ) );
}else {
- card.modifyCostForCombat(-999);
+ card.setCostForTurn(0);
addToBot(new MakeTempCardInHandAction(card));
}
this.grayscale = true;
diff --git a/src/main/java/guardian/relics/BottledStasis.java b/src/main/java/guardian/relics/BottledStasis.java
index bbe08b419..931f9c951 100644
--- a/src/main/java/guardian/relics/BottledStasis.java
+++ b/src/main/java/guardian/relics/BottledStasis.java
@@ -4,6 +4,7 @@
import basemod.abstracts.CustomRelic;
import basemod.abstracts.CustomSavable;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import com.megacrit.cardcrawl.actions.defect.ChannelAction;
import com.megacrit.cardcrawl.actions.utility.WaitAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -13,6 +14,7 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import guardian.GuardianMod;
import guardian.orbs.StasisOrb;
import guardian.patches.BottledStasisPatch;
@@ -20,17 +22,28 @@
import java.util.function.Predicate;
-public class BottledStasis extends CustomRelic implements CustomBottleRelic, CustomSavable {
+public class BottledStasis extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
public static final String ID = "Guardian:BottledStasis";
public static final String IMG_PATH = "relics/bottledStasis.png";
public static final String OUTLINE_IMG_PATH = "relics/bottledStasisOutline.png";
public AbstractCard card = null;
- private boolean cardSelected = true;
+ public boolean cardSelected = false;
private boolean cardRemoved = false;
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
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
}
@Override
@@ -80,6 +93,8 @@ public void onEquip() {
for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
tmp.addToTop(c);
}
+
+
AbstractDungeon.gridSelectScreen.open(tmp,
1, DESCRIPTIONS[1] + name + ".",
false, false, false, false);
@@ -95,33 +110,58 @@ public void onUnequip() {
}
}
+// @Override
+// public void onRemoveCardFromMasterDeck(AbstractCard var1){
+// if (var1.uuid == card.uuid) {
+// setDescriptionAfterLoading();
+// }
+// }
+
@Override
public void update() {
super.update();
- if (!cardSelected && !AbstractDungeon.gridSelectScreen.selectedCards.isEmpty()) {
+ if (!cardSelected && !AbstractDungeon.gridSelectScreen.selectedCards.isEmpty() && card.uuid == null) {
cardSelected = true;
card = AbstractDungeon.gridSelectScreen.selectedCards.get(0);
BottledStasisPatch.inBottledStasis.set(card, true);
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
-
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
- private void setDescriptionAfterLoading() {
- if(cardRemoved){
+ public void setDescriptionAfterLoading() {
+
+ boolean cardExists = false;
+
+ if (cardSelected) {
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if (!cardExists) {
+ cardRemoved = true;
tips.clear();
this.description = this.DESCRIPTIONS[4];
- tips.add(new PowerTip(name, description));
initializeTips();
- return ;
}
+
+ if (cardExists) {
this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
tips.clear();
tips.add(new PowerTip(name, description));
initializeTips();
+ }
}
@Override
diff --git a/src/main/java/guardian/relics/GemstoneGun.java b/src/main/java/guardian/relics/GemstoneGun.java
index 339dbedeb..17d7a8545 100644
--- a/src/main/java/guardian/relics/GemstoneGun.java
+++ b/src/main/java/guardian/relics/GemstoneGun.java
@@ -14,6 +14,7 @@
import expansioncontent.patches.CenterGridCardSelectScreen;
import guardian.GuardianMod;
import guardian.cards.*;
+import guardian.characters.GuardianCharacter;
import java.util.ArrayList;
@@ -89,6 +90,9 @@ public static ArrayList getCharacterSafeGems(int count) {
allGemCards.add("PURPLE");
allGemCards.add("SYNTHETIC");
allGemCards.add("LIGHTBLUE");
+ if (AbstractDungeon.player instanceof GuardianCharacter) {
+ allGemCards.add("BLUE");
+ }
int rando;
String ID;
diff --git a/src/main/java/guardian/relics/ModeShifter.java b/src/main/java/guardian/relics/ModeShifter.java
index 4f61a7ef8..69740f661 100644
--- a/src/main/java/guardian/relics/ModeShifter.java
+++ b/src/main/java/guardian/relics/ModeShifter.java
@@ -19,7 +19,7 @@ public class ModeShifter extends CustomRelic {
public ModeShifter() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.STARTER, LandingSound.FLAT);
+ RelicTier.STARTER, LandingSound.CLINK);
this.tips.add(new CardPowerTip(new GearUp()));
}
diff --git a/src/main/java/guardian/relics/ModeShifterPlus.java b/src/main/java/guardian/relics/ModeShifterPlus.java
index 41bdd8ca1..0889a1a1a 100644
--- a/src/main/java/guardian/relics/ModeShifterPlus.java
+++ b/src/main/java/guardian/relics/ModeShifterPlus.java
@@ -1,39 +1,54 @@
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.*;
+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.powers.EnergizedGuardianPower;
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)),
- RelicTier.BOSS, LandingSound.FLAT);
+ super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)),
+ new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
+ RelicTier.BOSS, LandingSound.CLINK);
}
@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));
- }
+ //finally got around to doing this
+ @Override
+ public void onTrigger() {
+ super.onTrigger();
+
+ addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+
+ if (!AbstractDungeon.actionManager.turnHasEnded) {
+ addToTop(new GainEnergyAction(1));
+ }
+ if (AbstractDungeon.actionManager.turnHasEnded) {
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new EnergizedGuardianPower(AbstractDungeon.player, 1)));
+ }
+
+ addToTop(new DrawCardAction(AbstractDungeon.player, 2));
+ }
@Override
public void obtain() {
@@ -49,12 +64,33 @@ public void obtain() {
}
}
+ @Override
+ public String getUpdatedDescription() {
+ // Colorize the starter relic's name
+ String name = new ModeShifter().name;
+ StringBuilder sb = new StringBuilder();
+ if(Settings.language== Settings.GameLanguage.ZHS|| Settings.language== Settings.GameLanguage.ZHT){
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]").append(name).append("[]");
+
+ }else {
+ for (String word : name.split(" ")) {
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]").append(word).append("[] ");
+ }
+ sb.setLength(sb.length() - 1);
+ sb.append("[#").append(GuardianMod.mainGuardianColor.toString()).append("]");
+ }
+
+ return DESCRIPTIONS[0] + sb + DESCRIPTIONS[1];
+ }
+
+
@Override
public AbstractRelic makeCopy() {
return new ModeShifterPlus();
}
+ @Override
public boolean canSpawn() {
return AbstractDungeon.player.hasRelic(ModeShifter.ID);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/guardian/relics/ObsidianScales.java b/src/main/java/guardian/relics/ObsidianScales.java
new file mode 100644
index 000000000..ca640454d
--- /dev/null
+++ b/src/main/java/guardian/relics/ObsidianScales.java
@@ -0,0 +1,51 @@
+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";
+
+ //Thorns at start of battle
+ private static final int INITIALTHORNS = 3;
+
+ //Thorns upon being debuffed
+ private static final int THORNS = 1;
+
+ 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, INITIALTHORNS), INITIALTHORNS));
+ }
+
+
+ @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, THORNS), THORNS));
+ }
+ return true;
+ }
+
+
+ @Override
+ public String getUpdatedDescription() {
+ return DESCRIPTIONS[0] + INITIALTHORNS + DESCRIPTIONS[1] + THORNS + DESCRIPTIONS[2];
+ }
+
+}
diff --git a/src/main/java/guardian/relics/PickAxe.java b/src/main/java/guardian/relics/PickAxe.java
index 2ea8ae822..e4ea3d671 100644
--- a/src/main/java/guardian/relics/PickAxe.java
+++ b/src/main/java/guardian/relics/PickAxe.java
@@ -2,22 +2,24 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+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;
+import guardian.rewards.GemReward;
+import guardian.rewards.GemRewardButRelicRng;
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);
-
+ RelicTier.COMMON, LandingSound.CLINK);
// this.counter = 3;
}
@@ -26,28 +28,40 @@ public String getUpdatedDescription() {
return this.DESCRIPTIONS[0];
}
+
+ public void onEquip() {
+ if ((AbstractDungeon.getCurrRoom()).eliteTrigger) {
+ AbstractDungeon.getCurrRoom().rewards.add(new GemRewardButRelicRng());
+ // AbstractDungeon.combatRewardScreen.open();
+ // AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+ }
+ }
+
@Override
- public void addCampfireOption(ArrayList options) {
- options.add(new FindGemsOption(true));
- }
-
- // @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 onTrigger() {
+ //super.onTrigger();
+ // this.counter = -2;
+ // setCounter(this.counter);
+ }
+
+ public void setCounter(int counter) {
+ // this.counter = -2;
+ // this.img = TextureLoader.getTexture(GuardianMod.getResourcePath("relics/pickUsed.png"));
+ //this.usedUp();
+ }
+
+ public void onVictory(){
+ if ((AbstractDungeon.getCurrRoom()).eliteTrigger) {
+ if (this.counter != -2) {
+ this.flash();
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
+ }
+ }
+ }
+
+ public boolean canSpawn() {
+ return Settings.isEndless || AbstractDungeon.floorNum <= 48; // cannot appear in act 4
+ }
@Override
public AbstractRelic makeCopy() {
diff --git a/src/main/java/guardian/relics/SackOfGems.java b/src/main/java/guardian/relics/SackOfGems.java
index 23efd5e70..bb81b2d67 100644
--- a/src/main/java/guardian/relics/SackOfGems.java
+++ b/src/main/java/guardian/relics/SackOfGems.java
@@ -2,14 +2,10 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.relics.AbstractRelic;
-import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import guardian.GuardianMod;
-
-import java.util.ArrayList;
+import guardian.rewards.GemRewardButRelicRng;
public class SackOfGems extends CustomRelic {
public static final String ID = "Guardian:SackOfGems";
@@ -28,21 +24,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 GemRewardButRelicRng());
}
+ AbstractDungeon.combatRewardScreen.open();
+ AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+ AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
}
diff --git a/src/main/java/guardian/relics/StasisCodex.java b/src/main/java/guardian/relics/StasisCodex.java
index 8edd6b4d9..aa43697e4 100644
--- a/src/main/java/guardian/relics/StasisCodex.java
+++ b/src/main/java/guardian/relics/StasisCodex.java
@@ -15,32 +15,53 @@ public class StasisCodex extends CustomRelic {
public static final String IMG_PATH = "relics/constructCodex.png";
public static final String OUTLINE_IMG_PATH = "relics/constructCodexOutline.png";
public static final String LARGE_IMG_PATH = "relics/constructCodexLarge.png";
- private static final int HP_PER_CARD = 1;
+ private static final int MAX_MARKER = 3;
+ private int marker = 0;
public StasisCodex() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
- RelicTier.UNCOMMON, LandingSound.FLAT);
+ RelicTier.SHOP, LandingSound.FLAT);
this.largeImg = TextureLoader.getTexture(GuardianMod.getResourcePath(LARGE_IMG_PATH));
}
+ @Override
+ public void atBattleStart() {
+ this.counter = 0;
+ marker = 0;
+ this.grayscale = false;
+ }
+
@Override
public void onPlayerEndTurn() {
super.onPlayerEndTurn();
- if (!GuardianMod.isStasisOrbInPlay()) {
-
- AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- AbstractDungeon.actionManager.addToBottom(new StasisCodexAction());
+ if (marker < 3) {
+ ++this.counter;
+ marker++;
+ if (AbstractDungeon.player.hasEmptyOrb() || !GuardianMod.isStasisOrbInPlay()) {
+ AbstractDungeon.actionManager.addToBottom(new RelicAboveCreatureAction(AbstractDungeon.player, this));
+ AbstractDungeon.actionManager.addToBottom(new StasisCodexAction());
+ }
+ if (marker == 3) {
+ this.flash();
+ this.grayscale = true;
+ }
}
}
+ @Override
+ public void onVictory() {
+ this.grayscale = false;
+ marker = 0;
+ this.counter = 0;
+ }
+
@Override
public String getUpdatedDescription() {
return this.DESCRIPTIONS[0];
}
-
@Override
public AbstractRelic makeCopy() {
return new StasisCodex();
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/guardian/relics/StasisEgg.java b/src/main/java/guardian/relics/StasisEgg.java
index 423ae5824..a8fb16ae4 100644
--- a/src/main/java/guardian/relics/StasisEgg.java
+++ b/src/main/java/guardian/relics/StasisEgg.java
@@ -4,6 +4,7 @@
import basemod.abstracts.CustomRelic;
import basemod.abstracts.CustomSavable;
import com.badlogic.gdx.graphics.Texture;
+import com.evacipated.cardcrawl.mod.stslib.relics.OnRemoveCardFromMasterDeckRelic;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.CardGroup;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
@@ -11,23 +12,36 @@
import com.megacrit.cardcrawl.helpers.PowerTip;
import com.megacrit.cardcrawl.relics.AbstractRelic;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardBrieflyEffect;
import guardian.GuardianMod;
import guardian.patches.BottledStasisPatch;
import java.util.function.Predicate;
-public class StasisEgg extends CustomRelic implements CustomBottleRelic, CustomSavable {
+import static awakenedOne.AwakenedOneMod.DELVE;
+
+public class StasisEgg extends CustomRelic implements CustomBottleRelic, CustomSavable, OnRemoveCardFromMasterDeckRelic {
public static final String ID = "Guardian:StasisEgg";
public static final String IMG_PATH = "relics/stasisEgg.png";
public static final String OUTLINE_IMG_PATH = "relics/stasisEggOutline.png";
private boolean cardSelected = true;
- private AbstractCard card = null;
+ public AbstractCard card = null;
public StasisEgg() {
super(ID, new Texture(GuardianMod.getResourcePath(IMG_PATH)), new Texture(GuardianMod.getResourcePath(OUTLINE_IMG_PATH)),
RelicTier.SPECIAL, LandingSound.FLAT);
}
+ @Override
+ public void onRemoveCardFromMasterDeck(AbstractCard var1) {
+ if (this.card != null) {
+ if (var1.uuid == card.uuid) {
+ this.flash();
+ this.grayscale = true;
+ setDescriptionAfterLoading();
+ }
+ }
+ }
@Override
public Predicate isOnCard() {
@@ -102,15 +116,39 @@ public void update() {
AbstractDungeon.getCurrRoom().phase = AbstractRoom.RoomPhase.COMPLETE;
AbstractDungeon.gridSelectScreen.selectedCards.clear();
+
+ AbstractDungeon.topLevelEffects.add(new ShowCardBrieflyEffect(card.makeStatEquivalentCopy()));
+
setDescriptionAfterLoading();
}
}
private void setDescriptionAfterLoading() {
- this.description = this.DESCRIPTIONS[2] + FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[3];
- tips.clear();
- tips.add(new PowerTip(name, description));
- initializeTips();
+ boolean cardExists = false;
+
+ if (card != null) {
+ for (AbstractCard c : AbstractDungeon.player.masterDeck.group) {
+ if (c.uuid == card.uuid) {
+ cardExists = true;
+ break;
+ }
+ }
+ }
+
+ if (!cardExists) {
+ tips.clear();
+ this.description = this.DESCRIPTIONS[4];
+ this.grayscale = true;
+ initializeTips();
+ }
+
+ if (cardExists) {
+ this.description = FontHelper.colorString(this.card.name, "y") + this.DESCRIPTIONS[2];
+ tips.clear();
+ tips.add(new PowerTip(name, description));
+ initializeTips();
+ this.grayscale = false;
+ }
}
@Override
@@ -158,4 +196,20 @@ public void atTurnStart() {
}
}
+
+ public boolean canSpawn() {
+
+ CardGroup tmp = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
+ for (AbstractCard c : CardGroup.getGroupWithoutBottledCards(AbstractDungeon.player.masterDeck).group) {
+ tmp.addToTop(c);
+ }
+
+ if (tmp.size() > 0) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/guardian/rewards/GemReward.java b/src/main/java/guardian/rewards/GemReward.java
index 1cf27b284..8100f24e8 100644
--- a/src/main/java/guardian/rewards/GemReward.java
+++ b/src/main/java/guardian/rewards/GemReward.java
@@ -32,7 +32,7 @@ public boolean claimReward() {
public void generate_reward_cards(){
this.cards.clear();
- this.cards.add( GuardianMod.getSingleRewardGemWithWeight() );
+ this.cards.addAll(GuardianMod.getRewardGemCards(false,1));
}
}
\ No newline at end of file
diff --git a/src/main/java/guardian/rewards/GemRewardButRelicRng.java b/src/main/java/guardian/rewards/GemRewardButRelicRng.java
new file mode 100644
index 000000000..67e17ace2
--- /dev/null
+++ b/src/main/java/guardian/rewards/GemRewardButRelicRng.java
@@ -0,0 +1,38 @@
+package guardian.rewards;
+
+import basemod.abstracts.CustomReward;
+import com.badlogic.gdx.graphics.Texture;
+import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import downfall.patches.RewardItemTypeEnumPatch;
+import downfall.util.TextureLoader;
+import guardian.GuardianMod;
+
+public class GemRewardButRelicRng extends CustomReward {
+
+ public static final String[] TEXT;
+ private static final Texture TEXTURE = TextureLoader.getTexture(GuardianMod.getResourcePath("ui/gemreward.png"));
+
+ static {
+ TEXT = CardCrawlGame.languagePack.getUIString("Guardian:UIOptions").TEXT;
+ }
+
+ public GemRewardButRelicRng() {
+ super(TEXTURE, TEXT[2], RewardItemTypeEnumPatch.GEM);
+ }
+
+ @Override
+ public boolean claimReward() {
+ if (AbstractDungeon.screen == AbstractDungeon.CurrentScreen.COMBAT_REWARD) {
+ AbstractDungeon.cardRewardScreen.open(this.cards, this, TEXT[1]);
+ AbstractDungeon.previousScreen = AbstractDungeon.CurrentScreen.COMBAT_REWARD;
+ }
+ return false;
+ }
+
+ public void generate_reward_cards(){
+ this.cards.clear();
+ this.cards.addAll(GuardianMod.getRewardGemCardsButRelicRng(false,1));
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/stances/DefensiveMode.java b/src/main/java/guardian/stances/DefensiveMode.java
index 7f6483191..02dd6c216 100644
--- a/src/main/java/guardian/stances/DefensiveMode.java
+++ b/src/main/java/guardian/stances/DefensiveMode.java
@@ -136,4 +136,4 @@ public void onEndOfRound() {
public void updateDescription() {
this.description = GuardianCharacter.charStrings.TEXT[5];
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/guardian/ui/EnhanceBonfireOption.java b/src/main/java/guardian/ui/EnhanceBonfireOption.java
index 99df0800d..f83a173f5 100644
--- a/src/main/java/guardian/ui/EnhanceBonfireOption.java
+++ b/src/main/java/guardian/ui/EnhanceBonfireOption.java
@@ -5,7 +5,9 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.helpers.MathHelper;
+import com.megacrit.cardcrawl.helpers.input.InputHelper;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.util.TextureLoader;
@@ -23,6 +25,7 @@ public class EnhanceBonfireOption extends AbstractCampfireOption {
}
+ //private ArrayList idleMessages;
public EnhanceBonfireOption(boolean active) {
this.label = DESCRIPTIONS[0];
diff --git a/src/main/java/guardian/ui/FindGemsOption.java b/src/main/java/guardian/ui/FindGemsOption.java
index d780bf397..65a97d9a4 100644
--- a/src/main/java/guardian/ui/FindGemsOption.java
+++ b/src/main/java/guardian/ui/FindGemsOption.java
@@ -4,11 +4,13 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
+import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.helpers.MathHelper;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.ui.campfire.AbstractCampfireOption;
import downfall.util.TextureLoader;
import guardian.GuardianMod;
+import guardian.relics.PickAxe;
import guardian.vfx.CampfireFindGemsEffect;
@@ -22,8 +24,10 @@ public class FindGemsOption extends AbstractCampfireOption {
}
+ //private ArrayList idleMessages;
public FindGemsOption(boolean active) {
this.label = DESCRIPTIONS[0];
+ this.description = DESCRIPTIONS[1];
this.usable = active;
if (active) {
@@ -37,10 +41,10 @@ public FindGemsOption(boolean active) {
@Override
public void useOption() {
+
AbstractDungeon.effectList.add(new CampfireFindGemsEffect());
- this.description = DESCRIPTIONS[2];
- this.img = TextureLoader.getTexture(GuardianMod.getResourcePath("ui/minecampfiredisabled.png"));
- this.usable = false;
+ AbstractDungeon.player.getRelic(PickAxe.ID).onTrigger();
+
}
@Override
diff --git a/src/main/java/guardian/vfx/CampfireFindGemsEffect.java b/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
index 2580cc3d6..01cabccbd 100644
--- a/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
+++ b/src/main/java/guardian/vfx/CampfireFindGemsEffect.java
@@ -1,3 +1,8 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
package guardian.vfx;
import com.badlogic.gdx.Gdx;
@@ -9,16 +14,17 @@
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
+import com.megacrit.cardcrawl.rooms.AbstractRoom.RoomPhase;
import com.megacrit.cardcrawl.rooms.RestRoom;
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
import guardian.GuardianMod;
+import guardian.rewards.GemReward;
import java.util.ArrayList;
-import java.util.Arrays;
public class CampfireFindGemsEffect extends AbstractGameEffect {
private static final float DUR = 2.0F;
- private boolean got = false;
private Color screenColor;
@@ -33,25 +39,19 @@ public void update() {
this.duration -= Gdx.graphics.getDeltaTime();
this.updateBlackScreenColor();
- if (this.duration < 1.0F) {
- if(!got) {
- got = true;
- CardCrawlGame.sound.play("SHOVEL");
- ArrayList gems = new ArrayList<>(Arrays.asList(GuardianMod.getSingleRewardGemWithWeight())) ;
- if (gems != null && !gems.isEmpty()) {
- AbstractDungeon.cardRewardScreen.open(gems, null, "");
- }
-
-// AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(gems.get(0), (float) (Settings.WIDTH * 0.35), (float) (Settings.HEIGHT / 2)));
-// AbstractDungeon.topLevelEffects.add(new ShowCardAndObtainEffect(gems.get(1), (float) (Settings.WIDTH * 0.7), (float) (Settings.HEIGHT / 2)));
+ if (this.duration < 0.0F) {
+ CardCrawlGame.sound.play("SHOVEL");
+ for (int i = 0; i < 2; i++) {
+ AbstractDungeon.getCurrRoom().rewards.add(new GemReward());
}
- }
+ // AbstractDungeon.combatRewardScreen.rewards.remove(AbstractDungeon.combatRewardScreen.rewards.size()-1);
+ AbstractDungeon.combatRewardScreen.open();
+ AbstractDungeon.getCurrRoom().rewardPopOutTimer = 0.0F;
+
- if (this.duration < 0.0F) {
this.isDone = true;
((RestRoom) AbstractDungeon.getCurrRoom()).fadeIn();
- ((RestRoom) AbstractDungeon.getCurrRoom()).campfireUI.reopen();
-// AbstractDungeon.getCurrRoom().phase = RoomPhase.COMPLETE;
+ AbstractDungeon.getCurrRoom().phase = RoomPhase.COMPLETE;
}
}
@@ -74,4 +74,4 @@ public void render(SpriteBatch sb) {
public void dispose() {
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/hermit/actions/EclipseAction.java b/src/main/java/hermit/actions/EclipseAction.java
index 31bf061f7..4c85b3241 100644
--- a/src/main/java/hermit/actions/EclipseAction.java
+++ b/src/main/java/hermit/actions/EclipseAction.java
@@ -1,6 +1,8 @@
package hermit.actions;
import java.util.Iterator;
+
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -40,7 +42,7 @@ public void update() {
this.isDone = true;
} else if (tmp.size() == 1) {
card = tmp.getTopCard();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.exhaustPile.removeCard(card);
this.p.createHandIsFullDialog();
@@ -64,7 +66,7 @@ public void update() {
} else if (tmp.size() <= this.amount) {
for(int i = 0; i < tmp.size(); ++i) {
card = tmp.getNCardFromTop(i);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.createHandIsFullDialog();
} else {
@@ -101,7 +103,7 @@ public void update() {
while(var1.hasNext()) {
card = (AbstractCard)var1.next();
card.unhover();
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.exhaustPile.moveToDiscardPile(card);
this.p.exhaustPile.removeCard(card);
card.setCostForTurn(0);
diff --git a/src/main/java/hermit/actions/FullyLoadedAction.java b/src/main/java/hermit/actions/FullyLoadedAction.java
index a86e6adc1..bd690e2ec 100644
--- a/src/main/java/hermit/actions/FullyLoadedAction.java
+++ b/src/main/java/hermit/actions/FullyLoadedAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
@@ -53,7 +54,7 @@ public void update() {
tmp.shuffle();
card = tmp.getBottomCard();
tmp.removeCard(card);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.createHandIsFullDialog();
} else {
p.drawPile.group.remove(card);
diff --git a/src/main/java/hermit/actions/GambitAction.java b/src/main/java/hermit/actions/GambitAction.java
index 7505b87f2..30c700955 100644
--- a/src/main/java/hermit/actions/GambitAction.java
+++ b/src/main/java/hermit/actions/GambitAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.AbstractGameAction.ActionType;
import com.megacrit.cardcrawl.actions.common.ReduceCostForTurnAction;
@@ -53,7 +54,7 @@ public void update() {
tmp.shuffle();
card = tmp.getBottomCard();
tmp.removeCard(card);
- if (this.p.hand.size() == 10) {
+ if (this.p.hand.size() == BaseMod.MAX_HAND_SIZE) {
this.p.createHandIsFullDialog();
} else {
card.unhover();
diff --git a/src/main/java/hermit/actions/LuckDrawAction.java b/src/main/java/hermit/actions/LuckDrawAction.java
index 6b2a6081d..274cb76f2 100644
--- a/src/main/java/hermit/actions/LuckDrawAction.java
+++ b/src/main/java/hermit/actions/LuckDrawAction.java
@@ -1,5 +1,6 @@
package hermit.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DrawCardAction;
import com.megacrit.cardcrawl.actions.common.EmptyDeckShuffleAction;
@@ -26,7 +27,7 @@ public LuckDrawAction(int energy) {
public void update() {
if (this.duration == Settings.ACTION_DUR_MED) {
- if (tracker >= energy || (p.drawPile.isEmpty() && p.discardPile.isEmpty()) || p.hand.size() >= 10) {
+ if (tracker >= energy || (p.drawPile.isEmpty() && p.discardPile.isEmpty()) || p.hand.size() >= BaseMod.MAX_HAND_SIZE) {
this.isDone = true;
return;
}
diff --git a/src/main/java/hermit/cards/AbstractHermitCard.java b/src/main/java/hermit/cards/AbstractHermitCard.java
index b148d01b0..39fac8d88 100644
--- a/src/main/java/hermit/cards/AbstractHermitCard.java
+++ b/src/main/java/hermit/cards/AbstractHermitCard.java
@@ -191,7 +191,7 @@ public void TriggerDeadOnEffect(AbstractPlayer p, AbstractMonster m)
if (c.relicId.equals(BlackPowder.ID))
{
this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, c));
- this.addToBot(new DamageAllEnemiesAction((AbstractCreature) null, DamageInfo.createDamageMatrix(2, true), DamageInfo.DamageType.THORNS, AbstractGameAction.AttackEffect.FIRE,true));
+ this.addToBot(new DamageAllEnemiesAction((AbstractCreature) null, DamageInfo.createDamageMatrix(BlackPowder.OOMPH, true), DamageInfo.DamageType.THORNS, AbstractGameAction.AttackEffect.FIRE,true));
}
}
}
diff --git a/src/main/java/hermit/cards/Covet.java b/src/main/java/hermit/cards/Covet.java
index 512fd0401..d6dec8690 100644
--- a/src/main/java/hermit/cards/Covet.java
+++ b/src/main/java/hermit/cards/Covet.java
@@ -5,6 +5,7 @@
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.helpers.GameDictionary;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.localization.UIStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
@@ -78,4 +79,12 @@ public void upgrade() {
initializeDescription();
}
}
+
+ //add curse keyword
+ @Override
+ public void initializeDescription() {
+ super.initializeDescription();
+ this.keywords.add(GameDictionary.CURSE.NAMES[0].toLowerCase());
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/hermit/cards/EternalForm.java b/src/main/java/hermit/cards/EternalForm.java
index 9f5f78e20..a23227fe0 100644
--- a/src/main/java/hermit/cards/EternalForm.java
+++ b/src/main/java/hermit/cards/EternalForm.java
@@ -1,5 +1,6 @@
package hermit.cards;
+import basemod.helpers.BaseModCardTags;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
@@ -35,6 +36,7 @@ public EternalForm() {
baseMagicNumber = magicNumber = 1;
this.isEthereal = true;
loadJokeCardImage(this, "eternal_form.png");
+ tags.add(BaseModCardTags.FORM);
}
@Override
diff --git a/src/main/java/hermit/cards/FinalCanter.java b/src/main/java/hermit/cards/FinalCanter.java
index d869e52e7..c49a17ef9 100644
--- a/src/main/java/hermit/cards/FinalCanter.java
+++ b/src/main/java/hermit/cards/FinalCanter.java
@@ -11,6 +11,7 @@
import hermit.actions.FinalCanterAction;
import hermit.characters.hermit;
import hermit.util.Wiz;
+import sneckomod.SneckoMod;
import java.util.Iterator;
@@ -46,6 +47,7 @@ public FinalCanter() {
this.selfRetain = true;
exhaust=true;
loadJokeCardImage(this, "final_canter.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
// Actions the card should do.
diff --git a/src/main/java/hermit/cards/ImpendingDoom.java b/src/main/java/hermit/cards/ImpendingDoom.java
index 3680490a1..59e31d154 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; // remove special rarity to become downfall curse
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/Malice.java b/src/main/java/hermit/cards/Malice.java
index 5b47394f4..ce047577d 100644
--- a/src/main/java/hermit/cards/Malice.java
+++ b/src/main/java/hermit/cards/Malice.java
@@ -1,5 +1,6 @@
package hermit.cards;
+import champ.relics.DuelingGlove;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction;
@@ -7,12 +8,15 @@
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.localization.UIStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import gremlin.relics.TagTeamwork;
import hermit.HermitMod;
import hermit.actions.HandSelectAction;
import hermit.characters.hermit;
+import hermit.relics.Spyglass;
import hermit.util.Wiz;
import static hermit.HermitMod.loadJokeCardImage;
@@ -50,6 +54,7 @@ public Malice() {
baseDamage = DAMAGE;
loadJokeCardImage(this, "malice.png");
}
+
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
Wiz.atb(new HandSelectAction(1, (c) -> true, list -> {}, list -> {
@@ -62,10 +67,15 @@ public void use(AbstractPlayer p, AbstractMonster m) {
isCurse = true;
}
- if (isCurse)
+ if (isCurse) {
Wiz.att(new DamageAllEnemiesAction(p, DamageInfo.createDamageMatrix(this.baseDamage), DamageInfo.DamageType.NORMAL, AbstractGameAction.AttackEffect.FIRE));
- else
+ } else {
Wiz.att(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.FIRE));
+ //schrodinger's card target
+ if (AbstractDungeon.player.hasRelic(DuelingGlove.ID)) {
+ AbstractDungeon.player.getRelic(DuelingGlove.ID).onTrigger(m);
+ }
+ }
}, uiStrings.TEXT[0],false,false,false));
}
diff --git a/src/main/java/hermit/cards/RoundhouseKick.java b/src/main/java/hermit/cards/RoundhouseKick.java
index 6a1c83104..61bf8fcc2 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;
diff --git a/src/main/java/hermit/patches/VigorPatch.java b/src/main/java/hermit/patches/VigorPatch.java
index 977b05fe8..e6286d405 100644
--- a/src/main/java/hermit/patches/VigorPatch.java
+++ b/src/main/java/hermit/patches/VigorPatch.java
@@ -11,6 +11,8 @@
import com.megacrit.cardcrawl.powers.watcher.VigorPower;
import hermit.powers.BigShotPower;
+import static champ.ChampMod.vigor;
+
public class VigorPatch {
public static int isActive=0;
@@ -23,7 +25,6 @@ public static class DisableHealing
public static void Prefix(GameActionManager m)
{
if (m.actions.isEmpty() && m.preTurnActions.isEmpty() && m.cardQueue.isEmpty() && isActive > 0) {
-
VigorPatch.thisRun = true;
}
}
@@ -38,7 +39,8 @@ public static void Postfix(GameActionManager m)
AbstractPlayer p = AbstractDungeon.player;
AbstractPower pow = AbstractDungeon.player.getPower(BigShotPower.POWER_ID);
pow.flash();
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new VigorPower(p, pow.amount), pow.amount));
+ vigor(pow.amount);
+ //AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new VigorPower(p, pow.amount), pow.amount));
}
thisRun = false;
isActive -= 1;
diff --git a/src/main/java/hermit/powers/CoalescencePower.java b/src/main/java/hermit/powers/CoalescencePower.java
index 6cbe1fba1..45efcfead 100644
--- a/src/main/java/hermit/powers/CoalescencePower.java
+++ b/src/main/java/hermit/powers/CoalescencePower.java
@@ -10,6 +10,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.PowerStrings;
import com.megacrit.cardcrawl.powers.AbstractPower;
+import com.megacrit.cardcrawl.powers.watcher.EstablishmentPower;
import hermit.HermitMod;
import hermit.util.TextureLoader;
@@ -49,7 +50,7 @@ public CoalescencePower(final AbstractCreature owner, final int amount) {
public void atEndOfTurn(boolean isPlayer) {
this.flash();
- if (isPlayer && !AbstractDungeon.player.hand.isEmpty() && !AbstractDungeon.player.hasRelic("Runic Pyramid") && !AbstractDungeon.player.hasPower("Equilibrium")) {
+ if ((isPlayer && !AbstractDungeon.player.hand.isEmpty() && !AbstractDungeon.player.hasPower("Equilibrium"))) {
this.addToBot(new RetainCardsAction(this.owner, this.amount));
}
diff --git a/src/main/java/hermit/powers/Drained.java b/src/main/java/hermit/powers/Drained.java
index 35e91936c..f4ff6a37f 100644
--- a/src/main/java/hermit/powers/Drained.java
+++ b/src/main/java/hermit/powers/Drained.java
@@ -32,7 +32,7 @@ public Drained(final AbstractCreature owner, final AbstractCreature source, fina
this.source = source;
type = PowerType.DEBUFF;
- isTurnBased = false;
+ isTurnBased = true;
// We load those textures here.
this.region128 = new TextureAtlas.AtlasRegion(tex84, 0, 0, 84, 84);
diff --git a/src/main/java/hermit/relics/BartenderGlass.java b/src/main/java/hermit/relics/BartenderGlass.java
index bbfdab705..eb73daa11 100644
--- a/src/main/java/hermit/relics/BartenderGlass.java
+++ b/src/main/java/hermit/relics/BartenderGlass.java
@@ -18,6 +18,10 @@ public class BartenderGlass extends CustomRelic {
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("bartenders_glass.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("bartenders_glass.png"));
+
+ //variables
+ private static final int POTION_LIMIT = 2;
+
public BartenderGlass() {
super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.SOLID);
counter = -1;
@@ -27,7 +31,7 @@ public void obtain() {
super.obtain();
if (AbstractDungeon.getCurrRoom().phase == AbstractRoom.RoomPhase.COMBAT)
- counter = 2;
+ counter = POTION_LIMIT;
else
counter = -1;
}
@@ -35,7 +39,7 @@ public void obtain() {
@Override
public void atBattleStart() {
flash();
- this.counter = 2;
+ this.counter = POTION_LIMIT;
AbstractDungeon.actionManager.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
this.grayscale = false;
}
@@ -59,7 +63,7 @@ public void onUsePotion() {
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + POTION_LIMIT + DESCRIPTIONS[2] + POTION_LIMIT + DESCRIPTIONS[3];
}
}
diff --git a/src/main/java/hermit/relics/BlackPowder.java b/src/main/java/hermit/relics/BlackPowder.java
index a0a3d782e..af97e9e1e 100644
--- a/src/main/java/hermit/relics/BlackPowder.java
+++ b/src/main/java/hermit/relics/BlackPowder.java
@@ -14,12 +14,15 @@ public class BlackPowder extends CustomRelic {
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("black_powder.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("black_powder_outline.png"));
+ //aoe damage dealt
+ public static final int OOMPH = 2;
+
public BlackPowder() {
super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.FLAT);
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + OOMPH + DESCRIPTIONS[1];
}
}
\ No newline at end of file
diff --git a/src/main/java/hermit/relics/BloodyTooth.java b/src/main/java/hermit/relics/BloodyTooth.java
index 96ff154f2..a7856680d 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;
@@ -19,20 +21,27 @@ public BloodyTooth() {
super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.FLAT);
}
+ //variables
+ private static final int HEALING = 7;
+ private static final int GOLD = 35;
+
public void onVictory(){
if ((AbstractDungeon.getCurrRoom()).eliteTrigger)
{
this.flash();
if (AbstractDungeon.player.currentHealth > 0) {
- AbstractDungeon.player.heal(7);
+ AbstractDungeon.player.heal(HEALING);
}
- AbstractDungeon.player.gainGold(35);
+ AbstractDungeon.player.gainGold(GOLD);
}
}
+ 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];
+ return DESCRIPTIONS[0] + HEALING + DESCRIPTIONS[1] + GOLD + DESCRIPTIONS[2];
}
-
}
diff --git a/src/main/java/hermit/relics/BrassTacks.java b/src/main/java/hermit/relics/BrassTacks.java
index 77798cc41..7b4bfd99c 100644
--- a/src/main/java/hermit/relics/BrassTacks.java
+++ b/src/main/java/hermit/relics/BrassTacks.java
@@ -22,15 +22,18 @@ public BrassTacks() {
super(ID, IMG, OUTLINE, RelicTier.COMMON, LandingSound.CLINK);
}
+ //variables
+ private static final int BLOCK = 2;
+
public void atBattleStart() {
this.flash();
- this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new MetallicizePower(AbstractDungeon.player, 2), 2));
+ this.addToTop(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new MetallicizePower(AbstractDungeon.player, BLOCK), BLOCK));
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + BLOCK + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/hermit/relics/CharredGlove.java b/src/main/java/hermit/relics/CharredGlove.java
index 328a60d98..fe9506208 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;
@@ -36,10 +37,17 @@ public CharredGlove() {
super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.FLAT);
}
+ //vigor gain per turn
+ private static final int AMOUNT = 3;
+
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 basically identical.
+ vigor(AMOUNT);
}
}
@@ -49,7 +57,7 @@ public void onCardDraw(AbstractCard card) {
// Description
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/hermit/relics/ClaspedLocket.java b/src/main/java/hermit/relics/ClaspedLocket.java
index 4db0dae4c..f0fc3c405 100644
--- a/src/main/java/hermit/relics/ClaspedLocket.java
+++ b/src/main/java/hermit/relics/ClaspedLocket.java
@@ -28,6 +28,11 @@ public ClaspedLocket() {
super(ID, IMG, OUTLINE, RelicTier.BOSS, LandingSound.FLAT);
}
+
+ //variables
+ private static final int INJURIES_ADDED = 2;
+ private static final int DRAW = 2;
+
@Override
public void obtain() {
if (AbstractDungeon.player.hasRelic(Memento.ID)) {
@@ -49,8 +54,11 @@ public void onCardDraw(AbstractCard card) {
if (card.type == AbstractCard.CardType.CURSE) {
this.flash();
+ this.addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
this.canTrigger = false;
- this.addToTop(new DrawCardAction(AbstractDungeon.player, 2));
+ // visual feedback so the player can tell if it triggered that turn
+ stopPulse();
+ this.addToTop(new DrawCardAction(AbstractDungeon.player, DRAW));
this.addToTop(new ExhaustSpecificCardAction(card,AbstractDungeon.player.hand));
}
@@ -62,8 +70,15 @@ public boolean canSpawn() {
public void atTurnStart() {
this.canTrigger = true;
+ beginLongPulse(); //visual feedback
+ }
+
+ @Override
+ public void onVictory() {
+ stopPulse();
}
+
public void update() {
super.update();
@@ -71,7 +86,7 @@ public void update() {
cardsReceived = true;
CardCrawlGame.sound.play("NECRONOMICON");
CardGroup curseaddgroup = new CardGroup(CardGroup.CardGroupType.UNSPECIFIED);
- for (int aaa = 0; aaa < 2; aaa++) {
+ for (int aaa = 0; aaa < INJURIES_ADDED; aaa++) {
AbstractCard InjuryCard = new Injury();
curseaddgroup.addToBottom(InjuryCard.makeCopy());
}
@@ -81,6 +96,6 @@ public void update() {
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + DRAW + DESCRIPTIONS[2] + INJURIES_ADDED + DESCRIPTIONS[3];
}
}
diff --git a/src/main/java/hermit/relics/RedScarf.java b/src/main/java/hermit/relics/RedScarf.java
index 9c808aefb..6616ce05d 100644
--- a/src/main/java/hermit/relics/RedScarf.java
+++ b/src/main/java/hermit/relics/RedScarf.java
@@ -23,6 +23,9 @@ public RedScarf() {
super(ID, IMG, OUTLINE, RelicTier.RARE, LandingSound.MAGICAL);
}
+ //variables
+ private static final int BLOCK = 3;
+
@Override
public boolean onApplyPower(AbstractPower var1, AbstractCreature var2, AbstractCreature var3)
{
@@ -31,7 +34,7 @@ public boolean onApplyPower(AbstractPower var1, AbstractCreature var2, AbstractC
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
flash();
- this.addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, 3));
+ this.addToBot(new GainBlockAction(AbstractDungeon.player, AbstractDungeon.player, BLOCK));
}
return true;
@@ -39,7 +42,7 @@ public boolean onApplyPower(AbstractPower var1, AbstractCreature var2, AbstractC
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + BLOCK + DESCRIPTIONS[1];
}
}
diff --git a/src/main/java/hermit/relics/StraightRazor.java b/src/main/java/hermit/relics/StraightRazor.java
index 19987752e..91a111ca7 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;
@@ -18,6 +20,10 @@ public class StraightRazor extends CustomRelic implements OnRemoveCardFromMaster
private static final Texture IMG = TextureLoader.getTexture(makeRelicPath("straight_razor.png"));
private static final Texture OUTLINE = TextureLoader.getTexture(makeRelicOutlinePath("straight_razor_outline.png"));
+
+ //variables
+ private static final int HEALING = 15;
+
public StraightRazor() {
super(ID, IMG, OUTLINE, RelicTier.UNCOMMON, LandingSound.CLINK);
}
@@ -26,12 +32,15 @@ public StraightRazor() {
public void onRemoveCardFromMasterDeck(AbstractCard var1){
this.flash();
this.addToTop(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- AbstractDungeon.player.heal(15);
+ AbstractDungeon.player.heal(HEALING);
+ }
+
+ public boolean canSpawn() {
+ return Settings.isEndless || (AbstractDungeon.floorNum <= 48); // cannot appear in act 4
}
@Override
public String getUpdatedDescription() {
- return DESCRIPTIONS[0];
+ return DESCRIPTIONS[0] + HEALING + DESCRIPTIONS[1];
}
-
}
diff --git a/src/main/java/reskinContent/reskinContent.java b/src/main/java/reskinContent/reskinContent.java
index 27bfe7934..4033a517d 100644
--- a/src/main/java/reskinContent/reskinContent.java
+++ b/src/main/java/reskinContent/reskinContent.java
@@ -73,18 +73,21 @@ public reskinContent() {
public static String getLanguageString() {
String language;
switch (Settings.language) {
+ case PTB:
+ language = "ptb";
+ break;
case ZHS:
language = "zhs";
break;
-// case ZHT:
-// language = "zht";
-// break;
+ case ZHT:
+ language = "zht";
+ break;
case RUS:
language = "rus";
break;
-// case FRA:
-// language = "fra";
-// break;
+ case FRA:
+ language = "fra";
+ break;
case KOR:
language = "kor";
break;
diff --git a/src/main/java/reskinContent/skinCharacter/GremlinSkin.java b/src/main/java/reskinContent/skinCharacter/GremlinSkin.java
new file mode 100644
index 000000000..f2d9ef257
--- /dev/null
+++ b/src/main/java/reskinContent/skinCharacter/GremlinSkin.java
@@ -0,0 +1 @@
+//there's nothing here!
\ No newline at end of file
diff --git a/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java b/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
index 90f70d14a..13f0c2f39 100644
--- a/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
+++ b/src/main/java/slimebound/actions/ExhaustToHandDirectlyAction.java
@@ -1,5 +1,6 @@
package slimebound.actions;
+import basemod.BaseMod;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
@@ -16,7 +17,7 @@ public ExhaustToHandDirectlyAction(AbstractCard card) {
public void update() {
if (this.duration == Settings.ACTION_DUR_FAST) {// 19
- if ((AbstractDungeon.player.discardPile.contains(this.card)) && AbstractDungeon.player.hand.size() < 10) {// 20 21
+ if ((AbstractDungeon.player.discardPile.contains(this.card)) && AbstractDungeon.player.hand.size() < BaseMod.MAX_HAND_SIZE) {// 20 21
AbstractDungeon.player.hand.addToHand(this.card);// 22
this.card.unhover();// 23
this.card.setAngle(0.0F, true);// 24
diff --git a/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java b/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
index f49f62d34..3f69c24be 100644
--- a/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
+++ b/src/main/java/slimebound/actions/MakeTempCardInHandActionReduceCost.java
@@ -1,5 +1,6 @@
package slimebound.actions;
+import basemod.BaseMod;
import com.badlogic.gdx.math.MathUtils;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.core.Settings;
@@ -61,9 +62,9 @@ public void update() {
int handAmount = this.amount;
- if (this.amount + AbstractDungeon.player.hand.size() > 10) {
+ if (this.amount + AbstractDungeon.player.hand.size() > BaseMod.MAX_HAND_SIZE) {
AbstractDungeon.player.createHandIsFullDialog();
- discardAmount = this.amount + AbstractDungeon.player.hand.size() - 10;
+ discardAmount = this.amount + AbstractDungeon.player.hand.size() - BaseMod.MAX_HAND_SIZE;
handAmount -= discardAmount;
}
diff --git a/src/main/java/slimebound/actions/SlimeAutoAttack.java b/src/main/java/slimebound/actions/SlimeAutoAttack.java
index f37cda518..bad22e3fe 100644
--- a/src/main/java/slimebound/actions/SlimeAutoAttack.java
+++ b/src/main/java/slimebound/actions/SlimeAutoAttack.java
@@ -166,7 +166,6 @@ public void update() {
if (this.CultistBuff) {
CardCrawlGame.sound.playA("VO_CULTIST_1A", .3f);
AbstractDungeon.actionManager.addToTop(new SlimeAutoCultistBuff(1, this.slime));
-
}
if (slime instanceof ShieldSlime)
@@ -174,7 +173,6 @@ public void update() {
if (this.hitsAll) {
AbstractDungeon.actionManager.addToTop(new DamageAllEnemiesAction(AbstractDungeon.player, DamageInfo.createDamageMatrix(this.damage, true, true), DamageInfo.DamageType.THORNS, AttackEffect.POISON));
-
} else {
AbstractDungeon.actionManager.addToTop(new DamageAction(mo,
new DamageInfo(AbstractDungeon.player, this.damage, DamageInfo.DamageType.THORNS),
diff --git a/src/main/java/slimebound/cards/AbstractSlimeboundCard.java b/src/main/java/slimebound/cards/AbstractSlimeboundCard.java
index d57d3357b..727164eaa 100644
--- a/src/main/java/slimebound/cards/AbstractSlimeboundCard.java
+++ b/src/main/java/slimebound/cards/AbstractSlimeboundCard.java
@@ -1,6 +1,7 @@
package slimebound.cards;
import basemod.abstracts.CustomCard;
+import champ.relics.DefensiveTrainingManual;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
@@ -98,7 +99,7 @@ public void applyPowers() {
super.applyPowers();
int base = baseSelfDamage;
if (AbstractDungeon.player.hasRelic(SelfDamagePreventRelic.ID)) {
- base -= 3;
+ base -= SelfDamagePreventRelic.AMOUNT;
}
if (AbstractDungeon.player.hasPower(TackleModifyDamagePower.POWER_ID)) {
base += AbstractDungeon.player.getPower(TackleModifyDamagePower.POWER_ID).amount;
diff --git a/src/main/java/slimebound/cards/DivideAndConquer.java b/src/main/java/slimebound/cards/DivideAndConquer.java
index bf838d9a0..108221cb5 100644
--- a/src/main/java/slimebound/cards/DivideAndConquer.java
+++ b/src/main/java/slimebound/cards/DivideAndConquer.java
@@ -24,6 +24,7 @@
import slimebound.actions.TendrilFlailAction;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -56,6 +57,7 @@ public DivideAndConquer() {
this.exhaust = true;
this.isMultiDamage = true;
baseDamage = 10;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "DivideAndConquer.png");
}
diff --git a/src/main/java/slimebound/cards/FirmFortitude.java b/src/main/java/slimebound/cards/FirmFortitude.java
index 2556671a8..94a041c81 100644
--- a/src/main/java/slimebound/cards/FirmFortitude.java
+++ b/src/main/java/slimebound/cards/FirmFortitude.java
@@ -13,6 +13,7 @@
import slimebound.SlimeboundMod;
import slimebound.patches.AbstractCardEnum;
import slimebound.powers.PotencyPower;
+import sneckomod.SneckoMod;
public class FirmFortitude extends AbstractSlimeboundCard {
@@ -41,6 +42,7 @@ public FirmFortitude() {
baseMagicNumber = magicNumber = 2;
SlimeboundMod.loadJokeCardImage(this, "FirmFortitude.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
@@ -51,18 +53,18 @@ public void use(AbstractPlayer p, AbstractMonster m) {
}
- @Override
- public boolean canUse(AbstractPlayer p, AbstractMonster m) {
- if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
- if (AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount < 0) {
- if (!this.hasTag(expansionContentMod.UNPLAYABLE))
- this.tags.add(expansionContentMod.UNPLAYABLE);
- return false;
- }
- }
- this.tags.remove(expansionContentMod.UNPLAYABLE);
- return super.canUse(p, m);
- }
+ // @Override
+ // public boolean canUse(AbstractPlayer p, AbstractMonster m) {
+ // if (AbstractDungeon.player.hasPower(StrengthPower.POWER_ID)) {
+ // if (AbstractDungeon.player.getPower(StrengthPower.POWER_ID).amount < 0) {
+ // if (!this.hasTag(expansionContentMod.UNPLAYABLE))
+ // this.tags.add(expansionContentMod.UNPLAYABLE);
+ // return false;
+ // }
+ // }
+ // this.tags.remove(expansionContentMod.UNPLAYABLE);
+ // return super.canUse(p, m);
+ // }
public AbstractCard makeCopy() {
return new FirmFortitude();
diff --git a/src/main/java/slimebound/cards/FormOfPuddle.java b/src/main/java/slimebound/cards/FormOfPuddle.java
index 317a80c49..4efdf9c0c 100644
--- a/src/main/java/slimebound/cards/FormOfPuddle.java
+++ b/src/main/java/slimebound/cards/FormOfPuddle.java
@@ -20,8 +20,9 @@ public class FormOfPuddle extends AbstractSlimeboundCard {
private static final CardStrings cardStrings;
public FormOfPuddle() {
- super(ID, cardStrings.NAME, IMG_PATH, 3, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.SLIMEBOUND, CardRarity.RARE, CardTarget.SELF);
+ super(ID, cardStrings.NAME, IMG_PATH, 2, cardStrings.DESCRIPTION, CardType.SKILL, AbstractCardEnum.SLIMEBOUND, CardRarity.RARE, CardTarget.SELF);
this.magicNumber = this.baseMagicNumber = 1;
+ isEthereal = true;
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "FormOfPuddle.png");
}
@@ -36,7 +37,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeBaseCost(2);
+ upgradeBaseCost(1);
}
}
diff --git a/src/main/java/slimebound/cards/LevelUp.java b/src/main/java/slimebound/cards/LevelUp.java
index 2463b9199..69e0cacc7 100644
--- a/src/main/java/slimebound/cards/LevelUp.java
+++ b/src/main/java/slimebound/cards/LevelUp.java
@@ -36,7 +36,7 @@ public class LevelUp extends AbstractSlimeboundCard {
public LevelUp() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- this.magicNumber = this.baseMagicNumber = 1;
+ this.magicNumber = this.baseMagicNumber = 2;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/MassFeed.java b/src/main/java/slimebound/cards/MassFeed.java
index caa740cef..e07314ce5 100644
--- a/src/main/java/slimebound/cards/MassFeed.java
+++ b/src/main/java/slimebound/cards/MassFeed.java
@@ -43,7 +43,7 @@ public MassFeed() {
this.tags.add(CardTags.HEALING);
this.baseDamage = 10;
- this.magicNumber = this.baseMagicNumber = 3;
+ this.magicNumber = this.baseMagicNumber = 2;
this.exhaust = true;
this.isMultiDamage = true;
diff --git a/src/main/java/slimebound/cards/MassRepurpose.java b/src/main/java/slimebound/cards/MassRepurpose.java
index d6013cecd..b4f6cfa23 100644
--- a/src/main/java/slimebound/cards/MassRepurpose.java
+++ b/src/main/java/slimebound/cards/MassRepurpose.java
@@ -34,7 +34,7 @@ public class MassRepurpose extends AbstractSlimeboundCard {
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
private static final CardStrings cardStrings;
- private static final int COST = 1;
+ private static final int COST = 0;
public static String UPGRADED_DESCRIPTION;
static {
@@ -51,7 +51,7 @@ public MassRepurpose() {
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "MassRepurpose.png");
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
// this.tags.add(CardTags.HEALING);
@@ -64,7 +64,10 @@ public void use(AbstractPlayer p, AbstractMonster m) {
SlimeboundMod.spawnSpecialistSlime();
}
}
- if (upgraded) AbstractDungeon.actionManager.addToBottom(new TriggerSlimeAttacksAction(p));
+ if (upgraded) {
+ AbstractDungeon.actionManager.addToBottom(new TriggerSlimeAttacksAction(p));
+ checkMinionMaster();
+ }
}
public void upgrade() {
diff --git a/src/main/java/slimebound/cards/MinionMaster.java b/src/main/java/slimebound/cards/MinionMaster.java
index ca59673ad..ae1594325 100644
--- a/src/main/java/slimebound/cards/MinionMaster.java
+++ b/src/main/java/slimebound/cards/MinionMaster.java
@@ -23,7 +23,7 @@ public class MinionMaster extends AbstractSlimeboundCard {
private static final CardType TYPE = CardType.POWER;
private static final CardRarity RARITY = CardRarity.RARE;
private static final CardTarget TARGET = CardTarget.SELF;
- private static final int COST = 2;
+ private static final int COST = 1;
public static String UPGRADED_DESCRIPTION;
private static int upgradedamount = 1;
@@ -36,7 +36,7 @@ public class MinionMaster extends AbstractSlimeboundCard {
public MinionMaster() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.magicNumber = this.baseMagicNumber = 1;
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/OneTwoCombo.java b/src/main/java/slimebound/cards/OneTwoCombo.java
index 449857bae..db0e5cbcf 100644
--- a/src/main/java/slimebound/cards/OneTwoCombo.java
+++ b/src/main/java/slimebound/cards/OneTwoCombo.java
@@ -36,7 +36,7 @@ public class OneTwoCombo extends AbstractSlimeboundCard {
public OneTwoCombo() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- baseDamage = 3;
+ baseDamage = 4;
SlimeboundMod.loadJokeCardImage(this, "OneTwoCombo.png");
// exhaust = true;
}
@@ -47,17 +47,17 @@ public void onSplit() {
public void use(AbstractPlayer p, AbstractMonster m) {
addToBot(new DamageAction(m, new DamageInfo(p, damage, damageTypeForTurn), AbstractGameAction.AttackEffect.SLASH_HEAVY));
- if (upgraded) addToBot(new CommandAction());
-
-
+ addToBot(new CommandAction());
+ // if (upgraded) addToBot(new CommandAction());
checkMinionMaster();
}
public void upgrade() {
if (!this.upgraded) {
upgradeName();
- this.rawDescription = UPGRADED_DESCRIPTION;
- this.initializeDescription();
+ upgradeDamage(3);
+ //this.rawDescription = UPGRADED_DESCRIPTION;
+ // this.initializeDescription();
}
}
}
diff --git a/src/main/java/slimebound/cards/OozeBath.java b/src/main/java/slimebound/cards/OozeBath.java
index d735a9c7a..e30ded9cd 100644
--- a/src/main/java/slimebound/cards/OozeBath.java
+++ b/src/main/java/slimebound/cards/OozeBath.java
@@ -47,7 +47,7 @@ public OozeBath() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
- this.magicNumber = this.baseMagicNumber = 6;
+ this.slimed = this.baseSlimed = 6;
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "OozeBath.png");
@@ -55,10 +55,7 @@ public OozeBath() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new GoopPerTurnPower(m, magicNumber), magicNumber, true, AbstractGameAction.AttackEffect.NONE));
-
-
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new GoopPerTurnPower(m, this.slimed), this.slimed, true, AbstractGameAction.AttackEffect.NONE));
}
public AbstractCard makeCopy() {
@@ -72,7 +69,7 @@ public void upgrade() {
if (!this.upgraded) {
upgradeName();
- upgradeMagicNumber(3);
+ upgradeSlimed(3);
}
diff --git a/src/main/java/slimebound/cards/Overexert.java b/src/main/java/slimebound/cards/Overexert.java
index 7eec9a10b..b6bd92034 100644
--- a/src/main/java/slimebound/cards/Overexert.java
+++ b/src/main/java/slimebound/cards/Overexert.java
@@ -55,7 +55,7 @@ public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new VFXAction(p, new BorderFlashEffect(Color.GREEN, true), 0.05F, true));
- AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new PotencyPower(p, p, 4), 4));
+ AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new PotencyPower(p, p, 5), 5));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new LoseSlimesPower(p, p, this.magicNumber), this.magicNumber));
if (upgraded) addToBot(new CommandAction());
diff --git a/src/main/java/slimebound/cards/PrepareCrush.java b/src/main/java/slimebound/cards/PrepareCrush.java
index b1aae0dc3..621edee7b 100644
--- a/src/main/java/slimebound/cards/PrepareCrush.java
+++ b/src/main/java/slimebound/cards/PrepareCrush.java
@@ -11,6 +11,7 @@
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.MegaSpeechBubble;
+import expansioncontent.expansionContentMod;
import slimebound.SlimeboundMod;
import slimebound.patches.AbstractCardEnum;
import slimebound.powers.EnergizedSlimeboundPower;
@@ -70,7 +71,7 @@ public void upgrade() {
AbstractCard q = new SlimeCrush();
q.upgrade();
cardsToPreview = q;
-
+ upgradeMagicNumber(2);
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
}
diff --git a/src/main/java/slimebound/cards/PressTheAttack.java b/src/main/java/slimebound/cards/PressTheAttack.java
index 5cb54e2a4..a669b379a 100644
--- a/src/main/java/slimebound/cards/PressTheAttack.java
+++ b/src/main/java/slimebound/cards/PressTheAttack.java
@@ -48,18 +48,10 @@ public PressTheAttack() {
}
- @Override
- public void triggerOnGlowCheck() {
- slimedGlowCheck();
- }
-
public void use(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
- if (m.hasPower(SlimedPower.POWER_ID)) {
addToBot(new CommandAction());
if (upgraded) addToBot(new CommandAction());
- }
-
checkMinionMaster();
}
diff --git a/src/main/java/slimebound/cards/ProtectTheBoss.java b/src/main/java/slimebound/cards/ProtectTheBoss.java
index 1a5690488..9101daeba 100644
--- a/src/main/java/slimebound/cards/ProtectTheBoss.java
+++ b/src/main/java/slimebound/cards/ProtectTheBoss.java
@@ -33,12 +33,13 @@ public class ProtectTheBoss extends AbstractSlimeboundCard {
NAME = cardStrings.NAME;
DESCRIPTION = cardStrings.DESCRIPTION;
UPGRADED_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
+
}
public ProtectTheBoss() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
//this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 1;
SlimeboundMod.loadJokeCardImage(this, "ProtectTheBoss.png");
diff --git a/src/main/java/slimebound/cards/Repurpose.java b/src/main/java/slimebound/cards/Repurpose.java
index 12a970c1d..401e75e42 100644
--- a/src/main/java/slimebound/cards/Repurpose.java
+++ b/src/main/java/slimebound/cards/Repurpose.java
@@ -46,6 +46,7 @@ public Repurpose() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
this.baseMagicNumber = magicNumber = 2;
exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "Repurpose.png");
// this.tags.add(SneckoMod.BANNEDFORSNECKO);
diff --git a/src/main/java/slimebound/cards/ServeAndProtect.java b/src/main/java/slimebound/cards/ServeAndProtect.java
index b673ffa28..877621cc5 100644
--- a/src/main/java/slimebound/cards/ServeAndProtect.java
+++ b/src/main/java/slimebound/cards/ServeAndProtect.java
@@ -21,6 +21,7 @@
import slimebound.actions.TendrilFlailAction;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
import java.util.ArrayList;
@@ -55,6 +56,7 @@ public ServeAndProtect() {
baseMagicNumber = magicNumber = 1;
baseBlock = block = 10;
this.exhaust = true;
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
SlimeboundMod.loadJokeCardImage(this, "ServeAndProtect.png");
}
diff --git a/src/main/java/slimebound/cards/SlimeBrawl.java b/src/main/java/slimebound/cards/SlimeBrawl.java
index 2b6bcc260..09ce33ace 100644
--- a/src/main/java/slimebound/cards/SlimeBrawl.java
+++ b/src/main/java/slimebound/cards/SlimeBrawl.java
@@ -11,6 +11,7 @@
import slimebound.SlimeboundMod;
import slimebound.orbs.SpawnedSlime;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
public class SlimeBrawl extends AbstractSlimeboundCard {
@@ -46,6 +47,7 @@ public SlimeBrawl() {
this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SlimeBrawl.png");
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
}
diff --git a/src/main/java/slimebound/cards/SlimeCrush.java b/src/main/java/slimebound/cards/SlimeCrush.java
index 5155352c8..b3c47d8a7 100644
--- a/src/main/java/slimebound/cards/SlimeCrush.java
+++ b/src/main/java/slimebound/cards/SlimeCrush.java
@@ -69,7 +69,7 @@ public AbstractCard makeCopy() {
public void upgrade() {
if (!this.upgraded) {
upgradeName();
-// upgradeDamage(5);
+ // upgradeDamage(10);
this.target = CardTarget.ALL_ENEMY;
this.rawDescription = UPGRADED_DESCRIPTION;
this.initializeDescription();
diff --git a/src/main/java/slimebound/cards/SlimeTap.java b/src/main/java/slimebound/cards/SlimeTap.java
index 2ec58fdb6..a1acc33f6 100644
--- a/src/main/java/slimebound/cards/SlimeTap.java
+++ b/src/main/java/slimebound/cards/SlimeTap.java
@@ -45,7 +45,7 @@ public SlimeTap() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 2;
SlimeboundMod.loadJokeCardImage(this, "SlimeTap.png");
diff --git a/src/main/java/slimebound/cards/Split.java b/src/main/java/slimebound/cards/Split.java
index ac8949176..b65edaf9d 100644
--- a/src/main/java/slimebound/cards/Split.java
+++ b/src/main/java/slimebound/cards/Split.java
@@ -3,9 +3,12 @@
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
+import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import slimebound.SlimeboundMod;
+import slimebound.actions.CommandAction;
+import slimebound.actions.SlimeSpawnAction;
import slimebound.patches.AbstractCardEnum;
@@ -20,7 +23,11 @@ public Split() {
}
public void use(AbstractPlayer p, AbstractMonster m) {
- SlimeboundMod.spawnNormalSlime();
+ //SlimeboundMod.spawnNormalSlime();
+ AbstractDungeon.actionManager.addToBottom(new SlimeSpawnAction(new slimebound.orbs.PoisonSlime(), false, true, 0, 0));
+ addToBot(new CommandAction());
+ checkMinionMaster();
+ // what if... not random??????
//Forever shall this code remain commented here. A legacy to the origins of how bad Mayhem was at coding when this all began.
/* for (int i = 0; i < magicNumber; i++) {
diff --git a/src/main/java/slimebound/cards/SplitAcid.java b/src/main/java/slimebound/cards/SplitAcid.java
index 86ffbec3e..de1e93e62 100644
--- a/src/main/java/slimebound/cards/SplitAcid.java
+++ b/src/main/java/slimebound/cards/SplitAcid.java
@@ -41,7 +41,7 @@ public SplitAcid() {
this.baseDamage = 7;
- this.exhaust = true;
+ // this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 2;
this.isMultiDamage = true;
SlimeboundMod.loadJokeCardImage(this, "SplitAcid.png");
diff --git a/src/main/java/slimebound/cards/SplitBruiser.java b/src/main/java/slimebound/cards/SplitBruiser.java
index 3ef6f059f..88b4ece6e 100644
--- a/src/main/java/slimebound/cards/SplitBruiser.java
+++ b/src/main/java/slimebound/cards/SplitBruiser.java
@@ -40,12 +40,11 @@ public SplitBruiser() {
this.baseDamage = 9;
this.magicNumber = this.baseMagicNumber = 2;
- this.exhaust = true;
+ // this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitBruiser.png");
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
int bonus = 0;
//com.megacrit.cardcrawl.dungeons.AbstractDungeon.actionManager.addToBottom(new com.megacrit.cardcrawl.actions.common.DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
diff --git a/src/main/java/slimebound/cards/SplitLeeching.java b/src/main/java/slimebound/cards/SplitLeeching.java
index 5c84d3816..33f5c5f17 100644
--- a/src/main/java/slimebound/cards/SplitLeeching.java
+++ b/src/main/java/slimebound/cards/SplitLeeching.java
@@ -40,7 +40,7 @@ public SplitLeeching() {
this.baseBlock = 8;
this.magicNumber = this.baseMagicNumber = 2;
- this.exhaust = true;
+ //this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitLeeching.png");
}
diff --git a/src/main/java/slimebound/cards/SplitLicking.java b/src/main/java/slimebound/cards/SplitLicking.java
index 115e363a8..d91d42ee0 100644
--- a/src/main/java/slimebound/cards/SplitLicking.java
+++ b/src/main/java/slimebound/cards/SplitLicking.java
@@ -44,7 +44,7 @@ public SplitLicking() {
this.magicNumber = this.baseMagicNumber = 2;
this.slimed = this.baseSlimed = 8;
- this.exhaust = true;
+ //this.exhaust = true;
SlimeboundMod.loadJokeCardImage(this, "SplitMire.png");
}
diff --git a/src/main/java/slimebound/cards/Tackle.java b/src/main/java/slimebound/cards/Tackle.java
index 3a069bf58..1aba14af9 100644
--- a/src/main/java/slimebound/cards/Tackle.java
+++ b/src/main/java/slimebound/cards/Tackle.java
@@ -39,7 +39,7 @@ public Tackle() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
tags.add(SlimeboundMod.TACKLE);
- this.baseDamage = 12;
+ this.baseDamage = 13;
baseSelfDamage = this.selfDamage = 3;
SlimeboundMod.loadJokeCardImage(this, "Tackle.png");
}
diff --git a/src/main/java/slimebound/cards/ViciousTackle.java b/src/main/java/slimebound/cards/ViciousTackle.java
index f3bc03db0..c2852a9ae 100644
--- a/src/main/java/slimebound/cards/ViciousTackle.java
+++ b/src/main/java/slimebound/cards/ViciousTackle.java
@@ -2,6 +2,7 @@
import com.megacrit.cardcrawl.actions.AbstractGameAction;
+import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
@@ -10,6 +11,7 @@
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.localization.CardStrings;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
+import com.megacrit.cardcrawl.vfx.combat.VerticalImpactEffect;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import slimebound.SlimeboundMod;
@@ -85,7 +87,9 @@ public float calculateModifiedCardDamage(AbstractPlayer player, AbstractMonster
}
public void use(AbstractPlayer p, AbstractMonster m) {
-
+ if (m != null) {
+ this.addToBot(new VFXAction(new VerticalImpactEffect(m.hb.cX + m.hb.width / 4.0F, m.hb.cY - m.hb.height / 4.0F)));
+ }
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new com.megacrit.cardcrawl.cards.DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));
if (!AbstractDungeon.player.hasPower(PreventTackleDamagePower.POWER_ID))
addToBot(new TackleSelfDamageAction(new DamageInfo(p, selfDamage, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.SMASH));
diff --git a/src/main/java/slimebound/cards/WasteNot.java b/src/main/java/slimebound/cards/WasteNot.java
index 6d0f5270c..47e5352d5 100644
--- a/src/main/java/slimebound/cards/WasteNot.java
+++ b/src/main/java/slimebound/cards/WasteNot.java
@@ -10,6 +10,7 @@
import slimebound.SlimeboundMod;
import slimebound.actions.OverexertionAction;
import slimebound.patches.AbstractCardEnum;
+import sneckomod.SneckoMod;
public class WasteNot extends AbstractSlimeboundCard {
@@ -39,7 +40,7 @@ public class WasteNot extends AbstractSlimeboundCard {
public WasteNot() {
super(ID, NAME, SlimeboundMod.getResourcePath(IMG_PATH), COST, DESCRIPTION, TYPE, AbstractCardEnum.SLIMEBOUND, RARITY, TARGET);
-
+ this.tags.add(SneckoMod.BANNEDFORSNECKO);
this.exhaust = true;
this.magicNumber = this.baseMagicNumber = 1;
SlimeboundMod.loadJokeCardImage(this, "WasteNot.png");
diff --git a/src/main/java/slimebound/events/ArtOfSlimeWar.java b/src/main/java/slimebound/events/ArtOfSlimeWar.java
index f79d51e72..1811b2e55 100644
--- a/src/main/java/slimebound/events/ArtOfSlimeWar.java
+++ b/src/main/java/slimebound/events/ArtOfSlimeWar.java
@@ -191,7 +191,7 @@ private void replaceAttacks() {
e = (AbstractCard) i.next();
cardsRemoved.add(e.cardID);
- } while (!(e.hasTag(BaseModCardTags.BASIC_STRIKE)));
+ } while (!(e.hasTag(AbstractCard.CardTags.STARTER_STRIKE)));
i.remove();
}
diff --git a/src/main/java/slimebound/orbs/AttackSlime.java b/src/main/java/slimebound/orbs/AttackSlime.java
index bd37baf0d..aa4d419c7 100644
--- a/src/main/java/slimebound/orbs/AttackSlime.java
+++ b/src/main/java/slimebound/orbs/AttackSlime.java
@@ -19,7 +19,7 @@ public class AttackSlime
public AttackSlime() {
- super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, false, true, 5, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/3.png"));
+ super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, false, true, 3, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/3.png"));
spawnVFX();
}
@@ -30,10 +30,8 @@ public void updateDescription() {
public void activateEffectUnique() {
-
-
AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.BLUNT_LIGHT, this, false, false, false, 0, false, 0, false));
-
+ AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.BLUNT_LIGHT, this, false, false, false, 0, false, 0, false));
}
diff --git a/src/main/java/slimebound/orbs/DrawingSlime.java b/src/main/java/slimebound/orbs/DrawingSlime.java
index afd068512..dcea2c1ca 100644
--- a/src/main/java/slimebound/orbs/DrawingSlime.java
+++ b/src/main/java/slimebound/orbs/DrawingSlime.java
@@ -20,15 +20,15 @@ public class DrawingSlime
public DrawingSlime() {
- super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, true, true, 3, 1, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/attackBuff.png"));
- this.debuffAmount = 1;
- this.extraFontColor = new Color(.75F, .75F, .75F, 1F);
+ super(ID, new Color(1.0F, 100F / 255F, 100F / 255F, 100F), atlasString, skeletonString, true, false, 3, 0, true, new Color(.45F, .58F, .58F, 1), SlimeFlareEffect.OrbFlareColor.AGGRESSIVE, new Texture("slimeboundResources/SlimeboundImages/orbs/attackBuff.png"));
+ //this.debuffAmount = 1;
+ //this.extraFontColor = new Color(.75F, .75F, .75F, 1F);
spawnVFX();
}
public void updateDescription() {
- this.description = this.descriptions[0] + this.passiveAmount + this.descriptions[1] + this.debuffAmount + this.descriptions[2];
+ this.description = this.descriptions[0] + this.passiveAmount + this.descriptions[1] + 1 + this.descriptions[2];
}
@@ -36,7 +36,7 @@ public void activateEffectUnique() {
AbstractDungeon.actionManager.addToBottom(new SlimeAutoAttack(AbstractDungeon.player, this.passiveAmount, AbstractGameAction.AttackEffect.LIGHTNING, this, false, false, false, 0, false, 0, false, false, false, false, false));
- AbstractDungeon.actionManager.addToBottom(new DrawCardAction(AbstractDungeon.player, debuffAmount));
+ AbstractDungeon.actionManager.addToBottom(new DrawCardAction(AbstractDungeon.player, 1));
}
diff --git a/src/main/java/slimebound/orbs/HexSlime.java b/src/main/java/slimebound/orbs/HexSlime.java
index 494581ecb..b9793a5cc 100644
--- a/src/main/java/slimebound/orbs/HexSlime.java
+++ b/src/main/java/slimebound/orbs/HexSlime.java
@@ -14,6 +14,7 @@
import slimebound.SlimeboundMod;
import slimebound.actions.SlimeAutoAttack;
import slimebound.vfx.SlimeFlareEffect;
+import theHexaghost.relics.CandleOfCauterizing;
public class HexSlime
@@ -34,14 +35,20 @@ public class HexSlime
public HexSlime() {
- super(ID, new Color(.65F, .65F, 1.0F, 100F), atlasString, skeletonString, true, false, 3, 5, false, new Color(.36F, .55F, .85F, 1), SlimeFlareEffect.OrbFlareColor.HEX, new Texture("slimeboundResources/SlimeboundImages/orbs/attackDebuff.png"));
+ super(ID, new Color(.65F, .65F, 1.0F, 100F), atlasString, skeletonString, true, false, 4, 6, false, new Color(.36F, .55F, .85F, 1), SlimeFlareEffect.OrbFlareColor.HEX, new Texture("slimeboundResources/SlimeboundImages/orbs/attackDebuff.png"));
this.x = (x * Settings.scale + (5F + MathUtils.random(-10.0F, 10.0F) * Settings.scale));
this.y = (y * Settings.scale + (-30F + MathUtils.random(-10.0F, 10.0F) * Settings.scale));
this.color = Color.CHARTREUSE.cpy();
this.extraFontColor = new Color(.5F, 1F, .5F, 1F);
this.color.a = 0.0F;
this.activated = true;
- this.debuffAmount = 5;
+ this.debuffAmount = 6;
+
+ //prismatic shard is a relic of all time
+ if(AbstractDungeon.player.hasRelic(CandleOfCauterizing.ID)){
+ debuffAmount = debuffAmount + CandleOfCauterizing.SOULBURN_BONUS_AMOUNT;
+ }
+
spawnVFX();
}
diff --git a/src/main/java/slimebound/orbs/PoisonSlime.java b/src/main/java/slimebound/orbs/PoisonSlime.java
index c514cbf01..24d8047f7 100644
--- a/src/main/java/slimebound/orbs/PoisonSlime.java
+++ b/src/main/java/slimebound/orbs/PoisonSlime.java
@@ -21,7 +21,7 @@ public PoisonSlime() {
}
public PoisonSlime(boolean topLevelVFX) {
- super(ID, new Color(.5F, 1.0F, .5F, 100F), atlasString, skeletonString, false, false, 3, 1, true, new Color(.58F, .81F, .35F, 1), SlimeFlareEffect.OrbFlareColor.POISON, new Texture("slimeboundResources/SlimeboundImages/orbs/4.png"));
+ super(ID, new Color(.5F, 1.0F, .5F, 100F), atlasString, skeletonString, false, false, 3, 0, true, new Color(.58F, .81F, .35F, 1), SlimeFlareEffect.OrbFlareColor.POISON, new Texture("slimeboundResources/SlimeboundImages/orbs/4.png"));
this.topSpawnVFX = topLevelVFX;
spawnVFX();
}
diff --git a/src/main/java/slimebound/orbs/SpawnedSlime.java b/src/main/java/slimebound/orbs/SpawnedSlime.java
index f5a5c118c..c77821453 100644
--- a/src/main/java/slimebound/orbs/SpawnedSlime.java
+++ b/src/main/java/slimebound/orbs/SpawnedSlime.java
@@ -287,7 +287,7 @@ public void applyFocus() {
if (power != null) {
this.passiveAmount = this.basePassiveAmount + power.amount + this.UniqueFocus + bonus;
- this.debuffAmount = this.debuffBaseAmount + (power.amount / 2) ;
+ this.debuffAmount = (int) Math.ceil(this.debuffBaseAmount + (power.amount / 2.0));
} else {
this.passiveAmount = this.basePassiveAmount + this.UniqueFocus + bonus;
@@ -465,7 +465,7 @@ public void render(SpriteBatch sb) {
public void renderText(SpriteBatch sb) {
- if (this.extraFontColor != null) {
+ if (this.extraFontColor != null){
float fontOffset = 26 * Settings.scale;
diff --git a/src/main/java/slimebound/potions/ThreeZeroPotion.java b/src/main/java/slimebound/potions/ThreeZeroPotion.java
index dc241326e..5d3402467 100644
--- a/src/main/java/slimebound/potions/ThreeZeroPotion.java
+++ b/src/main/java/slimebound/potions/ThreeZeroPotion.java
@@ -47,7 +47,7 @@ public void use(AbstractCreature target) {
for (int i = 0; i < this.potency; i++) {
while (var1.hasNext()) {
c3 = (AbstractCard) var1.next();
- if (c3.cost == 0) {
+ if (c3.cost == 0 && !c3.hasTag(AbstractCard.CardTags.HEALING)) {
list.add(c3);
}
}
@@ -56,7 +56,7 @@ public void use(AbstractCreature target) {
while (var1.hasNext()) {
c3 = (AbstractCard) var1.next();
- if (c3.cost == 0) {
+ if (c3.cost == 0 && !c3.hasTag(AbstractCard.CardTags.HEALING)) {
list.add(c3);
}
}
@@ -65,12 +65,12 @@ public void use(AbstractCreature target) {
while (var1.hasNext()) {
c3 = (AbstractCard) var1.next();
- if (c3.cost == 0) {
+ if (c3.cost == 0 && !c3.hasTag(AbstractCard.CardTags.HEALING)) {
list.add(c3);
}
}
- AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(list.get(cardRandomRng.random(list.size() - 1))));
+ AbstractDungeon.actionManager.addToBottom(new MakeTempCardInHandAction(list.get(potionRng.random(list.size() - 1))));
}
}
diff --git a/src/main/java/slimebound/powers/ComboAttackPower.java b/src/main/java/slimebound/powers/ComboAttackPower.java
index ce271aa36..93c04d328 100644
--- a/src/main/java/slimebound/powers/ComboAttackPower.java
+++ b/src/main/java/slimebound/powers/ComboAttackPower.java
@@ -12,6 +12,8 @@
import slimebound.actions.CommandAction;
import slimebound.actions.TrigggerSpecificSlimeAttackAction;
+import static downfall.cardmods.CommandMod.checkMinionMaster;
+
public class ComboAttackPower extends TwoAmountPower {
public static final String POWER_ID = "Slimebound:ComboAttackPower";
@@ -78,6 +80,7 @@ public void onAfterCardPlayed(AbstractCard usedCard) {
{
flash();
com.megacrit.cardcrawl.dungeons.AbstractDungeon.actionManager.addToBottom(new CommandAction());
+ checkMinionMaster(); // maybe this crashes idk lol
this.amount2--;
updateDescription();
}
diff --git a/src/main/java/slimebound/powers/CommandOnPlayPower.java b/src/main/java/slimebound/powers/CommandOnPlayPower.java
index 357f88b76..dfb30ab3b 100644
--- a/src/main/java/slimebound/powers/CommandOnPlayPower.java
+++ b/src/main/java/slimebound/powers/CommandOnPlayPower.java
@@ -16,6 +16,8 @@
import theHexaghost.HexaMod;
import downfall.util.TextureLoader;
+import static downfall.cardmods.CommandMod.checkMinionMaster;
+
public class CommandOnPlayPower extends AbstractPower implements CloneablePowerInterface {
public static final String POWER_ID = "Slimebound:CommandOnPlayPower";
@@ -46,6 +48,7 @@ public void onAfterCardPlayed(AbstractCard usedCard) {
if (o != null) {
addToBot(new TrigggerSpecificSlimeAttackAction(o));
}
+ checkMinionMaster(); // maybe this crashes idk lol
addToBot(new ReducePowerAction(AbstractDungeon.player, AbstractDungeon.player, this, 1));
}
diff --git a/src/main/java/slimebound/powers/PotencyPower.java b/src/main/java/slimebound/powers/PotencyPower.java
index a20f7d2ca..8a986ba1a 100644
--- a/src/main/java/slimebound/powers/PotencyPower.java
+++ b/src/main/java/slimebound/powers/PotencyPower.java
@@ -49,11 +49,14 @@ public PotencyPower(AbstractCreature owner, AbstractCreature source, int amount)
public void updateDescription() {
- this.description = (DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1]+ this.amount/2 + DESCRIPTIONS[2]);
-
+ if(this.amount<0){
+ this.type = PowerType.DEBUFF;
+ }else{
+ this.type = PowerType.BUFF;
+ }
+ this.description = (DESCRIPTIONS[0] + this.amount + DESCRIPTIONS[1]+ (int) Math.ceil((this.amount / 2.0)) + DESCRIPTIONS[2]);
}
-
}
diff --git a/src/main/java/slimebound/powers/SlimedPower.java b/src/main/java/slimebound/powers/SlimedPower.java
index c9c2e8577..83fd65f5c 100644
--- a/src/main/java/slimebound/powers/SlimedPower.java
+++ b/src/main/java/slimebound/powers/SlimedPower.java
@@ -67,8 +67,12 @@ public void stackPower(int stackAmount) {
}
- public float atDamageFinalReceive(float damage, DamageInfo.DamageType damageType) {
- return damageType == DamageInfo.DamageType.NORMAL ? damage + this.amount : damage;
+ public float atDamageReceive(float damage, DamageInfo.DamageType type) {
+ if (type == DamageInfo.DamageType.NORMAL) {
+ return damage +this.amount;
+ } else {
+ return damage;
+ }
}
diff --git a/src/main/java/slimebound/relics/AbsorbEndCombat.java b/src/main/java/slimebound/relics/AbsorbEndCombat.java
index 550fdde7f..4a3810514 100644
--- a/src/main/java/slimebound/relics/AbsorbEndCombat.java
+++ b/src/main/java/slimebound/relics/AbsorbEndCombat.java
@@ -11,6 +11,8 @@ public class AbsorbEndCombat extends CustomRelic {
public static final String ID = "Slimebound:AbsorbEndCombat";
public static final String IMG_PATH = "relics/heartofgoo.png";
public static final String OUTLINE_IMG_PATH = "relics/heartofgooOutline.png";
+
+ //Variables
private static final int HP_PER_SLURP = 2;
private static final int HP_PER_COMBAT = 8;
@@ -21,7 +23,7 @@ public AbsorbEndCombat() {
@Override
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0];
+ return this.DESCRIPTIONS[0] + HP_PER_SLURP + DESCRIPTIONS[1] + HP_PER_COMBAT + DESCRIPTIONS[2];
}
@Override
diff --git a/src/main/java/slimebound/relics/AbsorbEndCombatUpgraded.java b/src/main/java/slimebound/relics/AbsorbEndCombatUpgraded.java
index 241289ad0..1d7d274e6 100644
--- a/src/main/java/slimebound/relics/AbsorbEndCombatUpgraded.java
+++ b/src/main/java/slimebound/relics/AbsorbEndCombatUpgraded.java
@@ -22,6 +22,8 @@ public class AbsorbEndCombatUpgraded extends CustomRelic {
public static final String ID = "Slimebound:AbsorbEndCombatUpgraded";
public static final String IMG_PATH = "relics/heartofgooblack.png";
public static final String OUTLINE_IMG_PATH = "relics/heartofgooOutline.png";
+
+ //variables
private static final int HP_PER_SLURP = 3;
private static final int HP_PER_COMBAT = 15;
@@ -88,7 +90,7 @@ public String getUpdatedDescription() {
sb.append("[#").append(SlimeboundMod.placeholderColor.toString()).append("]");
}
- return DESCRIPTIONS[0] + sb.toString() + DESCRIPTIONS[1];
+ return DESCRIPTIONS[0] + sb.toString() + DESCRIPTIONS[1] + HP_PER_SLURP + DESCRIPTIONS[2] + HP_PER_COMBAT + DESCRIPTIONS[3];
}
diff --git a/src/main/java/slimebound/relics/PotencyRelic.java b/src/main/java/slimebound/relics/PotencyRelic.java
index 226de3bb2..206b249d1 100644
--- a/src/main/java/slimebound/relics/PotencyRelic.java
+++ b/src/main/java/slimebound/relics/PotencyRelic.java
@@ -33,7 +33,7 @@ public String getUpdatedDescription() {
public void atBattleStartPreDraw() {
flash();
addToBot(new RelicAboveCreatureAction(AbstractDungeon.player, this));
- addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PotencyPower(AbstractDungeon.player, AbstractDungeon.player, 2), 2));
+ addToBot(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PotencyPower(AbstractDungeon.player, AbstractDungeon.player, 1), 1));
}
public boolean canSpawn() {
diff --git a/src/main/java/slimebound/relics/PreparedRelic.java b/src/main/java/slimebound/relics/PreparedRelic.java
index 975616dd1..22c64c581 100644
--- a/src/main/java/slimebound/relics/PreparedRelic.java
+++ b/src/main/java/slimebound/relics/PreparedRelic.java
@@ -3,6 +3,7 @@
import basemod.abstracts.CustomRelic;
import com.badlogic.gdx.graphics.Texture;
import com.megacrit.cardcrawl.actions.common.RelicAboveCreatureAction;
+import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.ImageMaster;
import com.megacrit.cardcrawl.relics.AbstractRelic;
@@ -11,6 +12,8 @@
import downfall.util.TextureLoader;
import slimebound.actions.AddPreparedAction;
+import static downfall.patches.EvilModeCharacterSelect.evilMode;
+
public class PreparedRelic extends CustomRelic {
public static final String ID = "Slimebound:PreparedRelic";
public static final String IMG_PATH = "relics/slimedteaSet.png";
@@ -67,6 +70,12 @@ public void onEnterRoom(AbstractRoom room) {
}
}
+
+ public boolean canSpawn() {
+ return Settings.isEndless || (AbstractDungeon.floorNum <= 48 && !evilMode) || evilMode;
+ }
+
+
@Override
public AbstractRelic makeCopy() {
return new PreparedRelic();
diff --git a/src/main/java/slimebound/relics/SelfDamagePreventRelic.java b/src/main/java/slimebound/relics/SelfDamagePreventRelic.java
index 1ab3bbb0d..099264c96 100644
--- a/src/main/java/slimebound/relics/SelfDamagePreventRelic.java
+++ b/src/main/java/slimebound/relics/SelfDamagePreventRelic.java
@@ -10,6 +10,11 @@ public class SelfDamagePreventRelic extends CustomRelic {
public static final String IMG_PATH = "relics/protectiveGear.png";
public static final String OUTLINE_IMG_PATH = "relics/protectiveGearOutline.png";
+ //Protective Gear
+
+ //Variables
+ public static final int AMOUNT = 3;
+
public SelfDamagePreventRelic() {
super(ID, new Texture(SlimeboundMod.getResourcePath(IMG_PATH)), new Texture(SlimeboundMod.getResourcePath(OUTLINE_IMG_PATH)),
RelicTier.SHOP, LandingSound.MAGICAL);
@@ -17,7 +22,7 @@ public SelfDamagePreventRelic() {
@Override
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0];
+ return this.DESCRIPTIONS[0] + AMOUNT + DESCRIPTIONS[1];
}
diff --git a/src/main/java/slimebound/relics/StickyStick.java b/src/main/java/slimebound/relics/StickyStick.java
index a95da1e5c..41a2e6652 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;
@@ -15,8 +17,12 @@ public class StickyStick extends CustomRelic {
public static final String IMG_PATH = "relics/StickyStick.png";
public static final String IMG_PATH_LARGE = "relics/StickyStickLarge.png";
public static final String OUTLINE_IMG_PATH = "relics/StickyStickOutline.png";
- private static final int HP_PER_CARD = 1;
+
//Gelatinous Cube
+
+ //Variables
+ private static final int BLOCK_GAIN = 3;
+
public StickyStick() {
super(ID, new Texture(slimebound.SlimeboundMod.getResourcePath(IMG_PATH)), new Texture(slimebound.SlimeboundMod.getResourcePath(OUTLINE_IMG_PATH)),
RelicTier.UNCOMMON, LandingSound.SOLID);
@@ -26,13 +32,14 @@ public StickyStick() {
@Override
public String getUpdatedDescription() {
- return this.DESCRIPTIONS[0];
+ return this.DESCRIPTIONS[0] + BLOCK_GAIN + DESCRIPTIONS[1];
}
- 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 (card.type == AbstractCard.CardType.STATUS || card.type == AbstractCard.CardType.CURSE) {
+ flash();
+ addToBot(new GainBlockAction(AbstractDungeon.player, BLOCK_GAIN));
+ }
}
@Override
diff --git a/src/main/java/sneckomod/OffclassHelper.java b/src/main/java/sneckomod/OffclassHelper.java
index 69b8fb5b3..013b592df 100644
--- a/src/main/java/sneckomod/OffclassHelper.java
+++ b/src/main/java/sneckomod/OffclassHelper.java
@@ -26,7 +26,7 @@ public static void addToLists(AbstractUnknownCard c, ArrayList> predList = new ArrayList<>();
ArrayList> listList = new ArrayList<>();
diff --git a/src/main/java/sneckomod/SneckoMod.java b/src/main/java/sneckomod/SneckoMod.java
index 69d9f8760..aec8939ab 100644
--- a/src/main/java/sneckomod/SneckoMod.java
+++ b/src/main/java/sneckomod/SneckoMod.java
@@ -1,6 +1,12 @@
package sneckomod;
+import automaton.AutomatonChar;
import automaton.AutomatonMod;
+import automaton.cards.Deprecate;
+import automaton.cards.Invalidate;
+import automaton.cards.Undervolt;
+import awakenedOne.AwakenedOneChar;
+import awakenedOne.cards.*;
import basemod.BaseMod;
import basemod.ReflectionHacks;
import basemod.abstracts.CustomCard;
@@ -9,6 +15,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 +29,11 @@
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.*;
+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 +42,29 @@
import com.megacrit.cardcrawl.events.exordium.Sssserpent;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.random.Random;
+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.util.CardIgnore;
import downfall.util.TextureLoader;
+import expansioncontent.cards.DashGenerateEvil;
+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 +77,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 +91,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 +103,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,11 +128,17 @@ 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;
+ @SpireEnum
+ public static com.megacrit.cardcrawl.cards.AbstractCard.CardTags NO_TYPHOON;
public static Random identifyRng;
public static ArrayList validColors = new ArrayList<>();
- public static ArrayList allowedColors = new ArrayList<>(Arrays.asList("RED", "BLUE", "GREEN", "PURPLE", "GUARDIAN", "SLIMEBOUND", "HEXA_GHOST_PURPLE", "THE_CHAMP_GRAY", "THE_BRONZE_AUTOMATON", "GREMLIN", "HERMIT_YELLOW", "THE_COLLECTOR"));
+ public static ArrayList allowedColors = new ArrayList<>(Arrays.asList("RED", "BLUE", "GREEN", "PURPLE", "GUARDIAN", "SLIMEBOUND", "HEXA_GHOST_PURPLE", "THE_CHAMP_GRAY", "THE_BRONZE_AUTOMATON", "GREMLIN", "HERMIT_YELLOW", "THE_COLLECTOR", "AWAKENED_BLUE"));
public static ArrayList unknownClasses = new ArrayList<>();
public static boolean pureSneckoMode = false;
@@ -160,6 +197,7 @@ public class SneckoMod implements
private CustomUnlockBundle unlocks3;
private CustomUnlockBundle unlocks4;
+
public SneckoMod() {
BaseMod.subscribe(this);
@@ -170,7 +208,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 +215,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 +223,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 +308,12 @@ private static void autoAddCards()
// }
}
}
+ // THE SUPER IMPORTANT GIFT ARRAY
+ ArrayList> incomingGiftsList = new ArrayList<>();
+ //
+
+
+
@Deprecated
public static AbstractCard getOffClassCard() {
@@ -274,26 +326,334 @@ 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.isEmpty()) {
+ return new Madness();
+ }
+
+ return possList.get(AbstractDungeon.miscRng.random(possList.size() - 1)).makeCopy();
+ }
+
+ public static AbstractCard getOffClassCardMatchingPredicatePotionRng(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 == 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));
+
+ 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.isEmpty()) {
+ return new Madness();
+ }
+
+ return possList.get(AbstractDungeon.potionRng.random(possList.size() - 1)).makeCopy();
+ }
+
+
+ public static AbstractCard getOffClassCardMatchingPredicateRelicRng(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 == 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));
+
+ 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.isEmpty()) {
+ return new Madness();
+ }
+
+ return possList.get(AbstractDungeon.relicRng.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) ||
+ c.cardID.equals(BeamCell.ID) ||
+ c.cardID.equals(LockOn.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(AggressiveDefense.ID) ||
+ c.cardID.equals(Dazzle.ID) ||
+ c.cardID.equals(Exacerbate.ID) ||
+ c.cardID.equals(BrokenShin.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(Shatter.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) ||
+ //Awakened One Cards
+ c.cardID.equals(Scour.ID) ||
+ c.cardID.equals(SingularityShield.ID) ||
+ c.cardID.equals(Deathwish.ID) ||
+ c.cardID.equals(Gloomguard.ID) ||
+ c.cardID.equals(MirePit.ID) ||
+ c.cardID.equals(SludgeBomb.ID) ||
+ c.cardID.equals(SplitWide.ID) ||
+ c.cardID.equals(Spellshield.ID) ||
+ c.cardID.equals(WaveOfMiasma.ID) ||
+ c.cardID.equals(RavenStrike.ID) ||
+ c.cardID.equals(Siphon.ID) ||
+ c.cardID.equals(Nihil.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(ShieldThrow.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) ||
+ c.cardID.equals(FeatherVeil.ID) ||
+ c.cardID.equals(AwakenedForm.ID) ||
+ c.cardID.equals(DemonGlyph.ID) ||
+ c.cardID.equals(ProfaneStrike.ID) ||
+ c.cardID.equals(Unleash.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 &&
+ //Act 3 Bosses
+ c.color != AwakenedOneChar.Enums.AWAKENED_BLUE &&
+
+ //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.isEmpty()) {
+ return 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 +678,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 +712,42 @@ 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,
+ SneckoBoss.ID,
SleevedAce.ID,
CleanMud.ID,
- SuperSneckoEye.ID,
- UnknownEgg.ID,
BlankCard.ID,
+ SneckoTalon.ID,
+ SleevedAce.ID,
TheSnecko.Enums.THE_SNECKO
);
}
- public void addPotions() {
+ @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 +822,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 +831,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 +865,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 +916,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 +946,7 @@ public static void updateAllUnknownReplacements() {
@Override
public void receivePostUpdate() {
+ gifted = false;
if (!SneckoMod.openedStarterScreen) {
if (CardCrawlGame.isInARun() && downfallMod.readyToDoThing) {
SneckoMod.findAWayToTriggerThisAtGameStart();
@@ -606,4 +970,21 @@ public void receivePostUpdate() {
}
}
}
+
+ public static boolean gifted = false;
+
+ public static ArrayList> incomingPicks = new ArrayList<>();
+
+ public static void addGift(ArrayList incomingGift) {
+ incomingPicks.add(incomingGift);
+ }
+
+ public static void nextGift() {
+ System.out.println("Next called" + incomingPicks.size());
+ if (incomingPicks.size() > 0 && !gifted) {
+ gifted = true;
+ System.out.println(incomingPicks.get(0));
+ AbstractDungeon.cardRewardScreen.open(incomingPicks.remove(0), null, TEXT[2]);
+ }
+ }
}
diff --git a/src/main/java/sneckomod/TheSnecko.java b/src/main/java/sneckomod/TheSnecko.java
index b97b34fa2..9278b30e4 100644
--- a/src/main/java/sneckomod/TheSnecko.java
+++ b/src/main/java/sneckomod/TheSnecko.java
@@ -12,6 +12,7 @@
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.EnergyManager;
import com.megacrit.cardcrawl.core.Settings;
+import com.megacrit.cardcrawl.cutscenes.CutscenePanel;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import com.megacrit.cardcrawl.helpers.FontHelper;
@@ -19,6 +20,8 @@
import com.megacrit.cardcrawl.helpers.ScreenShake;
import com.megacrit.cardcrawl.localization.CharacterStrings;
import com.megacrit.cardcrawl.screens.CharSelectInfo;
+import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
+import com.megacrit.cardcrawl.vfx.scene.DefectVictoryNumberEffect;
import reskinContent.patches.CharacterSelectScreenPatches;
import reskinContent.reskinContent;
import sneckomod.cards.Defend;
@@ -27,8 +30,10 @@
import sneckomod.cards.TailWhip;
import sneckomod.cards.unknowns.*;
import sneckomod.relics.SneckoSoul;
+import sneckomod.vfx.SneckoVictoryNumberEffect;
import java.util.ArrayList;
+import java.util.List;
import static sneckomod.SneckoMod.*;
import static sneckomod.TheSnecko.Enums.SNECKO_CYAN;
@@ -112,14 +117,13 @@ public ArrayList getStartingDeck() {
retVal.add(Strike.ID);
retVal.add(Strike.ID);
retVal.add(Strike.ID);
+ retVal.add(Strike.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(Defend.ID);
retVal.add(TailWhip.ID);
retVal.add(SnekBite.ID);
- retVal.add(Unknown.ID);
- retVal.add(Unknown.ID);
return retVal;
}
@@ -207,6 +211,24 @@ public Texture getCustomModeCharacterButtonImage() {
*/
+
+ //this is a total meme ending lol
+ @Override
+ public List getCutscenePanels() {
+ List panels = new ArrayList();
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko1.png", "ATTACK_MAGIC_BEAM_SHORT"));
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko2.png"));
+ panels.add(new CutscenePanel("sneckomodResources/images/ending/snecko3.png"));
+ return panels;
+ }
+
+ @Override
+ public void updateVictoryVfx(ArrayList effects) {
+ if (effects.stream().filter(e -> e instanceof SneckoVictoryNumberEffect).count() < 8)
+ effects.add(new SneckoVictoryNumberEffect());
+ }
+
+
@Override
public String getSpireHeartText() {
return TEXT[1];
diff --git a/src/main/java/sneckomod/actions/AceOfWandsAction.java b/src/main/java/sneckomod/actions/AceOfWandsAction.java
new file mode 100644
index 000000000..7db24d66a
--- /dev/null
+++ b/src/main/java/sneckomod/actions/AceOfWandsAction.java
@@ -0,0 +1,42 @@
+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 sneckomod.powers.AceOfWandsPower;
+
+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;
+ }
+ if (AbstractDungeon.player.hasPower(AceOfWandsPower.POWER_ID)) {
+ this.addToTop(new GainBlockAction(p, p, amount));
+ }
+ this.isDone = true;
+ this.tickDuration();
+}
+ }
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/BabySneckoAttackAction.java b/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
index 46fd71ae4..c890c21d5 100644
--- a/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
+++ b/src/main/java/sneckomod/actions/BabySneckoAttackAction.java
@@ -21,7 +21,7 @@ public BabySneckoAttackAction(AbstractMonster m, BabySnecko b) {
public void update() {
this.b.baby.state.setAnimation(0, "boop", false);
this.b.baby.state.addAnimation(0, "idle", true, 0.0f);
- AbstractDungeon.actionManager.addToBottom(new PseudoDamageRandomEnemyAction(m, new DamageInfo(AbstractDungeon.player, 5, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
+ AbstractDungeon.actionManager.addToBottom(new PseudoDamageRandomEnemyAction(m, new DamageInfo(AbstractDungeon.player, 9, DamageInfo.DamageType.THORNS), AbstractGameAction.AttackEffect.BLUNT_LIGHT));
this.isDone = true;
}
diff --git a/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java b/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java
new file mode 100644
index 000000000..281445f4c
--- /dev/null
+++ b/src/main/java/sneckomod/actions/BabySneckoMuddleAction.java
@@ -0,0 +1,42 @@
+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<>();
+
+ 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;
+ }
+ System.out.println("DEBUG: Card found valid, costs: " + card.costForTurn);
+ validCards.add(card);
+ }
+
+ if (!validCards.isEmpty()) {
+ int cardsToPick = Math.min(2, validCards.size());
+ ArrayList chosenCards = new ArrayList<>();
+
+ for (int i = 0; i < cardsToPick; i++) {
+ AbstractCard randomCard = validCards.get(AbstractDungeon.relicRng.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);
+ chosenCards.add(randomCard);
+ }
+ }
+
+ this.isDone = true;
+ }
+ }
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/DrawOffclassAction.java b/src/main/java/sneckomod/actions/DrawOffclassAction.java
new file mode 100644
index 000000000..3eec2a13d
--- /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, AbstractDungeon.cardRandomRng.random(tmp.size() - 1)));
+ count++;
+ if (count >= draw) break;
+ }
+ }
+ isDone = true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/DrawThenMuddleAction.java b/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
index 7b20090df..409c0c884 100644
--- a/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
+++ b/src/main/java/sneckomod/actions/DrawThenMuddleAction.java
@@ -50,4 +50,4 @@ public void update() {
addToTop(new DrawCardAction(p, bruh));
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MemorizeAction.java b/src/main/java/sneckomod/actions/MemorizeAction.java
deleted file mode 100644
index d0ac07872..000000000
--- a/src/main/java/sneckomod/actions/MemorizeAction.java
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by Fernflower decompiler)
-//
-
-package sneckomod.actions;
-
-import com.megacrit.cardcrawl.actions.AbstractGameAction;
-import com.megacrit.cardcrawl.cards.AbstractCard;
-import com.megacrit.cardcrawl.cards.CardGroup;
-import com.megacrit.cardcrawl.cards.colorless.Madness;
-import com.megacrit.cardcrawl.cards.tempCards.Shiv;
-import com.megacrit.cardcrawl.characters.AbstractPlayer;
-import com.megacrit.cardcrawl.core.CardCrawlGame;
-import com.megacrit.cardcrawl.core.Settings;
-import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
-import com.megacrit.cardcrawl.helpers.CardLibrary;
-import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndObtainEffect;
-import slimebound.actions.MakeTempCardInHandActionReduceCost;
-import sneckomod.SneckoMod;
-import sneckomod.cards.unknowns.AbstractUnknownCard;
-import sneckomod.cards.unknowns.Unknown;
-import sneckomod.patches.UnknownExtraUiPatch;
-
-import java.util.ArrayList;
-
-public class MemorizeAction extends AbstractGameAction {
- private static final String[] EXTENDED_DESCRIPTION = CardCrawlGame.languagePack.getCardStrings(SneckoMod.makeID("Memorize")).EXTENDED_DESCRIPTION;
- private AbstractPlayer p;
-
- private ArrayList cannotMemorize = new ArrayList<>();
-
- public MemorizeAction() {
- this.actionType = ActionType.CARD_MANIPULATION;// 22
- this.p = AbstractDungeon.player;// 23
- this.duration = Settings.ACTION_DUR_FAST;// 24
- }// 26
-
- public void update() {
- if (this.duration == Settings.ACTION_DUR_FAST) {// 30
-
- for (AbstractCard c : AbstractDungeon.player.hand.group) {
- c.update();
- if (UnknownExtraUiPatch.parentCard.get(c) == null) {
- cannotMemorize.add(c);
- }
- }
- for (AbstractCard c : cannotMemorize) {
- p.hand.group.remove(c);
- }
-
-
- if (this.p.hand.group.size() >= 1) {// 74
- AbstractDungeon.handCardSelectScreen.open(EXTENDED_DESCRIPTION[0], 1, false, false);// 75
- this.tickDuration();// 76
- return;// 77
- }
-
- }
-
- if (!AbstractDungeon.handCardSelectScreen.wereCardsRetrieved) {// 87
- for (AbstractCard c : AbstractDungeon.handCardSelectScreen.selectedCards.group) {
- AbstractCard c3 = c.makeCopy();
- for (AbstractCard c2 : p.masterDeck.group) {
- if (c2.uuid == UnknownExtraUiPatch.parentCard.get(c).uuid) {
- if (c2.upgraded) c3.upgrade();
- p.masterDeck.removeCard(c2);
- break;
- }
- }
-
-
- AbstractDungeon.effectsQueue.add(new ShowCardAndObtainEffect(c3, (float) Settings.WIDTH * .75F, (float) Settings.HEIGHT / 2.0F));
-
- AbstractDungeon.topLevelEffects.add(new com.megacrit.cardcrawl.vfx.cardManip.PurgeCardEffect(
-
- (AbstractCard) UnknownExtraUiPatch.parentCard.get(c), com.megacrit.cardcrawl.core.Settings.WIDTH * 0.35F, com.megacrit.cardcrawl.core.Settings.HEIGHT / 2));
-
-
- p.hand.addToTop(c);// 106
-
- UnknownExtraUiPatch.parentCard.set(c, null);
- }
-
- this.returnCards();// 95
- AbstractDungeon.handCardSelectScreen.wereCardsRetrieved = true;// 96
- AbstractDungeon.handCardSelectScreen.selectedCards.group.clear();// 97
- this.isDone = true;// 98
- }
- this.tickDuration();// 101
- }// 102
-
- private void returnCards () {
- for (AbstractCard c : cannotMemorize) {
- this.p.hand.addToTop(c);// 106
- }
- this.p.hand.refreshHandLayout();// 108
- }// 109
-
- }
diff --git a/src/main/java/sneckomod/actions/MuddleAction.java b/src/main/java/sneckomod/actions/MuddleAction.java
index 2f12207bf..b2f42b62d 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,80 @@ 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);
+ }
+
+ LoadedDie loadedDieInstance = new LoadedDie();
+ if (AbstractDungeon.player.hasRelic(LoadedDie.ID)) {
+ AbstractDungeon.player.getRelic(LoadedDie.ID).onTrigger();
}
card.freeToPlayOnce = false;// 39
}
}
-}
+
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MuddleHandAction.java b/src/main/java/sneckomod/actions/MuddleHandAction.java
index a5f372ffe..f542c7549 100644
--- a/src/main/java/sneckomod/actions/MuddleHandAction.java
+++ b/src/main/java/sneckomod/actions/MuddleHandAction.java
@@ -16,22 +16,22 @@ public MuddleHandAction() {
}
public MuddleHandAction(boolean maxRangeMod) {
- this.actionType = ActionType.CARD_MANIPULATION;// 14
- this.p = AbstractDungeon.player;// 15
- this.duration = Settings.ACTION_DUR_FAST;// 16
+ this.actionType = ActionType.CARD_MANIPULATION;
+ this.p = AbstractDungeon.player;
+ this.duration = Settings.ACTION_DUR_FAST;
this.maxRangeModifier = maxRangeMod;
- }// 17
+ }
public void update() {
- if (this.duration == Settings.ACTION_DUR_FAST) {// 21
+ if (this.duration == Settings.ACTION_DUR_FAST) {
for (AbstractCard card : this.p.hand.group) {
addToTop(new MuddleAction(card, maxRangeModifier));
}
- this.isDone = true;// 33
+ this.isDone = true;
} else {
- this.tickDuration();// 38
+ this.tickDuration();
}
- }// 34 39
-}
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/sneckomod/actions/MuddleMarkedAction.java b/src/main/java/sneckomod/actions/MuddleMarkedAction.java
new file mode 100644
index 000000000..ccbfe7705
--- /dev/null
+++ b/src/main/java/sneckomod/actions/MuddleMarkedAction.java
@@ -0,0 +1,94 @@
+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();
+ }
+
+ if (AbstractDungeon.player.hasRelic(LoadedDie.ID)) {
+ 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