From efc35eaedb7fd53517c2f834fa84e75e418b2d7f Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 07:21:02 -0400 Subject: [PATCH 01/28] Add Orbs of Rebirth / Sinistral Rebirth / Dextral Rebirth --- .../currency/reworked/ExileCurrencies.java | 30 ++++++++++++++ .../currency/reworked/item_mod/ItemMods.java | 3 ++ .../all/UpgradeCorruptionAffixMod.java | 4 +- .../item_mod/gear/DowngradeAffixItemMod.java | 2 +- .../item_mod/gear/RerollAffixItemMod.java | 13 +++--- .../item_mod/gear/SetAffixRarityItemMod.java | 2 +- .../item_mod/gear/UpgradeAffixItemMod.java | 39 ++++++++++++++---- .../jewel/UpgradeJewelAffixRarityMod.java | 2 +- .../uncommon/localization/Words.java | 3 ++ .../resources/assets/mmorpg/lang/en_us.json | 9 ++++ .../item/currency/affix_reroll_all.png | Bin 0 -> 3288 bytes .../item/currency/prefix_reroll_all.png | Bin 0 -> 3031 bytes .../item/currency/suffix_reroll_all.png | Bin 0 -> 3281 bytes 13 files changed, 86 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 02c575027..da4c91a49 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -138,6 +138,36 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.COMMON) .build(this); + public ExileKey REROLL_ALL_AFFIXES = ExileCurrency.Builder.of("affix_reroll_all", "Orb of Rebirth", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.EPIC_ID) + .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_AFFIXES) + .potentialCost(20) + .weight(CodeCurrency.Weights.RARE) + .build(this); + + public ExileKey REROLL_ALL_PREFIXES = ExileCurrency.Builder.of("prefix_reroll_all", "Orb of Sinistral Rebirth", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.LEGENDARY_ID) + .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_PREFIXES) + .potentialCost(30) + .weight(CodeCurrency.Weights.UBER) + .build(this); + + public ExileKey REROLL_ALL_SUFFIXES = ExileCurrency.Builder.of("suffix_reroll_all", "Orb of Dextral Rebirth", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.LEGENDARY_ID) + .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_PREFIXES) + .potentialCost(30) + .weight(CodeCurrency.Weights.UBER) + .build(this); + public ExileKey REROLL_RANDOM_AFFIX_TO_MYTHIC = ExileCurrency.Builder.of("affix_random_mythic_reroll", "Orb of Divine Benevolence", ItemReqs.INSTANCE.IS_GEAR) .rarity(IRarity.MYTHIC_ID) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index 48ea8cfe2..ba06c05c4 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -72,6 +72,9 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey REROLL_RANDOM_AFFIX = ExileKey.ofId(this, "reroll_random_affix", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.RANDOM_AFFIX.get(), "random"), "")); public ExileKey REROLL_LOWEST_AFFIX = ExileKey.ofId(this, "reroll_lowest_affix", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.LOWEST_RARITY_AFFIX.get(), "random"), "")); public ExileKey REROLL_RANDOM_AFFIX_INTO_MYTHIC = ExileKey.ofId(this, "reroll_random_affix_to_mythic", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.RANDOM_AFFIX.get(), IRarity.MYTHIC_ID), "Mythic")); + public ExileKey REROLL_ALL_AFFIXES = ExileKey.ofId(this, "reroll_all_affixes", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.ALL_AFFIXES.get(), "random"), "")); + public ExileKey REROLL_ALL_PREFIXES = ExileKey.ofId(this, "reroll_all_prefixes", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.ALL_PREFIXES.get(), "random"), "")); + public ExileKey REROLL_ALL_SUFFIXES = ExileKey.ofId(this, "reroll_all_suffixes", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.ALL_SUFFIXES.get(), "random"), "")); public ExileKey REROLL_INFUSION = ExileKey.ofId(this, "reroll_infusion", x -> new RerollInfusionItemMod(x.GUID())); public ExileKey UPGRADE_MAP_RARITY = ExileKey.ofId(this, "map_rarity_upgrade", x -> new UpgradeMapRarityItemMod(x.GUID())); public ExileKey ADD_25_POTENTIAL = ExileKey.ofId(this, "add_potential", x -> new AddPotentialItemMod(x.GUID(), new AddPotentialItemMod.Data(25))); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/all/UpgradeCorruptionAffixMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/all/UpgradeCorruptionAffixMod.java index 842b58c62..d37804ac7 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/all/UpgradeCorruptionAffixMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/all/UpgradeCorruptionAffixMod.java @@ -33,12 +33,12 @@ public void applyINTERNAL(StackHolder stack, ItemModificationResult r) { ExileStack ex = ExileStack.of(stack.stack); ex.get(StackKeys.GEAR).editIfHas(gear -> { - data.finder().getAffix(gear.affixes.cor, data).ifPresent(affix -> { + data.finder().getAffixes(gear.affixes.cor, data).forEach(affix -> { affix.upgradeRarity(); }); }); ex.get(StackKeys.JEWEL).editIfHas(jewel -> { - data.finder().getAffix(jewel.cor, data).ifPresent(affix -> { + data.finder().getAffixes(jewel.cor, data).forEach(affix -> { affix.upgradeRarity(); }); }); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/DowngradeAffixItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/DowngradeAffixItemMod.java index 37657d5dd..f3bc6b3be 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/DowngradeAffixItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/DowngradeAffixItemMod.java @@ -27,7 +27,7 @@ public DowngradeAffixItemMod(String id, Data data) { @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { - data.finder_data.finder().getAffix(gear.affixes.getPrefixesAndSuffixes(), data.finder_data).ifPresent(affix -> { + data.finder_data.finder().getAffixes(gear.affixes.getPrefixesAndSuffixes(), data.finder_data).forEach(affix -> { affix.downgradeRarity(); }); }); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java index ce6d46ed9..cadcccaef 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java @@ -35,17 +35,14 @@ public RerollAffixItemMod(String id, Data data, String rarname) { @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { - var opt = data.finder_data.finder().getAffix(gear.affixes.getPrefixesAndSuffixes(), data.finder_data); - - if (opt.isPresent()) { - AffixData affixData = opt.get(); - affixData.RerollFully(gear); + data.finder_data.finder().getAffixes(gear.affixes.getPrefixesAndSuffixes(), data.finder_data).forEach(affix -> { + affix.RerollFully(gear); if (ExileDB.GearRarities().isRegistered(data.result_rar)) { - affixData.rar = data.result_rar; - affixData.RerollNumbers(); + affix.rar = data.result_rar; + affix.RerollNumbers(); } - } + }); }); } diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/SetAffixRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/SetAffixRarityItemMod.java index aa2b6c830..e530931d7 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/SetAffixRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/SetAffixRarityItemMod.java @@ -28,7 +28,7 @@ public SetAffixRarityItemMod(String id, Data data) { @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { - data.finder_data.finder().getAffix(gear.affixes.getPrefixesAndSuffixes(), data.finder_data).ifPresent(affix -> { + data.finder_data.finder().getAffixes(gear.affixes.getPrefixesAndSuffixes(), data.finder_data).forEach(affix -> { affix.rar = data.rar; affix.RerollNumbers(); }); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeAffixItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeAffixItemMod.java index 82ad1e59f..50a417fc0 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeAffixItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeAffixItemMod.java @@ -27,8 +27,8 @@ public class UpgradeAffixItemMod extends GearModification { public enum AffixFinder { SPECIFIC_RARITY(Words.SPECIFIC_RARITY_AFFIX) { @Override - public Optional getAffix(List affixes, AffixFinderData data) { - return affixes.stream().filter(x -> x.rar.equals(data.target_rar)).findAny(); + public List getAffixes(List affixes, AffixFinderData data) { + return optionalToList(affixes.stream().filter(x -> x.rar.equals(data.target_rar)).findAny()); } @Override @@ -38,17 +38,39 @@ public MutableComponent getTooltip(AffixFinderData data) { }, RANDOM_AFFIX(Words.RANDOM_AFFIX) { @Override - public Optional getAffix(List affixes, AffixFinderData data) { - return Optional.of(RandomUtils.randomFromList(affixes)); + public List getAffixes(List affixes, AffixFinderData data) { + return List.of(RandomUtils.randomFromList(affixes)); } }, LOWEST_RARITY_AFFIX(Words.LOWEST_RARITY_AFFIX) { @Override - public Optional getAffix(List affixes, AffixFinderData data) { - return affixes.stream().min(Comparator.comparingInt(x -> x.getRarity().item_tier)); + public List getAffixes(List affixes, AffixFinderData data) { + return optionalToList(affixes.stream().min(Comparator.comparingInt(x -> x.getRarity().item_tier))); + } + }, + ALL_AFFIXES(Words.ALL_AFFIXES) { + @Override + public List getAffixes(List affixes, AffixFinderData data) { + return affixes; + } + }, + ALL_PREFIXES(Words.ALL_PREFIXES) { + @Override + public List getAffixes(List affixes, AffixFinderData data) { + return affixes.stream().filter(x -> x.ty.isPrefix()).toList(); + } + }, + ALL_SUFFIXES(Words.ALL_SUFFIXES) { + @Override + public List getAffixes(List affixes, AffixFinderData data) { + return affixes.stream().filter(x -> x.ty.isSuffix()).toList(); } }; + private static List optionalToList(Optional optional) { + return optional.isPresent() ? List.of(optional.get()) : List.of(); + } + public AffixFinderData get() { return new AffixFinderData(this, ""); } @@ -71,7 +93,8 @@ public MutableComponent getTooltip(AffixFinderData data) { return word.locName(); } - public abstract Optional getAffix(List affixes, AffixFinderData data); + public abstract List getAffixes(List affixes, AffixFinderData data); + } @@ -90,7 +113,7 @@ public UpgradeAffixItemMod(String id, AffixFinderData data) { @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { - data.finder.getAffix(gear.affixes.getPrefixesAndSuffixes(), data).ifPresent(affix -> { + data.finder.getAffixes(gear.affixes.getPrefixesAndSuffixes(), data).forEach(affix -> { affix.upgradeRarity(); }); }); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/jewel/UpgradeJewelAffixRarityMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/jewel/UpgradeJewelAffixRarityMod.java index fcd9f9af3..56267631d 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/jewel/UpgradeJewelAffixRarityMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/jewel/UpgradeJewelAffixRarityMod.java @@ -25,7 +25,7 @@ public UpgradeJewelAffixRarityMod(String id, UpgradeAffixItemMod.AffixFinderData @Override public void modifyJewel(ExileStack stack) { stack.get(StackKeys.JEWEL).edit(x -> { - data.finder().getAffix(x.affixes, data).ifPresent(affix -> { + data.finder().getAffixes(x.affixes, data).forEach(affix -> { affix.upgradeRarity(); }); }); diff --git a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java index fc04f9471..434d726e4 100644 --- a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java +++ b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java @@ -71,6 +71,9 @@ public enum Words implements IAutoLocName { AFFIX("Affix"), SPECIFIC_RARITY_AFFIX("%1$s Affix"), LOWEST_RARITY_AFFIX("Lowest Rarity Affix"), + ALL_AFFIXES("All Affixes"), + ALL_PREFIXES("All Prefixes"), + ALL_SUFFIXES("All Suffixes"), PRIMARY_TIER_MAT("Primary Tier/Level Material"), PRIMARY_RARITY_MAT("Primary Rarity Material"), diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 4658ffce0..c3a4adf1d 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -549,6 +549,9 @@ "_comment": " [CATEGORY]: CURRENCY ITEMS - NAMES", "item.mmorpg.currency.affix_common_reroll": "Orb of New Beginnings", + "item.mmorpg.currency.affix_reroll_all": "Orb of Rebirth", + "item.mmorpg.currency.prefix_reroll_all": "Orb of Sinistral Rebirth", + "item.mmorpg.currency.suffix_reroll_all": "Orb of Dextral Rebirth", "item.mmorpg.currency.affix_number_reroll": "Orb of Ciphers", "item.mmorpg.currency.affix_random_mythic_reroll": "Orb of Divine Benevolence", "item.mmorpg.currency.affix_tier_up_down": "Orb of Imbalance", @@ -2706,6 +2709,9 @@ "mmorpg.word.loot_modifier": "Loot Modifier", "mmorpg.word.loot_modifiers_info": "Modifiers:", "mmorpg.word.lowest_rarity_affix": "Lowest Rarity Affix", + "mmorpg.word.all_affixes": "All Affixes", + "mmorpg.word.all_prefixes": "All Prefixes", + "mmorpg.word.all_suffixes": "All Suffixes", "mmorpg.word.lvl_exponent_mob_dmg": "Leveled Exponent Mob DMG", "mmorpg.word.major": "Major", "mmorpg.word.mana_cost": "Mana Cost: %1$s", @@ -3523,6 +3529,9 @@ "library_of_exile.item_modification.reroll_infusion": "Re-rolls Infusion Affix", "library_of_exile.item_modification.reroll_lowest_affix": "Rerolls %1$s into a new %2$s", "library_of_exile.item_modification.reroll_random_affix": "Rerolls %1$s into a new %2$s", + "library_of_exile.item_modification.reroll_all_affixes": "Rerolls %1$s into new %2$ses", + "library_of_exile.item_modification.reroll_all_prefixes": "Rerolls %1$s into new %2$ses", + "library_of_exile.item_modification.reroll_all_suffixes": "Rerolls %1$s into new %2$ses", "library_of_exile.item_modification.reroll_random_affix_to_mythic": "Rerolls %1$s into a new %2$s", "library_of_exile.item_modification.set_lowest_affix_rar_common": "Upgrades %1$s to %2$s Rarity", "library_of_exile.item_modification.set_lowest_affix_rar_epic": "Upgrades %1$s to %2$s Rarity", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1884af89cab8e21230b44e99b4bfed2302a99b GIT binary patch literal 3288 zcmcIn32YQq7+xp=T7yCaBqDJfG+JbK-kdu#aWQQdZKDgNtZ7Lw;mypO?%3U#VP@Lh zf|h#4BWi$(AyH#QQAh|Lcv7qwg@}q=3C0o>CEfx-AT^5Oo89eDw6(-zleyme-+z4n z_y6zh1NC!m99MB^MI;g#S67>8z|Zl)HFh+uuVBw^}tvQbEaq*H^^ zX6+Ie&0jJnr7daEWSzWz7I9r(!3wg-heSS`u{$j5@BYQ8ardV*f92vD|nGiDs`6ULrX(-i8zTvh?=IZFuI^h zJd9B>S(hkI=NSshyiW0q%8L>wsjLvLPuN;(K(=6gvG8s+uvn!&U@6r1Q4bhTH+}JJ5x= zS0mSplZI<&iIBa7ZxhgQGNx8YCf#P~rFIzdiyYF92iyK0B7p${qsc7Auo6!Jgek77 zm|G$P4a{;)5RlXl@j!@*l`1N{tbnkn{|Q8;^l52mH6y&!(f=YCEyl1y%s`aL#W)-X zE?P+hfYJ>^0;(v;tQs3Sm_N0h|2Y_KSOyG}^ne#3NrnbZN3J=50|R*$x)`m4hN>@B&~26{(tv`)$!1``>OHK^G~&FyL&~KZFl_!E1Qb#2?{d z6uvyQ|+j^`5$MZ1<~!L2{a&T}xs*8K+uTzAk-qjfmyN3L=&B#naoo6S>Y-l_ ze)j$G*xfIzD*MV_x@qOwJKAfGq{npT7ngM&JTkg--qVC;w*cn!3JsL)oGQkBvpd+LIS9)aO>NO1k&0ylmxnyPxje z(6#HEm$C=;rL9w`8TTHRR)5{{)5f2__+U+I+mZ4$d(w+W(PhbfyIZFnc&&0`#gDJ{ zfN9Ff?s!l9_h)-IXj4Xa?YQ!ZJ0EShs;h4Acl?Uld-kLgGbd|cN@V#CeSG!u+ACM@ zG``(D=lOl_ygYM4#e}Wkp-;viUcCJ<^Wj%3x2f;kKC5p=_Z1KJbv*O=M;A3tycAA5 aT~@yC@rjf5S+@rNJ?du9No=fMbk`pSHD1mD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e057a9e4dd28e1874ab23aa27bd4aae586356d GIT binary patch literal 3031 zcmcIm2}~4c6kb|95D#L}A|~y0hzG{mx%Qm6DrHeX7jeacskY9}`~xGqGvmxGSK5d| zO^Kl%X=0+$G_h!FT2qUu2bw|)F|9{Xsx~ni)F`D*iDCwX` z%&btsvWlEMuA-Q8^60#|$ec0;ItT!rMalwxNn^@fXvi-E?~T_uiiAw`Vi%fb03rpR zTqIpq0pc{17)KB!Vt1NZ2XC=k>DdTHP&7`^I7MTGgR$Be+KxniD1=jaf$_Q*M8M#a z3oX)hg~9RC(o%CNZI;zSoOC*!I6>hQg+U8UE0=V(43o5!J`Zl7ajK~3qAVeXN7g3? zbr%Xl4d)P0qHZNE!V_c+FJl#)G!sTnAw!;v+9^TR9|Gq&9QZ*1NV*1X$*8STB``uAf1kXw%@iZNg;fj|^O(=$q78WBPUwAS*<6@YtzCI?jxWR$=#Q~I*ebT4?s z=P;H-^Uz|2Nml`@%W9r1`}@kA+m|mwS(2|3QKOq2s=hv z@+g9#t&GKi5f+9Z!loXX7lrcvrVfmv^9VZwjY#S-Qz$r|)!8A9d5#feHNZl)!~k0e za78Lak!TH=blESf5Ew>BhobO!m@G-tS&0K#ZWjtuFpDD32tGhkP793*JPE}tSV+ug z1p?-@0vpNMNJ&0?_GGiXTSTWI-=w zRghK)xf@bk_@KedQVCG|g|DzG3kMWXH5V$VasY`60nufIRTRI-u}0!}iNr@{K(tio zpg0;^@^p%Bc*H>ASs|5I_#tw^}>6d2;-rgRjuu{Fcivo4xDSZYtUHUeCMDQ|~06T>HiB_%@5vR+V(9 zId*3-t^2`@S<83U?if*d=ZvZG-ov|Nf4d-kulOr#cVsl2yS{6VY5t|4X>l8Wy5NQE z>+zg-}0bcSlC&wdvE57ZNwMtV^J$>}^Xub#vQ;ch3HvTeDzE(r1l} lSC%xans!Io)ztgL+Y4h4)H_yoRvTOItc)D@f!9}W_#3v;6}$id literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png new file mode 100644 index 0000000000000000000000000000000000000000..6a86cf75324c547715549e6799ffbedcfb4f0522 GIT binary patch literal 3281 zcmcgv32YQq7~ZBtOKTCe(F#T;BN7^zo%^&a&~9tnu(c@_TE)h2*PH&8z8Z( zsTg8bR&Cr#&T6-#N#i=CQ53~c+;y-lo0YX%P1kf<%~4cm zr_V5eu?>Z?Hb(R%7R#D&+=>nyMjDV2rJaT@3(@t+G23m3Dmt*6S7oAc+>t?4@;>D0& zfP%n90TL5Qq!^iEg$9n%cu^A+iV-x1Nr{F`-H3Dz7gZ>ZZ(wAN;Wbe`Llo0k2QC;> zSch7~v||A0z=(ksL|gF|lE`LOD>tL2jSXY(_@o!1kX9XcTo8w-Iv5~v2!6xRHJyuy z3tPrLEBk2^BRb3a6qHv6wSsyfEyGJ%}eX8(u6Ji~wts(#=6|o|vGl-)U zMUW^}kvK|}Wl50*Bmps!(RRIU;Mxb#;aWYfbgU5wP>(Q@N^ug1P$I%!sj4Vb62sz} zI?E2Xxx6=9&x!q}9UV@BLgV52!L7~L@|f*#d*Gv0yhVeVVN z2Dn!v+X;{n+l&!e_7bj10LzLRFqurcBd(|0VU}OysCFFCadwDAmJwN~aumxc0>vOf zr@~>(Er|sYUI{}Hb3Fs`aEMZsDrthMG1;R2I}oMQ2U|hB1>v2J{s+P65Gaxa0VQ)d zA|475mxqpU4YRTg1zBZzTxNgG_lRxhKMn?t$$&AE?(rf^lF>oak!=j)z;K>rT_BQ- z`*-Y($+&attp9tGXzvh`YB%(sJ5lO8m_oABtIp&;t&P-k&Xt3Bh?c zYwj+p?H7(N++|->^{M~Mxz80XSz7ec*4ut59QXc|-etWLmlgLG@AF^OyJB-w>FT#$ z-ucj>51qsN4mEGsakym1_fw_&_`W+ox=ecGr_DL9Z+^n}@W)FoS@qqa<4dV+wLg?z z*z-*v%su+x&#$20_g=hr>zda-=lW~zQtsW=efyr9@0fcu|)b>Z);N;mgd%iw#?5pNd%a{1&sn@EHJaTX%)4!>tzGlQPoCPX1QtJGuCvZKzeNdq1}y z{OEXJ3D(-RIA@?>;em>h9f4ea`N>T~``h~8i>?#*A8YTOxVGl%)l)arO=pTP$Xhl$ zx-X|^Xwrf9l1uNId1=Ag`YrQkOj}bu1j~v(c=pW`ziyq;R&~?hw}U_W)<-s8DXqxc R>;37duBZ(@U3SZ|KLApjShN5D literal 0 HcmV?d00001 From 920228d4e1783e07a434b89d96e8adc059628e67 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 07:24:50 -0400 Subject: [PATCH 02/28] fix dextral rebirth using wrong mod --- .../orbs_of_crafting/currency/reworked/ExileCurrencies.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index da4c91a49..9684e12e6 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -163,7 +163,7 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) .rarity(IRarity.LEGENDARY_ID) .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) - .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_PREFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_SUFFIXES) .potentialCost(30) .weight(CodeCurrency.Weights.UBER) .build(this); From 79e7de04833c377d7f58296876d820f9445694fb Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 07:32:23 -0400 Subject: [PATCH 03/28] tweak sprites --- .../item/currency/prefix_reroll_all.png | Bin 3031 -> 3033 bytes .../item/currency/suffix_reroll_all.png | Bin 3281 -> 3284 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png index d1e057a9e4dd28e1874ab23aa27bd4aae586356d..956cac8af2b07573dc25f4df2a38f236f8332f94 100644 GIT binary patch delta 731 zcmcaEep7q{J2R7! zY-VX`X=pilEwh$Nnx$EaiLtq*Zc7Oy2zx9h8*-ki_rH~*%D}*Q$kW9!#G-fUB-;*QM~SxicUhFAn^X>R zdny>nS#FY4%~ItOyA=`f!`Vu)H7Rj*>y1i*^M^h~ajzDMil}&*!_?#|b#Vpf&S(y$ zl$(Ea*u53lvjxivjbjwQn|}U$_V>Bd#*2UMJMZabKT)cKee&Ai=SsbAv-@is>fheq z%^)ND;@1AZ2Om{mNrZ+d zN9S+Q;Z|g6b!uGPB;L48<;EKCZ*hB;2btbn(RuaR@v9GZtvjUP^I=8VdHy8koGUDI z!)9xreVt+?$#a+?AV_0XZsnyY2bzLfR9gV#&un!10QIm@>3 ze7pbk$JfW|=lSB4TM|s95^tM5{umJ~;i0+n*C#dx>qneZSDj3YE!zE&L6K$M>maSE z8*;5r0S$OwWNCB$u!(O&K+V3wnGrf-PH)O~&nY{fA;`=Sd)-q-h^O88)KjDKZ*oNz zA1X?}C1z^aO>3NT>3rJeC!Z@HeYEI%Ji$lp<@etVOD<=oZIXX=1FKmSSkAo1A81sGDS(nx<=Mnrdd4 zY-VVbmS#SAEwh%2X{w1qim`c;Zc?ggqOL`<36L-{OVl+=PBJi0PD`{%Ofld5o4Jok zCDk~^G%3}>P}efe*ibh$38*qLCCNh9$SBps$i&dd!Xhbk@&i^W7IQ10BMLY|H!HC7 zF%stzByDqvv&fM1RK2L-_7w~aj0Zej978O6mrgS5xEvsHyq>es%d2x~#Zpa?Ll+mn z6kfHR>)r#UJgvJdjz420aP;U?v4eb7-52uoSm*BI2)li0v%r!I6E3wi z2fR2~JfX$gnSEz|)t>i%|Nnpg_lJn4>T=DmAz2RG{L$&>j!W&H{@%Nx{;qvKqs70q zTI#=>kM{34xaz~Jx6%xI{$F58IO3rv#=T{uoN-Y2(c9vBLG^{*Ws6&X*B+7nC~~}T zgAVs)6HBvZi7iK1W|umC{;94NI=gokYs1I03 z&-K4O`z_Jd_}F5{y3;8}fkHej0x?yUtPSDUoPm~|-Syz)y=260|5RqmBq z_WW~Ylfr>*xeXqBK0lD!8>ioN<7J7#pJJ~w3=W~8K`TWLKb%ms^UT+0v3+ce{pap= z#vjR+8F!^)|~qk(COwcvF3nJOxf;O)sF>p5B|Rr@6NJrvqj9y76u^jboFyt=akR{0GVVk AoB#j- diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png index 6a86cf75324c547715549e6799ffbedcfb4f0522..132252a25f6f2b7f71370edf238dabc6796d4f2e 100644 GIT binary patch delta 713 zcmca8c|~$VEHkT-rInG%kM z!ZOhy)xt6*(QGm^imfr)OCxq(5lv4Nq9X-d-O zKo)0al|=It)6~Q?16>0PBU4>NbD&BKi?n3j6muhUBTM5{L-Q2F$+4U=P*>D(22GA* z7oF_D@sl{$AZwjPoNYE-H|j4;krQHIU|izq;uvDlyL9r#ENMr9w*96;MofiHtq+Tw z9;qZQigDn7aHv&URISx1t9<1rrc9o^D?3XQ3nps03KdMYX;{5QDe9#Fmv)Q55rrd3 z?>ZDd?b>yCd9YOVs+&Kb%cuRHDR@j`Ub6N1B<7hXZr-n*%aZk-?ZK8mj18CTXLEm) zkpKHuojXS;_PVR4>+dDPj%myO7u@_kO=HSUmFZrpIk(-sPJaC;y4|+bUgDD7%Yxg% z49^NDhOlqTef-;wp<36x@n>_QS98RXdVQzIyF3q_eJ;N-{>FLc56?E7{eA6rMafFd zmc)+KNX; zTVA;4-?_zo$M0%9Sy1h=_+o;M+;YZp}Q&%G5~?6tDnm{r-UW|%d{T@ delta 710 zcmca2c~NphEHkTtv6ZRiMK{^p zG9|?{)xyHaz;ZG(iJssrYVtB>XOW=CW4%{CyF}_5MGmg5{>{sBOTMM4MW9KdMdFN} zU`x;HNSjHQj%=Ux@J{iwGY{hyZhfY?^|OlE1mpJRyW(aSeynCZw|Y6locne4!u=l~ zzHijs;P=Ibzu{ebGV{xszmBHji!3FTJ-I#sy!K7?<3<@VlP*GU7q>H zaV2R!o=C5gamP1ru;?)}I^pzZ^Zcx2X$P;9Z@<5O6K7MvQ1N@!Y0u|#?+F-8U8Wi2 zwe0dr*FWK$#_YXr&f9P2a+k=o>)(?sl&JssrgHY)zT=7SIT{o=Sk|O2n6fEudeEgm zPc9#MUN@uYhV`PWS%y-*Mt*7&W?Ltni($T!WjZD3PR-tD&-)uJdMbYY<7N0+bFV1V z(qmG~)1sMo-?wWPN_?!WVcg3dbKO;Qt1Yu}=g(!=u4YZWnKRAw>g&=Lfhk_9lT;Q4 zXc$QFIB+yM5M~r()(3&u9waK2>lAT0uZ@c*Y?^^9FkLdj$_J3uV Xowi8MtcT+i0}yz+`njxgN@xNAhHn?L From 5dbbe508f88b7583a56293cfbded005aeb78ebb5 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 07:42:05 -0400 Subject: [PATCH 04/28] fix affix requirement on sinistral/dextral --- .../currency/reworked/ExileCurrencies.java | 4 +- .../reworked/item_req/ItemReqSers.java | 2 + .../currency/reworked/item_req/ItemReqs.java | 2 + .../item_req/gear/MustHavePrefixesReq.java | 45 +++++++++++++++++++ .../item_req/gear/MustHaveSuffixesReq.java | 45 +++++++++++++++++++ .../resources/assets/mmorpg/lang/en_us.json | 2 + 6 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHavePrefixesReq.java create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveSuffixesReq.java diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 9684e12e6..0b8ac9b99 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -152,7 +152,7 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) .rarity(IRarity.LEGENDARY_ID) - .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) + .addRequirement(ItemReqs.INSTANCE.HAS_PREFIXES) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_PREFIXES) .potentialCost(30) .weight(CodeCurrency.Weights.UBER) @@ -162,7 +162,7 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) .rarity(IRarity.LEGENDARY_ID) - .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) + .addRequirement(ItemReqs.INSTANCE.HAS_SUFFIXES) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_SUFFIXES) .potentialCost(30) .weight(CodeCurrency.Weights.UBER) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java index 79a23832d..68aa7b63e 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java @@ -6,6 +6,8 @@ public class ItemReqSers { public static String MAX_USES = "max_uses"; public static String IS_RARITY = "is_rarity"; public static String HAS_AFFIXES = "has_affixes"; + public static String HAS_PREFIXES = "has_prefixes"; + public static String HAS_SUFFIXES = "has_suffixes"; public static String HAS_IMPLICIT = "has_implicit"; public static String HAS_CORRUPTION_AFFIXES = "has_corrupt_affixes"; public static String IS_NOT_CORRUPTED = "is_not_corrupted"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java index b805a0564..2b98dcb68 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java @@ -71,6 +71,8 @@ public static List allMaxUses() { public ExileKey LEVEL_NOT_MAX = ExileKey.ofId(this, "lvl_not_max", x -> new LevelNotMaxReq(x.GUID())); public ExileKey HAS_AFFIXES = ExileKey.ofId(this, "has_affixes", x -> new MustHaveAffixesReq(x.GUID())); + public ExileKey HAS_PREFIXES = ExileKey.ofId(this, "has_prefixes", x -> new MustHavePrefixesReq(x.GUID())); + public ExileKey HAS_SUFFIXES = ExileKey.ofId(this, "has_suffixes", x -> new MustHaveSuffixesReq(x.GUID())); public ExileKey HAS_IMPLICIT = ExileKey.ofId(this, "has_implicit", x -> new MustHaveImplicitReq(x.GUID())); public ExileKey HAS_CORRUPTION_AFFIXES = ExileKey.ofId(this, "has_corrupt_affixes", x -> new HasCorruptAffixes(x.GUID())); public ExileKey IS_NOT_CORRUPTED = ExileKey.ofId(this, "is_not_corrupted", x -> new IsNotCorruptedReq(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHavePrefixesReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHavePrefixesReq.java new file mode 100644 index 000000000..3264e7755 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHavePrefixesReq.java @@ -0,0 +1,45 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.GearRequirement; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.ItemReqSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemStack; + +public class MustHavePrefixesReq extends GearRequirement { + + public MustHavePrefixesReq(String id) { + super(ItemReqSers.HAS_PREFIXES, id); + } + + @Override + public Class getClassForSerialization() { + return MustHavePrefixesReq.class; + } + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Must have prefixes") + ); + } + + @Override + public boolean isGearValid(ItemStack stack) { + ExileStack ex = ExileStack.of(stack); + + var gear = ex.get(StackKeys.GEAR).get(); + return gear.affixes != null && gear.affixes.getNumberOfPrefixes() > 0; + } +} diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveSuffixesReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveSuffixesReq.java new file mode 100644 index 000000000..67f660c6f --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveSuffixesReq.java @@ -0,0 +1,45 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.GearRequirement; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.ItemReqSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemStack; + +public class MustHaveSuffixesReq extends GearRequirement { + + public MustHaveSuffixesReq(String id) { + super(ItemReqSers.HAS_SUFFIXES, id); + } + + @Override + public Class getClassForSerialization() { + return MustHaveSuffixesReq.class; + } + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Must have suffixes") + ); + } + + @Override + public boolean isGearValid(ItemStack stack) { + ExileStack ex = ExileStack.of(stack); + + var gear = ex.get(StackKeys.GEAR).get(); + return gear.affixes != null && gear.affixes.getNumberOfSuffixes() > 0; + } +} diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index c3a4adf1d..ee64b343d 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -3577,6 +3577,8 @@ "library_of_exile.item_requirement.has_affix_uncommon": "Must have %1$s Affix", "library_of_exile.item_requirement.has_affix_unique": "Must have %1$s Affix", "library_of_exile.item_requirement.has_affixes": "Must have affixes", + "library_of_exile.item_requirement.has_prefixes": "Must have prefixes", + "library_of_exile.item_requirement.has_suffixes": "Must have suffixes", "library_of_exile.item_requirement.has_corrupt_affixes": "Must have Corruption affixes", "library_of_exile.item_requirement.has_implicit": "Must have implicit", "library_of_exile.item_requirement.has_infusion": "Must have Infusion", From e11a344d2751d4da23349a98cbbf11688273acd6 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 09:16:28 -0400 Subject: [PATCH 05/28] adjust rarity and potential cost of rebirth orbs --- .../currency/reworked/ExileCurrencies.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 0b8ac9b99..5c2dc9d99 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -141,31 +141,31 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey REROLL_ALL_AFFIXES = ExileCurrency.Builder.of("affix_reroll_all", "Orb of Rebirth", ItemReqs.INSTANCE.IS_GEAR) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) - .rarity(IRarity.EPIC_ID) + .rarity(IRarity.RARE_ID) .addRequirement(ItemReqs.INSTANCE.HAS_AFFIXES) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_AFFIXES) - .potentialCost(20) - .weight(CodeCurrency.Weights.RARE) + .potentialCost(10) + .weight(CodeCurrency.Weights.COMMON) .build(this); public ExileKey REROLL_ALL_PREFIXES = ExileCurrency.Builder.of("prefix_reroll_all", "Orb of Sinistral Rebirth", ItemReqs.INSTANCE.IS_GEAR) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) - .rarity(IRarity.LEGENDARY_ID) + .rarity(IRarity.EPIC_ID) .addRequirement(ItemReqs.INSTANCE.HAS_PREFIXES) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_PREFIXES) - .potentialCost(30) - .weight(CodeCurrency.Weights.UBER) + .potentialCost(20) + .weight(CodeCurrency.Weights.RARE) .build(this); public ExileKey REROLL_ALL_SUFFIXES = ExileCurrency.Builder.of("suffix_reroll_all", "Orb of Dextral Rebirth", ItemReqs.INSTANCE.IS_GEAR) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) - .rarity(IRarity.LEGENDARY_ID) + .rarity(IRarity.EPIC_ID) .addRequirement(ItemReqs.INSTANCE.HAS_SUFFIXES) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_ALL_SUFFIXES) - .potentialCost(30) - .weight(CodeCurrency.Weights.UBER) + .potentialCost(20) + .weight(CodeCurrency.Weights.RARE) .build(this); public ExileKey REROLL_RANDOM_AFFIX_TO_MYTHIC = ExileCurrency.Builder.of("affix_random_mythic_reroll", "Orb of Divine Benevolence", ItemReqs.INSTANCE.IS_GEAR) From 1b0d5305d5d4d50d215550083ebbc4603902cfae Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sat, 23 Aug 2025 09:30:40 -0400 Subject: [PATCH 06/28] add shading to outline on sprites --- .../item/currency/affix_reroll_all.png | Bin 3288 -> 3288 bytes .../item/currency/prefix_reroll_all.png | Bin 3033 -> 3312 bytes .../item/currency/suffix_reroll_all.png | Bin 3284 -> 3284 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png index 9e1884af89cab8e21230b44e99b4bfed2302a99b..1816eabc470eae393cfcc5a7fdc1a0cb1b87d1e2 100644 GIT binary patch delta 725 zcmca1c|&qTG&8%Um64^DvB~5lW;HmwpE*Fq!ooBqG0D(G*V5G7K-Vb6#6UMG*(6!l z*fh~BB`wX!z%tEfGBb;oN{WSnxp|V2xvphOqM>eDqKS#Fg>ho4u5nUIa!OKaQj)2W z<>o*ZXJ!=x!^9*D<5UA(Lz6UPT>~SN6x}34BTHRlpoytzNr`60mL`*9Ii=w4sN)Qp z9LFv?*@5FHaqdCYJc~FRZMbgK-RkDM}}kd?AHgvugj}9a!Eb9cx_?S-fwO34?cZ1xAn`nV@UY^lFvQ5T}wTka^c zqu{|DiJ*K_jj3K9n!apK98Y)YB}zQ1-2O!Q^VgT6Z=cOHQ5*-@GRG55 zqyqJ(-^|{hWXAKdyn4^>pB{U!Doj6ZIM?qnPt5husa~x)X5LB@9lSiXrY0FkFibfA ze4|dckJ@4P8oT3#GFEf>90ekz7QNo}E3@YQ{?-|O#xs2)^rq{GaUXlU(ay3-;`gcY h!(pN`lSHpwv=_g>?7~USGCKw!@O1TaS?83{1OSCP9qa%A delta 725 zcmca1c|&qTG&8%om4UI9iP7XFW;HmwpE*FqFvT>^B zkj0rK<4zzF#Nmlc=o8ujOxt&sAgjzKeC-O_$1?=dkZbC-$JzlMg_;?kFvcwTTi z^7Tm4I*#2pON*!an;tek|9RhgV`C@HqgEHL1u+Yj2maY0s&Fn_z42PzmU_w9_%SwWLN*kPie zfW7WxnyU1JUw7}l`e@#~ek$|R{OZkG^xcio^fr({LG56(#&MR{+ z?c2l2@t^(SK4#6OOgnzpy`K2-5gUKF*x&lR^U^DCtzk}xoW_x=u=ERGOp3qeRNtcZ zNivgOURZc*&E)gXH|E~HoRRl6M630&#f)d!pVs|&cxq8;*;~#<7c&xA^qGAxUnrHm zy-ibu>&@1E2C`OPcH8c={kP=Snq&#K$tP9jG)@Upo$Pt(rO8B(mWvrKI%3HN5)2bg zrU*Dq@Nid|aW?J6F2CiM4{p*C%(-H=h**kUECUdDy85}Sb4q9e0Dj0Hq5uE@ diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/prefix_reroll_all.png index 956cac8af2b07573dc25f4df2a38f236f8332f94..00075939d8fc015e49f6ec67e9634b01b558d6b6 100644 GIT binary patch delta 1035 zcmca9{y}nr1ryh`jaH#d965Q#RwbEfX_MbEiiv_4`i6Q2`br8FxgeR;icGK!Cx`)- zncU4(#cpY3WMO4uF`0*14bHY?4p2!oPBSn_GdI#rHA*(rHBB}#*G;l8P13b6O-!-0 zG&VFyvNWH(mRUuWSK}5na$2DZcHi$ zh89MKsm7_gh6WZ!x|U`pX<+Z^nj4z~-I| za(2~!^tyMIfr0UWr;B5VMeou{_8pf4WRBZ=GEbeNq+792mh1fD>&yH*pQ~{3?Xs}= z(VpkTe)M1{d*SB=Rn3pr^7+Z0J9zN*vmgPPT^;q&k661ncr(2%I9lb7EL1TOpZhCz z(scRz?|(o0JWr@i@wG?nY2J*Br?0In?mT$zs=MNWbM^0S8T$A`Q%mjU)cdl{F}as< zH*($WY7WJMfn|VGl~t5~Htl-+rIUGx;6t4c)I$ztaD0e0s!%FgWmuE delta 778 zcmew$c~g9X1rz7qjaH#dlb{7&5VGo7@J$_CZ#2&>Y62+Bc0%H-Kx7L&WVI_v#! zrKmD6Fdp)BaSXBOT{_9OL)cNGZT?*rCFv%WgWR4926C30BvrFixx{WoMEr2JQfy61 zT-|!3QsDfdPf^^fMWP}qUgj`0xk_DJ!MQV&gvO?n+#qXw{KcD@5 z?zHjZpZm^xdf88u>R_L|Hu$+x@7wJD+J^eK_jfbM$iBF>|L?&^)mIW?D>fIFZ_RtB z)NpR&#`{~` zp5;NNH&=9CeRllngI((mDfoO?QFfj`i8<#A%iOTp+Gk&<7)kORW(Ww$Mjlud6=hRgv(_)Kue`HW(S@$|fYwCtv>r+4jo)=l#oIh;h+YnH*uW)9B zj+oP%vfXpa&SwZRGsIr^R1xB7cRuyhsQjB;k;R9K(r<~G8g|nfr(8Opw)x5D%10k9 z`W{d4QG5CQH^Y+4nQ5CP`yRJ!XSWY*wBS3j3^P6 diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png index 132252a25f6f2b7f71370edf238dabc6796d4f2e..4dc019985ba00f4c97cb60005ec6cd65deba93ad 100644 GIT binary patch delta 762 zcmca2c|~$VG&8%Um64g1p~d7RW;HmwpE*D!+0fL;)FRnX*Vx$9NH@*UBu&>MH6>X$ z$=uY;B01S2$vioAGBb;oig}tra-w;fp{_+zYND=*k%_6UrIB%pZlY;Qa*C;mfkA4r z;pRXVXJ!@CWK)ym6iWkL6oKkRi)Nuw) zj$;>{?7;DpIQO7xo<*FEHe6aNiH3$oMixeFS$5R2ZWlQw4Gc91w)AD+d-s{B~dZN&`_!-ZjO6|V&{ z+I5z;!W~8m4I}`o)r&wtz)`T{Y$K2ZvFfGBYP|hZ#y|{$(6qU zednJK%nhF(2e%nLxci=YV?pEVU8_R05@)H+^=sdJR+(W>UcdP6^*{d~e}4M>=PQ$X zSTCD=wBc`9YHEG;^RB%;tg?$9Tb$Z*g%4ZZP&Iv zdrujyj)_0I#@u|x)vT7p8D|&Vf8TvEqh-n@uce1_%pSl0sQ<6_-G{FaT!f2u#(1TA zIf}UYs0r8Z-`DkVm+igZ?H6p0Y|>dW<+HIzfZp`b#TOGSWL`yWjdJC1+!&$K<*fAS zr_I{1ZUv4bch;|&a%htdS1Z%wj}n@ymtRgP+r2h@l7KOnkmzSI^(EH2cf`&4Jy)_l SYmzl!00K`}KbLh*2~7a&CM|vd delta 762 zcmca2c|~$VG&8%om64^Dk;&vFW;HmwpE*Fq*euD=EHN=v*DT4xT-PGiBvIGG+%QEq zCCS1v(IC~rG9}S$GBb;oN{UgUaY~wHnyz7LQnGH6iHWIhl7)eZZj!lyL9(%dp^0fq z(&j)GXJ(Z|^Ayw6#54n40}CTlT|;xAN(+m$WZe{VBXc85<5WZQ6vN4}oKkRi)Nuw) zj$;>{?7;DpIQO7xo<*FEHe6aNKnIx`q*){aU2S5ln`~%erkiA(Xr`NHVrpP$ngsM& zlHueouCDqEQ{;pg7#Np$x;Tbd^e&yeF-zJ}pl!dYkP%a%Q|rSbr$;J@i((x39~^3x z7FBC?$|_&^i7AsO@5;{7#Da-hu0jQqZ5mc@QHpvgz@^a4`ajS`q|tcCFK9URp-tTioNct z>H2$#uw&Y?{{=UHPt%xkQ)RlBYR+vpuajRtif*@UwU@YL_p;!2FvGLLi6QLUav%S; zW2n|OZ~WPu=+zu?q+Z|Y@h;CpXP?V&jK6W7`NOjfXMbP2T~V@9vn8=3HB$4@e;=3X zfYn!hHsADV@X}n@zy3o#yK~&WtWDR8EMLemDl8S*u(0u()agw#{FWE4`FCz{-|@Q| zPZm_WEWVgvBe&f2#F@`YcJmi+T^6)*L)`kGUtg;4-|w++er+%3%^b6fsf(HwI3o0> zfBc;%@`%5!Cgk}A+v9~YTdv(U?JzTpHeVK_XFU7tqa|5ey9An&HhKuKJSlRv{Pou^ z$ZO&)W`<;*zQ+L?A`v=b8EYfghWV&Xwon%e%-QXB{`0nZ87{YewJyKK{Mu$2L+Gx` QgA736>FVdQ&MBb@0LjcNRsaA1 From c5635893b5d1b46fd647936a52b5da27bfaaf2a3 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 08:57:24 -0400 Subject: [PATCH 07/28] Add Orb of Ascension (rarity upgrade) --- .../currency/reworked/ExileCurrencies.java | 10 +++ .../item_mod/ItemModificationSers.java | 1 + .../currency/reworked/item_mod/ItemMods.java | 1 + .../item_mod/gear/UpgradeRarityItemMod.java | 82 ++++++++++++++++++ .../reworked/item_req/ItemReqSers.java | 1 + .../currency/reworked/item_req/ItemReqs.java | 1 + .../item_req/gear/HasHigherRarityReq.java | 44 ++++++++++ .../resources/assets/mmorpg/lang/en_us.json | 3 + .../item/currency/gear_rarity_upgrade.png | Bin 0 -> 3257 bytes 9 files changed, 143 insertions(+) create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_upgrade.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 5c2dc9d99..cc3d7be6e 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -298,6 +298,16 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.RARE) .build(this); + public ExileKey UPGRADE_GEAR_RARITY = ExileCurrency.Builder.of("gear_rarity_upgrade", "Orb of Ascension", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.MYTHIC_ID) + .addRequirement(ItemReqs.INSTANCE.HAS_HIGHER_RARITY) + .addAlwaysUseModification(ItemMods.INSTANCE.UPGRADE_GEAR_RARITY) + .potentialCost(35) + .weight(CodeCurrency.Weights.UBER) + .build(this); + public ExileKey UPGRADE_MAP_RARITY = ExileCurrency.Builder.of("map_rarity_upgrade", "Orb of Map Rarity", ItemReqs.INSTANCE.IS_MAP) .rarity(IRarity.EPIC_ID) .addAlwaysUseModification(ItemMods.INSTANCE.UPGRADE_MAP_RARITY) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java index a29a4ecc5..a2eb49169 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java @@ -12,6 +12,7 @@ public class ItemModificationSers { public static String UPGRADE_JEWEL_AFFIX_RARITY = "upgrade_jewel_affix_rarity"; public static String SET_AFFIX_RARITY = "set_affix_rarity"; public static String DOWNGRADE_AFFIX_RARITY = "downgrade_affix_rarity"; + public static String UPGRADE_GEAR_RARITY = "upgrade_gear_rarity"; public static String CORRUPT_GEAR = "corrupt_gear"; public static String MIRROR = "mirror"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index ba06c05c4..6006f711b 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -77,6 +77,7 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey REROLL_ALL_SUFFIXES = ExileKey.ofId(this, "reroll_all_suffixes", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.ALL_SUFFIXES.get(), "random"), "")); public ExileKey REROLL_INFUSION = ExileKey.ofId(this, "reroll_infusion", x -> new RerollInfusionItemMod(x.GUID())); public ExileKey UPGRADE_MAP_RARITY = ExileKey.ofId(this, "map_rarity_upgrade", x -> new UpgradeMapRarityItemMod(x.GUID())); + public ExileKey UPGRADE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_upgrade", x -> new UpgradeRarityItemMod(x.GUID())); public ExileKey ADD_25_POTENTIAL = ExileKey.ofId(this, "add_potential", x -> new AddPotentialItemMod(x.GUID(), new AddPotentialItemMod.Data(25))); public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java new file mode 100644 index 000000000..044e7342f --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -0,0 +1,82 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.GearModification; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.ItemModificationSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.database.data.MinMax; +import com.robertx22.mine_and_slash.database.data.rarities.GearRarity; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; +import net.minecraft.network.chat.MutableComponent; + +public class UpgradeRarityItemMod extends GearModification { + public UpgradeRarityItemMod(String id) { + super(ItemModificationSers.UPGRADE_GEAR_RARITY, id); + } + + private static int uniformRescaleInt(int x, MinMax from, MinMax to) { + return Math.min(to.min + (x - from.min) * (to.max - to.min + 1) / (from.max - from.min), to.max); + } + + @Override + public void modifyGear(ExileStack stack, ItemModificationResult r) { + stack.get(StackKeys.GEAR).edit(gear -> { + GearRarity oldRarity = gear.getRarity(); + GearRarity newRarity = oldRarity.getHigherRarity(); + gear.rar = newRarity.GUID(); + + // Rescale affix values to upgraded roll range + MinMax oldRange = oldRarity.stat_percents; + MinMax newRange = newRarity.stat_percents; + + gear.affixes.getPrefixesAndSuffixes().forEach(affix -> { + if (affix.p < oldRange.max) { + affix.p = uniformRescaleInt(affix.p, new MinMax(0, oldRange.max), new MinMax(0, newRange.max)); + } else { + // The affix was already at or above the top of the range, just make sure it stays there + affix.p = Math.max(affix.p, newRange.max); + } + + if (affix.p > affix.getRarity().stat_percents.max) { + // New affix value requires rarity upgrade + affix.rar = affix.getRarity().getHigherRarity().GUID(); + } + }); + + // Rescale base stats to upgraded roll range + gear.baseStats.p = uniformRescaleInt(gear.baseStats.p, oldRarity.base_stat_percents, newRarity.base_stat_percents); + + // Add new affix + for (int affixesToAdd = newRarity.getAffixAmount() - gear.affixes.getNumberOfAffixes(); affixesToAdd > 0; affixesToAdd--) { + gear.affixes.addOneRandomAffix(gear); + } + }); + } + + @Override + public OutcomeType getOutcomeType() { + return OutcomeType.GOOD; + } + + @Override + public Class getClassForSerialization() { + return UpgradeRarityItemMod.class; + } + + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Upgrades Item Rarity, increases Affix Numbers, and adds an Affix")); + } + +} diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java index 68aa7b63e..b1697c449 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java @@ -16,6 +16,7 @@ public class ItemReqSers { public static String CAN_ADD_SOCKETS = "can_add_sockets"; public static String IS_UNDER_QUALITY = "is_under_quality"; public static String MAP_HAS_HIGHER_RAR = "map_has_higher_rar"; + public static String HAS_HIGHER_RAR = "has_higher_rar"; public static String HAS_RARITY_AFFIX = "has_affix_of_rar"; public static String NOT_CRAFTED_GEAR = "not_crafted_gear"; public static String JEWEL_HAS_AFFIXES = "jewel_has_affixes"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java index 2b98dcb68..3dc1024cb 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java @@ -84,6 +84,7 @@ public static List allMaxUses() { public ExileKey NOT_CRAFTED = ExileKey.ofId(this, "not_crafted_gear", x -> new IsGearNotCraftedReq(x.GUID())); public ExileKey HAS_GEM_SOCKETED = ExileKey.ofId(this, "has_socketed_gem", x -> new HasSocketedReq(x.GUID(), ExtractSocketItemMod.SocketedType.GEM)); public ExileKey HAS_RUNE_SOCKETED = ExileKey.ofId(this, "has_socketed_rune", x -> new HasSocketedReq(x.GUID(), ExtractSocketItemMod.SocketedType.RUNE)); + public ExileKey HAS_HIGHER_RARITY = ExileKey.ofId(this, "has_higher_rar", x -> new HasHigherRarityReq(x.GUID())); // maps diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java new file mode 100644 index 000000000..21bfb6715 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java @@ -0,0 +1,44 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.GearRequirement; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.ItemReqSers; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.MapRequirement; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemStack; + +public class HasHigherRarityReq extends GearRequirement { + + public HasHigherRarityReq(String id) { + super(ItemReqSers.HAS_HIGHER_RAR, id); + } + + @Override + public Class getClassForSerialization() { + return HasHigherRarityReq.class; + } + + @Override + public MutableComponent getDescWithParams() { + return getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + @Override + public boolean isGearValid(ItemStack stack) { + var data = ExileStack.of(stack).get(StackKeys.GEAR).get(); + return data.getRarity().hasHigherRarity(); + } + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Rarity Must be lower than Mythic") + ); + } + +} diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index ee64b343d..8ac9b28b7 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -578,6 +578,7 @@ "item.mmorpg.currency.jewel_upgrade_affix": "Orb of Glimmering Light", "item.mmorpg.currency.level_up_orb": "Orb of Infinity", "item.mmorpg.currency.map_rarity_upgrade": "Orb of Map Rarity", + "item.mmorpg.currency.gear_rarity_upgrade": "Orb of Ascension", "item.mmorpg.currency.orb_of_quality": "Orb of Quality", "item.mmorpg.currency.orb_of_relief": "Orb of Relief", "item.mmorpg.currency.sharpening_stone_0": "Spiritual Sharpening Stone", @@ -3525,6 +3526,7 @@ "library_of_exile.item_modification.increment_uses_sure_jewel_up": "Increments Uses", "library_of_exile.item_modification.jewel_corrupt": "Corrupts the Jewel", "library_of_exile.item_modification.map_rarity_upgrade": "Upgrades Map Rarity", + "library_of_exile.item_modification.gear_rarity_upgrade": "Upgrades Item Rarity, increases Affix Numbers, and adds an Affix", "library_of_exile.item_modification.reduce_5_perc_unique_stats": "Reduces %1$s Percent to Unique Stats", "library_of_exile.item_modification.reroll_infusion": "Re-rolls Infusion Affix", "library_of_exile.item_modification.reroll_lowest_affix": "Rerolls %1$s into a new %2$s", @@ -3602,6 +3604,7 @@ "library_of_exile.item_requirement.jewel_has_affixes": "Jewel Has Affixes", "library_of_exile.item_requirement.lvl_not_max": "Level must be below %1$s", "library_of_exile.item_requirement.map_has_higher_rar": "Map Rarity Must be lower than Mythic", + "library_of_exile.item_requirement.has_higher_rar": "Rarity Must be lower than Mythic", "library_of_exile.item_requirement.map_is_mythic": "Map Rarity Must be %1$s", "library_of_exile.item_requirement.max_uses_level_up": "Maximum %1$s uses", "library_of_exile.item_requirement.max_uses_random_mythic_affix": "Maximum %1$s uses", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_upgrade.png b/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..e8885af67ed6f73187f433950b4732104d96a29a GIT binary patch literal 3257 zcmcgv32@Y86b=qBP!72~29bt<0=C&?bL?g_EV%80t#(VNbf5?-f0BQ@8FrJHq!%85 z)~4~M|NGwi z-uK@B@7$uoyLx2|%)l_LSAJfw7=8C~-rc&Q&&=P?0`%40$eV0oSdaeByA$^Et2bj< zMo29wwM#<(ej@HyMAyz^iooM0_H;iHZ~*br zP!XQ1n-KT8+@ws?Zrtm00YTxsJe!R(G{aIfOED}-3nK3kSudV^5eUvy!eVi7ToMf3 z`H6^a8zMzjR#v(yS(k2>QEs2lN6`$$FeI`dt!m8%RitJOO?e1HOEy)*R&@<`JOW8C zxBUbPHIYNiNW0anBu|JjstOpC+eJG$#SIlXZD*95(KxswQ!ol+P_r#$>rUGm5#83U zh<*vz>7UO7K-`8xX^eJbiN(?omOZutrI940U2ChP+JICswDfXQhGQ#Gm_t+9SavZy z$LAF+N9OUxhL~$YVC!ayu18a4E=uK#Gn~tVkC>!tie71rbkLFuU=Y~QPoR?XsMsXK zmC(HCW<=Ia(ws=s3Dc0SsNw31O$8Adal(0~NN@_UL5IeQEQWP61`u0n43t62(8>rr zT>~*!kLo4@M$xhHC_*7IU$bnW$uK|YCr}D5RaHc{q$oh)8PY3w00|V%O#%UgNkO8$ zz$bYiWZbFsL0v9)WZ|q&w1}e1$j3QUf%9-~o@PizViXekIF1A!$dh5oC;MbsQ3L^` zyp1vBAaP7sA_W%FN{8c7@jMAxnUfWUS6G2@THzdW%1Z#{XQ4t` z$yUn&Wy!0kI{IqdkD{EuLW}UkRl*TnCJK zbWkCZkJWbSb45%f*H=a$a(WptCeSTCY*zvk2Fg$^I}|&0$>4RZ0-9~YH-HJyz=Wpd zC&H#4!_&gVZ5;=O5mja2Bu-UmN^&Np=_D?RV}XjxQv?LJ40-4!W!A%yULO*R;8AGO z<6$M)%_tJ>^Q0(lk0ORgBRbWD|Ae9>{c;3oWe{yQ)HNg{DQ<}YK9=NwO?u>7iV!Jcv3N?s!PZ8|^={@0U#;c=YXT5%{ zyMQw{;)%C85~UuYbCz?NKH;I8^cfLqs8daJ0(|)61?U)hUBCQbphQ?uzG!@;e_%lU zmNT7dOE<5qjo$O=qMHKy)zw7@8}6^^m-owt*GsdA!P&=J8Vc$nkB#WIaK+%KN;)r- zvOeQF4f$+h-SPq1Ra1KnF7VcCFR#p7zhn;gUH0V6QH!hD@Ac+7Z(~kBt#$gs3`~4_ z=E^Ru$472_$KUYvk^G6wjkV7W$a(ga zdwM=u*fltO)28JE`OyC7yDyqQe5R+%O06%^J3DVrl-!$ql9Nf6%=s z@7+Pic5ZufM9sAF=AvPTG@Ci%Zp)~n|plWKU4GGl*ZP3v#>vTtTECB z`}xBodv>i;o82*qRqV?`uTxV8PDu~eDC^i zb{<@KaNDGL%WBWOR9Jg*>6cSV=5A%T-uuac0{-_^UGrTvf6n>*228*f^ugWFs zV+fX4llj(*?>=+%`TbZ+XKs(Nbk)EEJ5FvyWjTv&JrHX=yvtkR{JF> Date: Sun, 24 Aug 2025 08:59:59 -0400 Subject: [PATCH 08/28] improve orb of ascension description --- .../currency/reworked/item_mod/gear/UpgradeRarityItemMod.java | 2 +- src/main/resources/assets/mmorpg/lang/en_us.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index 044e7342f..2bed5beae 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -76,7 +76,7 @@ public MutableComponent getDescWithParams() { @Override public TranslationBuilder createTranslationBuilder() { return TranslationBuilder.of(SlashRef.MODID) - .desc(ExileTranslation.registry(this, "Upgrades Item Rarity, increases Affix Numbers, and adds an Affix")); + .desc(ExileTranslation.registry(this, "Upgrades Item Rarity, increasing Numbers and adding an Affix")); } } diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 8ac9b28b7..32bbbf757 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -3526,7 +3526,7 @@ "library_of_exile.item_modification.increment_uses_sure_jewel_up": "Increments Uses", "library_of_exile.item_modification.jewel_corrupt": "Corrupts the Jewel", "library_of_exile.item_modification.map_rarity_upgrade": "Upgrades Map Rarity", - "library_of_exile.item_modification.gear_rarity_upgrade": "Upgrades Item Rarity, increases Affix Numbers, and adds an Affix", + "library_of_exile.item_modification.gear_rarity_upgrade": "Upgrades Item Rarity, increasing Numbers and adding an Affix", "library_of_exile.item_modification.reduce_5_perc_unique_stats": "Reduces %1$s Percent to Unique Stats", "library_of_exile.item_modification.reroll_infusion": "Re-rolls Infusion Affix", "library_of_exile.item_modification.reroll_lowest_affix": "Rerolls %1$s into a new %2$s", From 399d46a98a545ba31b74ed97a360fc59cb18b3ec Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 12:25:32 -0400 Subject: [PATCH 09/28] remove sockets when upgrading rarity --- .../item_mod/gear/UpgradeRarityItemMod.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index 2bed5beae..75048ec93 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -10,6 +10,8 @@ import com.robertx22.mine_and_slash.itemstack.ExileStack; import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.SocketData; +import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; @@ -22,11 +24,15 @@ private static int uniformRescaleInt(int x, MinMax from, MinMax to) { return Math.min(to.min + (x - from.min) * (to.max - to.min + 1) / (from.max - from.min), to.max); } + protected GearRarity getNewRarity(GearItemData gear) { + return gear.getRarity().getHigherRarity(); + } + @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { GearRarity oldRarity = gear.getRarity(); - GearRarity newRarity = oldRarity.getHigherRarity(); + GearRarity newRarity = getNewRarity(gear); gear.rar = newRarity.GUID(); // Rescale affix values to upgraded roll range @@ -54,6 +60,17 @@ public void modifyGear(ExileStack stack, ItemModificationResult r) { for (int affixesToAdd = newRarity.getAffixAmount() - gear.affixes.getNumberOfAffixes(); affixesToAdd > 0; affixesToAdd--) { gear.affixes.addOneRandomAffix(gear); } + + // Pop out runes/gems and remove sockets if needed + for (int index = gear.sockets.getSocketedGemsCount(); index >= newRarity.sockets.max; index--) { + SocketData socket = gear.sockets.getSocketed().get(index); + r.extraItemsCreated.add(socket.getOriginalItemStack()); + gear.sockets.getSocketed().remove(index); + } + + for (int index = gear.sockets.getTotalSockets(); index >= newRarity.sockets.max; index--) { + gear.sockets.removeSocket(); + } }); } From e574413d2b0725427ff8105a808fd4c639653bf3 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 13:17:52 -0400 Subject: [PATCH 10/28] add orb of colors (common to random rarity) --- .../currency/reworked/ExileCurrencies.java | 10 +++ .../currency/reworked/item_mod/ItemMods.java | 3 +- .../item_mod/gear/UpgradeRarityItemMod.java | 59 +++++++++++++++--- .../item_req/gear/HasHigherRarityReq.java | 5 +- .../gearitem/gear_parts/GearSocketsData.java | 4 ++ .../uncommon/localization/Words.java | 4 ++ .../resources/assets/mmorpg/lang/en_us.json | 9 ++- .../item/currency/gear_rarity_random.png | Bin 0 -> 3277 bytes 8 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index cc3d7be6e..bd688e312 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -308,6 +308,16 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.UBER) .build(this); + public ExileKey RANDOMIZE_GEAR_RARITY = ExileCurrency.Builder.of("gear_rarity_random", "Orb of Colors", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.UNCOMMON) + .addRequirement(ItemReqs.INSTANCE.IS_RARITY.get(new RarityKeyInfo(IRarity.COMMON_ID))) + .addAlwaysUseModification(ItemMods.INSTANCE.RANDOMIZE_GEAR_RARITY) + .potentialCost(1) + .weight(CodeCurrency.Weights.COMMON) + .build(this); + public ExileKey UPGRADE_MAP_RARITY = ExileCurrency.Builder.of("map_rarity_upgrade", "Orb of Map Rarity", ItemReqs.INSTANCE.IS_MAP) .rarity(IRarity.EPIC_ID) .addAlwaysUseModification(ItemMods.INSTANCE.UPGRADE_MAP_RARITY) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index 6006f711b..ea807330a 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -77,7 +77,8 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey REROLL_ALL_SUFFIXES = ExileKey.ofId(this, "reroll_all_suffixes", x -> new RerollAffixItemMod(x.GUID(), new RerollAffixItemMod.Data(UpgradeAffixItemMod.AffixFinder.ALL_SUFFIXES.get(), "random"), "")); public ExileKey REROLL_INFUSION = ExileKey.ofId(this, "reroll_infusion", x -> new RerollInfusionItemMod(x.GUID())); public ExileKey UPGRADE_MAP_RARITY = ExileKey.ofId(this, "map_rarity_upgrade", x -> new UpgradeMapRarityItemMod(x.GUID())); - public ExileKey UPGRADE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_upgrade", x -> new UpgradeRarityItemMod(x.GUID())); + public ExileKey UPGRADE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_upgrade", x -> new UpgradeRarityItemMod(x.GUID(), UpgradeRarityItemMod.UpgradeType.UPGRADE)); + public ExileKey RANDOMIZE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_random", x -> new UpgradeRarityItemMod(x.GUID(), UpgradeRarityItemMod.UpgradeType.RANDOMIZE)); public ExileKey ADD_25_POTENTIAL = ExileKey.ofId(this, "add_potential", x -> new AddPotentialItemMod(x.GUID(), new AddPotentialItemMod.Data(25))); public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index 75048ec93..1f8232374 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -7,32 +7,73 @@ import com.robertx22.library_of_exile.localization.TranslationType; import com.robertx22.mine_and_slash.database.data.MinMax; import com.robertx22.mine_and_slash.database.data.rarities.GearRarity; +import com.robertx22.mine_and_slash.database.data.rarities.GearRarityType; +import com.robertx22.mine_and_slash.database.registry.ExileDB; import com.robertx22.mine_and_slash.itemstack.ExileStack; import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.SocketData; import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; +import com.robertx22.mine_and_slash.uncommon.interfaces.data_items.IRarity; +import com.robertx22.mine_and_slash.uncommon.localization.Words; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; public class UpgradeRarityItemMod extends GearModification { - public UpgradeRarityItemMod(String id) { + public static enum UpgradeType { + UPGRADE(Words.UPGRADE_RARITY, Words.AN_AFFIX) { + @Override + public GearRarity getNewRarity(GearItemData gear) { + return gear.getRarity().getHigherRarity(); + } + }, + + RANDOMIZE(Words.RANDOMIZE_RARITY, Words.AFFIXES) { + @Override + public GearRarity getNewRarity(GearItemData gear) { + GearRarity oldRarity = gear.getRarity(); + return ExileDB.GearRarities().getFilterWrapped(x -> { + if (x == oldRarity) { + return false; + } + if (gear.lvl < x.min_lvl) { + return false; + } + if (x.type != GearRarityType.NORMAL) { + return false; + } + return true; + }).random(); + } + }; + + public Words action; + public Words affixPlural; + + UpgradeType(Words action, Words affixPlural) { + this.action = action; + this.affixPlural = affixPlural; + } + + public abstract GearRarity getNewRarity(GearItemData gear); + } + + public UpgradeType type; + + public UpgradeRarityItemMod(String id, UpgradeType type) { super(ItemModificationSers.UPGRADE_GEAR_RARITY, id); + this.type = type; } private static int uniformRescaleInt(int x, MinMax from, MinMax to) { return Math.min(to.min + (x - from.min) * (to.max - to.min + 1) / (from.max - from.min), to.max); } - protected GearRarity getNewRarity(GearItemData gear) { - return gear.getRarity().getHigherRarity(); - } - @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { GearRarity oldRarity = gear.getRarity(); - GearRarity newRarity = getNewRarity(gear); + GearRarity newRarity = type.getNewRarity(gear); gear.rar = newRarity.GUID(); // Rescale affix values to upgraded roll range @@ -47,7 +88,7 @@ public void modifyGear(ExileStack stack, ItemModificationResult r) { affix.p = Math.max(affix.p, newRange.max); } - if (affix.p > affix.getRarity().stat_percents.max) { + while (affix.p > affix.getRarity().stat_percents.max) { // New affix value requires rarity upgrade affix.rar = affix.getRarity().getHigherRarity().GUID(); } @@ -87,13 +128,13 @@ public Class getClassForSerialization() { @Override public MutableComponent getDescWithParams() { - return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(type.action.locName(), type.affixPlural.locName()); } @Override public TranslationBuilder createTranslationBuilder() { return TranslationBuilder.of(SlashRef.MODID) - .desc(ExileTranslation.registry(this, "Upgrades Item Rarity, increasing Numbers and adding an Affix")); + .desc(ExileTranslation.registry(this, "%1$s, increasing Numbers and adding %2$s")); } } diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java index 21bfb6715..140ddba64 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java @@ -6,6 +6,7 @@ import com.robertx22.library_of_exile.localization.ExileTranslation; import com.robertx22.library_of_exile.localization.TranslationBuilder; import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.database.data.rarities.GearRarity; import com.robertx22.mine_and_slash.itemstack.ExileStack; import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; @@ -31,13 +32,13 @@ public MutableComponent getDescWithParams() { @Override public boolean isGearValid(ItemStack stack) { var data = ExileStack.of(stack).get(StackKeys.GEAR).get(); - return data.getRarity().hasHigherRarity(); + return data.getRarity().hasHigherRarity() && data.lvl >= data.getRarity().getHigherRarity().min_lvl; } @Override public TranslationBuilder createTranslationBuilder() { return TranslationBuilder.of(SlashRef.MODID) - .desc(ExileTranslation.registry(this, "Rarity Must be lower than Mythic") + .desc(ExileTranslation.registry(this, "Rarity cannot be increased further") ); } diff --git a/src/main/java/com/robertx22/mine_and_slash/saveclasses/gearitem/gear_parts/GearSocketsData.java b/src/main/java/com/robertx22/mine_and_slash/saveclasses/gearitem/gear_parts/GearSocketsData.java index 60859a544..1e65902a0 100644 --- a/src/main/java/com/robertx22/mine_and_slash/saveclasses/gearitem/gear_parts/GearSocketsData.java +++ b/src/main/java/com/robertx22/mine_and_slash/saveclasses/gearitem/gear_parts/GearSocketsData.java @@ -81,6 +81,10 @@ public void addSocket() { sl++; } + public void removeSocket() { + sl--; + } + public void removeRune() { so.removeIf(x -> x.isRune()); } diff --git a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java index 434d726e4..98671de2b 100644 --- a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java +++ b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java @@ -233,6 +233,10 @@ public enum Words implements IAutoLocName { DestroysItem("DESTROYS the Item"), UpgradesUniqueStats("Adds 10% to unique stats"), + UPGRADE_RARITY("Upgrades Item Rarity"), + RANDOMIZE_RARITY("Upgrades Item to a Random Rarity"), + AN_AFFIX("an Affix"), + Soul("Soul"), GEAR_SOUL("Gear Soul"), GEAR_SOUL_DESC("Souls are one way of adding Mine and Slash stats to Gear."), diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 32bbbf757..60569d40d 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -579,6 +579,7 @@ "item.mmorpg.currency.level_up_orb": "Orb of Infinity", "item.mmorpg.currency.map_rarity_upgrade": "Orb of Map Rarity", "item.mmorpg.currency.gear_rarity_upgrade": "Orb of Ascension", + "item.mmorpg.currency.gear_rarity_random": "Orb of Colors", "item.mmorpg.currency.orb_of_quality": "Orb of Quality", "item.mmorpg.currency.orb_of_relief": "Orb of Relief", "item.mmorpg.currency.sharpening_stone_0": "Spiritual Sharpening Stone", @@ -2843,6 +2844,9 @@ "mmorpg.word.upgradeinfusion": "Upgrades the Infusion", "mmorpg.word.upgradequality": "Upgrade Quality", "mmorpg.word.upgradesuniquestats": "Adds 10% to unique stats", + "mmorpg.word.upgrade_rarity": "Upgrades Item Rarity", + "mmorpg.word.randomize_rarity": "Upgrades Item to a Random Rarity", + "mmorpg.word.an_affix": "an Affix", "mmorpg.word.usable_on": "Usable On:", "mmorpg.word.usableon": "Usable On: ", "mmorpg.word.usablevalueinfo": "Usable Value of the stat. This is used for stuff like Armor to turn it into % damage reduction. \nthe higher level your target, the more value you need to protect against it.", @@ -3526,7 +3530,8 @@ "library_of_exile.item_modification.increment_uses_sure_jewel_up": "Increments Uses", "library_of_exile.item_modification.jewel_corrupt": "Corrupts the Jewel", "library_of_exile.item_modification.map_rarity_upgrade": "Upgrades Map Rarity", - "library_of_exile.item_modification.gear_rarity_upgrade": "Upgrades Item Rarity, increasing Numbers and adding an Affix", + "library_of_exile.item_modification.gear_rarity_upgrade": "%1$s, increasing Numbers and adding %2$s", + "library_of_exile.item_modification.gear_rarity_random": "%1$s, increasing Numbers and adding %2$s", "library_of_exile.item_modification.reduce_5_perc_unique_stats": "Reduces %1$s Percent to Unique Stats", "library_of_exile.item_modification.reroll_infusion": "Re-rolls Infusion Affix", "library_of_exile.item_modification.reroll_lowest_affix": "Rerolls %1$s into a new %2$s", @@ -3604,7 +3609,7 @@ "library_of_exile.item_requirement.jewel_has_affixes": "Jewel Has Affixes", "library_of_exile.item_requirement.lvl_not_max": "Level must be below %1$s", "library_of_exile.item_requirement.map_has_higher_rar": "Map Rarity Must be lower than Mythic", - "library_of_exile.item_requirement.has_higher_rar": "Rarity Must be lower than Mythic", + "library_of_exile.item_requirement.has_higher_rar": "Rarity cannot be increased further", "library_of_exile.item_requirement.map_is_mythic": "Map Rarity Must be %1$s", "library_of_exile.item_requirement.max_uses_level_up": "Maximum %1$s uses", "library_of_exile.item_requirement.max_uses_random_mythic_affix": "Maximum %1$s uses", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png b/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png new file mode 100644 index 0000000000000000000000000000000000000000..45149957417a4ee1ac9c3a8bba5fde1a4376f605 GIT binary patch literal 3277 zcmcIn3v3kC8eR-4RDl&6gI3}=D$r|Z=e@HtcEOe{>;|@$vKNcsT%T*KO~ z9bMw_6h*aIon055Dam@u2NXRHeN8C?NqaoyQ<@AQFN8K0hY2km#QR>@iDQ})#Bb!I zRMeOX>$UI_6V6^z9g~+Vltl%fG8rpxl8}KEv;o$XN~SHTDTrt7N@(r8CUGn)VlNEh z6%HU)7p=jj>L$cQA5F*(k8yNsFRLQVhv31d<@E#c3Nf5oznHf`t&YWK%P2O;2Nv zMG)5;>>!R@&Bc&1T(fB_pC^UH)=2eAg zEV~w-%I8_ABk`=VAx$+Quyr%0>&ZfyYYOpV4CnJ>lWx?~ik`7b9kjdx3;`Pkaa3}S zpecf3V|2FUlt@sVL{T}>sIF-0Vpo($ydW4ZMpF_iO8ien5#bbIgCT_#SyFW~1yHuM z6i7hQNGEX2t${REPwFNDM&7YmFQQQ?lD2G+mSH3m#8C)7O;aS1XBbXpAfYfKO9W_+ zCx9C86Fe(GmZCT)(rQ6Jq{|HsEgbz^izvE`Y@9+3&?+ymf=a|y#ZRa#M-igH3xuDN zkBtn@)UC91Ap_IYo-h@j{%F36-H$ zf)Y595Y+%rC>(>R67cgtL8QyY?xv{Fgp`R^+j2cfCm`Bx$lnnRROmPW zkRwDu1A^x`fe3IiBxqKkc_8|EUUB*Ii(q~}QU2s$2x#aY&nQ_PYLY+ z?w;^##;enij=uhTcL8T^WCI^?Br3c@=PYOGp779vdq#w5)Tt&q0UjB%quJv*XF?=Y z5eq!9clDbyVvCCRP1$+kk)??*H(q+zk%!y5Wb?EZDcho3fDD|fAZa*X}@vhVkWpPx|r z^kp5Me*RHxi?{drz(2?IYv7i{Gb%Z;hOgM;9d}XdOD}iXnenf5H+(6{BStQn?_IxR z1sK=8vgN4s*u(?ArK87q8)m*|iOJodZ0W{u>(#?s(l@N`zNshJIel~8L(vtLqxv^J z*n3aevhQE(Y5lBzi-(K1AMALyJTq-=&llAfv%MRH%VRq{2WrMWcc5}x@u%ni^~Gpp z(cVKp{4em|%ny6!-K<0#CdGEEyLyju7fji7+qS3w4Z?MQFTdm1ibI{3loU1J%_}`! z+O<91#v*G-^#boS@zu%|M}#rk^Y4{DY&bxyQuSPPg}{iOkHFica66b_N}dG z>H5dLYsPQAyX?7_mQUze_vG=^@W)Hmy^xtTchmHfy~lf3%rAY6J#_E(?c(-X_6Hq1 ztEU%@eR$GpeD~g&_r0<8mGzCY_Yj*eJs4Tl7pWmSIu@`;s>4-nO~alVG3}d)%_T=; l^IuzAGIsCsldpbU`oV|K%o|qR<^17@R8@!mRe9UW9|5k-bT0q^ literal 0 HcmV?d00001 From 1d943cbf3aaeaee2c3cb96403e6c93e1c945402e Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 13:33:19 -0400 Subject: [PATCH 11/28] update orb of colors sprite --- .../item/currency/gear_rarity_random.png | Bin 3277 -> 3281 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png b/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png index 45149957417a4ee1ac9c3a8bba5fde1a4376f605..f274e4dcfad9f4140642733eb5e1cedb30cf6d59 100644 GIT binary patch delta 858 zcmX>rc~No$D>J*Xm63&&vBhK_W;Hn5k~u&nEz#UO$-*K{H_0&7Sl86j#7x)1!q7lB zH7&_9)x*ss6+^Q`gXHAYBwh1FO9R~`GoV6CV@ng=v=mEoGjjt|O9KOg z&A*xDm{rWola0;OQj&Fz(kxSS%}q^=bS;uh(sWJJl9SAh4N}dFjEp81ut{pWK=x$NoxWRbihK*ZH%#N%LnbIP$*i2je6|dv{-oLqW*IChPUIA-%sMJpGZ!J70wk~0bNz1yx z>0U+OzwxM^e>U;rktatgOqh>zc?3 ze0!>X@!T%D@RiHG?{7;$d%)A8Iw|GJ0)p&LySD6ozexWsZ~bG7Z~4pAr)!kmYguW% zVD^Pe4Dsp)+iLdTc;R&aW!xpU3Q>Q(C_UzO_lrC$0+S@X=A64&=M}(I)gu}>Kcv#) zN78O)^C=ago~*GZDUJ)+m9eFjspVuIW;Hn5k~u)d($vVvB+V#QH^s=(Sl7bP#8fvi&B9FA z)Yv@L*ucOf)zUC+@>*ss6$`^OQ*&eUG~J}M6f@m4V-o{iOLJ3mT{DB^B=eM{B$Kpc z>Zxj$|5fBkl;t=GyvFx~#qK@}T zC9cwoH!Pl=G3o#PYiriB8B4p*y~;V){{Ck{--Mt|bAz^-@@CY}ntfgGA*)bl+X2;{ zZS@}B*ByVQ+|l%#($e;>H6On~sn4}y z%bdfBI@NPMx>Z=(^86=XiF#ps$$e?W1m6ZH-cR%TU$^Vj{yp)c`*FrH29u<14=!G{ zDR-Ox;;o;s@$1>vf4y#q(Oh8sv}5N^%bkHGH!tq@bLSG8s4-dTu-j3eu2Y*1%`6K( zqPtY`foJD?&j8(v7qg5%`gyoctzcZi;r30vMfyib%!%pJLPzWWAG@!4^VaHUMv==5 OK;Y@>=d#Wzp$P!T*JC08 From 39d23a0a3a9ed64a7b6903e339732aa8c1f28c82 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 13:35:33 -0400 Subject: [PATCH 12/28] another sprite tweak --- .../item/currency/gear_rarity_random.png | Bin 3281 -> 3280 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png b/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_random.png index f274e4dcfad9f4140642733eb5e1cedb30cf6d59..bd42f2235170a08837ccecd6d6de02f52a148612 100644 GIT binary patch delta 847 zcmca8c|mdmJ2Q*1iIwSOZe~pg!-6?b#mvmo$TZb3Mb|VXF;&;n$RtfS$soyCHz_qW zDbXm|(7+@qdGcCjEtRxnvsBAuGgIAE3v&zI)MOJ&-9&TKL|sb*a|?q+qf|>nv((MM zndO+3jf@Q}jLpm}bj^*8jdW8JO_FpilZ{MtQ!LC4ER9VJQ&Np5Kje^Q1v$oI@pvj?}9x6oGXFmBL=c)RcN1y&>U|`bpba4!^=sh}lqrY&W z%u)OO-+t|uTPx$lAUeS;jC+>e5f|ppNfL{j)vP2-E*_j=F*76OV|>A-qZTKf4kav- z@D&zkmt5l2)Ff)+sKA<}Ve9=e_I;JTdSJ0~^Zl2)_osiq_r10?sB5lIhWqV?Z_;;m zR52b8)i7bH=bL&$PxP|tsqYm>HJYzgUX;1M;gp%{ZDs3uf2TjF-gqicljCS|SHTqR zbpNEQ2McYBil*GTvct>on{Zx7=Q}au6$jR83b6~XGM)SE!acQXp)=ZcElR51v8(M= z#gex?r{nEbZtb1Gks{E^(X+x~@}zyq=_i&LNd!GF{B7W+`K6-1W!v-e3tu%t*URyI z^w{KETJ}BZ2+y=|t}V0A-nq5QXLjZz=IMFQGbc?-*~Ol|c~kAKTyE*mh}D)yY@1i^ z%xqh>UO0COhvv=8H%|QB9e=Z^-bl#%!_UVh2F+cM7fDO;f0_LvXws`2?iV-x*tX?J zce?)z-)Rqy^AyX<9bF}^GUH9XO!6u#w<9gSx6?99r@nc;Tt{zLgy4b5hF!-QgFif5 z|0`#4aBFu`GMg9of>R%itlLtjUi>O`ykG3V^at57(v|Ib$6Op51NdIn*gv;oOR)9Y z8Ix32HudS@?+W%jml{Htp4l&09d*HJ;ggN~P4(_QFUmSv^y1A-2R^5Giz6;S6g~gu z`ycqjvfNiSN@|Nj<74eRvlg|9#J(+*d&)jV>{DS)V_U)sZIztuen$n@g#P>D@aKE} ZA6Cohcg}@9>I-E60#8>zmvv4FO#p;RWd8sF delta 852 zcmca0c~No$J2Q)sg_ZGSZe~pg!-6?bB`wk1Jjuc$O*hFf)mYcm(!@;H!otu%H#IHE zGS$Q~%^)eweDYdmEfqtvM1$ny)FfT=L`wtRBr~8wOJhqD-Lw=-b2D=TQ%eH_gU!F0 z<(O5>%#)4H(^8UkjnXVrbj?jojC3uMOwx2s(~^_SjSW)GjEsyX7qCfk7#drF9Aq(h zB3t_8qwGJ4a}1i!pvj?}9>m#skn>c1xzL{`1_mZAPZ!4!i{7P^t$joiMOydQKi_(I zpFk^bAPdtj0p}hQH;o?FiA;+_+;p!TlF;3vym5o^#tj>{n3x?|8#1LuVzHUZicUeF z3A{p6r)!@tlqpYt{xRB7;qu9qe#QRhY`@DXE=^JIc$*;=V1DANcY1+sr;F=@M;V$k z>kUd$UKr1jdvfHBX5i$Ijc<%rr_P_aaN=90`{CYiF0pP*aawd_=Y?t+ZHDWgCB6AS znx}cI>Y{_>me6y11DyGihZy!roZ^})GewUEe0eyRy)^klr>H? z+P=fVEckHm2b=03O{WKswn`e!aw}fP`@Mg2<*u`$*SrGO>`6`+kxBUEcb~7T@xhsZZA^yVtVP zdco`qml)#J4Yt+nzwyH9{>!*aY!#yZdQp1J?d}(ORs<$Vc+EL?vCb=isj5dbaDGUo z#gC-j%;r-nL_Jw!O;RS``F%zAYD9-LR|w1VO|KWdskB(P-~~${`~Pm)?H}d2R@_NE Top^K~0}yz+`njxgN@xNAH$Prh From c315e2203d65539ed738fa27c9257602de3b5e79 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 14:00:54 -0400 Subject: [PATCH 13/28] fix off by one in socket removal --- .../currency/reworked/item_mod/gear/UpgradeRarityItemMod.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index 1f8232374..a4c275838 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -103,13 +103,13 @@ public void modifyGear(ExileStack stack, ItemModificationResult r) { } // Pop out runes/gems and remove sockets if needed - for (int index = gear.sockets.getSocketedGemsCount(); index >= newRarity.sockets.max; index--) { + for (int index = gear.sockets.getSocketedGemsCount() - 1; index >= newRarity.sockets.max; index--) { SocketData socket = gear.sockets.getSocketed().get(index); r.extraItemsCreated.add(socket.getOriginalItemStack()); gear.sockets.getSocketed().remove(index); } - for (int index = gear.sockets.getTotalSockets(); index >= newRarity.sockets.max; index--) { + for (int index = gear.sockets.getTotalSockets() - 1; index >= newRarity.sockets.max; index--) { gear.sockets.removeSocket(); } }); From f0cfb606b2a12e44b806aae9ddf745eb64617377 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Sun, 24 Aug 2025 14:28:54 -0400 Subject: [PATCH 14/28] fix message for HAS_HIGHER_RARITY --- .../currency/reworked/item_req/gear/HasHigherRarityReq.java | 2 +- src/main/resources/assets/mmorpg/lang/en_us.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java index 140ddba64..fb2a1f164 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/HasHigherRarityReq.java @@ -38,7 +38,7 @@ public boolean isGearValid(ItemStack stack) { @Override public TranslationBuilder createTranslationBuilder() { return TranslationBuilder.of(SlashRef.MODID) - .desc(ExileTranslation.registry(this, "Rarity cannot be increased further") + .desc(ExileTranslation.registry(this, "Must be below maximum Rarity") ); } diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 60569d40d..49929ef16 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -3609,7 +3609,7 @@ "library_of_exile.item_requirement.jewel_has_affixes": "Jewel Has Affixes", "library_of_exile.item_requirement.lvl_not_max": "Level must be below %1$s", "library_of_exile.item_requirement.map_has_higher_rar": "Map Rarity Must be lower than Mythic", - "library_of_exile.item_requirement.has_higher_rar": "Rarity cannot be increased further", + "library_of_exile.item_requirement.has_higher_rar": "Must be below maximum Rarity", "library_of_exile.item_requirement.map_is_mythic": "Map Rarity Must be %1$s", "library_of_exile.item_requirement.max_uses_level_up": "Maximum %1$s uses", "library_of_exile.item_requirement.max_uses_random_mythic_affix": "Maximum %1$s uses", From 39b9facc882bd02c1508a59d49a27d0066bd1426 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Tue, 7 Oct 2025 23:45:43 -0400 Subject: [PATCH 15/28] add Orb of Runic Invocation --- .../currency/reworked/ExileCurrencies.java | 10 +++ .../item_mod/ItemModificationSers.java | 1 + .../currency/reworked/item_mod/ItemMods.java | 1 + .../item_mod/gear/CommonToRunedItemMod.java | 72 ++++++++++++++++++ .../item_mod/gear/UpgradeRarityItemMod.java | 2 +- .../resources/assets/mmorpg/lang/en_us.json | 2 + .../item/currency/common_to_runed.png | Bin 0 -> 3208 bytes 7 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/common_to_runed.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index bd688e312..d7229f07a 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -318,6 +318,16 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.COMMON) .build(this); + public ExileKey COMMON_TO_RUNED = ExileCurrency.Builder.of("common_to_runed", "Orb of Runic Invocation", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.RUNEWORD_ID) + .addRequirement(ItemReqs.INSTANCE.IS_RARITY.get(new RarityKeyInfo(IRarity.COMMON_ID))) + .addAlwaysUseModification(ItemMods.INSTANCE.COMMON_TO_RUNED) + .potentialCost(20) + .weight(CodeCurrency.Weights.RARE) + .build(this); + public ExileKey UPGRADE_MAP_RARITY = ExileCurrency.Builder.of("map_rarity_upgrade", "Orb of Map Rarity", ItemReqs.INSTANCE.IS_MAP) .rarity(IRarity.EPIC_ID) .addAlwaysUseModification(ItemMods.INSTANCE.UPGRADE_MAP_RARITY) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java index a2eb49169..718a5c778 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java @@ -13,6 +13,7 @@ public class ItemModificationSers { public static String SET_AFFIX_RARITY = "set_affix_rarity"; public static String DOWNGRADE_AFFIX_RARITY = "downgrade_affix_rarity"; public static String UPGRADE_GEAR_RARITY = "upgrade_gear_rarity"; + public static String COMMON_TO_RUNED = "common_to_runed"; public static String CORRUPT_GEAR = "corrupt_gear"; public static String MIRROR = "mirror"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index ea807330a..d40582050 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -79,6 +79,7 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey UPGRADE_MAP_RARITY = ExileKey.ofId(this, "map_rarity_upgrade", x -> new UpgradeMapRarityItemMod(x.GUID())); public ExileKey UPGRADE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_upgrade", x -> new UpgradeRarityItemMod(x.GUID(), UpgradeRarityItemMod.UpgradeType.UPGRADE)); public ExileKey RANDOMIZE_GEAR_RARITY = ExileKey.ofId(this, "gear_rarity_random", x -> new UpgradeRarityItemMod(x.GUID(), UpgradeRarityItemMod.UpgradeType.RANDOMIZE)); + public ExileKey COMMON_TO_RUNED = ExileKey.ofId(this, "common_to_runed", x -> new CommonToRunedItemMod(x.GUID())); public ExileKey ADD_25_POTENTIAL = ExileKey.ofId(this, "add_potential", x -> new AddPotentialItemMod(x.GUID(), new AddPotentialItemMod.Data(25))); public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java new file mode 100644 index 000000000..7815a1890 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java @@ -0,0 +1,72 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.GearModification; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.ItemModificationSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.database.data.MinMax; +import com.robertx22.mine_and_slash.database.data.rarities.GearRarity; +import com.robertx22.mine_and_slash.database.data.rarities.GearRarityType; +import com.robertx22.mine_and_slash.database.registry.ExileDB; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.SocketData; +import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; +import com.robertx22.mine_and_slash.uncommon.interfaces.data_items.IRarity; +import com.robertx22.mine_and_slash.uncommon.localization.Words; +import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; +import net.minecraft.network.chat.MutableComponent; + +public class CommonToRunedItemMod extends GearModification { + public CommonToRunedItemMod(String id) { + super(ItemModificationSers.COMMON_TO_RUNED, id); + } + + @Override + public void modifyGear(ExileStack stack, ItemModificationResult r) { + stack.get(StackKeys.GEAR).edit(gear -> { + GearRarity oldRarity = gear.getRarity(); + gear.rar = IRarity.RUNEWORD_ID; + GearRarity newRarity = gear.getRarity(); + + // Remove affixes + gear.affixes.pre.clear(); + gear.affixes.suf.clear(); + + // Rescale base stats to upgraded roll range + gear.baseStats.p = UpgradeRarityItemMod.uniformRescaleInt(gear.baseStats.p, oldRarity.base_stat_percents, newRarity.base_stat_percents); + + // Add rune sockets + int sockets = newRarity.sockets.random(); + + for (int index = gear.sockets.getTotalSockets(); index < sockets; index++) { + gear.sockets.addSocket(); + } + }); + } + + @Override + public OutcomeType getOutcomeType() { + return OutcomeType.GOOD; + } + + @Override + public Class getClassForSerialization() { + return CommonToRunedItemMod.class; + } + + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Turns Common Item into Runed Item, adding sockets")); + } + +} diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index a4c275838..6b2df54de 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -65,7 +65,7 @@ public UpgradeRarityItemMod(String id, UpgradeType type) { this.type = type; } - private static int uniformRescaleInt(int x, MinMax from, MinMax to) { + public static int uniformRescaleInt(int x, MinMax from, MinMax to) { return Math.min(to.min + (x - from.min) * (to.max - to.min + 1) / (from.max - from.min), to.max); } diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 49929ef16..82250a06a 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -580,6 +580,7 @@ "item.mmorpg.currency.map_rarity_upgrade": "Orb of Map Rarity", "item.mmorpg.currency.gear_rarity_upgrade": "Orb of Ascension", "item.mmorpg.currency.gear_rarity_random": "Orb of Colors", + "item.mmorpg.currency.common_to_runed": "Orb of Runic Invocation", "item.mmorpg.currency.orb_of_quality": "Orb of Quality", "item.mmorpg.currency.orb_of_relief": "Orb of Relief", "item.mmorpg.currency.sharpening_stone_0": "Spiritual Sharpening Stone", @@ -3532,6 +3533,7 @@ "library_of_exile.item_modification.map_rarity_upgrade": "Upgrades Map Rarity", "library_of_exile.item_modification.gear_rarity_upgrade": "%1$s, increasing Numbers and adding %2$s", "library_of_exile.item_modification.gear_rarity_random": "%1$s, increasing Numbers and adding %2$s", + "library_of_exile.item_modification.common_to_runed": "Turns Common Item into Runed Item, adding sockets", "library_of_exile.item_modification.reduce_5_perc_unique_stats": "Reduces %1$s Percent to Unique Stats", "library_of_exile.item_modification.reroll_infusion": "Re-rolls Infusion Affix", "library_of_exile.item_modification.reroll_lowest_affix": "Rerolls %1$s into a new %2$s", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/common_to_runed.png b/src/main/resources/assets/mmorpg/textures/item/currency/common_to_runed.png new file mode 100644 index 0000000000000000000000000000000000000000..e16c48b0934a3296aa7df6016e1b1d86653c6ad1 GIT binary patch literal 3208 zcmcIn4OA4@6<%Yc!NgQ6Dxqy0#ZzLQ>z(yk!@5cgC4v zcd=1YjDm=vnqV|dqM@QBp{9lue`2dvQ>=J297(M$X-%s^Vhv4Dk0+YgH_NhOgFj81 zJ!f{_yt(gw_vgF!y;+%`_wbm}38M`L!(>aw3opi_xgw9FP%E@Q!V8km2t>&VjUk_mqz#4{X(1U1Wl+PMu*BoH;eBuK#W9a) z!{?{iDZ88j-JaQt6*zZsoJl9*y;B634r2}Gx_IxZuQXs||O@u&E3})esoSCD5)sl?S6rDm+3`v;@6UUoq9=(tJa0I7_ zF1{c$I|7EDY`9y~WS%60!Jsk77$v2IG;th9QZz}^1d<@s3cm(IgkPO9s38-og5r@i zkL1U6jle0DYc?F2I^cs(j;i&mkvO4N-@Wj;fJK$8@QBzXtZoImIWbHYRsl*K{QJZ<4k7J_1ViW(5LOQOeB@num)rw2>lAc`0#0u9_&SQL1dr1$^| zm&XT6ASwGxa4ebxK11?K3IayfF<~q0c0R|iYQQhRoJ<>zTrhe(B5!7a)x|miVR2ai z0bQ&}a1^u>W)9G1z|bZd(1YtUC81pBg}#2EMnp+KIkv8C@ zSi-`xEbX$IO{`TI)b>NggUS?mhicWW5|KtO#bTySlt5T%Dw|8Hl-?rw z1L&&c(t<#Nvr16xZqF|AX4b19aBJHIAetE`un;J8B4M?#fZ%8pM6*Z>jG47^q5ubd z|FZ22uTz#8WaC$|JrWqf4g4h#bzTzx>fUf>r@(M26k&ouBrFVTBAn1F5|k*=K%_Z_ zbvke5%?-8nb$cU7{s2^la7zXXK-&jYR2%M6Bp(K3+3OL2PDC=`7b8tMS~{2}Vb=@! zrco22;u*q%p(s%ku>T|8Z8>*m{bL~f!*TBG$`Yw>ivz8I{Ld~i@SHgi%4|J3;hlpY zwjbOf3(;1>qiz`OkN;ICi{MNDYe&>+6Lx&a`CxDg9Xj-3^tgi_q6a4EN42V;6D$xRUtx%DyAhr?-CWf7A4X-%HNaX_2lnDOIVSHA5Ex&ncovJ%l! zeevV|PiM4W>#tne_v3?$j=cU{Oa0#JYaev}$z9A8dF=4yuZpJby&Olbd%CpNVs@?H zk(fLo{`1O&t;HX1eWSi+wXF~P=>DajpV9Vsd=s;_bk?yy3EY={k#Db@o_p+%{=ECU ztD5iLAGfRc^1$z ze4mL2PgjnL$-B6Q@=m<>)Tj|Zy;#@!aP@}DwLPyNkgpgW$*W2mxBoompqlpNgFU&A zu8`_ZT}jO@sHW1#9)GX%nVwyR^EQsVWQnfpFOlWwB&fgilxRkx1?myFMaUF z|qYD2p zYh>f&fkX3M3ks{6dd$1GebT#Q!KS)%+pg}reCC0+^M}8c{r%0a;SJBnx18^tw5y%j z6KrlB*U5kL(I36r^k;WRTkrcPS2U+3=0Cmg#9!ZEJtct)H7p+Scv0FX7tVe6Q~g^Z NCo3;=Tl&JPe* Date: Wed, 8 Oct 2025 19:07:12 -0400 Subject: [PATCH 16/28] new texture for orb of runic invocation --- .../item/currency/common_to_runed.png | Bin 3208 -> 3396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/common_to_runed.png b/src/main/resources/assets/mmorpg/textures/item/currency/common_to_runed.png index e16c48b0934a3296aa7df6016e1b1d86653c6ad1..e6ce09d43730c40dca435dc702d69340af14adb3 100644 GIT binary patch delta 1241 zcmeB>JR&v0f{Ckqqg5yqM^0X`RY_)A+T?ePVxl01zM-ChzLG*kE=VS|A`>jb31Wa{ zCU-Mca9M;HSXdbvS{a&7=4Dn!=2|fasH9n17@L?Srs-OmnkVX-S(qg0CK{R=16dZS z#%XD$hK4C-lh-k8sU({iC7T(W80i|AC8g?`S(=#XCK?zS>zY_vrkEHQ7?>I*8&3Yi z>{+h>a+sBWQD$mhNn%N6ex9w8p%O$eA}F;uKc^HTXl?}5WuR{eBBAn;1mqFYp?R4l zwn|1y3Lw8)Ip^o(7X=q2Ca2meS(=%e8k<5T0x~O7b0S+3dpd zfKkOTImsl+%*7So`Ks;EvrXOFGfI|ZN9IHppekV(8~>7$`_VR zDia?UDYkf8&0V-T#c$KS*m}KfLKU{Wi(Y&1F4HvVG4Wg8oN_9`R!>9cLc|Z5gYudJ zacA{&GZ*e#7xreghO_w`9e3WS*{rWQJ(kICF?;EAR(ImbloRK}CHt>*>axt5<$lUQ zLx1Mur2>?AblB=)0!e-S-R6+Mb{KFS3j4vw6D&U;EBGyH9oQD_*mf?ZeMw zZyu~TUhn;K?QEX#>kmG+YNXFHUT%8jD+ho2oY}?&7G`=6I~}hnCC^Cfy7-OH>pgE! z$QI^ym5G<8|DO;YW_C+I=Y267TMt+RA<(wq&J?t$1JrkKyr6ix8bFg zzM>nZt=Je>vR#A6?ypBDtV$L(J(x~koARA|r4l1GK=m0$f7*Qw8#$(w3!=>0+ZYN)7FU`qA-wE=#8lT)-> ll}^uaN~!;+e(?Vzb&-?5c!P8GPgybmfv2mV%Q~loCIDsY-sk`T delta 1060 zcmX>i)gd{-f{8O~qg5!=Uijm#2_jSP(vjV80OXsH;aC0SUc7+dHXrzBhGT3P@VCMFq} z=$f0Dm>8v5m>HT_Bu@@v@!TB3dY@6n(kv<2*wWNM*Dy6PMc3Te#85XW)gndLASKx- zF~!Kz*d!@w@>y0Xc9_%TID;quWfPtJfc+OTbCFcl@y9gf>P70QYPDQSxna9 z>Z~uA^^KK*f$55;i(`mI@6t)W86xQt$Lrspv9{j)E^m{e+Ohm3JDsH>UKfj_1G*~& zc`GhY3(K|Ti1Lc|+PFn@&C=Fy3v8FPzS5i~*UiNys>CVS%a+B-CM>+Ub9Y*KT3Oli z?DQ1#_OI_gf3i9L|8sra`}iY;XI4*H)4#v{|HF&*H!@<3qcVL{Z*GWE-~U5Ie_Bgc zm$_NmjO~g#q7r}WrIyD$TfV-(qu2Jm!YjVIzfVi{Waf&wF1y%cQeDR5^wsKky|vf* zYk7WrcbZnP92D6ZGq2qKPTNG289R&>r|fFp5|+GhQBi(Tmu>$1NckU-GPYZCKK5fBueg zhvL#~-;U4cbAP2Ac~Z~H=J$1?L5>*r16IbyuRWXH+h^8KdcOK_eZgS(9NgfG2dLH7blif)LxcqtJB-G z%+%Rv?!)!+>K&~PQ>CJ`4zI2EcI~;MWo5)^qR5$580^s1pwP2m+nJ-r*A09pADDaC zBsWAU9V`6sPOW5vPKmM8R|NYs9qF)8wBX-=8Uol}#SKd7|3;#5|Dr9XM9MCqTp zo?7*73XdijM4WVFUKCq)B0McJqG{=Kvt8>xzT6(Upy&0vKL>t1mE89Bl#rY1l2uAm zr%SAP`%--8apOJZD>e&WwBip9ys-3E#_4S@@7`=%VXqj_l5qXr-CkuW%ZjO0jImMn UAHTeo{lowSp00i_>zopr0QvRElmGw# From 41088448b1af15d84dfc77f02105f2d183f1c17c Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Wed, 8 Oct 2025 19:29:50 -0400 Subject: [PATCH 17/28] add chance to destroy for runic invocation --- .../orbs_of_crafting/currency/reworked/ExileCurrencies.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index d7229f07a..959bda4d2 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -323,7 +323,8 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) .rarity(IRarity.RUNEWORD_ID) .addRequirement(ItemReqs.INSTANCE.IS_RARITY.get(new RarityKeyInfo(IRarity.COMMON_ID))) - .addAlwaysUseModification(ItemMods.INSTANCE.COMMON_TO_RUNED) + .addModification(ItemMods.INSTANCE.COMMON_TO_RUNED, 75) + .addModification(Modifications.INSTANCE.DESTROY_ITEM, 25) .potentialCost(20) .weight(CodeCurrency.Weights.RARE) .build(this); From 8e28c109502c23610349bd16df41c1a6627b2c23 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Wed, 8 Oct 2025 20:08:17 -0400 Subject: [PATCH 18/28] remove unused imports --- .../reworked/item_mod/gear/CommonToRunedItemMod.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java index 7815a1890..e07b6fa24 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/CommonToRunedItemMod.java @@ -5,17 +5,11 @@ import com.robertx22.library_of_exile.localization.ExileTranslation; import com.robertx22.library_of_exile.localization.TranslationBuilder; import com.robertx22.library_of_exile.localization.TranslationType; -import com.robertx22.mine_and_slash.database.data.MinMax; import com.robertx22.mine_and_slash.database.data.rarities.GearRarity; -import com.robertx22.mine_and_slash.database.data.rarities.GearRarityType; -import com.robertx22.mine_and_slash.database.registry.ExileDB; import com.robertx22.mine_and_slash.itemstack.ExileStack; import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; -import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.SocketData; -import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; import com.robertx22.mine_and_slash.uncommon.interfaces.data_items.IRarity; -import com.robertx22.mine_and_slash.uncommon.localization.Words; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; From 50bb8d77efc44e3f2f9f3b333e2dca09e742bbc4 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Wed, 8 Oct 2025 22:12:35 -0400 Subject: [PATCH 19/28] add Orb of Introspection (base stat reroll) --- .../currency/reworked/ExileCurrencies.java | 9 ++++ .../item_mod/ItemModificationSers.java | 1 + .../currency/reworked/item_mod/ItemMods.java | 1 + .../gear/RerollBaseNumbersItemMod.java | 48 ++++++++++++++++++ .../resources/assets/mmorpg/lang/en_us.json | 2 + .../item/currency/base_number_reroll.png | Bin 0 -> 3127 bytes 6 files changed, 61 insertions(+) create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollBaseNumbersItemMod.java create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/base_number_reroll.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 959bda4d2..615cfb139 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -329,6 +329,15 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.RARE) .build(this); + public ExileKey REROLL_BASE_NUMBERS = ExileCurrency.Builder.of("base_number_reroll", "Orb of Introspection", ItemReqs.INSTANCE.IS_GEAR) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .rarity(IRarity.LEGENDARY_ID) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_BASE_NUMBERS) + .potentialCost(15) + .weight(CodeCurrency.Weights.UBER) + .build(this); + public ExileKey UPGRADE_MAP_RARITY = ExileCurrency.Builder.of("map_rarity_upgrade", "Orb of Map Rarity", ItemReqs.INSTANCE.IS_MAP) .rarity(IRarity.EPIC_ID) .addAlwaysUseModification(ItemMods.INSTANCE.UPGRADE_MAP_RARITY) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java index 718a5c778..78760a18a 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java @@ -24,6 +24,7 @@ public class ItemModificationSers { public static String JEWEL_CORRUPT = "corrupt_jewel"; public static String REROLL_AFFIX_NUMBERS = "reroll_affix_numbers"; public static String REROLL_IMPLICIT_NUMBERS = "reroll_implicit_numbers"; + public static String REROLL_BASE_NUMBERS = "reroll_base_numbers"; public static String EXTRACT_SOCKET = "extract_socket"; public static String FORCE_SOUL_TAG = "force_soul_tag"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index d40582050..15e853955 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -84,6 +84,7 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); public ExileKey REROLL_IMPLICIT_NUMBERS = ExileKey.ofId(this, "implicit_number_reroll", x -> new RerollImplicitNumbersItemMod(x.GUID())); + public ExileKey REROLL_BASE_NUMBERS = ExileKey.ofId(this, "base_number_reroll", x -> new RerollBaseNumbersItemMod(x.GUID())); public ExileKey EXTRACT_GEM = ExileKey.ofId(this, "extract_gem", x -> new ExtractSocketItemMod(x.GUID(), ExtractSocketItemMod.SocketedType.GEM)); public ExileKey EXTRACT_RUNE = ExileKey.ofId(this, "extract_rune", x -> new ExtractSocketItemMod(x.GUID(), ExtractSocketItemMod.SocketedType.RUNE)); public ExileKey MIRROR = ExileKey.ofId(this, "mirror", x -> new MirrorItemMod(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollBaseNumbersItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollBaseNumbersItemMod.java new file mode 100644 index 000000000..cd802eaa2 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollBaseNumbersItemMod.java @@ -0,0 +1,48 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.GearModification; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.ItemModificationSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; +import net.minecraft.network.chat.MutableComponent; + +public class RerollBaseNumbersItemMod extends GearModification { + public RerollBaseNumbersItemMod(String id) { + super(ItemModificationSers.REROLL_BASE_NUMBERS, id); + } + + @Override + public void modifyGear(ExileStack stack, ItemModificationResult r) { + stack.get(StackKeys.GEAR).edit(gear -> { + gear.baseStats.RerollFully(gear); + }); + } + + @Override + public OutcomeType getOutcomeType() { + return OutcomeType.GOOD; + } + + @Override + public Class getClassForSerialization() { + return RerollBaseNumbersItemMod.class; + } + + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Re-rolls Base Numbers")); + } + +} diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 82250a06a..6d6aaf5bf 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -553,6 +553,7 @@ "item.mmorpg.currency.prefix_reroll_all": "Orb of Sinistral Rebirth", "item.mmorpg.currency.suffix_reroll_all": "Orb of Dextral Rebirth", "item.mmorpg.currency.affix_number_reroll": "Orb of Ciphers", + "item.mmorpg.currency.base_number_reroll": "Orb of Introspection", "item.mmorpg.currency.affix_random_mythic_reroll": "Orb of Divine Benevolence", "item.mmorpg.currency.affix_tier_up_down": "Orb of Imbalance", "item.mmorpg.currency.chaos_orb": "Orb of Chaos", @@ -3514,6 +3515,7 @@ "library_of_exile.item_modification.add_potential": "Add %1$s Potential", "library_of_exile.item_modification.add_socket": "Adds %1$s Socket", "library_of_exile.item_modification.affix_number_reroll": "Re-rolls Affix Numbers", + "library_of_exile.item_modification.base_number_reroll": "Re-rolls Base Numbers", "library_of_exile.item_modification.corrupt_gear": "Corrupts the Item, making it unmodifiable and adds a Random amount of Corruption Affixes", "library_of_exile.item_modification.corrupt_gear_no_affix": "Corrupts the Item, making it unmodifiable", "library_of_exile.item_modification.mirror": "Creates an unmodifiable Mirrored copy of the Item", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/base_number_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/base_number_reroll.png new file mode 100644 index 0000000000000000000000000000000000000000..77fe6148b7da1d6d1d7c1041af6c28e7542cccc9 GIT binary patch literal 3127 zcmcIm4Nw%<9luy(goJtlTN&%r?HZMWd%L&yxmymQ9?FS_fD9S~jqi5f9vkj<*WEqt z0Eyp2{OZ`?G>z37(~wR{)CND1W^5ZUrnRX~tgTI@we@2{Q=A~yCT)hkJ?>7LU^HoS zGkg2q+yDFj{vW^p|GiD+WeYOWr>2`srVL++w-UY0#xrpO`k#Jd7@$|0Qu3%~GCi1O zJolM)?#f1M%f+f?`ZE6_mXpI4z{>$>iG>v;Z8GK0jVXYuhdLI3K~eJH*Sk;Pn8 z9=yl^#FqKXv3arzF~(vgIEu1iF2=$*849>vb1<5s9VBHVDJNlNSS!tvUaVNirIZTB0_KtOiLd!!RU8lQc~r2|{a>bPyvXZAMaq7iyd;D!M33 zn4u8_70)&!yy)h#HE6^Bf67FbpMKL$cPC ztWqcIvQ{VGL3Qf$e*vJ_`u!=4F>MKlQxKY7+<@Fj1Y}HUt*TLhWF^$(h|0m@24v=p zq&J#g32(>q9=0R#_-2Kjr$V61YLzU9l4&ka`is#{i1A zT8Pt&EfF=8yT(LyErBZ&qmYQj8N~w5s1y&*8Cixro>&&gh{ru4C-z6{AX54X$sa-2 zWI>Mt6&3|i?C#Dk@=n%kpy88kcR3xjixMDV<7|)+csn56cE(CLT$~#^Xkd5n_N4D) z+3sLihcn5>&t!WdFkBswf)I6H694Sp&`zhzCD>_#ciA0;i$dN2niB}O0{|D#&{nH0 za7S-GT3esDH=HarKy?(i6rcihd_Yz6;DRcLF`y_Rkpl)1$p(o}H04z3V7iRmF628# zjfbi@iUp%lQYK*kN4&do?%w*xNcca-xz906q;V{cv;y*@U1DVJ9SP-pBRTPtgB`0M z+$#&wQNp5bnCg$8s*@$~<^Q!K8nlT!KI(puTtb%)W0<<`ph@b&1SM3fD!L9mQ+obi zCeyg}K5tQ#ds};3ZAn{2_Upq3ny;M?y;JkpdS;fdjLMl?c!;JRn%OHo-#zQx#)`Cu zBNg6ayjEX2nHLsL$=I@C`-VdL)WSIjCuP+?8ETF!3LcLRv>d(l*Pia|u61Wur9XAN)3g599Uopz zJJ5gn%+S%6uHyN-_HAF$-88j%D?K==cJKLVku}ZcwHZ%TnDfKRx}01(^M$TgOeZ>X zj}OkdA~#=;>^;0^)0Di5)t9rs{B|z(%gorb-r}MaZId?y-Q!<<8T9SHwlrctVXo<2 zOXqbougYrxW<;%BBtDx0sC(@4V(|6R-%f3&au7e zIM;IXAKTiXaKW@-^LNTF-Z~j(`t`Qng@cww6$gRq8;^K5KD0Z`9p1U+!jyv8P?7NH z?=Js-_tCx*Uv+h6de8VBEt@;1W@gdPyf{wy_Ll4?{@&hjPwIRW%j0BxuTPvF<+@|4udl literal 0 HcmV?d00001 From 76ecb6005362f665e60aaeef737b614c550d8bf3 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Wed, 8 Oct 2025 22:56:10 -0400 Subject: [PATCH 20/28] add Orb of Revelation (implicit reroll) --- .../currency/reworked/ExileCurrencies.java | 11 +++ .../item_mod/ItemModificationSers.java | 1 + .../currency/reworked/item_mod/ItemMods.java | 1 + .../gear/RerollImplicitAffixItemMod.java | 63 ++++++++++++++++++ .../reworked/item_req/ItemReqSers.java | 1 + .../currency/reworked/item_req/ItemReqs.java | 1 + .../MustHaveOtherPossibleImplicitReq.java | 54 +++++++++++++++ .../resources/assets/mmorpg/lang/en_us.json | 3 + .../item/currency/implicit_affix_reroll.png | Bin 0 -> 3052 bytes 9 files changed, 135 insertions(+) create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollImplicitAffixItemMod.java create mode 100644 src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveOtherPossibleImplicitReq.java create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/implicit_affix_reroll.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 615cfb139..95340ea03 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -256,6 +256,17 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.RARE) .build(this); + public ExileKey REROLL_IMPLICIT_AFFIX = ExileCurrency.Builder.of("implicit_affix_reroll", "Orb of Revelation", ItemReqs.INSTANCE.IS_GEAR) + .rarity(IRarity.MYTHIC_ID) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .addRequirement(ItemReqs.INSTANCE.HAS_IMPLICIT) + .addRequirement(ItemReqs.INSTANCE.HAS_OTHER_IMPLICIT) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_IMPLICIT_AFFIX) + .potentialCost(15) + .weight(CodeCurrency.Weights.UBER) + .build(this); + public ExileKey UPGRADE_CORRUPTION_AFFIX = ExileCurrency.Builder.of("up_corrupt_affix", "Orb of Foolish Risk", ItemReqs.INSTANCE.IS_GEAR, ItemReqs.INSTANCE.IS_JEWEL) .rarity(IRarity.EPIC_ID) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java index 78760a18a..420ca1d1c 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemModificationSers.java @@ -24,6 +24,7 @@ public class ItemModificationSers { public static String JEWEL_CORRUPT = "corrupt_jewel"; public static String REROLL_AFFIX_NUMBERS = "reroll_affix_numbers"; public static String REROLL_IMPLICIT_NUMBERS = "reroll_implicit_numbers"; + public static String REROLL_IMPLICIT_AFFIX = "reroll_implicit_affix"; public static String REROLL_BASE_NUMBERS = "reroll_base_numbers"; public static String EXTRACT_SOCKET = "extract_socket"; public static String FORCE_SOUL_TAG = "force_soul_tag"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index 15e853955..c989005da 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -84,6 +84,7 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); public ExileKey REROLL_IMPLICIT_NUMBERS = ExileKey.ofId(this, "implicit_number_reroll", x -> new RerollImplicitNumbersItemMod(x.GUID())); + public ExileKey REROLL_IMPLICIT_AFFIX = ExileKey.ofId(this, "implicit_affix_reroll", x -> new RerollImplicitAffixItemMod(x.GUID())); public ExileKey REROLL_BASE_NUMBERS = ExileKey.ofId(this, "base_number_reroll", x -> new RerollBaseNumbersItemMod(x.GUID())); public ExileKey EXTRACT_GEM = ExileKey.ofId(this, "extract_gem", x -> new ExtractSocketItemMod(x.GUID(), ExtractSocketItemMod.SocketedType.GEM)); public ExileKey EXTRACT_RUNE = ExileKey.ofId(this, "extract_rune", x -> new ExtractSocketItemMod(x.GUID(), ExtractSocketItemMod.SocketedType.RUNE)); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollImplicitAffixItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollImplicitAffixItemMod.java new file mode 100644 index 000000000..29f2a5f52 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollImplicitAffixItemMod.java @@ -0,0 +1,63 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.GearModification; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.ItemModificationSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.database.data.affixes.Affix; +import com.robertx22.mine_and_slash.database.data.requirements.bases.GearRequestedFor; +import com.robertx22.mine_and_slash.database.registry.ExileDB; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; +import net.minecraft.network.chat.MutableComponent; + +public class RerollImplicitAffixItemMod extends GearModification { + + + public RerollImplicitAffixItemMod(String id) { + super(ItemModificationSers.REROLL_IMPLICIT_AFFIX, id); + } + + @Override + public void modifyGear(ExileStack stack, ItemModificationResult r) { + stack.get(StackKeys.GEAR).edit(gear -> { + // Don't roll the same implicit we already have + var opt = ExileDB.Affixes().getFilterWrapped(x -> + x.GUID() != gear.imp.imp && + x.type == Affix.AffixSlot.implicit && + x.meetsRequirements(new GearRequestedFor(gear))); + + if (!opt.list.isEmpty()) { + gear.imp.imp = opt.random().GUID(); + } + + gear.imp.RerollNumbers(gear); + }); + } + + + @Override + public OutcomeType getOutcomeType() { + return OutcomeType.GOOD; + } + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + + @Override + public Class getClassForSerialization() { + return RerollImplicitAffixItemMod.class; + } + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Re-rolls Implicit Affix")); + } +} diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java index b1697c449..329f2b655 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqSers.java @@ -9,6 +9,7 @@ public class ItemReqSers { public static String HAS_PREFIXES = "has_prefixes"; public static String HAS_SUFFIXES = "has_suffixes"; public static String HAS_IMPLICIT = "has_implicit"; + public static String HAS_OTHER_IMPLICIT = "has_other_implicit"; public static String HAS_CORRUPTION_AFFIXES = "has_corrupt_affixes"; public static String IS_NOT_CORRUPTED = "is_not_corrupted"; public static String IS_NOT_MIRRORED = "is_not_mirrored"; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java index 3dc1024cb..28924b092 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/ItemReqs.java @@ -74,6 +74,7 @@ public static List allMaxUses() { public ExileKey HAS_PREFIXES = ExileKey.ofId(this, "has_prefixes", x -> new MustHavePrefixesReq(x.GUID())); public ExileKey HAS_SUFFIXES = ExileKey.ofId(this, "has_suffixes", x -> new MustHaveSuffixesReq(x.GUID())); public ExileKey HAS_IMPLICIT = ExileKey.ofId(this, "has_implicit", x -> new MustHaveImplicitReq(x.GUID())); + public ExileKey HAS_OTHER_IMPLICIT = ExileKey.ofId(this, "has_other_implicit", x -> new MustHaveOtherPossibleImplicitReq(x.GUID())); public ExileKey HAS_CORRUPTION_AFFIXES = ExileKey.ofId(this, "has_corrupt_affixes", x -> new HasCorruptAffixes(x.GUID())); public ExileKey IS_NOT_CORRUPTED = ExileKey.ofId(this, "is_not_corrupted", x -> new IsNotCorruptedReq(x.GUID())); public ExileKey IS_NOT_MIRRORED = ExileKey.ofId(this, "is_not_mirrored", x -> new IsNotMirroredReq(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveOtherPossibleImplicitReq.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveOtherPossibleImplicitReq.java new file mode 100644 index 000000000..0a709e666 --- /dev/null +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_req/gear/MustHaveOtherPossibleImplicitReq.java @@ -0,0 +1,54 @@ +package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.gear; + +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.GearRequirement; +import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_req.ItemReqSers; +import com.robertx22.library_of_exile.localization.ExileTranslation; +import com.robertx22.library_of_exile.localization.TranslationBuilder; +import com.robertx22.library_of_exile.localization.TranslationType; +import com.robertx22.mine_and_slash.database.data.affixes.Affix; +import com.robertx22.mine_and_slash.database.data.requirements.bases.GearRequestedFor; +import com.robertx22.mine_and_slash.database.registry.ExileDB; +import com.robertx22.mine_and_slash.itemstack.ExileStack; +import com.robertx22.mine_and_slash.itemstack.StackKeys; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.ImplicitStatsData; + +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.item.ItemStack; + +public class MustHaveOtherPossibleImplicitReq extends GearRequirement { + + public MustHaveOtherPossibleImplicitReq(String id) { + super(ItemReqSers.HAS_IMPLICIT, id); + } + + @Override + public Class getClassForSerialization() { + return MustHaveOtherPossibleImplicitReq.class; + } + + @Override + public MutableComponent getDescWithParams() { + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + } + + + @Override + public TranslationBuilder createTranslationBuilder() { + return TranslationBuilder.of(SlashRef.MODID) + .desc(ExileTranslation.registry(this, "Must have another possible implicit") + ); + } + + @Override + public boolean isGearValid(ItemStack stack) { + ExileStack ex = ExileStack.of(stack); + + var gear = ex.get(StackKeys.GEAR).get(); + + return gear.imp != null && !ExileDB.Affixes().getFilterWrapped(x -> + x.GUID() != gear.imp.imp && + x.type == Affix.AffixSlot.implicit && + x.meetsRequirements(new GearRequestedFor(gear))).list.isEmpty(); + } +} diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 6d6aaf5bf..99aa4f8ee 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -574,6 +574,7 @@ "item.mmorpg.currency.harvest_essence_3": "Harvested Angelic Essence", "item.mmorpg.currency.harvest_essence_4": "Harvested Divine Essence", "item.mmorpg.currency.implicit_number_reroll": "Orb of Genesis", + "item.mmorpg.currency.implicit_affix_reroll": "Orb of Revelation", "item.mmorpg.currency.jewel_corrupt": "Orb of Mesmerizing Chaos", "item.mmorpg.currency.jewel_sure_upgrade": "Orb of Mystery", "item.mmorpg.currency.jewel_upgrade_affix": "Orb of Glimmering Light", @@ -3526,6 +3527,7 @@ "library_of_exile.item_modification.force_soul_tag_dodge_stat": "Forces Soul to Produce %1$s", "library_of_exile.item_modification.force_soul_tag_magic_shield_stat": "Forces Soul to Produce %1$s", "library_of_exile.item_modification.implicit_number_reroll": "Re-rolls Implicit Numbers", + "library_of_exile.item_modification.implicit_affix_reroll": "Re-rolls Implicit Affix", "library_of_exile.item_modification.increment_uses_level_up": "Increments Uses", "library_of_exile.item_modification.increment_uses_random_mythic_affix": "Increments Uses", "library_of_exile.item_modification.increment_uses_relief": "Increments Uses", @@ -3592,6 +3594,7 @@ "library_of_exile.item_requirement.has_suffixes": "Must have suffixes", "library_of_exile.item_requirement.has_corrupt_affixes": "Must have Corruption affixes", "library_of_exile.item_requirement.has_implicit": "Must have implicit", + "library_of_exile.item_requirement.has_other_implicit": "Must have another possible implicit", "library_of_exile.item_requirement.has_infusion": "Must have Infusion", "library_of_exile.item_requirement.has_socketed_gem": "Must have a Socketed %1$s", "library_of_exile.item_requirement.has_socketed_rune": "Must have a Socketed %1$s", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/implicit_affix_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/implicit_affix_reroll.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4a228bf1823d3a7b3157e93e3f6e07566f51ca GIT binary patch literal 3052 zcmcImYitx%6kdb?LP0?A2M`$tgA$pY$L{Rz3|&g;f-SJ6Ky3>P%H2D6+X=fn)0t^^ zTS$-sDhZGR;StM29sv?wMJR@s4KI~ocqCK};U!58qM*_u5J0@MyIqQDDT-_|J9qA! zd%knN^W8Ideopqg-MaMcVzF4dWo3FM;Cm1A>f90k4`_G<@a<(abCPbcbU$WZ?UudM zy&s-CBIgzu1>UhDR6pMKN7=fQb3&G8I=IT zPj0fvFjSGIBaw(TVzVk*A3bg0RyAuD0R^a%V) ziQy)3sPP;^YSL|3Pw<2pqoY8jSu11a6f=}y(oQYWf-!Ij(kO^RC~WB1mQC8KMT(*5 zMM^8Kldqouz}$MhNsJa_35Ajnx-qg8r;#9}MQc5`Ohxnrq$?#FL?cUam;;-#(Txe{ zF`v({9Gk}$t73+RfT3u)iV|!pb52vf1n01_4Doip9F~-bKG=jytUw-MAUA2&oMN05 zYtQ8v(Z-8*7sc2`hKZYc6-f@1H8W)yigD#~oM?B7Hau=-iWMgT1GH%@K{23cA%N+U zL!c1RYPgUjl0^_Rl%S$vU>uz-7KPUY`hXUI~{Xty%mk&;V{xNYmY9KvP0QQVE2i5I|LfG6ZJkbZJ;hbb(~8 z$X0Q5Q2KO^cxVgQoXAGOfDKT7!EU2m0M{G37-)APgjn9$#Bno@lB&mjkr$d&|DQNY z6aW^1a3R7So_>yO1j**-ki=0?5Fi!c?RH84h@&`{&5xXjm286Wv}~T(!!J4;*ro>B zD7&eQq)b|8O+uR7Oa;xAmJET2Y3~2QYg2R2)~Dk1x1_ljRVCW|{Ki`j{m*U`fA++w z9A$3M*cVD{sqZ|i3h^gP#9cSphyPW_OyDce+j-5_5lg(;IizU{A8yQH@>qo*k_R&s z#(P!6$F3@|agD{&?o5^^J=e8x*^=5ZzVW@kPNSvIt9otx2XKUjSH z@VYrS&TQ{9`s3^ydHb(jJ(u>G@1sRjFW;7ezJGM8=pa|mOWEhhNue@F46XB>Dm%p1 z_AkFud{ek{|KXa3FQ;s)G47vQJNo*sk51J5x$oxss!ZqDxwCps+H^Ig2IypGk@XRZ_FNd>W6#B=+Gg$vAUtW)6XX>Gc7BQt3~G)kE~Jp2G(w#UHL#N zsW|#@?eO`HtL?YX&%OBV@L86$VIzX$9o2a!cD>iT_kcyO))tS@hGefRAbZZ;*Lb61 z^0*~Oif12PIB@lj+U~^CsTbZ~S%0wnEV23ZOLY%wZuOh!Sogu8Dw8 zgI@Pm1sA`~o zqxvh_Gc^3+?8EIIj+%3SX7r2gTgR*!oxN+t20mwOV;!ArgR=ZXy~1teePbq+jUF2{d)UhKh>G%@vM>A Ko*g5mRs0P+4 Date: Wed, 8 Oct 2025 23:05:10 -0400 Subject: [PATCH 21/28] improve shading on Orbs of Rebirth --- .../item/currency/affix_reroll_all.png | Bin 3288 -> 3293 bytes .../item/currency/prefix_reroll_all.png | Bin 3312 -> 3304 bytes .../item/currency/suffix_reroll_all.png | Bin 3284 -> 3288 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png index 1816eabc470eae393cfcc5a7fdc1a0cb1b87d1e2..5ace67a1b2bfcd75e990ef0e703be535eee93de4 100644 GIT binary patch delta 840 zcmca1c~^3RCF6~WR+ANt70fO5EX^zp5-rSi6pRdvO!Wv@)8U$gF@S(#IUAl9ZNaWNKhytea$%W}usDX=0|EWNw+Pn`n}3 zV3cf_Vv=l;G?|%2OC{MT#WK~v%uLtF*d$fg*uum@*CN#*Mb|tr)xbE#z}PIwG<9kBdg|VTMLUD;}S&3D7Mrxj| z637F(sIIN$)Mqi%Gc=gIo>Osh9J}ab2acaE#5k4|lQUI_aqDCot{e5n`z8u9Ffgw6 zba4!^=v^AL-qHbSsz$E5a8*z5gEAP0B3p!4;iDedONX=TbRPk1nlG2)m|C-zW zHMV7OW@QUT-RY@Q^z!arKF3Xq^U=}ohh)ps`7ScczyE#rx9$1gHScSEu9yB{KeYb_ z!yPxF?|wJAj^E6kz4h=T$<6Py>+k!QF{&GG-^j%NrT@IuxzpFp6t_>dv7YRf<9qP! zMbSy0RBG$1D^(r0{_%4P6WqSJcdCq!YmTYjla|{a+k#f_x@x8_uK#XAZ2Ypl67v_# zh(9xto8is%{U1VK2A2D66FS}~`Q9N=#7pkm`?E^w*Y)O~+*P>LCz0`OnRKsPbMKjY zpyZkPI)QakH&un^d-8Buddr_tl;K-^HEX8K!54a-LREX^CY@B-q1}8&_QS$UM@waU z478ND3Ox8&5wJE)u-9$k{+mnI-T8MenelS9iX*sReM)l&640@bCKa|7jT`pi=ByaikE7gSKmzMCrWL;k<&DP)!40A)s?rsyKX%ag6p00i_>zopr E09vRtCjbBd delta 789 zcmcaBc|&r7CF8Y;R+AMC70fO55-n0p%uS7T6pRdvjP(tS^^J^m4J@oo&8&>gH@-__ z;x(|)H8Kt{u(UF=v@)KY$gF@S(#IUAVqsyLl9*&@qHAetZlG(FVq&11lx&i$Yiycm zmXelcWMG+QG?|%2OC`m^z}!5^$XwSlCDBkfEz!h8*TOh4Ro6HvB{?N2H7Uu|$Z~Ta zi!-x|fnj2jg>kBZuAxa9&_zZjDY{99MwYt9Koe8bk`m2~ElnoBW|LxrI;@UUf3g+3 zGo+#jZD!bFp`swX==fB^r-EZx!dDLpt^&;lZ-(r5-`g>Q~{{MID z*L}O!^?9u)c6=_nKg0h2msb1B4cqt6a+@Gnu&H*9oPCYUM~4e}^8(jaGJM%>J8w_L zvHSPUYxY{0J0*#Rot3UT81cHidLx(Aql?!TM(zF97XRSWXLDP>d^?7O?=Sh>quaH_ z1TxKdR$jBo?d$pOX)NHR(J=pgy~Ogk`EeKDe=Av9wYsr>$|MDjH4@BZ^UpWxbo;0scCWEJUMOQVm(NikLTb_LUB5DG?(c7%;b%P4Cqi$!ju`i`#~bY| mnv@$lb+G?=`eQ*m+}yXa&Gj-Rf? zxRxZNGnI*O?PP1NoAoVsKBqD;FmCg7aSXBOT^j7|%@io|&yB@3Q~6QHx?>9J?-vyb zUsDF1;+_@7x-HseD7a zQ>J?Utv-%6vyT;3*Wa8_Q~q%HsO z&S#9XmU-H;%vyFZY2$&k&5CmU!IL-C>^=F{BCvc$!+|HieHUF%i8O0IsIVtaUpO^% zbL5S;Whz3PCQ`g=YE4Budy+Q(_^cqvS=r^hP@sDG<<1zrcCV#}m{TN<9kAfgH@-__ zvNo{LH8Kt{u(UF=urjgGH88Or? zvMtxm`j1}st}-w%9`JN=46*24I?2A{a)8Wndr#)6QZ3}r9;yr8Q2@mfAV*>eXEzJ3-YAhWBZKKc=B7YA>qw*^P5+>wPUCgO8{ z#ZHSx9Eb1vuHUwr-Lqq?$+^3SGyj}=-L#OM{r@CjWA z;x(H+srh;SN^>7GosEBf)cyQWYkyQB@56;%(r#NB&2${sUw&HjTk2?%VC;3qAl;zl z1tvTz%zdin>M_LMtFKA2n!Bv5Z;8uy2QNvcnwoEla?iGx)V-~L{QSGTjcrYv@$W#H88O(YXkw&mnQV}( zYhapcX$CaVFv&PsNujvJwXDRdJR>y^yW{FO^;pdG3=Jl)=Tw{=$1XbAf#atuF|H-a z=u8!2Tszr@>qdRT934*v2F7KcE{-7F%(9EgHXtb(_T2Mul8hR_Cy~AU(BHpzBG4a*vml%8NZarn{w?h+k|xzWe>% z^7FRE&$u*I|240y4`u#v%dx2H=G*|CX=Nt!AAY`gcxAye?|A+CyrzqXT$CD%cJ_Sv z*Ee^P{9CJYpUm}?*1uj5VI;$+EY`g+K;uE#YniHjJ&#^X3kUkR_zCH|IUGHjH1Y8Z zuR~Ln7j>$Ad+y`8X>P@iJ@Uu?J>hwOdv>PGnm4C9>kpdvvM@DnJme|xO-7?jDR|`+ zZBMmH{3^ADnn&kvnReG<_0@W(#TNyV<+j|;eHXVjti7DOT1#xfqs=KvUkhYER>+)9 zE55_L-b~rVH(99a%KPshYd&^-U(NK+Z{1Jcm7-1`?AA0h-^~+mOH443IIv0Qo!2L0 z|Hu=643#EwSj|26UQVT6ZKLUG@6gb|)mMM`cr_hV5dQVI?wuT0>x9!!1J++Z>Uu-w zMo^|)jh%c+YgH@-__ zvNo{LH8Kt{u(UEVvof^MH88O_u8EO}sjj7waf)uDX-aa6sfmF>YO>+xKo)0aMbl(cljIaj16||9v_xGq6QIgO zvlLU^RC7}c%OqpV#K|w%WZ9uEo?OqVH`$8aa%=+eHJcQg0VxF_H74=qxIogJgmx(72Q_c@Gx8$)>iRa zAfsJpX-iJylXwl;-BX;L#Qe|BpP(4r-X_4MyU@ANxJ7Kwl%!~utVTmNQORN!PMaC0 zmoU4QDLnBlzyE!2|Mz=y1H3*8*i;EfSL|8waMwDf8`ZzW8s^r&&p)!qvhcQ()0SN6 z``>r|`M})p`EhWY(Sy71nKu?RzTUMeL@RNY+FZZ(&1aPv_T=@8?_U4&|MBOi&wsu$ zsfYEl$wwRhhNY&~S3mFC+ruim=&{AAZI@fR{qKL-x#1H_!`kWVfBdM4KYebGlgx36 zwuy>*P3I02%7m`J9_)MnyXEbAn?tX^RXn>E8MQewKTn`d(NTb7$JE9tLWd0`c-VGr z+q3tS(dwA^qif8~S6t0%Nt|(Z!TtB$7c*L>O!8WKD97ya`;YqnYTteM`oKlFXlIO9 zs+XgPtB;y+?f!jTA9vZ_``v!Q=Ex?UB~v~ddj#lB4_$mQ!9wO$)Yd3h4#$lVDqYS> zpMKh`4eM6mIC5wGnkk1i>2S3&J^m=6se1Y4l(OAx( Date: Thu, 9 Oct 2025 00:13:18 -0400 Subject: [PATCH 22/28] Add Orb of Western/Eastern Ciphers --- .../currency/reworked/ExileCurrencies.java | 20 ++++++ .../currency/reworked/item_mod/ItemMods.java | 4 +- .../item_mod/gear/RerollAffixItemMod.java | 1 - .../gear/RerollAffixNumbersItemMod.java | 57 ++++++++++++++++-- .../uncommon/localization/Words.java | 2 + .../resources/assets/mmorpg/lang/en_us.json | 8 ++- .../item/currency/prefix_number_reroll.png | Bin 0 -> 2948 bytes .../item/currency/suffix_number_reroll.png | Bin 0 -> 3242 bytes 8 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/prefix_number_reroll.png create mode 100644 src/main/resources/assets/mmorpg/textures/item/currency/suffix_number_reroll.png diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index 95340ea03..bb1f2fc5f 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -246,6 +246,26 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .weight(CodeCurrency.Weights.COMMON) .build(this); + public ExileKey REROLL_PREFIX_NUMBERS = ExileCurrency.Builder.of("prefix_number_reroll", "Orb of Western Ciphers", ItemReqs.INSTANCE.IS_GEAR) + .rarity(IRarity.EPIC_ID) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .addRequirement(ItemReqs.INSTANCE.HAS_PREFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_PREFIX_NUMBERS) + .potentialCost(10) + .weight(CodeCurrency.Weights.RARE) + .build(this); + + public ExileKey REROLL_SUFFIX_NUMBERS = ExileCurrency.Builder.of("suffix_number_reroll", "Orb of Eastern Ciphers", ItemReqs.INSTANCE.IS_GEAR) + .rarity(IRarity.EPIC_ID) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) + .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) + .addRequirement(ItemReqs.INSTANCE.HAS_SUFFIXES) + .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_SUFFIX_NUMBERS) + .potentialCost(10) + .weight(CodeCurrency.Weights.RARE) + .build(this); + public ExileKey REROLL_IMPLICIT_NUMBERS = ExileCurrency.Builder.of("implicit_number_reroll", "Orb of Genesis", ItemReqs.INSTANCE.IS_GEAR) .rarity(IRarity.LEGENDARY_ID) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java index c989005da..8e4349dc1 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/ItemMods.java @@ -82,7 +82,9 @@ public ItemMods(ModRequiredRegisterInfo modRegisterInfo) { public ExileKey COMMON_TO_RUNED = ExileKey.ofId(this, "common_to_runed", x -> new CommonToRunedItemMod(x.GUID())); public ExileKey ADD_25_POTENTIAL = ExileKey.ofId(this, "add_potential", x -> new AddPotentialItemMod(x.GUID(), new AddPotentialItemMod.Data(25))); public ExileKey JEWEL_CORRUPTION = ExileKey.ofId(this, "jewel_corrupt", x -> new CorruptJewelItemMod(x.GUID())); - public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID())); + public ExileKey REROLL_AFFIX_NUMBERS = ExileKey.ofId(this, "affix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID(), RerollAffixNumbersItemMod.AffixFinder.AFFIX)); + public ExileKey REROLL_PREFIX_NUMBERS = ExileKey.ofId(this, "prefix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID(), RerollAffixNumbersItemMod.AffixFinder.PREFIX)); + public ExileKey REROLL_SUFFIX_NUMBERS = ExileKey.ofId(this, "suffix_number_reroll", x -> new RerollAffixNumbersItemMod(x.GUID(), RerollAffixNumbersItemMod.AffixFinder.SUFFIX)); public ExileKey REROLL_IMPLICIT_NUMBERS = ExileKey.ofId(this, "implicit_number_reroll", x -> new RerollImplicitNumbersItemMod(x.GUID())); public ExileKey REROLL_IMPLICIT_AFFIX = ExileKey.ofId(this, "implicit_affix_reroll", x -> new RerollImplicitAffixItemMod(x.GUID())); public ExileKey REROLL_BASE_NUMBERS = ExileKey.ofId(this, "base_number_reroll", x -> new RerollBaseNumbersItemMod(x.GUID())); diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java index cadcccaef..823e4a665 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixItemMod.java @@ -9,7 +9,6 @@ import com.robertx22.mine_and_slash.itemstack.ExileStack; import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; -import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.AffixData; import com.robertx22.mine_and_slash.uncommon.localization.Words; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixNumbersItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixNumbersItemMod.java index a823252dc..124ea351f 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixNumbersItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/RerollAffixNumbersItemMod.java @@ -1,5 +1,7 @@ package com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.gear; +import java.util.List; + import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.GearModification; import com.robertx22.addons.orbs_of_crafting.currency.reworked.item_mod.ItemModificationSers; import com.robertx22.library_of_exile.localization.ExileTranslation; @@ -9,22 +11,61 @@ import com.robertx22.mine_and_slash.itemstack.StackKeys; import com.robertx22.mine_and_slash.mmorpg.SlashRef; import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.AffixData; +import com.robertx22.mine_and_slash.uncommon.localization.Words; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; public class RerollAffixNumbersItemMod extends GearModification { + public enum AffixFinder { + AFFIX(Words.AFFIX) { + @Override + public List getAffixes(List affixes) { + return affixes; + } + }, + PREFIX(Words.PREFIX) { + @Override + public List getAffixes(List affixes) { + return affixes.stream().filter(x -> x.ty.isPrefix()).toList(); + } + }, + SUFFIX(Words.SUFFIX) { + @Override + public List getAffixes(List affixes) { + return affixes.stream().filter(x -> x.ty.isSuffix()).toList(); + } + }; + + AffixFinder(Words word) { + this.word = word; + } + + private Words word; + + protected Words getWordINTERNAL() { + return word; + } + public MutableComponent getTooltip() { + return word.locName(); + } - public RerollAffixNumbersItemMod(String id) { + public abstract List getAffixes(List affixes); + } + + public AffixFinder data; + + public RerollAffixNumbersItemMod(String id, AffixFinder data) { super(ItemModificationSers.REROLL_AFFIX_NUMBERS, id); + this.data = data; } @Override public void modifyGear(ExileStack stack, ItemModificationResult r) { stack.get(StackKeys.GEAR).edit(gear -> { - for (AffixData affix : gear.affixes.getPrefixesAndSuffixes()) { + getData().getAffixes(gear.affixes.getPrefixesAndSuffixes()).forEach(affix -> { affix.RerollNumbers(); - } + }); }); } @@ -36,7 +77,7 @@ public OutcomeType getOutcomeType() { @Override public MutableComponent getDescWithParams() { - return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(); + return this.getTranslation(TranslationType.DESCRIPTION).getTranslatedName(getData().getTooltip()); } @@ -48,6 +89,12 @@ public Class getClassForSerialization() { @Override public TranslationBuilder createTranslationBuilder() { return TranslationBuilder.of(SlashRef.MODID) - .desc(ExileTranslation.registry(this, "Re-rolls Affix Numbers")); + .desc(ExileTranslation.registry(this, "Re-rolls %1$s Numbers")); + } + + protected AffixFinder getData() + { + // Legacy support + return data != null ? data : AffixFinder.AFFIX; } } diff --git a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java index 98671de2b..bf7556cac 100644 --- a/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java +++ b/src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Words.java @@ -69,6 +69,8 @@ public enum Words implements IAutoLocName { RANDOM_AFFIX("Random Affix"), RANDOM_RARITY("Random Rarity"), AFFIX("Affix"), + PREFIX("Prefix"), + SUFFIX("Suffix"), SPECIFIC_RARITY_AFFIX("%1$s Affix"), LOWEST_RARITY_AFFIX("Lowest Rarity Affix"), ALL_AFFIXES("All Affixes"), diff --git a/src/main/resources/assets/mmorpg/lang/en_us.json b/src/main/resources/assets/mmorpg/lang/en_us.json index 99aa4f8ee..bfce23d38 100644 --- a/src/main/resources/assets/mmorpg/lang/en_us.json +++ b/src/main/resources/assets/mmorpg/lang/en_us.json @@ -553,6 +553,8 @@ "item.mmorpg.currency.prefix_reroll_all": "Orb of Sinistral Rebirth", "item.mmorpg.currency.suffix_reroll_all": "Orb of Dextral Rebirth", "item.mmorpg.currency.affix_number_reroll": "Orb of Ciphers", + "item.mmorpg.currency.prefix_number_reroll": "Orb of Western Ciphers", + "item.mmorpg.currency.suffix_number_reroll": "Orb of Eastern Ciphers", "item.mmorpg.currency.base_number_reroll": "Orb of Introspection", "item.mmorpg.currency.affix_random_mythic_reroll": "Orb of Divine Benevolence", "item.mmorpg.currency.affix_tier_up_down": "Orb of Imbalance", @@ -2571,6 +2573,8 @@ "mmorpg.word.addpotential": "Add Potential", "mmorpg.word.addsocket": "Adds a socket", "mmorpg.word.affix": "Affix", + "mmorpg.word.prefix": "Prefix", + "mmorpg.word.suffix": "Suffix", "mmorpg.word.affix_types": "Affix Types", "mmorpg.word.affixes": "Affixes", "mmorpg.word.affixes_affecting_all": "All", @@ -3515,7 +3519,9 @@ "library_of_exile.item_modification.add_gear_quality": "Add %1$s Quality", "library_of_exile.item_modification.add_potential": "Add %1$s Potential", "library_of_exile.item_modification.add_socket": "Adds %1$s Socket", - "library_of_exile.item_modification.affix_number_reroll": "Re-rolls Affix Numbers", + "library_of_exile.item_modification.affix_number_reroll": "Re-rolls %1$s Numbers", + "library_of_exile.item_modification.prefix_number_reroll": "Re-rolls %1$s Numbers", + "library_of_exile.item_modification.suffix_number_reroll": "Re-rolls %1$s Numbers", "library_of_exile.item_modification.base_number_reroll": "Re-rolls Base Numbers", "library_of_exile.item_modification.corrupt_gear": "Corrupts the Item, making it unmodifiable and adds a Random amount of Corruption Affixes", "library_of_exile.item_modification.corrupt_gear_no_affix": "Corrupts the Item, making it unmodifiable", diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/prefix_number_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/prefix_number_reroll.png new file mode 100644 index 0000000000000000000000000000000000000000..700ad24b92b99eb01a3714f7ad60b98af6c56a10 GIT binary patch literal 2948 zcmcguYitx%6rPq)r7fixqr8O4G%7@9XJ%(-cW3BYO1IcX7MijNB@*r3J9oNccV~u~ z*>=m1N_dzQHDFX8sYZek5`KvMAv`otDmF$zR3b#sh!UbkL4%2ih4s!phGJS;McwS~ z%)N8&`Of*ychB6Orp1p|bYE!ikb@|X?id5wgwM>Yx z5u*;p)rM6jTDod+6s~HAqD<91N>-;O>>!D3K&F!k&63g~D(hFm_s%p!ky#VFJw(+y zfMiRgiLBF2M2a4chAhjI0nsD+MHU1Db4f4j6&RLhSU=5)66clh^ZbXxaHgzC&EbW4 zFgyxTaoaW|hUx6=^mOtb-E3nxQ4|^0%XqyswxF#p%?4>&v#JUn!pMTAYS^l-k&Z_Y z(^Gbc!lCAJNE)tN&C2tH8DrAGU^ox!}GV6 z&oL~==Gn!DRA(Y!>tX~+ltbin5e&@mVc z&|&~U+0Vxm5L625!#Yekx^UL#_K2)Q?BgaXjER0ZsED)>gFKDAK12h>8=z$j!U0hL zULY5|EiqNRO+jL)S0^eNd*u9L5GX>7j`>7^Mxsxl0RS@X=K&XF{eI~8d!4>ElN zuJ4Rhh4_^v;jZiU;lI@}^Z5Fmc3!7-WD_594k=9G!;N$69;@)cJ(wX4?^P2YyB?Tz zZ5crn#T&!5(clYkFq5en_u%Rt>dW%-^0{nDRaMo7b=^G=pHrWjR4wnfE>3GHI{4i3 zlaY1msU;JLD;tk3lE1$1TiC>XaxJrD%j=W(-2dz2)tL`_cXJm~K7PfDz1z2y@t|M|Pq6Z5tZlhz(wKeK=R&f}St)3(1H z|9#fQL}lg4)5T{?i`P&K$`^dPW6D05>g$`=*0*o%J4A6cHP|A2<0F(q-RqdG*MB&% z^x2JjzT(dvHeNb^cGsTr?^ciBHm=mSN!j`nN$#YMlW&j%KVSO3z5Mv>l5@S!%(%Bc zlbXMG^7%6VkD-3y?XsD#9{6B8Qsv`h+&1aEwPHwDU9DZv->zY3S;a27A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/suffix_number_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/suffix_number_reroll.png new file mode 100644 index 0000000000000000000000000000000000000000..a39e749e60f6ad692a0505f3dfe5b7c83ed72155 GIT binary patch literal 3242 zcmcIneQeZZ81I;F2pt>#u@F&LyMP+#_3PSeE63b+d<;0YY^NI`+4f%hc5Ar1mbTk& zIQdL)$P6Ee34z3@C>Tl5#6-hKAPD@!{P=@J9TR1eApaqONCL`ydv_}vGPVdd>9u{I z=Y2kY@9%lu_qNroTv9acnQ0h?71b<_)T3vKcTX)qzhyUu0eU=TEnVec*o-sYo%im% z8M85L+OI~e$!&_RP*gJ+0Gb(xfppSB+8DN=B5eV64Rnb(Y%@|}^4hVJBw=V_vQdaK zQL7rZ8%x*OuwmWGn7VF_Dr;oLLSjK$K?ai01w=ZTNI6P6OlIsV=-nHpNg|`-t_hQs zossxm zYdY=bIHrB^7zYU3Xw>)dz*v$=--Y8Y>O^Ve0C}Lc6YI7hT@M|z!&c#~dcAlE}?~5#YiwiI^0mScc;G7%M4)s4z0c1QmwKszy!C(7SzA!Bb`A7{hp^6T~s9 zh{qam!Gy}1s_3Sj1ZWYABxr-Qm1-jie`%F!Ghy1uF^Z1QL=lZDH7UmhDHYa4!X!!| zU>KSLL^jUzP^V-KMIy05or>$SKye`uge)WT8k9%oM@+TDW1BZWTX~wPA{+O-N?aU3 zMpG#uB1AYo2q;;X0VOedP}bvmC>Uo)tkv2EDt?d{ZPklPLl#+4mVhqAsdx~@0%a5x z06?Qe9M^C7cxnbi03pqK+vSz#5Ap+|mtj(%9rtWqD8&&{WzfW;TWlWNRZ;8 zI37sksA@vxdwY*U5>X!JjPX`z0*jx<mYjlynB7orsZT3b3d`;~`d{cu~}(U=Rwy5bCViXv|05K)gnhfnn4k zZDa_Y{JdBH%!xkyQ!7lN%C*s%^t&?$Ph(i#+L}mZOnOKCYk0UKf6m5j!66TWA#Yj5QTA^h;~HwKIG zTUW}Ku)R-S#JU@Vtu3pcXBQl~vva8b;P-f0pjl0){|;P7R-Njb<0~r#pf#uI@Bbyp?-P( zo`QiBFYezlG_Yx3pS1t_XJ5>^d~@sF;RRp!;BSN*Jv{S3@oB6+@9dG8Snb=pW*ECW RPI><(Y8I`G9Ik5J{11SNHthfa literal 0 HcmV?d00001 From 58e0d05ff5a2e33e31db133388c297680c47356b Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Thu, 9 Oct 2025 00:19:02 -0400 Subject: [PATCH 23/28] add outline to top of orb of ascension --- .../item/currency/gear_rarity_upgrade.png | Bin 3257 -> 3518 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_upgrade.png b/src/main/resources/assets/mmorpg/textures/item/currency/gear_rarity_upgrade.png index e8885af67ed6f73187f433950b4732104d96a29a..349394911ae60daf6b3fb505f6724d783c8889f3 100644 GIT binary patch delta 1199 zcma)(eM}Q~7{{+1;bj!)%wV(_EC){6IQqNSUOPb%n6eOri3vD?-d*qXVgX~TBMeeN zQq90rcMC*j_C_*EMo@u&Af&tnT{bYTm`pbZ#VlkIVH-+t5xBMDvgtqb`Qynq-_I|< z=dEAsi9g2#McB@pCLj!08ZaRG>WTmns->qSJRqJDxjD!lg#i?piU2TUj2Wk7HN53T%LErB3Ahyp z1PxFl4p@|DNCxF-6OW3bkunOb=udJN{8lne6PyTm3MB|0M=6G6Q5MH=R4|epC*Xq7 zN-**hIM=BU^k?38ToNiBtV61*Oh+(e!z_MJuvghmY?%If{xD#H{EV0U5C0b*sFWP( z2#)9jBb&3TY*okiA7gnT9Z9DtilCl>0;yWC6=zEoLZyA96Z*fTagaE&Y5* zS}>i4fnIm0LG@C*o(+5L#WVf$iR=zdln;dOO?rvm>=G0(melr%0)}{qu*Z5YP!44^;zl9SK}Wkij!Hd@s(%wS!bOZznW1xJ3E!u z)>c2sSQ@(h@#`&q;jQmFttx%kf6J{z|1@|V_!Rn*QaQ?WmeDKJ8MyUp;7&$*Xvc3#hR6! zId>CmVG*gRv7QSf1%t__5~(*_Bh$p@trs`-ygA(0Rk&%assByvf3?{S(t-2 z$LrO_mX^?cWyJPx&x~&M)YXjFM-2KNH%QRLxy!op;Ro9Nm+&u6DHBQ|nH8*LeN{N& zo>iuYPWWy{eYh4HGt^`$P_N!uzwgw4?o{p2mF#lm4P<=7K5^x{HqS>c_k0>fbhQuY z*s-?gW8&@p)9R&nmelUn(j$kqlz26(k_t{rB}@g<{RHF zWSsnzDc{<_Lf6P71So7^Vr62X3nUE;loTp*3#@!oOA=EOOA=iYOHyr>fM%Eibt5aD z+|L}KY?zdil9*y@q-$KdDvnCe<2nx_F>VPi)?K*wZIp<@iaIvp#Z) zOwMOxN75TKIgQIhnFvcKU*r;bRqhWiNi0D+r@XGm^AIqDy!ejINc9YvWk@7Y(Dvj^w-`it;*-0qxTlPdQ2CKgM z6|CRBXx4A9efwWHPKuMoazgvM*A|VYcYM|FI;!NZPth^GWqb1CJI^p9v87W)oF>fn z=IQWbb5Y;9bBUCx@1v=lle^XH%@}`tGdV5De_rO<@t9nvo|Xw(Z~y@YpEx z@xrO)8Z8N>_X1QJ*NBGMK2EsCwV7{XP>|Qj8)syajf+LFGgy|j$N>~c(da2Pi=DshQ0T=PuTuz*&2QMTa-4#A5(_Q8LSL1 zcD=iGZByorXKyk*RxMCb08{*0lAmckUmYp3lbj zRpv$||I*UyJ`4|jzq3DE-(a<*XbBI)j4rp?Ejf#wW4QCSe|!-6A@-|UtH2lOXutE< zV=kNIsb06-@_okLW8dEHUi~CTBK&t+^WOY>%7V2Q1NQP(zli_I)qlPD&gQEZUQc{| zD!gm)(tk7kmVRG&Iy$8Dpz*<|1J8X-Kd)l*)NA?Eeq5Bnf}vM{VT0q>%agf{6d62P z#?X~|I4nEJl{Pvo883Pb_y85}Sb4q9e0B_rO AVgLXD From 34d995574c35ee9536dce2bb29d391131ab1d256 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Thu, 9 Oct 2025 00:29:57 -0400 Subject: [PATCH 24/28] add extra flame pixel on Orb of Revelation --- .../item/currency/implicit_affix_reroll.png | Bin 3052 -> 3364 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/implicit_affix_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/implicit_affix_reroll.png index 3b4a228bf1823d3a7b3157e93e3f6e07566f51ca..6dd6c0e5956c0ae5eaa518d57a979915d284c790 100644 GIT binary patch delta 1088 zcmaDOzC>z*1ryi(jaH#d965Q#RwbEfX_MbEiiv_4`i6Q2`br8FxgeR;icGK!Cx`)- zncU4(!EPC1U|?lrIhl)D4bC=a4pvD_GfYiPOEl3HO)9l*U-o$P1h{dBuUpI(J)QdD9OS!ImOg6$=Jkf@*if; zdIgY^to(~IQ}ap^OEUBGY?Ta^Ac7G=sm1v@r4T_&GXo&dHw2MT`A7ot2G&C@`G)pxzGfA1eflVA1ikr`|r7$WJ5sZ@` zvP!@-O+LpKHu)5Xhb}R;DJc|}1f`}~rA*$=tf-QjVq|EPn3}AcYHXOIYhhwytZQLm zVWgXEl$K+-$WY(^2Ng!MsO7;_B+^+j(T8y+T%n%nHzD^WcF&tKjt%h~G}JU%yR-cj{OtENVl z@G5y96ga(9-{tsX85!%tQ=?aBnNu&c=Ke&y3Ox=C(qMUm9Nh_^J|ak%}8CjW_PflP~gR^^?gLRV=jZ)1_Q_OTNOp=py z6D>`QbS+KI&2)_tEe(>BjDZ5F#!3nmxdpzyRxXqMxD<7b%nS^Y6H`-l6Ae=hbKjSNx^Op=pfI{YWk;d0mq?>GMnXH>;YGR^m znV4#%Yh+=Zlxm)8m||>cIr$@-43mlZ=DX}Ej4H&q460%BUG}iaH#t3YiLpdUp|~U{ zHO(qz@)9nK$y2yG>t|bina9Auc)`=fF~p*G>ZJYN(Sahz?e$YO%@$hHabA(@(=>&Q zKn}yGKNF80T-f~f!dg+UcE7h_yIwrHV!t4|txs1ddPRiPNA@O`%nhwPJIw-kbUmD` zuSTD%+-taBrs_fAJIn9C|IYioFJ{fwlHcd%d%b$||K!$hJKrsu?P2ay-%>9ax#ix| zY3Zxa+js|WxjrMTC;fCp&1+NUC4T@QDG@L-sJv>@ZkMAxnP zQfc#-H%|DIQrdL*?|g^OFLO=4-fFpf#-X0U-p(l}&}>84$&H~RBJzF0`wN|lbo>@Z zC<(Ug{PMOb%74nG`8vxV^oMeQE( z$eiz)Jj*llbMaO6@(**PC-2=;^QY-+`0hK^Tb7k~Ze(c^)nC%L&4Oo+*!~CnKW7-} z*jKFHJ6pN Date: Thu, 9 Oct 2025 00:34:08 -0400 Subject: [PATCH 25/28] remove unused import --- .../currency/reworked/item_mod/gear/UpgradeRarityItemMod.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java index 6b2df54de..40d308674 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/item_mod/gear/UpgradeRarityItemMod.java @@ -14,7 +14,6 @@ import com.robertx22.mine_and_slash.mmorpg.SlashRef; import com.robertx22.mine_and_slash.saveclasses.gearitem.gear_parts.SocketData; import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; -import com.robertx22.mine_and_slash.uncommon.interfaces.data_items.IRarity; import com.robertx22.mine_and_slash.uncommon.localization.Words; import com.robertx22.orbs_of_crafting.register.mods.base.ItemModificationResult; import net.minecraft.network.chat.MutableComponent; From b5ea2896ff32631ec0cf79fa364acee7a3985572 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Thu, 9 Oct 2025 03:38:50 -0400 Subject: [PATCH 26/28] another small shading improvement --- .../item/currency/affix_reroll_all.png | Bin 3293 -> 3285 bytes .../item/currency/suffix_reroll_all.png | Bin 3288 -> 3286 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/affix_reroll_all.png index 5ace67a1b2bfcd75e990ef0e703be535eee93de4..2088cbf6dea2bde433520cb5a9cf3478bf08994b 100644 GIT binary patch delta 736 zcmcaBc~x>l1T&Xqh=H+{vALCr(c~m%Wn^wYbAXDWnXy@_MM|Qsg>kZhZfcT=g|4Nc zp@pt_YGSgvahjoNqH*eEW)>|KBV!9g3sVat-J~=#OWl+dlO)}w6hkB3WE0awBQpz& z#3UoL&4Db=%qj+HsfOlesYyVCl9O~(O-(FyEzE#=lGBos%uN%M49t_wC&zJ$BRi#@ zGk9_wyXa&)Hl@kQ9M_3+7KRzKiL={|>qfn|>S<;M2FAsnE{-7t}Tz|U)Uh}WWE_|`T!lJXgX|*3$liojO_WupdyEu036p7*DV_keHY}XEz zDPr2Xx$SQ68mHXJV1L>8q)z7E^F811oR&F$&_?m>QZ|L%lc#J_Q90N3yJ_p>Q>>rY zy*?~1SpPtL+P3Qtxu1VNeJJ&97{kfBkEeJ+1G5HLNP$7;d3G z<2N7A;RPozUwmwG@~HfEwaD`RDYiNb?!RAr{q@FphQkI4v+C8>o)>0Ud1PBSw{YXK z%#5v3!3|HkN@I^F7&xd+W^CV;^sd4DYOjNWf{f#%{bjp(JtqlpwO+_Eo9Lq!xbODD zRd@c~`)nB6e>6#gubrvoW7e*9)-Ow>K32?en3n1oC}JYT+jBhGMM==$m;hh9AP<{h zuUp{Su*BPDv%fVszo>JPVc!|k=N1~ud2F_sRPTkiWh-~-oK_K=^@7*;@-l;ezG}j^ j-j`S%GM>lz!~YM%%eq~q>prGEWdH(CS3j3^P6@|CfuWU=$>bzvWn^wYbAU=xTAGomfr+thl2Mw0ZmOk;nQoG~ zWwLIfNwR@avSErzvPIHlW)>}#WTO<^TbpG;}ip9 zvn12h&4Db=%qr%omWBpN21&Z+#wm%qrY0r^x=D#ZV7TKZ^xf|!*YTUVv$r08 zB)R#WcKv<-GDda7?Hifczx1ECI(PcInd0`zHrA8fa(oZIy(l{AlS*xUb)~A~)<1qu zVS?K?_fD1Zam_K+d(v{-V_VSbU02Q2#r5A!h>c&iS7QEx8S!T(ax=WSzW+n$%fNEK zZ9>NzCEq&)ig?L=dw*6*{kq=#le-F+`Xn;GEtBqbYwkT$50pGJUnj6m>ZYpDd`})O zOKbdM+@zB#JG7h6$bMLO>1e5Jk71WtW7=j;M}Y?)D+1Pr z3HG{8+<$Y)x;y{QB{N>Gmi+OzuEc8YMM;lIOVoupTbvYyR$YJnp=$4nt635}Y%Vf< z?EGch~Lb_r3g}XlKUCRbI{}tZO*f pnwLq$@3C%Qmboq6ChUR!4@Si&`@GY1avd0ez|+;wWt~$(699Ax8rc8< diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png b/src/main/resources/assets/mmorpg/textures/item/currency/suffix_reroll_all.png index 657a923424b9e9a7defe13246bf2622b5d40de6b..1f9e4b7fa8920e1e87713fb94c1979f7f8f70349 100644 GIT binary patch delta 737 zcmca1c};Rd1T&Xqh=H+{vALD0(c~m%Wn^wYbAXCTYKobmxw)xsl4X*au7SBpl5Ub& zqM2@@SxRDZa+0CBiJ9eOW)>}##8d;rlvHzbUCUI1L|sc06QC9&i&R~MG=n6gB-7O7 z)FjKzfh^9#gUy- z&lx;9j$L%J9h=hRWRB~^ISa##*~Hmx$91Eg)h{8Cfq`*}r;B5VMeowdzTQlMB5n6) zH!qkF-_58fzF6Sw8KtPLt8-nhXsw7BaPcm8dbn@Dz?D<3f`KBJlvcP-NVsrl)*%rU z)>xjNg)3GFe?QQ%_?(iB!I{4^zT2L+{mx_TD}4FLnUE}orps-MG+N3m${jw>{atJJ z(%P(wrQTb^Q>g2x(mY}QE%WSlAL$Qt{iAwPhF8SZ(0QT2p@#-VJ7w0H`DMgb|37f* zomE!8YmEJ}T(v_QLgLx8+>#3eH@z)XKCa}pIB;?@|MB2gc?R?5e!o;*T*`a=wEMEh zx+b%IfBgMtxG>mYHQOAAX{ooW%bofGdEmx6LP&65-R$%Nb+x;{9HeFyZQV* zh7~q)JMQMOFfpbWNjhK2GBw*cb*JWg_Vw4hv$lGrye*rZb$By(lf$D<7O~dUBl3QS joUeb~_&;&c!TLx1y^#mD6uh5RzyJiEu6{1-oD!M<)kYb% delta 739 zcmca6c|&qT1T&XKh>@|CfuWU&$>bzvWn^wYbAXDap{1pMwV2GzqNQSKV3B5Gnr5P#22`n=Y+{n6n`C5>sGDe-mTZ}pWNB() zXtX(y#hF zPmW_3oovUZG&z~$I&sdzFk?1xcH42?s85)qkr*;Z-J!w$x@v>5R zv1iA0w=@&+i;c&3zrS04-nRG|m!|5!=9TrK%pYz!7FFGx8=y0-%w+z<&leA`EO_P} zuV0_nbn%djQe)B1o-hCU=1!7-Yjy6Ext`Mc*9#(yWcZZDx)%m$JSclDQ?;+>(Q9ep zKpz)BA$>Q8qeqh_K7QeKXsYs}PPK2(eLOeKt=O?g{@A}KJnwJM&Xig6=2U0>K@(pV zrpAqjJO#eVXmlwBubiUosWypUrM6J>==?3y?mDc#TJN;@qCm3TmfN}S;?{<>mvdKZ zi7j}vIVI_9f$YZ$nX_rdcbM0kDVz8v3sqft|NUdl$Byr-ncn%W`^mdf)airWnr7y^ zdE#w}2?i1eHtD?c`ef`MdE$?u(nJocx#!-?snn}&G+pf-8XCCz>JJ~Urh^K?zy8*} zljCZgaQbP$`s+tsZ^+yT%9N|IlP`%)Pu&~GKh=v>uD^Zyy4N|60vd%cW=zr7bno6J i%yYP)_oGYG{s+>(ERJc(-_~Gd00K`}KbLh*2~7Zq8z5i+ From fbdbab41696c893054de0914df8d3ac85770e40d Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Thu, 9 Oct 2025 03:46:37 -0400 Subject: [PATCH 27/28] remove redundant has implicit req on orb of revelation --- .../orbs_of_crafting/currency/reworked/ExileCurrencies.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java index bb1f2fc5f..052ff8d37 100644 --- a/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java +++ b/src/main/java/com/robertx22/addons/orbs_of_crafting/currency/reworked/ExileCurrencies.java @@ -280,7 +280,6 @@ public ExileCurrencies(ModRequiredRegisterInfo modRegisterInfo) { .rarity(IRarity.MYTHIC_ID) .addRequirement(ItemReqs.INSTANCE.IS_NOT_CORRUPTED) .addRequirement(ItemReqs.INSTANCE.IS_NOT_MIRRORED) - .addRequirement(ItemReqs.INSTANCE.HAS_IMPLICIT) .addRequirement(ItemReqs.INSTANCE.HAS_OTHER_IMPLICIT) .addAlwaysUseModification(ItemMods.INSTANCE.REROLL_IMPLICIT_AFFIX) .potentialCost(15) From 32dd6c4a37f50daab2f85c7a35b9a1575d5f3993 Mon Sep 17 00:00:00 2001 From: AltimorTASDK Date: Thu, 9 Oct 2025 21:16:45 -0400 Subject: [PATCH 28/28] center western/eastern ciphers sprites --- .../item/currency/prefix_number_reroll.png | Bin 2948 -> 3177 bytes .../item/currency/suffix_number_reroll.png | Bin 3242 -> 3207 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/mmorpg/textures/item/currency/prefix_number_reroll.png b/src/main/resources/assets/mmorpg/textures/item/currency/prefix_number_reroll.png index 700ad24b92b99eb01a3714f7ad60b98af6c56a10..d02349320e8bb34282f0b6466caca50000244a03 100644 GIT binary patch delta 912 zcmZn>eHSDKRO@FvV!{ zA7;;b1(3t6{EISE^GXs+GV}9nl?;_2f)PQf#rZj<5J5{b10c{h1d&krNCNT*>Cn8) z5?duBB?XXQt(^07@{58C5|dMHl`PFnO^r>V5&@YNsW}lYnYpQX#SoX6Ar)HSj+G1j#(NjB9@Oi42`H#Id%Nij&Ayn#&|DIhmrWJ_cu zE+kPkPQJ(%Joyxdhb}ReDk&6~1f`}~rA*$=tf*pPXkw9OkZPuDVPI*gn`j7hW|Fy~ zsjjh^S&D^;Nvf%dx!L40&aV2khfPu$7#IyaT^vI!dXxYB|8LK%+R&+VmxqT(=Z6Zf z*WL%`epfwEJpA@@xa7sF21%cpd=}SvG0dpfNmF9pE+K#TdiZ<;p2S1TBJYLtDz0BV z^Wmeevpn*8am?NOD?cc&}mSgA=pv^4wrhuCkg?cIAhk{;LIC&zpH}J&QVi;N0nxA3lFBZ@bFVdQ I&MBb@05d{InE(I) delta 705 zcmaDU(IP&DO{cPvhu&e85kHdJY5_^EP9jw{QqyytlH42beD&RN5_CoSy{QOrLI%` zPG&s6P0EhqXHpT2ySgJU__kzT@#kdt+<(+3<$>7aA*quB``&H3XD{`~sa?0EcePl3b__TxrAS(ynF>aT~S?YOpAI>&lC z1Ap_bR=LBi%g+8Ulv*$)N@o=o zD;)pu?qxR5Sq-*3v+HFqEWJ8Tqu$Zht<_OR&&Zn-%-PcBH!bhyE7|89SBMa5se z8>|Yq5_2sN|2{4-`}}*Wa|&~Fx+d~TBx-U`6Iv>B%CK?(i>86<(o9S8@o22L_nI{_RCK(zV zCRwH!m>Zgz!gTmgp2Ov^cs2{ON~)nna*{F79>X;AWZe`)6JuSA6ysD~1H5 zGb3Zu$sgIoIW0q=PThQ;J&93;826#-n|z-=Wb#c;58|wJ<+@Ryl6d1K0|TRP=-gnjecbfVUi?4f^Y|C{j(KchoLA`he=6@4$$f9F&n~zi z%_e57@%7jLpKsaQc7N_O6nfgKUM_D`^YhEhhlh`5^N5G%q+RgmOt|pTAUVKq)35&P z4Ci+&_%F0+5|4b`zSIeqL+jHjjGkIF?^$LP@$TW*-4S~aw4C|*>#6Y!v(4KQc9g#q zi@6hbRKh2@m{oXJXOd77&vU-{hq9y-#rOO?qM)UBEFmTPSi-~9;~yTLt=@3id|m9B z1@aHM)Bf-H&$pdXq2TKy(GA>r^Y(H*dw$i#fa67WBeO^fhgE`;_=RiN6Mr23lGE>a zH$wW%{419jmN{;FfAU3g#jgKs%I8W7zFqKiOV!=_-{w#aPqkQn;sf4r_U`5!bxlgnl8xTS3N;eYW*`GSw#wzn090vL)dxpy)C zQk};$N#F9Hw)6_)n%m{G92c7Ntb6|XHb2kzXY%fb9jtd5DuYei;-lpZZFc^i@bL8V z^E~o;amf`GfAyN{yclNi8gbkds8=gtuFI|b67Li?>EYqi+j)w1o#OFdCX+tldI;O; zMjj`2pBGH=`)k-Pr(F}{`L1`jsr&Y7iRMgMeq*+!E~o!jBs=;z^*p@uF!;ujj)H@; z{dpEWO5$fMZx6e5?c-ZVd437*OZe9R`+b2l15>zu9OLc>&u*?xsEe!j zWo~ZRCuSkw*rvd&#-`&C9pCX>zVXeULZv47Qv5)EDJzBziT3&K<1>FVdQ&MBb@04r_%*Z=?k