Crafting autorepair QoL ideas

Forum Forums Discussion Crafting autorepair QoL ideas

This topic contains 16 replies, has 6 voices, and was last updated by Nekro Nekro 4 years, 2 months ago.

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #23625
    Vixen
    Vixen
    Participant
    0

    Is it possible (and if not, could it be made possible) to have Miqobot use an NPC mender for the crafting repair option? For example, I almost never have any fragments of dark matter on me, but all of my big crafting batches (grinding for xp or mats, doing hundreds of crafts at a time) are done in my private apartment where I have an allagan repair node. Currently, I have Miqo stop every few hundred crafts when doing big batches so I can manually use the NPC to repair my gear, but it would be awesome if Miqo could use them to repair for me. I know there’s a scenario function to do it, but I don’t really use scenarios much and it’d be a lot more convenient to just be able to put in the crafting quantity and repair interval.

    Related, would it be possible to tell Miqo to try to repair after finishing a crafting batch? My grinds usually consist of a few hundred gathered materials and only a few dozen mob drops, and it would just be kinda neat if I could say “craft as many of these as possible, repair every 200 crafts, and repair when you finish the whole set or run out of materials” too.

    Finally, would it be possible to make Miqo detect the durability of equipped gear in order to repair when items are getting low? Rather than “repair every X crafts”, a damage threshold to say “repair when any equipped item is at or below X% durability” wouldn’t even need to be adjusted as you improve your gear.

    All of these are things I just thought up while doing a load of crafting, and I don’t know how hard (or possible) they’d be to implement and maintain, but I wanted to put them out there. I absolutely love Miqobot, and I hope to keep using her (and see her grow!) for a long time! To the devs, thank you for all the time you’re putting into this, and for such a user-friendly licensing arrangement at a relatively low price. Miqobot is best bot!

    #23626
    Miqobot
    Miqobot
    Keymaster
    0

    Would you please clarify, why do you wish to avoid using scenarios?

    Scenario Engine was created in order to satisfy an extreme variety of custom requests, such as this one. It is physically impossible to implement an additional UI setting for every minor QoL request, therefore we created a simple scripting engine that would offer a flexible way to customize Miqobot behavior.

    A simple scenario would be able to do exactly what you ask for:

    craft(200)
    repairNpc()
    repeatChapter(5)

    Finally, would it be possible to make Miqo detect the durability of equipped gear in order to repair when items are getting low? Rather than “repair every X crafts”, a damage threshold to say “repair when any equipped item is at or below X% durability” wouldn’t even need to be adjusted as you improve your gear.

    Yes, this is something we have planned for the future.
    It will require an inventory management module, which a significant investment of development time on its own. We will try to make it possible.
    Thank you for your request.

    I absolutely love Miqobot, and I hope to keep using her (and see her grow!) for a long time! To the devs, thank you for all the time you’re putting into this, and for such a user-friendly licensing arrangement at a relatively low price. Miqobot is best bot!

    Thank you for your kind words very much.

    #23629

    Kim_Lee
    Participant
    0

    Miqobot is correct most of what you are asking for could be done in scenarios. Why not step out of your comfort zone and see what Miqo actually has to offer? I can’t imagine doing crafting/gathering without scenario engine.

    #23630
    Vixen
    Vixen
    Participant
    0

    Would you please clarify, why do you wish to avoid using scenarios?

    Scenario Engine was created in order to satisfy an extreme variety of custom requests, such as this one. It is physically impossible to implement an additional UI setting for every minor QoL request, therefore we created a simple scripting engine that would offer a flexible way to customize Miqobot behavior.

    A simple scenario would be able to do exactly what you ask for:

    craft(200)
    repairNpc()
    repeatChapter(5)

    Most pressingly, there is no exit condition. When crafting stops – for any reason – the craft() and repairNpc() functions (as I understand the documentation) will not abort the scenario, so once all materials are consumed the scenario will endlessly attempt to repair my zero damaged items. Related to that, would there be any notification to me when that happens? By using the normal crafting feature, I get a popup message when crafting finishes so I know I’m ready to move to the next thing I want to craft. If I were to use a scenario like this, as best I can tell I would need to change the crafting recipe manually when it’s done, since there’s no way to say “once this cannot be crafted, move on to this”. Without any kind of flow control, I’m just not quite comfortable doing arbitrarily-sized tasks with scenarios. I could set them up to perform a known and limited-size sequence of tasks, but anything that would require a decision or repetition doesn’t work so well.

    Please don’t misunderstand, I’m not saying scenarios aren’t good! I tend to do a lot of fishing to level and then desynthesis to get rid of the things I can’t use in crafting, so being able to set up a scenario that teleports, walks, baits, fishes, and repeats at specific locations is great, especially since I can even follow it up with a teleport to my apartment, going inside, walking to the mender, repairing, changing to culinarian, desynthesising by listed names, and repairing again. But that works because I have a predetermined fixed-size list of steps to follow without needing to make any decisions, and even that assumes I don’t run out of bait: “Go to site A, pick this bait, fish for forty minutes. Go to site B, pick bait, fish. Go to site C, pick bait, fish. Teleport to apartment. Walk. Target nearest NPC. Press confirm button. Press confirm button. Wait one minute real-time to allow loadscreen to finish. Walk. Use NPC repair. Change job to CUL. Use NPC repair. Select desynth preset. Desynth. Use NPC repair. Finish.”

    If I need any kind of decision, including just deciding when to break the loop instead of going for N iterations, I can’t use a scenario as it is now. As powerful as they are, there’s no flow control, and that cripples a lot of possibilities. Unfortunately, I expect that implementing flow control, especially if it includes arbitrary conditions instead of a prebuilt set of functions (for instance, skipIfCantCraft() maybe), is a really big task. Especially with arbitrary conditions, that’d basically be making a custom programming language, and I remember that you didn’t want to do that because it would be less accessible to non-coders trying to use it.

    What I’m getting at, I suppose, is that scenarios are powerful and absolutely do solve a lot of custom situations. But they don’t, and possibly can’t, solve all of them, at least not without the devs putting in a whole lot of work to make them a lot more complicated… which would also then make them harder for a lot of people to use.

    #23632

    Kim_Lee
    Participant
    0

    I’m not sure what you mean by flow control and I’m not sure what you are crafting but you need a goal in mind when using scenarios. This is an old one I don’t use anymore but I’ll show you how I did it. Each time I put \\\\\ represents a new chapter. I don’t want to attach the scenario because it is old and probably faulty.
    //Mythrite Ore

    teleport(Falcon’s Nest)
    job(MIN)
    gatherPreset(Mythrite Ore)
    gather(40)
    waypoint(19)
    \\\\\
    //Mythrite Sand

    teleportIf(Falcon’s Nest)
    job(MIN)
    gatherPreset(Mythrite Sand)
    gather(40)
    \\\\\
    etc. I have it collect everything I need for the craft including crystals.
    //Barracks for crafting

    teleport(New Gridania)
    Grid(Adder Squadron)
    Waypoint(2)
    Angle(0.50)
    vAngle(-1.48)
    teleportNpc()
    \\\\\
    //Pre-Requisite Crafting
    solverPreset(Basic Solver)
    nqhq(balanced)

    job(BSM)
    recipe(Dwarven Mythril Ingot)
    craft(60)

    job(GSM)
    recipe(Dwarven Mythril Nugget)
    craft(30)

    job(CRP)
    recipe(Lignum Vitae Lumber)
    craft(30)

    //Crafting List
    solverPreset(Basic Solver)
    nqhq(balanced)

    job(BSM)
    recipe(Rarefied Mythril Hatchet)
    craft(30)
    \\\\\
    //repair

    job(MIN)
    repair()
    job(BTN)
    repair()
    job(GSM)
    repair()
    job(CRP)
    repair()
    job(BSM)
    repair()
    \\\\\
    repeatAll(30)

    I’m sure if you look through the ? symbol next to Start Next at the top of scenario you could optimize something far better than I have to do close to exactly what you want. The only issue is you need to do some basic math to know how many crafts you can do and such so you can repair gear at the end and repeat the loop as many times as you want.

    #23634
    Miqobot
    Miqobot
    Keymaster
    0

    When crafting stops – for any reason – the craft() and repairNpc() functions (as I understand the documentation) will not abort the scenario, so once all materials are consumed the scenario will endlessly attempt to repair my zero damaged items.

    The function craft() detects the moment when no materials left and skips the synthesis.
    The function repairNpc() takes a few seconds to verify that repair is not required. So Miqobot would spend 15-20 extra seconds to repeat this process 5 times.

    Related to that, would there be any notification to me when that happens?

    Not at the moment, but this is a known bug. There should be. We are planning to address this issue soon.

    If I were to use a scenario like this, as best I can tell I would need to change the crafting recipe manually when it’s done, since there’s no way to say “once this cannot be crafted, move on to this”.

    The function recipe() allows switching to another crafting recipe when necessary.

    But that works because I have a predetermined fixed-size list of steps to follow without needing to make any decisions

    A scenario does not have to be a script set in stone.
    We designed Scenario Engine with simplicity being a priority in order to allow easy modification. For simple tasks like crafting and repairing, modifying a scenario takes only a few seconds. You can calculate the number of iterations you need today and put this value in repeatChapter().

    What I’m getting at, I suppose, is that scenarios are powerful and absolutely do solve a lot of custom situations. But they don’t, and possibly can’t, solve all of them, at least not without the devs putting in a whole lot of work to make them a lot more complicated… which would also then make them harder for a lot of people to use.

    Yes, you are correct.
    Scenarios can not solve all possible situations. But neither can UI settings.
    Implementing your suggestions would require the same amount of work as implementing new scenario functions. Scenario functions, however, do not impose additional overhead in the UI layout. Hence our interest in the reasons you wish to avoid scenarios.

    #23635
    Miqobot
    Miqobot
    Keymaster
    0

    In any case, we appreciate your feedback and we will consider implementing your requests.
    Thank you very much.

    #23636
    Vixen
    Vixen
    Participant
    0

    Flow control is the term for manipulating the “flow” of program execution. Technically, the repeat family of scenario functions are a form of flow control – you’re redirecting the flow from “move to next line” to instead be “move to specific point” – but they’re one of the most basic forms of it, and they don’t offer any sort of inline decision making. For instance, being able to say “if I can craft the currently selected recipe, follow this path; otherwise, follow this path instead” is a form of flow control. Even if the “path” in question is just executing a specific chapter or halting the repeated execution of the current one, that would allow arbitrary-size instruction lists.

    The difference is that you have a fixed-size set of actions to take. “Go here, gather for this many repetitions. Move here, gather for this many repetitions.” That’s all what programmers call hardcoded; it’s specified directly in the set of actions to take and can only be changed there. An alternative (if you wrote your own bot to do it) could be something like “if I have less than X of this item, then: go here, gather on repeat, stop gathering once I have at least X; once I have at least X (regardless of whether I had to gather or not), check how many I have of this other item; if I have less than Y of that one…” and the checks for “if I have…” and “stop when I have…” would be flow control.

    In my specific case, I manually acquired these resources, so I can’t make any guarantee about how many I have. Even if I didn’t, some nodes offer +1 to gather quantity with high enough stats. Your scenario works to craft a particular item, but I’m looking for “whatever recipe I have selected in the game, craft it until I can no longer craft it for whatever reason; every X crafts, stop and use the NPC mender to repair, then continue crafting as before; once I can no longer craft it, return both the game and Miqobot to idling and preferably alert me”. There’s no way to do that with scenarios as they are now, and making it possible would be a big task and would also complicate them a lot.

    In a form of pseudocode, what I’m looking for is:

    while (able_to_craft_current_recipe):
    	try_to_craft(200)
    	repair_at_npc()
    
    tell_user_crafting_is_done()

    But all that’s available is:

    until_user_manually_stops_scenario:
    	try_to_craft(200)
    	repair_at_npc()

    That second one will repeat forever, because there’s no conditional flow control – no way to break the loop whenever it finishes as opposed to after a specific number of repetitions. That’s what I mean by “arbitrary-size” instruction list. I don’t know how many repetitions will be needed unless I modify the scenario for every single different craft I have to do.

    For arbitrary inputs to be handled, there must exist a way to execute an arbitrary number of instructions. That is to say, in order to handle anything beyond a particular, static, unchanging situation, you need to be able to determine what to do “at runtime”, while the scenario is executing, not just “at compiletime”, before you hit start. There’s no way for a scenario to adapt to the circumstances I need, so scenarios can’t do what I’m trying to.

    • This reply was modified 4 years, 2 months ago by Vixen Vixen. Reason: Trying to improve the formatting
    #23638

    Kim_Lee
    Participant
    0

    I use scenarios to craft for white and yellow scripts. Yes I have a scenario for each of the different turn ins. Once you create one scenario a few tweaks and you’re set to change what you want the craft to be. Like I said you need a goal. Idk why you want it to craft random item until gear breaks instead of specific item x number of times repair gear repeat cycle x times. What exactly are you trying to do?

    #23639
    Vixen
    Vixen
    Participant
    0

    First, I’m not crafting until gear breaks. I’m crafting until I can’t craft more, as in I’ve run out of materials. That’s why I posted this, if I wanted to just craft until gear breaks I wouldn’t be bothering with interrupts to repair.

    As for what I’m doing, I’m picking a crafting recipes I have lots of materials for (ores to ingots, skins to various leathers, etc) and having Miqobot automote a few hundred or so rounds of actually crafting it. I sit in my private apartment next to the repair NPC, craft in the background while I watch TV or read or something, and occasionally break the crafts to repair my gear. What this topic was about was a way to do that without having to manually stop Miqo between crafts, repair my gear, and restart. If I could do that, I’d be able to literally gather or buy thousands of materials and leave crafting going without paying any attention to it, rather than interfering every hour or so.

    My complaint with the suggested scenario approach isn’t that I have to manually pick the craft, it’s that I’d have to edit the scenario to change how many crafting repetitions are performed. There’s no way to have Miqo notice when the crafting can’t be continued and abort the scenario, preferably with a messagebox popup to alert me. She’d end up sitting there opening the crafting log, going “can’t craft!”, closing it, opening the repair NPC, going “nothing to repair!”, closing it, and then repeating. I’d rather not drop her into a thrash loop like that.

    My goal is to be able to have Miqo craft a particular recipe I manually select, repair my gear at the NPC as needed (either when it gets too damaged or every N cycles), and automatically stop and return to idle when no more crafting can be done. The crafting tab can’t do the second part of repairing at the NPC. A scenario can’t do the third (arguably more important to me) part of going to idle when the job is done.

    Maybe it’ll help if I lay out the exact list of steps I’m looking for:

    1. Check whether the player is able to craft the currently selected recipe.
    2. If they can, skip this step. Otherwise, show a popup alert and stop, as in return to idle.
    3. Craft one of whatever recipe is selected.
    4. Check if gear needs to be repaired, by threshold once implemented and by repetition count until then.
    5. If gear does not need to be repaired, skip this step. Otherwise, open the nearest repair NPC and do so.
    6. Repeat from step one.

    The problem is that of the two available crafting automation methods, neither can actually do this. The crafting tab can’t handle step 5 (repairing gear at an NPC instead of using the repair ability) and scenarios can’t handle step 2 (stop and return to idle if the recipe can’t be crafted).

    • This reply was modified 4 years, 2 months ago by Vixen Vixen. Reason: Fix formatting
    #23641
    Lyfox
    Lyfox
    Participant
    0

    I almost never have any fragments of dark matter on me

    Im sorry for being dumb but ummm why? A single 999 stack of dark matter lasts a year or so. And it repairs past 100%.

    #23642
    Vixen
    Vixen
    Participant
    0

    I didn’t want to have to deal with the different types and the cost of buying them only to not need them. What do you mean it repairs past 100%? I’ve never even heard of that before.

    #23643
    Lyfox
    Lyfox
    Participant
    1+

    For example your gear condition is at 95%. When you repair it with dark matter it becomes 195%. It means that when you continue crafting it stays fully repaired for quite some time. You wont see a green line on your equipment for a long while, its always blue until it drops below 100% again.

    #23652
    Nekro
    Nekro
    Participant
    0

    didn’t want to have to deal with the different types and the cost of buying them only to not need them.

    You can just buy the last one, you can use the level 7 for everything.

    My goal is to be able to have Miqo craft a particular recipe I manually select, repair my gear at the NPC as needed (either when it gets too damaged or every N cycles), and automatically stop and return to idle when no more crafting can be done. The crafting tab can’t do the second part of repairing at the NPC. A scenario can’t do the third (arguably more important to me) part of going to idle when the job is done.

    Most pressingly, there is no exit condition. When crafting stops – for any reason – the craft() and repairNpc() functions (as I understand the documentation) will not abort the scenario, so once all materials are consumed the scenario will endlessly attempt to repair my zero damaged items.

    I don’t really understand what the problem is here. While I agree that more conditions would be nice in Scenarios (I also made a thread with this suggestion in it), your particular problem seems to be already solvable or not being a problem in a way.
    You don’t repeat endlessly to repair your gear. It just repeats for the number of times you say it should repeating. So on your scale of about thousands of items, why are those 1-5min of additional repeating so bad?
    If you plan on crafting a lot of items, you currently can adjust the numbers in your scenario and let it run. Even if they are not precise and your scenario repeats itself 3 times more than expected (600 more items), it would just repeat for about 1-2min and is finished anyway.
    Currently, if you want to make an “one-for-all” scenario, you either need to adjust something in it to match your goal or let miqo derping around for some time.

    I think an option for a popup, when a scenario finishes, would be nice though.

    #23705

    Krude
    Participant
    1+

    Yeah you only need one type of dark matter: The latest one. Grade 7, which is technically still Stormblood tier. They just silently upgraded that tier to also include all newer Shadowbringers items, so i guess they gave up on inflating tiers for that. I’m guessing relatively soon, all the dark matter variants will go the way of the glamor prism.

    (Did you know back in ARR, every crafter had their own specialized class glamour prism, and 5 different tiers, too? 40 different glamour prisms to keep track of. They eventually just ditched that idea and consolidated it into 1 item.)

    So anyways, just buy a stack of grade 7 matter, it’s relatively cheap in the grand scale of things, especially if you’re a crafter and can make easy money anyways.
    And yes, The repair system works such that when you repair an item with Dark Matter, you ALWAYS add 100% condition to it, so repairing an item at 99% will make it wind up with 199% durability, and make it last almost twice as long.

    You can’t “waste” durability when repairing manually. It’s a very convenient system.

Viewing 15 posts - 1 through 15 (of 17 total)

You must be logged in to reply to this topic.