diff options
Diffstat (limited to 'stone_soup/crawl-ref/source/lua/gearset.lua')
-rw-r--r-- | stone_soup/crawl-ref/source/lua/gearset.lua | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/stone_soup/crawl-ref/source/lua/gearset.lua b/stone_soup/crawl-ref/source/lua/gearset.lua deleted file mode 100644 index 494ebd65ff..0000000000 --- a/stone_soup/crawl-ref/source/lua/gearset.lua +++ /dev/null @@ -1,206 +0,0 @@ ------------------------------------------------------------------------- --- gearset.lua: (requires base.lua) --- Allows for quick switching between two sets of equipment. --- --- IMPORTANT --- This Lua script remembers only the *inventory slots* of the gear you're --- wearing (it could remember item names, but they're prone to change based on --- identification, enchantment and curse status). If you swap around items in --- your inventory, the script may attempt to wear odd items (this will not kill --- the game, but it can be disconcerting if you're not expecting it). --- --- To use this, source this file in your init.txt: --- lua_file = lua/gearset.lua --- --- Then start Crawl and create two macros: --- 1. Any macro input key (say F2), set macro action to "===rememberkit" --- 2. Any macro input key (say F3), set macro action to "===swapkit" --- It helps to save your macros at this point. :-) --- --- You can now hit F2 to remember the equipment you're wearing. Once you've --- defined two sets of equipment, hit F3 to swap between them. --- --- You can also just define one set of equipment; in this case, every time --- you hit F3 (swapkit), the macro makes sure you're wearing all the items in --- that set (and only the items in that set). This is handy for transmuters who --- need to kit up after a transform ends. ------------------------------------------------------------------------- -function scan_kit() - local kit = { } - for i = 9, 0, -1 do - local it = item.equipped_at(i) - if it then - table.insert(kit, item.slot(it)) - end - end - return kit -end - -function kit_items(kit) - local items = { } - local inv = item.inventory() - - for _, slot in ipairs(kit) do - for _, it in ipairs(inv) do - if slot == item.slot(it) then - table.insert(items, it) - end - end - end - return items -end - -function getkey(vkeys) - local key - - while true do - key = crawl.getch() - if key == 27 then return "escape" end - - if key > 31 and key < 127 then - local c = string.lower(string.char(key)) - if string.find(vkeys, c) then - return c - end - end - end -end - --- Macroable -function rememberkit() - local kit = scan_kit() - crawl.mpr("Is this (T)ravel or (B)attle kit? ", "prompt") - local answer = getkey("tb") - crawl.mesclr() - if answer == "escape" then - return false - end - - if answer == 't' then - g_kit_travel = kit - else - g_kit_battle = kit - end - - return false -end - -function write_array(f, arr, aname) - file.write(f, aname .. " = { ") - for i, v in ipairs(arr) do - file.write(f, v .. ", ") - end - file.write(f, "}\n") -end - -function gearset_save(file) - if g_kit_travel then - write_array(file, g_kit_travel, "g_kit_travel") - end - if g_kit_battle then - write_array(file, g_kit_battle, "g_kit_battle") - end -end - -function matchkit(kit1, kit2) - local matches = 0 - if not kit2 then - -- Return a positive match for an empty gearset so that swapkit - -- switches to the *other* gearset. :-) - return 500 - end - for _, v1 in ipairs(kit1) do - for _, v2 in ipairs(kit2) do - if v1 == v2 then - matches = matches + 1 - end - end - end - return matches -end - -function wear(it) - local _, eqt = item.equip_type(it) - if eqt == "Weapon" then - return item.wield(it) - elseif eqt == "Amulet" or eqt == "Ring" then - return item.puton(it) - elseif eqt ~= "" then - return item.wear(it) - else - return false - end -end - -function wearkit(kit) - -- Remove all items not in the kit, then wear all items in the kit - local currkit = scan_kit() - local toremove = { } - local noop = true - - for _, v in ipairs(currkit) do - local found = false - for _, v1 in ipairs(kit) do - if v == v1 then - found = true - break - end - end - if not found then - table.insert(toremove, v) - end - end - - local remitems = kit_items(toremove) - for _, it in ipairs(remitems) do - noop = false - if not item.remove(it) then - coroutine.yield(false) - end - coroutine.yield(true) - end - - local kitems = kit_items(kit) - - for _, it in ipairs(kitems) do - if not item.worn(it) then - noop = false - if not wear(it) then - coroutine.yield(false) - end - coroutine.yield(true) - end - end - - if noop then - crawl.mpr("Nothing to do.") - end -end - --- Macroable -function swapkit() - if not g_kit_battle and not g_kit_travel then - crawl.mpr("You need to define a gear set first") - return false - end - - local kit = scan_kit() - if matchkit(kit, g_kit_travel) < matchkit(kit, g_kit_battle) then - crawl.mpr("Switching to travel kit") - wearkit(g_kit_travel) - else - crawl.mpr("Switching to battle kit") - wearkit(g_kit_battle) - end -end - -function swapkit_interrupt_macro(interrupt_name) - return interrupt_name == "hp_loss" or interrupt_name == "stat" or - interrupt_name == "monster" or interrupt_name == "force" -end - --- Add a macro interrupt hook so that we don't get stopped by any old interrupt -chk_interrupt_macro.swapkit = swapkit_interrupt_macro - --- Add ourselves in the Lua save chain -table.insert(chk_lua_save, gearset_save) |