diff --git a/mod/src/main/java/basemod/abstracts/CustomBottleRelic.java b/mod/src/main/java/basemod/abstracts/CustomBottleRelic.java index 3098c32d5..3c949fcfc 100644 --- a/mod/src/main/java/basemod/abstracts/CustomBottleRelic.java +++ b/mod/src/main/java/basemod/abstracts/CustomBottleRelic.java @@ -6,5 +6,16 @@ public interface CustomBottleRelic { + // Utilized for making relics appear on the Top Right of cards. Does nothing else in terms of "Bottle" coding. If you want help, ask #modding-technical in the StS Discord! Predicate isOnCard(); + + // Base game bottles do not show in combat. It is set to default true however. + default boolean showInCombat(AbstractCard card) { + return true; + } + + // Scale of the relic when it's being rendered. + default float scale(AbstractCard card) { + return 1.5F; + } } diff --git a/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/actions/common/MakeTempCardInDiscardAction/MakeTempCardInDiscardPatch.java b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/actions/common/MakeTempCardInDiscardAction/MakeTempCardInDiscardPatch.java new file mode 100644 index 000000000..f75d17746 --- /dev/null +++ b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/actions/common/MakeTempCardInDiscardAction/MakeTempCardInDiscardPatch.java @@ -0,0 +1,36 @@ +package basemod.patches.com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction; + +import basemod.ReflectionHacks; +import com.badlogic.gdx.Graphics; +import com.evacipated.cardcrawl.modthespire.lib.*; +import com.evacipated.cardcrawl.modthespire.patcher.PatchingException; +import com.megacrit.cardcrawl.actions.common.MakeTempCardInDiscardAction; +import com.megacrit.cardcrawl.cards.AbstractCard; +import com.megacrit.cardcrawl.dungeons.AbstractDungeon; +import com.megacrit.cardcrawl.vfx.cardManip.ShowCardAndAddToDiscardEffect; +import javassist.CannotCompileException; +import javassist.CtBehavior; + +@SpirePatch( + clz = MakeTempCardInDiscardAction.class, + method = "update" +) +public class MakeTempCardInDiscardPatch { + @SpireInsertPatch( + locator = Locator.class + ) + public static void Insert(MakeTempCardInDiscardAction __instance, int ___numCards) { + if(___numCards >= 6 && BaseMod.fixesEnabled) for (int i = 0; i < ___numCards; i++) { + AbstractCard card = ReflectionHacks.privateMethod(MakeTempCardInDiscardAction.class, "makeNewCard").invoke(__instance); + AbstractDungeon.effectList.add(new ShowCardAndAddToDiscardEffect(card)); + } + } + + private static class Locator extends SpireInsertLocator { + public int[] Locate(CtBehavior ctMethodToPatch) throws CannotCompileException, PatchingException { + Matcher finalMatcher = new Matcher.MethodCallMatcher(Graphics.class,"getDeltaTime"); + return LineFinder.findInOrder(ctMethodToPatch, finalMatcher); + } + } +} + diff --git a/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/cards/AbstractCard/RenderRelicOnCard.java b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/cards/AbstractCard/RenderRelicOnCard.java index 0050844b5..ddf41b694 100644 --- a/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/cards/AbstractCard/RenderRelicOnCard.java +++ b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/cards/AbstractCard/RenderRelicOnCard.java @@ -33,9 +33,9 @@ public static void Postfix(AbstractCard __instance, SpriteBatch sb, boolean hove { if (!Settings.hideCards /*&& !__instance.isOnScreen()*/ && !__instance.isFlipped) { for (Pair, AbstractRelic> info : BaseMod.getBottledRelicList()) { - if (info.getKey().test(__instance)) { + if (info.getKey().test(__instance) && (((CustomBottleRelic) info.getValue()).showInCombat(__instance) || (AbstractDungeon.getCurrRoom()).phase != AbstractRoom.RoomPhase.COMBAT || AbstractDungeon.screen == AbstractDungeon.CurrentScreen.MASTER_DECK_VIEW)) { AbstractRelic r = info.getValue(); - r.scale = __instance.drawScale * Settings.scale; + r.scale = __instance.drawScale * Settings.scale * ((CustomBottleRelic) r).scale(__instance); try { relicRotation.set(r, __instance.angle); } catch (IllegalAccessException e) { diff --git a/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/relics/MummifiedHandFix.java b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/relics/MummifiedHandFix.java new file mode 100644 index 000000000..8cf10951e --- /dev/null +++ b/mod/src/main/java/basemod/patches/com/megacrit/cardcrawl/relics/MummifiedHandFix.java @@ -0,0 +1,27 @@ +package basemod.patches.com.megacrit.cardcrawl.relics; + +import com.evacipated.cardcrawl.modthespire.lib.SpireInstrumentPatch; +import com.evacipated.cardcrawl.modthespire.lib.SpirePatch2; +import com.megacrit.cardcrawl.cards.AbstractCard; +import com.megacrit.cardcrawl.relics.MummifiedHand; +import javassist.CannotCompileException; +import javassist.expr.ExprEditor; +import javassist.expr.FieldAccess; + +@SpirePatch2(clz = MummifiedHand.class, method = "onUseCard") +public class MummifiedHandPatch { + @SpireInstrumentPatch + public static ExprEditor MummifiedHandCheck() { + return new ExprEditor() { + public void edit(FieldAccess f) throws CannotCompileException { + if (f.getClassName().equals(AbstractCard.class.getName()) && f.getFieldName().equals("cost")) { + f.replace("if (" + BaseMod.class.getName() + ".fixesEnabled) {" + + "$_ = $0.costForTurn;" + + "} else {" + + "$_ = $proceed($$);" + + "}"); + } + } + }; + } +}