Skip to content

Commit

Permalink
Merge pull request #31 from Skrelpoid/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Skrelpoid authored Mar 31, 2023
2 parents f0134a7 + fbeba69 commit a0c2186
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 79 deletions.
133 changes: 58 additions & 75 deletions src/main/java/skrelpoid/betterrewards/BetterRewardsMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,8 @@
@SpireInitializer
public class BetterRewardsMod implements PostInitializeSubscriber {

public static final String[] UNWANTED_SPECIAL_RELICS =
{"Circlet", "Red Circlet", "Spirit Poop"};
public static final String[] SCREEN_BOSS_RELICS = {"Calling Bell", "Orrery", "Tiny House"};
public static final String[] UNWANTED_SPECIAL_RELICS = { "Circlet", "Red Circlet", "Spirit Poop" };
public static final String[] SCREEN_BOSS_RELICS = { "Calling Bell", "Orrery", "Tiny House" };
private static final int DEFAULT_SCORE = 1000;

public static boolean shouldShowButton = false;
Expand All @@ -81,7 +80,7 @@ public class BetterRewardsMod implements PostInitializeSubscriber {
public static void initialize() {
BaseMod.subscribe(new BetterRewardsMod());
}

public static void setIsGettingRewards(boolean b) {
isGettingRewards = b;
alreadyGotRewards = false;
Expand Down Expand Up @@ -123,17 +122,16 @@ public static void showInfo() {
public static void updateLastRun() {
List<RunData> runs = null;
int character = History.characterIndex(AbstractDungeon.player);
RunHistoryScreen runHistory = new RunHistoryScreen();
runHistory.refreshData();
try {
RunHistoryScreen runHistory = new RunHistoryScreen();
runHistory.refreshData();

if (character > 0) {
((DropdownMenu) ReflectionHacks.getPrivate(runHistory, RunHistoryScreen.class,
"characterFilter")).setSelectedIndex(character);
}
if (character > 0) {
((DropdownMenu) ReflectionHacks.getPrivate(runHistory, RunHistoryScreen.class, "characterFilter"))
.setSelectedIndex(character);
}

try {
Method resetRunsDropdown =
RunHistoryScreen.class.getDeclaredMethod("resetRunsDropdown");
Method resetRunsDropdown = RunHistoryScreen.class.getDeclaredMethod("resetRunsDropdown");
resetRunsDropdown.setAccessible(true);
resetRunsDropdown.invoke(runHistory);
runs = (List<RunData>) ReflectionHacks.getPrivate(runHistory, RunHistoryScreen.class, "filteredRuns");
Expand All @@ -145,10 +143,7 @@ public static void updateLastRun() {
lastRun = null;
} else {
try {
lastRun = runs.stream()
.sorted(RunData.orderByTimestampDesc)
.findFirst()
.get();
lastRun = runs.stream().sorted(RunData.orderByTimestampDesc).findFirst().get();
} catch (Exception ex) {
lastRun = runs.get(0);
}
Expand All @@ -158,11 +153,9 @@ public static void updateLastRun() {
lastRun = new RunData();
lastRun.score = DEFAULT_SCORE;
}
logger.info("Player had a score of " + lastRun.score
+ " last run, Therefore they can get rewards.");
logger.info("Player had a score of " + lastRun.score + " last run, Therefore they can get rewards.");
}


public static void finishedRewards() {
if (isGettingRewards && alreadyStartedRewards && !alreadyGotRewards) {
logger.info("Finished Rewards");
Expand Down Expand Up @@ -216,7 +209,7 @@ public static AbstractRelic returnRandomScreenlessBossRelic() {
} else {
String relicToRemove = bossRelics.remove(0);
AbstractDungeon.bossRelicPool.remove(relicToRemove);
return RelicLibrary.getRelic(relicToRemove);
return RelicLibrary.getRelic(relicToRemove).makeCopy();
}
}

Expand Down Expand Up @@ -244,33 +237,33 @@ public static void rerollShop(ShopScreen shopScreen) {
if (relic != null && !AbstractDungeon.player.hasRelic(relic.relicId)) {
ArrayList<String> tmp = new ArrayList<>();
switch (relic.tier) {
case COMMON:
tmp.add(relic.relicId.toString());
tmp.addAll(AbstractDungeon.commonRelicPool);
AbstractDungeon.commonRelicPool = tmp;
Collections.shuffle(AbstractDungeon.commonRelicPool);
break;
case UNCOMMON:
tmp.add(relic.relicId.toString());
tmp.addAll(AbstractDungeon.uncommonRelicPool);
AbstractDungeon.uncommonRelicPool = tmp;
Collections.shuffle(AbstractDungeon.uncommonRelicPool);
break;
case RARE:
tmp.add(relic.relicId.toString());
tmp.addAll(AbstractDungeon.rareRelicPool);
AbstractDungeon.rareRelicPool = tmp;
Collections.shuffle(AbstractDungeon.rareRelicPool);
break;
case SHOP:
tmp.add(relic.relicId.toString());
tmp.addAll(AbstractDungeon.shopRelicPool);
AbstractDungeon.shopRelicPool = tmp;
Collections.shuffle(AbstractDungeon.shopRelicPool);
break;
default:
logger.info("Unexpected Relic Tier: " + relic.tier);
break;
case COMMON:
tmp.add(relic.relicId);
tmp.addAll(AbstractDungeon.commonRelicPool);
AbstractDungeon.commonRelicPool = tmp;
Collections.shuffle(AbstractDungeon.commonRelicPool);
break;
case UNCOMMON:
tmp.add(relic.relicId);
tmp.addAll(AbstractDungeon.uncommonRelicPool);
AbstractDungeon.uncommonRelicPool = tmp;
Collections.shuffle(AbstractDungeon.uncommonRelicPool);
break;
case RARE:
tmp.add(relic.relicId);
tmp.addAll(AbstractDungeon.rareRelicPool);
AbstractDungeon.rareRelicPool = tmp;
Collections.shuffle(AbstractDungeon.rareRelicPool);
break;
case SHOP:
tmp.add(relic.relicId);
tmp.addAll(AbstractDungeon.shopRelicPool);
AbstractDungeon.shopRelicPool = tmp;
Collections.shuffle(AbstractDungeon.shopRelicPool);
break;
default:
logger.info("Unexpected Relic Tier: " + relic.tier);
break;
}
}
}
Expand All @@ -287,7 +280,7 @@ public static void rerollShop(ShopScreen shopScreen) {
Method setStartingCardPositions = ShopScreen.class.getDeclaredMethod("setStartingCardPositions");
setStartingCardPositions.setAccessible(true);
setStartingCardPositions.invoke(shopScreen);

for (AbstractShopItem i : shopItems) {
i.setVisible(true);
}
Expand All @@ -299,48 +292,37 @@ public static void rerollShop(ShopScreen shopScreen) {
// From Merchant
private static ArrayList<AbstractCard> rollColoredCards() {
ArrayList<AbstractCard> cards = new ArrayList<>();
cards.add(AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK, true)
cards.add(AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK, true)
.makeCopy());

AbstractCard addCard = AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK, true)
.makeCopy();
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK, true).makeCopy();
while (Objects.equals(addCard.cardID, cards.get(cards.size() - 1).cardID)) {
addCard = AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK,
true)
addCard = AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.ATTACK, true)
.makeCopy();
}
cards.add(addCard);

cards.add(AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL, true)
cards.add(AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL, true)
.makeCopy());
addCard = AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL, true)
addCard = AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL, true)
.makeCopy();
while (Objects.equals(addCard.cardID, cards.get(cards.size() - 1).cardID)) {
addCard = AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL,
true)
addCard = AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.SKILL, true)
.makeCopy();
}
cards.add(addCard);

cards.add(AbstractDungeon
.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.POWER, true)
cards.add(AbstractDungeon.getCardFromPool(AbstractDungeon.rollRarity(), AbstractCard.CardType.POWER, true)
.makeCopy());
return cards;
}

