From Dark and Darker Wiki

No edit summary
Tag: Reverted
m (old create_loot_table() removed)
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local utils = require("Module:Utilities")
local p = {}
local p = {}
local monsters_data = mw.loadJsonData("Data:Monster.json")
local monster_localized_names = monsters_data["monster_localized_names"] --nickname
local monster_ids = monsters_data["monster_ids"] --nickname
local monster_grades = {"Common", "Elite", "Nightmare"} --array used just for ordering them


function p.create_loot_table(frame)
function p.load_data_id_page(id)
local droprate_filename = "Data:Droprate Monsters Bosses.json"
local data_page_name = "Data:" .. id .. ".json"
local lootdrop_filename = "Data:Lootdrop GhostKing.json"
return mw.loadJsonData(data_page_name)
end


local lootdrop_data = mw.loadJsonData(lootdrop_filename)
function p.create_monster_loot_tables(frame)
if lootdrop_data == nil then return "Lootdrop data file '" .. lootdrop_filename .. "' could not be found." end
local monster_localized_name = frame.args[1] -- Ghost King
local lootdrop_item_counts = lootdrop_data["luckgrade"]
local my_monster_ids = monster_localized_names[monster_localized_name] -- {Common: id of Common monster, }
if my_monster_ids == nil then return "Monster '" .. monster_localized_name .. "' was not found in monsters_data." end
local outputted_string = ""
for i, monster_grade_key in ipairs(monster_grades) do --mgk of --Elite
-- Get the monster
monster_grade_id = my_monster_ids[monster_grade_key] --Id_Monster_GhostKing_Elite
if monster_grade_id ~= nil then
spawner_ids = monster_ids[monster_grade_id]["spawner_ids"]
outputted_string = outputted_string .. create_monster_grade_loot_tables(monster_grade_id, spawner_ids)
end
end
return outputted_string
end


local droprate_data = mw.loadJsonData(droprate_filename)
function create_monster_grade_loot_tables(monster_grade_id, spawner_ids)
if droprate_data == nil then return "Droprate data file '" .. droprate_filename .. "' could not be found." end
if type(monster_grade_id) == "table" and monster_grade_id.args then -- if called via wikitext instead of lua
 
        local frame = monster_grade_id
local resulting_table = '<table cellspacing="0" class="loottable stripedtable sortable jquery-tablesorter mw-collapsible" style="width:100%"><caption>Drop Rates</caption><tr><th style="width:5%">Luck grade</th><th style="width:5%">Probability</th><th style="width:5%">Probability per Item</th><th style="width:5%">Item Count</th></tr>"'
        monster_grade_id = frame.args[1] -- Id_Monster_GhostKing_Elite
 
        spawner_ids = frame.args[2] -- {"Id_Spawner_New_Monster_GhostKing": true}
for i, luckgrade in ipairs(droprate_data["4023"]["luckgrade_order"]) do
end
local probability = droprate_data["4023"]["luckgrade"][luckgrade]
if probability == nil then return "probability for '" .. luckgrade .. "' not found in droprate data for luckgrade dictionary." end
local outputted_string = ""
 
for spawner_id, b in pairs(spawner_ids) do
local item_count = lootdrop_item_counts[luckgrade]
outputted_string = outputted_string .. create_spawner_loot_tables(spawner_id)
if item_count == nil then return "item_count for '" .. luckgrade .. "' not found in lootdrop data." end
end
 
return outputted_string
local probability_per_item = probability / item_count
end


resulting_table = resulting_table .. "<tr><td class='cr"..luckgrade.."'><b>" .. luckgrade .. "</b></td><td class='cr"..luckgrade.."'><b>" .. probability .. "</b></td><td class='cr"..luckgrade.."'><b>" .. probability_per_item .. "</b></td><td class='cr"..luckgrade.."'><b>" .. item_count .. "</b></td></tr>"
function create_spawner_loot_tables(spawner_id)
if type(spawner_id) == "table" and spawner_id.args then -- if called via wikitext instead of lua
        local frame = spawner_id
        spawner_id = frame.args[1]
end
end
local spawner_data = p.load_data_id_page(spawner_id)
if spawner_data == nil then return "Spawner data page for id '" .. spawner_id "' not found." end


resulting_table = resulting_table .. '</table><br>'
 
return "cool a spawner!" .. spawner_id .. "<br>"
return resulting_table
end
end


return p
return p

Latest revision as of 23:26, 25 May 2025


Lua error in ...ribunto/includes/engines/LuaCommon/lualib/mwInit.lua at line 17: bad argument #1 to 'old_pairs' (table expected, got nil).


local utils = require("Module:Utilities")
local p = {}
local monsters_data = mw.loadJsonData("Data:Monster.json")
local monster_localized_names = monsters_data["monster_localized_names"] --nickname
local monster_ids = monsters_data["monster_ids"] --nickname
local monster_grades = {"Common", "Elite", "Nightmare"} --array used just for ordering them

function p.load_data_id_page(id)
	local data_page_name = "Data:" .. id .. ".json"
	return mw.loadJsonData(data_page_name)
end

function p.create_monster_loot_tables(frame)
	local monster_localized_name = frame.args[1] -- Ghost King
	
	local my_monster_ids = monster_localized_names[monster_localized_name] -- {Common: id of Common monster, }
	if my_monster_ids == nil then return "Monster '" .. monster_localized_name .. "' was not found in monsters_data." end
	
	local outputted_string = ""
	for i, monster_grade_key in ipairs(monster_grades) do --mgk of --Elite
		-- Get the monster 
		monster_grade_id = my_monster_ids[monster_grade_key] --Id_Monster_GhostKing_Elite
		if monster_grade_id ~= nil then
			spawner_ids = monster_ids[monster_grade_id]["spawner_ids"]
			outputted_string = outputted_string .. create_monster_grade_loot_tables(monster_grade_id, spawner_ids)
		end
	end
	
	return outputted_string
end

function create_monster_grade_loot_tables(monster_grade_id, spawner_ids)
	if type(monster_grade_id) == "table" and monster_grade_id.args then -- if called via wikitext instead of lua
        local frame = monster_grade_id
        monster_grade_id = frame.args[1] -- Id_Monster_GhostKing_Elite
        spawner_ids = frame.args[2] -- {"Id_Spawner_New_Monster_GhostKing": true}
	end
	
	local outputted_string = ""
	for spawner_id, b in pairs(spawner_ids) do
		outputted_string = outputted_string .. create_spawner_loot_tables(spawner_id)
	end
	return outputted_string
end

function create_spawner_loot_tables(spawner_id)
	if type(spawner_id) == "table" and spawner_id.args then -- if called via wikitext instead of lua
        local frame = spawner_id
        spawner_id = frame.args[1]
	end
	
	local spawner_data = p.load_data_id_page(spawner_id)
	if spawner_data == nil then return "Spawner data page for id '" .. spawner_id "' not found." end

	
	return "cool a spawner!" .. spawner_id .. "<br>"
end

return p