From 73c796b5ad972ef45a8effa7bb3677fb6a6e7d11 Mon Sep 17 00:00:00 2001 From: anima Date: Thu, 12 Nov 2026 20:18:08 +0100 Subject: [PATCH] init code --- js/03.mage.js | 4 ++ js/04.prist.js | 4 ++ js/05.paladin.js | 4 ++ js/06.ranger.js | 4 ++ js/07.rouge.js | 4 ++ js/08.warrior.js | 4 ++ js/09.merchant.js | 2 + js/10.general.js | 45 ++++++++++++ js/11.fight.js | 0 js/12.int-base.js | 0 js/13.dex-base.js | 0 js/14.str-base.js | 0 js/15.range.js | 0 js/16.meele.js | 0 js/21.items.js | 154 +++++++++++++++++++++++++++++++++++++++++ js/22.npc.js | 7 ++ js/91.utils_default.js | 44 ++++++++++++ 17 files changed, 276 insertions(+) create mode 100644 js/03.mage.js create mode 100644 js/04.prist.js create mode 100644 js/05.paladin.js create mode 100644 js/06.ranger.js create mode 100644 js/07.rouge.js create mode 100644 js/08.warrior.js create mode 100644 js/09.merchant.js create mode 100644 js/10.general.js create mode 100644 js/11.fight.js create mode 100644 js/12.int-base.js create mode 100644 js/13.dex-base.js create mode 100644 js/14.str-base.js create mode 100644 js/15.range.js create mode 100644 js/16.meele.js create mode 100644 js/21.items.js create mode 100644 js/22.npc.js create mode 100644 js/91.utils_default.js diff --git a/js/03.mage.js b/js/03.mage.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/03.mage.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/04.prist.js b/js/04.prist.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/04.prist.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/05.paladin.js b/js/05.paladin.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/05.paladin.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/06.ranger.js b/js/06.ranger.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/06.ranger.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/07.rouge.js b/js/07.rouge.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/07.rouge.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/08.warrior.js b/js/08.warrior.js new file mode 100644 index 0000000..b7edbf9 --- /dev/null +++ b/js/08.warrior.js @@ -0,0 +1,4 @@ +load_code('general') +load_code('fight') +load_code('int-base') +load_code('range') \ No newline at end of file diff --git a/js/09.merchant.js b/js/09.merchant.js new file mode 100644 index 0000000..05ee7bf --- /dev/null +++ b/js/09.merchant.js @@ -0,0 +1,2 @@ +load_code('general') +load_code('items') \ No newline at end of file diff --git a/js/10.general.js b/js/10.general.js new file mode 100644 index 0000000..2a05285 --- /dev/null +++ b/js/10.general.js @@ -0,0 +1,45 @@ +// =========================> +// Default Loop Configs +// =========================> +load_code("utils_default") + +const attackLoop = new ToggleLoop({ + id: "AttkLoop", + label: "AutoAttk", + fn: auto_attck, + top: false, + interval: 1000 / 4, +}); + + +// =========================> +// functions +// =========================> +async function auto_attck () { + use_hp_or_mp(); + loot(); + + if( character.rip || is_moving(character) ) return; + + var target=get_targeted_monster(); + if(!target) { + target=get_nearest_monster({min_xp:100,max_att:120}); + if(target) change_target(target); + else { + set_message("No Monsters"); + return; + } + } + + if(!is_in_range(target)) { + move( + character.x+(target.x-character.x)/2, + character.y+(target.y-character.y)/2 + ); + // Walk half the distance + } + else if(can_attack(target)) { + set_message("Attacking"); + attack(target); + } +} \ No newline at end of file diff --git a/js/11.fight.js b/js/11.fight.js new file mode 100644 index 0000000..e69de29 diff --git a/js/12.int-base.js b/js/12.int-base.js new file mode 100644 index 0000000..e69de29 diff --git a/js/13.dex-base.js b/js/13.dex-base.js new file mode 100644 index 0000000..e69de29 diff --git a/js/14.str-base.js b/js/14.str-base.js new file mode 100644 index 0000000..e69de29 diff --git a/js/15.range.js b/js/15.range.js new file mode 100644 index 0000000..e69de29 diff --git a/js/16.meele.js b/js/16.meele.js new file mode 100644 index 0000000..e69de29 diff --git a/js/21.items.js b/js/21.items.js new file mode 100644 index 0000000..14312d9 --- /dev/null +++ b/js/21.items.js @@ -0,0 +1,154 @@ +// =========================> +// config +// =========================> +var send_target = "AnimaLucri" + +// =========================> +// 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, 6, 0.4) + await do_combine(item, 3, 0.4) + } + } 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); + }); + } + } + } +} + diff --git a/js/22.npc.js b/js/22.npc.js new file mode 100644 index 0000000..4d5e2b4 --- /dev/null +++ b/js/22.npc.js @@ -0,0 +1,7 @@ +function find_npc_by_name(npc) { + for (const [key, value] of Object.entries( G.npcs )) { + if ( value.name == npc) { + return find_npc(key) + } + } +} \ No newline at end of file diff --git a/js/91.utils_default.js b/js/91.utils_default.js new file mode 100644 index 0000000..bc7584d --- /dev/null +++ b/js/91.utils_default.js @@ -0,0 +1,44 @@ +class ToggleLoop { + constructor({ id, label, fn, interval, top=true, onColor = "#00AA00", offColor = "#AA0000" }) { + this.id = id; + this.label = label; + this.fn = fn; + this.interval = interval; + this.onColor = onColor; + this.offColor = offColor; + this.loopId = null; + + this.render(); + var btn_fn = add_bottom_button + if ( top ) { btn_fn = add_top_button } + btn_fn(this.id, `${this.label}: AUS`, () => this.toggle()); + } + + get running() { + return this.loopId !== null; + } + + start() { + if (this.running) return; + this.loopId = setInterval(this.fn, this.interval); + this.render(); + } + + stop() { + if (!this.running) return; + clearInterval(this.loopId); + this.loopId = null; + this.render(); + } + + toggle() { + this.running ? this.stop() : this.start(); + } + + render() { + try { + set_button_value(this.id, `${this.label}: ${this.running ? "AN" : "AUS"}`); + set_button_color(this.id, this.running ? this.onColor : this.offColor); + } catch (e) {} + } +} \ No newline at end of file