From Dark and Darker Wiki

Revision as of 00:48, 21 December 2024 by Sur (talk | contribs) (output tabular format)

Overview

Functions for Sorcerer's Merge Spells and their component spells. Data comes from Data:MergeSpells.json

Functions

draw_merge_recipe

Draws a visual for the components that make up a given merge spell

Parameters

  • merge_spell - 1st parameter - the name of the merge spell without spaces but capitalized properly, i.e. ElementalBolt

Example

{| class="wikitable sortable jquery-tablesorter ClassesTable" style="min-width:360px;>
! style="width:15%" class="headerSort" role="columnheader button" title="Sort ascending" | Merge Spell
! style="width:15%" class="headerSort" role="columnheader button" title="Sort ascending" | Parent Spell 1
! style="width:15%" class="headerSort" role="columnheader button" title="Sort ascending" | Parent Spell 2
|-
| {{#invoke:MergeSpells|draw_merge_recipe|ElementalBolt}}
|}
Merge Spell Parent Spell 1 Parent Spell 2
Icon Spell ElementalBolt.png
ElementalBolt
Icon Spell FireArrow.png
FireArrow
Icon Spell WaterBolt.png
WaterBolt

local p = {}
local merge_spells = mw.loadJsonData("Data:MergeSpells.json")

function p.draw_merge_recipe(merge_spell, debug_mode)
	if type(merge_spell) == "table" and merge_spell.args then -- if called via wikitext instead of lua
        local frame = merge_spell
        merge_spell = frame.args[1]
        debug_mode = frame.args["debug_mode"]
    end
	
	-- Validate and cast to bool
	if debug_mode == nil then debug_mode = false else debug_mode = true end
		
	-- Retrieve the merge spell's component spells
	component_spells = merge_spells[merge_spell]
	if component_spells == nil then return merge_spell .. " is not a valid merge spell" end
	
	-- Draw them
	wikitext = "| [[File:Icon_Spell " .. merge_spell .. ".png|link=|96px]] <br> " .. merge_spell .. "\n"
	for i, component_spell in ipairs(component_spells) do
		wikitext = wikitext ..  "| [[File:Icon_Spell " .. component_spell .. ".png|link=|96px]] <br> " .. component_spell .. "\n"
	end
	
	-- Return the drawn wikitext
	if debug_mode then
		return wikitext
	else
		return mw.getCurrentFrame():preprocess(wikitext)
	end
end

return p