Some have said that upgrading from +7 is safe; this is false. You can run out of ores. You can run out of zeny. Your power might go out. Maybe the server crashes. You can be disconnected, whether by acts of God or acts of some exploiter who doesn't like you.Yes the intention was to only require a 1 time "chance" at breaking getting to +7. Then if you are dedicated and lucky you can get your desired upgrade level without break risk.
Suppose you discount all of the "accident" scenarios and concentrate only on not running out of ores. If you have 50 ores at +7, you have a 2.9% chance of failing and not making it back to +7 before running out. If you have 100 ores, you have a 0.17% chance of failing and not making it back to +7 before running out. That's a lot of money to spend on something you might not need again, just to lower the failure chance to several times the card drop rate. How much is enough?
Ideally, each item would be tagged upon reaching +7, and Mighty Hammer would always upgrade tagged items regardless of their upgrade level. The server doesn't allow this, though. Here's another idea that, while not perfect, achieves the "intention" of a 1-time break chance and should actually be implementable with the current software.
1. Every time Mighty Hammer upgrades an item, if it ends up below +7, save the item id, cards, and level in character-specific variables.
2. When you're choosing an item to upgrade, Mighty Hammer accepts it if it is at least +7 -or- it matches the saved item (id and cards) and has an equal or higher refine level.
That's it. This limits each character to working with one "oops, +7->+6" item at a time, but you no longer have to worry about disconnecting or running out. To show that this is not a difficult concept, I even went and wrote some pseudocode for it:
After every upgrade
insert:
if (level < 7) { // allow user to upgrade the same item after a dialogue // restart even if it's below +7 saved_item = item; saved_cards = cards; saved_level = level; } else { // don't save anything saved_item = 0; saved_cards = [0, 0, 0, 0]; saved_level = 0; }
Beginning of dialogue
insert:
if (saved_item) { // remind user that they can continue upgrading // previous <+7 item say "blah blah..."; }
After choosing an item
replace:
if (level < 7) { say "i need the item to be +7 or higher"; exit; }
with:
var is_saved = (saved_item == item && saved_cards[0] == cards[0] && saved_cards[1] == cards[1] && saved_cards[2] == cards[2] && saved_cards[3] == cards[3] && saved_refine <= refine); if (level < 7 && !is_saved) { say "i need the item to be +7 or higher"; exit; } if (saved_item && (!is_saved || level >= 7)) { // warn that this will reset saved item say "if you proceed, you won't be able to use HD ores with your ..."; // give choice to continue or cancel }