diff --git a/src/jedi.java b/src/jedi.java index 8d3f604..1c13592 100644 --- a/src/jedi.java +++ b/src/jedi.java @@ -12,12 +12,15 @@ import com.megacrit.cardcrawl.dungeons.AbstractDungeon; import com.megacrit.cardcrawl.dungeons.TheCity; import com.megacrit.cardcrawl.helpers.CardLibrary; +import com.megacrit.cardcrawl.helpers.RelicLibrary; import com.megacrit.cardcrawl.localization.*; +import gluttonmod.patches.AbstractCardEnum; import mod.jedi.cards.blue.*; import mod.jedi.cards.colorless.Cleanse; import mod.jedi.cards.colorless.Forcepull; import mod.jedi.cards.colorless.Forcepush; import mod.jedi.cards.curses.Frostbite; +import mod.jedi.cards.red.OneStrike; import mod.jedi.cards.red.StrikingStrike; import mod.jedi.events.SwordDojo; import mod.jedi.potions.CoolantLeak; @@ -38,11 +41,17 @@ public class jedi { public static boolean isReplayLoaded; + public static boolean isConspireLoaded; + public static boolean isGluttonLoaded; + public static boolean isBeakedLoaded; public static void initialize() { BaseMod.subscribe(new jedi()); isReplayLoaded = Loader.isModLoaded("ReplayTheSpireMod"); + isConspireLoaded = Loader.isModLoaded("conspire"); + isGluttonLoaded = Loader.isModLoaded("GluttonMod"); + isBeakedLoaded = Loader.isModLoaded("beakedthecultist-sts"); } @@ -85,6 +94,7 @@ public void receiveEditCards() //Red BaseMod.addCard(new StrikingStrike()); + BaseMod.addCard(new OneStrike()); //Curses BaseMod.addCard(new Frostbite()); @@ -100,6 +110,7 @@ public void receiveEditRelics() BaseMod.addRelic(new FakeMustache(), RelicType.SHARED); BaseMod.addRelic(new FirstAidKit(), RelicType.SHARED); BaseMod.addRelic(new CrownOfSimplicity(), RelicType.SHARED); + BaseMod.addRelic(new HeavyJacket(), RelicType.SHARED); BaseMod.addRelic(new LaserPointer(), RelicType.BLUE); BaseMod.addRelic(new Superconductor(), RelicType.BLUE); @@ -111,6 +122,21 @@ public void receiveEditRelics() BaseMod.addRelic(new Zontanonomicon(), RelicType.SHARED); + if (isGluttonLoaded) + { + Leech glutLeech = new Leech(); + BaseMod.addRelicToCustomPool(glutLeech, AbstractCardEnum.GLUTTON); + RelicLibrary.uncommonList.remove(glutLeech); + } + + if (isBeakedLoaded) + { + Leech beakedLeech = new Leech(); + BaseMod.addRelicToCustomPool(beakedLeech, beaked.patches.AbstractCardEnum.BEAKED_YELLOW); + RelicLibrary.uncommonList.remove(beakedLeech); + } + + // if (isReplayLoaded) { // BaseMod.addRelic(new OtherSneckoEye(), RelicType.SHARED); // } diff --git a/src/mod/jedi/cards/red/OneStrike.java b/src/mod/jedi/cards/red/OneStrike.java new file mode 100644 index 0000000..5f961a1 --- /dev/null +++ b/src/mod/jedi/cards/red/OneStrike.java @@ -0,0 +1,95 @@ +package mod.jedi.cards.red; + +import basemod.abstracts.CustomCard; +import com.evacipated.cardcrawl.mod.stslib.fields.cards.AbstractCard.FleetingField; +import com.megacrit.cardcrawl.actions.animations.TalkAction; +import com.megacrit.cardcrawl.actions.common.DamageAction; +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.CardCrawlGame; +import com.megacrit.cardcrawl.dungeons.AbstractDungeon; +import com.megacrit.cardcrawl.localization.CardStrings; +import com.megacrit.cardcrawl.monsters.AbstractMonster; +import com.megacrit.cardcrawl.powers.*; +import conspire.powers.GhostlyPower; +import conspire.powers.HolyPower; +import sts_jedi.jedi; + +public class OneStrike + extends CustomCard +{ + + public static final String ID = "jedi:onestrike"; + 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 UPGRADE_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION; + public static final int COST = 3; + public static final String IMG_PATH = "resources/images/cards/jedi_beta_attack.png"; + + public OneStrike() + { + super(ID, NAME, IMG_PATH, COST, DESCRIPTION, CardType.ATTACK, CardColor.RED, CardRarity.SPECIAL, CardTarget.ENEMY); + this.tags.add(CardTags.STRIKE); + this.exhaust = true; + this.cantUseMessage = "Cannot be used on bosses."; + FleetingField.fleeting.set(this, true); + } + + + public void use(AbstractPlayer p, AbstractMonster m) { +// AbstractDungeon.actionManager.addToBottom(new RemoveAllTemporaryHPAction(m, p)); +// AbstractDungeon.actionManager.addToBottom(new ReplayLoseAllShieldingAction(m, p)); +// There's no monster that uses temp.hp or shielding, so why bother. + +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, BufferPower.POWER_ID)); +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, IntangiblePower.POWER_ID)); +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, IntangiblePlayerPower.POWER_ID)); +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, InvinciblePower.POWER_ID)); +// if (jedi.isConspireLoaded) +// { +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, GhostlyPower.POWER_ID)); +// AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, HolyPower.POWER_ID)); +// } + + for (AbstractPower pow : m.powers) + { + AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, pow.ID)); + } + + AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, m.maxHealth * 2, DamageInfo.DamageType.HP_LOSS))); + AbstractDungeon.actionManager.addToBottom(new TalkAction(true, "ONE STRIKE!", 1.0F, 2.0F)); + } + + @Override + public void upgrade() + { + if (!this.upgraded) { + this.name += " Plus Ultra"; + initializeTitle(); + this.rawDescription = UPGRADE_DESCRIPTION; + initializeDescription(); + } + } + + + public boolean canUse(AbstractPlayer p, AbstractMonster m) + { + boolean canUse = false; + if (m != null) { + if (m.type != AbstractMonster.EnemyType.BOSS) { + canUse = true; + } + } + + return canUse; + } + + public AbstractCard makeCopy() + { + return new OneStrike(); + } + +} diff --git a/src/mod/jedi/cards/red/StrikingStrike.java b/src/mod/jedi/cards/red/StrikingStrike.java index ecee261..a977e36 100644 --- a/src/mod/jedi/cards/red/StrikingStrike.java +++ b/src/mod/jedi/cards/red/StrikingStrike.java @@ -55,6 +55,7 @@ public void upgrade() { if (!this.upgraded) { upgradeName(); + upgradeDamage(3); this.rawDescription = UPGRADE_DESCRIPTION; initializeDescription(); } diff --git a/src/mod/jedi/patches/StrikingStrikePatch.java b/src/mod/jedi/patches/StrikingStrikePatch.java new file mode 100644 index 0000000..90df128 --- /dev/null +++ b/src/mod/jedi/patches/StrikingStrikePatch.java @@ -0,0 +1,38 @@ +package mod.jedi.patches; + +import com.evacipated.cardcrawl.modthespire.lib.SpirePatch; +import com.megacrit.cardcrawl.cards.AbstractCard; +import com.megacrit.cardcrawl.cards.red.PerfectedStrike; +import com.megacrit.cardcrawl.dungeons.AbstractDungeon; +import mod.jedi.cards.red.StrikingStrike; + +@SpirePatch(clz = PerfectedStrike.class, method = "countCards") +public class StrikingStrikePatch +{ + public static int Postfix(int __result) + { + for (AbstractCard c : AbstractDungeon.player.hand.group) + { + if (c instanceof StrikingStrike) { + __result++; + } + } + + for (AbstractCard c : AbstractDungeon.player.drawPile.group) + { + if (c instanceof StrikingStrike) { + __result++; + } + } + + for (AbstractCard c : AbstractDungeon.player.discardPile.group) + { + if (c instanceof StrikingStrike) { + __result++; + } + } + + return __result; + } + +} diff --git a/src/mod/jedi/relics/HeavyJacket.java b/src/mod/jedi/relics/HeavyJacket.java new file mode 100644 index 0000000..77aace2 --- /dev/null +++ b/src/mod/jedi/relics/HeavyJacket.java @@ -0,0 +1,31 @@ +package mod.jedi.relics; + +import basemod.abstracts.CustomRelic; +import com.badlogic.gdx.graphics.Texture; +import com.megacrit.cardcrawl.actions.common.ApplyPowerAction; +import com.megacrit.cardcrawl.dungeons.AbstractDungeon; +import com.megacrit.cardcrawl.powers.PlatedArmorPower; + +public class HeavyJacket + extends CustomRelic +{ + + public static final String ID = "jedi:heavyjacket"; + public static final String IMG_PATH = "resources/images/relics/beta_rock.png"; + + public HeavyJacket() + { + super(ID, new Texture(IMG_PATH), RelicTier.UNCOMMON, LandingSound.FLAT); + } + + public void atBattleStart() + { + int PA = AbstractDungeon.player.relics.size() / 2; + AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(AbstractDungeon.player, AbstractDungeon.player, new PlatedArmorPower(AbstractDungeon.player, PA), PA)); + } + + public String getUpdatedDescription() + { + return this.DESCRIPTIONS[0]; + } +} diff --git a/src/mod/jedi/relics/PaperFaux.java b/src/mod/jedi/relics/PaperFaux.java index 77ea000..26f659f 100644 --- a/src/mod/jedi/relics/PaperFaux.java +++ b/src/mod/jedi/relics/PaperFaux.java @@ -4,6 +4,8 @@ import com.badlogic.gdx.graphics.Texture; import com.megacrit.cardcrawl.relics.AbstractRelic; +// If you wonder how this works, go check paper patches in patches folder. + public class PaperFaux extends CustomRelic { diff --git a/src/resources/localization/cardStrings.json b/src/resources/localization/cardStrings.json index 9bd7264..dd7877f 100644 --- a/src/resources/localization/cardStrings.json +++ b/src/resources/localization/cardStrings.json @@ -94,8 +94,14 @@ }, "jedi:strikingstrike": { - "NAME": "Striking Strike", - "DESCRIPTION": "Deal !D! damage. NL Play a random Strike card on the same enemy. NL Exhaust.", - "UPGRADE_DESCRIPTION" : "Deal !D! damage. NL Play a random upgraded Strike card on the same enemy. NL Exhaust." + "NAME": "Strikeing Strike", + "DESCRIPTION": "Deal !D! damage. NL Play a random Strike on the same enemy. NL Exhaust.", + "UPGRADE_DESCRIPTION" : "Deal !D! damage. NL Play a random upgraded Strike on the same enemy. NL Exhaust." + }, + "jedi:onestrike": + { + "NAME": "One Strike", + "DESCRIPTION": "Kill a non-boss enemy. NL Fleeting.", + "UPGRADE_DESCRIPTION": "Kill a non-boss enemy. NL Realize you wasted an [#FFFFFF]upgrade[]. NL Fleeting." } } \ No newline at end of file diff --git a/src/resources/localization/relicStrings.json b/src/resources/localization/relicStrings.json index 4f880b9..f5f1c6a 100644 --- a/src/resources/localization/relicStrings.json +++ b/src/resources/localization/relicStrings.json @@ -112,5 +112,13 @@ "DESCRIPTIONS": [ "#yStarter cards are played twice." ] + }, + "jedi:heavyjacket": + { + "NAME": "Heavy Jacket", + "FLAVOR": "That's a lot of pockets for a single jacket.", + "DESCRIPTIONS": [ + "At the start of each combat, gain #b1 #yPlated #yArmor for every #b2 relics you have." + ] } } \ No newline at end of file