Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions mod/src/main/java/basemod/abstracts/CustomBottleRelic.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<AbstractCard> 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;
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ public static void Postfix(AbstractCard __instance, SpriteBatch sb, boolean hove
{
if (!Settings.hideCards /*&& !__instance.isOnScreen()*/ && !__instance.isFlipped) {
for (Pair<Predicate<AbstractCard>, 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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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($$);" +
"}");
}
}
};
}
}