diff options
Diffstat (limited to 'stone_soup/crawl-ref/source/lua/kills.lua')
-rw-r--r-- | stone_soup/crawl-ref/source/lua/kills.lua | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/stone_soup/crawl-ref/source/lua/kills.lua b/stone_soup/crawl-ref/source/lua/kills.lua deleted file mode 100644 index b84b1f93c0..0000000000 --- a/stone_soup/crawl-ref/source/lua/kills.lua +++ /dev/null @@ -1,240 +0,0 @@ ------------------------------------------------------------------- --- kills.lua: --- Generates fancier vanquished creatures lists. --- --- List ideas courtesy Jukka Kuusisto and Erik Piper. --- --- To use this, add this line to your init.txt: --- lua_file = lua/kills.lua --- --- Take a look at the c_kill_list function - that's where to start if you --- want to customize things. ------------------------------------------------------------------- - -function kill_filter(a, condition) - local t = { } - for i, k in ipairs(a) do - if condition(k) then - table.insert(t, k) - end - end - return t -end - -function show_sorted_list(list, baseindent, sortfn) - baseindent = baseindent or " " - sortfn = sortfn or - function (x, y) - return kills.exp(x) > kills.exp(y) or - (kills.exp(x) == kills.exp(y) and - kills.base_name(x) < kills.base_name(y)) - end - table.sort(list, sortfn) - for i, k in ipairs(list) do - kills.rawwrite(baseindent .. " " .. kills.desc(k)) - end - kills.rawwrite(baseindent .. kills.summary(list)) -end - -function group_kills(a, namemap, keys, selector) - local count = 0 - for i, key in ipairs(keys) do - local selected = kill_filter(a, - function (k) - return selector(key, k) - end - ) - if table.getn(selected) > 0 then - if count > 0 then - kills.rawwrite("") - end - count = count + 1 - kills.rawwrite(" " .. namemap[key]) - show_sorted_list(selected) - end - end -end - -function holiness_list(a) - local holies = { - strange = "Strange Monsters", - unique = "Uniques", - holy = "Holy Monsters", - natural = "Natural Monsters", - undead = "Undead Monsters", - demonic = "Demonic Monsters", - nonliving = "Non-Living Monsters", - plant = "Plants", - } - local holysort = { "strange", "unique", - "natural", "nonliving", - "undead", "demonic", "plant" } - kills.rawwrite(" Monster Nature") - group_kills( a, holies, holysort, - function ( key, kill ) - return (kills.holiness(kill) == key and not kills.isunique(kill)) - or - (key == "unique" and kills.isunique(kill)) - end - ) - kills.rawwrite(" " .. kills.summary(a)) -end - -function count_list(a, ascending) - kills.rawwrite(" Ascending Order") - show_sorted_list(a, - " ", - function (x, y) - if ascending then - return kills.nkills(x) < kills.nkills(y) - or (kills.nkills(x) == kills.nkills(y) and - kills.exp(x) > kills.exp(y)) - else - return kills.nkill(x) > kills.nkills(y) - or (kills.nkills(x) == kills.nkills(y) and - kills.exp(x) > kills.exp(y)) - end - end - ) -end - -function symbol_list(a) - -- Create a list of monster characters and sort it - local allsyms = { } - for i, k in ipairs(a) do - local ksym = kills.symbol(k) - allsyms[ kills.symbol(k) ] = true - end - - local sortedsyms = { } - for sym, dud in pairs(allsyms) do table.insert(sortedsyms, sym) end - table.sort(sortedsyms) - - kills.rawwrite(" Monster Symbol") - for i, sym in ipairs(sortedsyms) do - if i > 1 then - kills.rawwrite("") - end - - local symlist = kill_filter(a, - function (k) - return kills.symbol(k) == sym - end - ) - kills.rawwrite(" All '" .. sym .. "'") - show_sorted_list(symlist) - end - - kills.rawwrite(" " .. kills.summary(a)) -end - -function classic_list(title, a, suffix) - if table.getn(a) == 0 then return end - kills.rawwrite(title) - for i, k in ipairs(a) do - kills.rawwrite(" " .. kills.desc(k)) - end - kills.rawwrite(" " .. kills.summary(a)) - if suffix then - kills.rawwrite(suffix) - end -end - -function separator() - kills.rawwrite("----------------------------------------\n") -end - -function newline() - kills.rawwrite("") -end - ------------------------------------------------------------------------------ --- This is the function that Crawl calls when it wants to dump the kill list --- The parameter "a" is the list (Lua table) of kills, initially sorted in --- descending order of experience. Kill entries must be inspected using --- kills.foo(ke). --- --- NOTE: Comment out the kill lists that you don't like! --- --- As of 20060224, the kill list is divided into three: --- * Direct player kills --- * Monsters killed by friendlies --- * Monsters killed by other things (traps, etc.) --- --- For each category, the game calls c_kill_list, with a table of killed --- monsters, and the killer (who). The killer will be nil for direct player --- kills, and a string ("collateral kills", "others") otherwise. --- --- c_kill_list will not be called for a category if the category contains no --- kills. --- --- After all categories, c_kill_list will be called with no arguments to --- indicate the end of the kill listing. - -function c_kill_list(a, who, needsep) - -- If there aren't any kills yet, bail out - if not a or table.getn(a) == 0 then - if not a and who and who ~= "" then - -- This is the grand total - separator() - kills.rawwrite(who) - end - return - end - - if needsep then - separator() - end - - local title = "Vanquished Creatures" - if who then - title = title .. " (" .. who .. ")" - end - - kills.rawwrite(title) - - -- Group kills by monster symbol - symbol_list(a) - newline() - - -- Group by holiness - holiness_list(a) - newline() - - -- Sort by kill count (ascending). - count_list(a, true) - newline() - - -- Classic list without zombies and skeletons - -- Commented-out - this is a boring list. - --[[ - -- First re-sort into descending order of exp, since - -- count_list has re-sorted the array. - table.sort(a, function (x, y) - return kills.exp(x) > kills.exp(y) - end); - - -- Filter out zombies and skeletons and display the rest - classic_list( - " Kills minus zombies and skeletons", - kill_filter(a, - function (k) - return kills.modifier(k) ~= "zombie" and - kills.modifier(k) ~= "skeleton" - end - )) - - separator() - --]] - - -- Show only monsters with 3 digit kill count - classic_list( - " The 3-digit Club", - kill_filter(a, - function (k) - return kills.nkills(k) > 99 - end - ), - "") - -end |