159 lines
4.2 KiB
JavaScript
159 lines
4.2 KiB
JavaScript
// =========================>
|
|
// config
|
|
// =========================>
|
|
var send_target = "AnimaLucri"
|
|
var upgrade_level = 6
|
|
var upgrade_chance = 0.4
|
|
var compound_level = 3
|
|
var compound_chance = 0.4
|
|
|
|
// =========================>
|
|
// loop config
|
|
// =========================>
|
|
load_code("utils_default")
|
|
const craftLoop = new ToggleLoop({
|
|
id: "UpgradeLoop",
|
|
label: "AutoUpgrade",
|
|
fn: auto_upgrade,
|
|
interval: 30000,
|
|
});
|
|
|
|
// =========================>
|
|
// buttons
|
|
// =========================>
|
|
// add_top_button("autocraft", "AutoCraft", main);
|
|
add_top_button("itemsendall", "Send Items", send_all_items_to);
|
|
|
|
|
|
// =========================>
|
|
// functions
|
|
// =========================>
|
|
load_code("npc")
|
|
|
|
async function auto_upgrade() {
|
|
target = find_npc_by_name("Cue")
|
|
diff = 500
|
|
if (
|
|
( character.x + diff > target.x ) && ( character.x - diff < target.x )
|
|
&& ( character.y + diff > target.y ) && ( character.y - diff < target.y )
|
|
) {
|
|
var level_items = count_level_items()
|
|
for (let item in level_items) {
|
|
await do_upgrade(item, upgrade_level, upgrade_chance)
|
|
await do_combine(item, compound_level, compound_chance)
|
|
}
|
|
} else {
|
|
await smart_move(target)
|
|
}
|
|
}
|
|
|
|
async function send_all_items_to() {
|
|
for ( let i = 0; i < 42; i++ ) {
|
|
if (character.items[i]) {
|
|
if (
|
|
G.items[ character.items[i].name ].upgrade
|
|
|| G.items[ character.items[i].name ].compound
|
|
) {
|
|
send_item(send_target, i)
|
|
}
|
|
}
|
|
}
|
|
send_gold(send_target, 100000000)
|
|
}
|
|
|
|
function count_level_items() {
|
|
// count all items in inventory they have a level
|
|
let inventar = {}
|
|
for (let item of character.items) {
|
|
if ( item == null ) { continue; }
|
|
if (! ("level" in item) ) { continue; }
|
|
if ( item.name in inventar ) {
|
|
inventar[item.name]++
|
|
} else {
|
|
inventar[item.name] = 1
|
|
}
|
|
}
|
|
if ( debug ) console.log ( "count_level_items(): ", inventar )
|
|
return inventar
|
|
}
|
|
|
|
function locate_all_item(name) {
|
|
let slots = {}
|
|
for (var i = 0; i < character.items.length; i++) {
|
|
if (character.items[i] && character.items[i].name == name) {
|
|
slots[i] = character.items[i]
|
|
};
|
|
}
|
|
if ( debug ) console.log ( "locate_all_item(): ", slots )
|
|
return slots
|
|
}
|
|
|
|
function locate_all_item_by_level(name, level) {
|
|
let slots = {}
|
|
for (var i = 0; i < character.items.length; i++) {
|
|
if ( character.items[i] == null ) { continue; }
|
|
if ( ! ("level" in character.items[i]) ) { continue; }
|
|
if (
|
|
( character.items[i] && character.items[i].name == name )
|
|
&& ( character.items[i].level == level)
|
|
) {
|
|
slots[i] = character.items[i]
|
|
};
|
|
}
|
|
if ( debug ) console.log ( "locate_all_item_by_level(): ", slots )
|
|
return slots
|
|
}
|
|
|
|
async function do_upgrade(item, level = 5, min_change = 0.5) {
|
|
if ( ! G.items[item].upgrade ) { return; }
|
|
for (let lv = 0; lv < level; lv++) {
|
|
var slots = locate_all_item_by_level(item, lv)
|
|
for ( let index in slots ) {
|
|
var upgrade_scroll = "scroll0"
|
|
if ( lv >= 5 ) {
|
|
upgrade_scroll = "scroll1"
|
|
}
|
|
|
|
if ( locate_item(upgrade_scroll) == -1 ) {
|
|
await buy(upgrade_scroll)
|
|
}
|
|
var preview = await upgrade( index, locate_item(upgrade_scroll), null, true )
|
|
if ( preview.chance >= min_change ) {
|
|
await upgrade( index, locate_item(upgrade_scroll)).then(function(data){
|
|
if(data.success) game_log("I have a +"+data.level+" "+item+" now!");
|
|
else game_log("Rip " + item);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
async function do_combine(item, level = 5, min_change = 0.5) {
|
|
if ( ! G.items[item].compound ) { return; }
|
|
for (let lv = 0; lv < level; lv++) {
|
|
var slots = locate_all_item_by_level(item, lv)
|
|
const keys = Object.keys(slots).map(Number);
|
|
if ( keys.length <= 3 ) { continue; }
|
|
for ( let i = 0; i + 2 < keys.length; i += 3) {
|
|
var upgrade_scroll = "cscroll0"
|
|
if ( lv >= 5 ) {
|
|
upgrade_scroll = "cscroll1"
|
|
}
|
|
|
|
if ( locate_item(upgrade_scroll) == -1 ) {
|
|
await buy(upgrade_scroll)
|
|
}
|
|
var preview = await compound( keys[i], keys[i+1], keys[i+2], locate_item(upgrade_scroll), null, true )
|
|
if ( preview.chance >= min_change ) {
|
|
await compound(
|
|
keys[i], keys[i+1], keys[i+2], locate_item(upgrade_scroll)
|
|
).then(function(data){
|
|
if(data.success) game_log("I have a +"+data.level+" "+item+" now!");
|
|
else game_log("Rip " + item);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|