// From Merchant
private static ArrayList<AbstractCard> rollColorlessCards() {
ArrayList<AbstractCard> cards = new ArrayList<>();
cards.add(AbstractDungeon.getColorlessCardFromPool(AbstractCard.CardRarity.UNCOMMON)
.makeCopy());
cards.add(
AbstractDungeon.getColorlessCardFromPool(AbstractCard.CardRarity.RARE).makeCopy());
cards.add(AbstractDungeon.getColorlessCardFromPool(AbstractCard.CardRarity.UNCOMMON).makeCopy());
cards.add(AbstractDungeon.getColorlessCardFromPool(AbstractCard.CardRarity.RARE).makeCopy());
return cards;
}

Expand All @@ -359,10 +341,9 @@ public static void discountShopItems(float multiplier) {
public void receivePostInitialize() {
loadSettings();
ModPanel panel = new ModPanel();
ModLabeledToggleButton fun =
new ModLabeledToggleButton("Enable FUN mode (No HP cost)", X, Y, Color.WHITE,
FontHelper.buttonLabelFont, isFunMode, panel, (l) -> {
}, BetterRewardsMod::funToggle);
ModLabeledToggleButton fun = new ModLabeledToggleButton("Enable FUN mode (No HP cost)", X, Y, Color.WHITE,
FontHelper.buttonLabelFont, isFunMode, panel, (l) -> {
}, BetterRewardsMod::funToggle);
panel.addUIElement(fun);
BaseMod.registerModBadge(new Texture("modBadge.png"), MOD_NAME, AUTHOR, DESCRIPTION, panel);

Expand Down Expand Up @@ -396,9 +377,11 @@ public static void addCustomModeMods(CustomModeScreen screen, CustomMod sealedMo
customMod = new CustomMod("BetterRewards", "b", false);
customMod.name = "BetterRewards";
customMod.description = "Get the Better Rewards event at the start of your run";
String label = FontHelper.colorString("[" + customMod.name + "]", customMod.color) + " " + customMod.description;
String label = FontHelper.colorString("[" + customMod.name + "]", customMod.color) + " "
+ customMod.description;
ReflectionHacks.setPrivate(customMod, CustomMod.class, "label", label);
float height = -FontHelper.getSmartHeight(FontHelper.charDescFont, label, 1050.0F * Settings.scale, 32.0F * Settings.scale) + 70.0F * Settings.scale;
float height = -FontHelper.getSmartHeight(FontHelper.charDescFont, label, 1050.0F * Settings.scale,
32.0F * Settings.scale) + 70.0F * Settings.scale;
ReflectionHacks.setPrivate(customMod, CustomMod.class, "height", height);
customMod.setMutualExclusionPair(sealedMod);
customMod.setMutualExclusionPair(draftMod);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ private void getForRoll(int roll) {
AbstractDungeon.transformCard(card);
AbstractCard transformedCard = AbstractDungeon.getTransformedCard();
AbstractDungeon.effectsQueue.add(
new ShowCardAndObtainEffect(transformedCard, Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
new ShowCardAndObtainEffect(transformedCard.makeCopy(), Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F));
String transformedName = transformedCard.name;
logger.info("transform");
displayLastRoll("A Card from your Deck was transformed: " + oldName + " -> " + transformedName + ".");
Expand Down Expand Up @@ -254,7 +254,7 @@ private void getForRoll(int roll) {
}
// if reached this point, something went wrong
logger.info("This should not have happened. Giving player relic as backup");
AbstractRelic relic = AbstractDungeon.returnRandomScreenlessRelic(AbstractDungeon.returnRandomRelicTier());
AbstractRelic relic = AbstractDungeon.returnRandomScreenlessRelic(AbstractDungeon.returnRandomRelicTier()).makeCopy();
AbstractDungeon.getCurrRoom().spawnRelicAndObtain(Settings.WIDTH / 2, Settings.HEIGHT / 2, relic);
displayLastRoll("You got a Relic: " + relic.name + ".");
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/ModTheSpire.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"name": "BetterRewards",
"author_list": ["Skrelpoid"],
"description": "Adds an option to Neow where instead of getting standard rewards, you get rewards based on the score of your last run in a special shop.",
"version": "4.5.0",
"sts_version": "12-22-2020",
"version": "4.5.2",
"sts_version": "12-18-2022",
"mts_version": "3.15.0",
"dependencies": ["basemod"],
"update_json": "https://api.github.com/repos/Skrelpoid/BetterRewardsMod/releases/latest"
Expand Down

0 comments on commit a0c2186

Please sign in to comment.