BaseMod
BaseMod copied to clipboard
Trigger Power on Discard
Hello, I'm trying to make a power wich triggers when a card is discarded. I was surprised to find out AbstractPower doesn't have a onManualDiscard method contrary to AbstractRelic. I also couldn't find a subscriber that triggers on discard. Any of those would be pretty useful.
These are the patches you need for onManualDiscard:
Triggered every time triggerOnManualDiscard for a card is triggered.
import com.evacipated.cardcrawl.modthespire.lib.SpireInsertPatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.actions.common.DiscardAction;
import com.megacrit.cardcrawl.actions.common.DiscardSpecificCardAction;
import com.megacrit.cardcrawl.actions.defect.ScrapeFollowUpAction;
import com.megacrit.cardcrawl.actions.unique.GamblingChipAction;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
public class DiscardPatches {
public static void onManualDiscard() {
System.out.println("Hello Discard");
if (AbstractDungeon.player.hasPower("yourPowerID")) {
// trigger the onManualDiscard from the power here
// (YourPower) AbstractDungeon.player.getPower("yourPowerID")).onManualDiscard();
}
}
@SpirePatch(clz= DiscardAction.class, method="update")
public static class DiscardCardActionPatch {
@SpireInsertPatch(rlocs={14, 28, 55})
public static void Insert(DiscardAction __instance) {
onManualDiscard();
}
}
@SpirePatch(clz= DiscardSpecificCardAction.class, method="update")
public static class DiscardSpecificCardActionPatch {
@SpireInsertPatch(rloc=7)
public static void Insert(DiscardSpecificCardAction __instance) {
onManualDiscard();
}
}
@SpirePatch(clz = ScrapeFollowUpAction.class, method="update")
public static class ScrapeFollowUpActionPatch {
@SpireInsertPatch(rloc=8)
public static void Insert(ScrapeFollowUpAction __instance) {
onManualDiscard();
}
}
@SpirePatch(clz = GamblingChipAction.class, method="update")
public static class GamblingChipActionPatch {
@SpireInsertPatch(rloc=22)
public static void Insert(GamblingChipAction __instance) {
onManualDiscard();
}
}
}