marvinscham / disenchanter

A tool to mass disenchant champion shards and other League of Legends loot.
MIT License
109 stars 9 forks source link

Reroll Esports Emotes before Mass Disenchanting #57

Closed xChickens closed 9 months ago

xChickens commented 2 years ago

Is your feature request related to a problem? Please describe. There exists some emotes that come from Esports capsules that are disenchantable. However, they are rerollable, so if done manually, a person can reroll it into a disenchantable emote, then disenchant it. image

Describe the solution you'd like A check to see if emotes are not disenchantable and if so a prompt to reroll them.

Describe alternatives you've considered No other way than to reroll them first.

Additional context Sample emote data from the player-loot API:

    {
        "asset": "",
        "count": 1,
        "disenchantLootName": "",
        "disenchantValue": 0,
        "displayCategories": "EMOTE",
        "expiryTime": -1,
        "isNew": false,
        "isRental": false,
        "itemDesc": "Are You For Real?",
        "itemStatus": "OWNED",
        "localizedDescription": "",
        "localizedName": "",
        "localizedRecipeSubtitle": "",
        "localizedRecipeTitle": "",
        "lootId": "EMOTE_3928",
        "lootName": "EMOTE_3928",
        "parentItemStatus": "NONE",
        "parentStoreItemId": -1,
        "rarity": "DEFAULT",
        "redeemableStatus": "ALREADY_OWNED",
        "refId": "",
        "rentalGames": 0,
        "rentalSeconds": 0,
        "shadowPath": "",
        "splashPath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_ARE_YOU_FOR_REAL_Inventory.ACCESSORIES_12_12.png",
        "storeItemId": 3928,
        "tags": "nodropoutput,norerolloutput",
        "tilePath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_ARE_YOU_FOR_REAL_Inventory.ACCESSORIES_12_12.png",
        "type": "EMOTE",
        "upgradeEssenceName": "",
        "upgradeEssenceValue": 0,
        "upgradeLootName": "",
        "value": 350
    },
    {
        "asset": "",
        "count": 3,
        "disenchantLootName": "",
        "disenchantValue": 0,
        "displayCategories": "EMOTE",
        "expiryTime": -1,
        "isNew": false,
        "isRental": false,
        "itemDesc": "Speechless",
        "itemStatus": "OWNED",
        "localizedDescription": "",
        "localizedName": "",
        "localizedRecipeSubtitle": "",
        "localizedRecipeTitle": "",
        "lootId": "EMOTE_4028",
        "lootName": "EMOTE_4028",
        "parentItemStatus": "NONE",
        "parentStoreItemId": -1,
        "rarity": "DEFAULT",
        "redeemableStatus": "ALREADY_OWNED",
        "refId": "",
        "rentalGames": 0,
        "rentalSeconds": 0,
        "shadowPath": "",
        "splashPath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_SPEECHLESS_Inventory.ACCESSORIES_12_19.png",
        "storeItemId": 4028,
        "tags": "nodropoutput,norerolloutput",
        "tilePath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_SPEECHLESS_Inventory.ACCESSORIES_12_19.png",
        "type": "EMOTE",
        "upgradeEssenceName": "",
        "upgradeEssenceValue": 0,
        "upgradeLootName": "",
        "value": 350
    },
    {
        "asset": "",
        "count": 1,
        "disenchantLootName": "",
        "disenchantValue": 0,
        "displayCategories": "EMOTE",
        "expiryTime": -1,
        "isNew": false,
        "isRental": false,
        "itemDesc": "What can I do?",
        "itemStatus": "OWNED",
        "localizedDescription": "",
        "localizedName": "",
        "localizedRecipeSubtitle": "",
        "localizedRecipeTitle": "",
        "lootId": "EMOTE_4029",
        "lootName": "EMOTE_4029",
        "parentItemStatus": "NONE",
        "parentStoreItemId": -1,
        "rarity": "DEFAULT",
        "redeemableStatus": "ALREADY_OWNED",
        "refId": "",
        "rentalGames": 0,
        "rentalSeconds": 0,
        "shadowPath": "",
        "splashPath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_WHAT_CAN_I_DO_Inventory.ACCESSORIES_12_19.png",
        "storeItemId": 4029,
        "tags": "nodropoutput,norerolloutput",
        "tilePath": "/lol-game-data/assets/ASSETS/Loadouts/SummonerEmotes/Esports/Digital_Esports/EM_WHAT_CAN_I_DO_Inventory.ACCESSORIES_12_19.png",
        "type": "EMOTE",
        "upgradeEssenceName": "",
        "upgradeEssenceValue": 0,
        "upgradeLootName": "",
        "value": 350
    },

To reroll using the API it's a call to /lol-loot/v1/recipes/EMOTE_forge/craft with the payload:

["{loot_name}"]

Example:

["EMOTE_1467"]
marvinscham commented 1 year ago

Thanks for the detailed report! I'm currently splitting the monolithic main script up into reasonably sized modules and will add this feature with the rework as I consider this an edge case.