Module:Infobox Monster: Difference between revisions

From Brighter Shores Wiki
Jump to navigation Jump to search
Content added Content deleted
(not used, we already specify profession requirements and premium pass requirements)
(undo edit)
Tag: Manual revert
 
(11 intermediate revisions by 4 users not shown)
Line 3: Line 3:
local Infobox = require('Module:Infobox')
local Infobox = require('Module:Infobox')
local parse = require('Module:Param Parse')
local parse = require('Module:Param Parse')

local attack_styles = {
['none'] = 'None',
['impact'] = 'Impact',
['cryonae'] = 'Cryonae',
['arborae'] = 'Arborae',
['tempestae'] = 'Tempestae',
['infernae'] = 'Infernae',
['necromae'] = 'Necromae',
}

function attack_style_func(style)
local attack_style = attack_styles[string.lower(style or '')]
if attack_style then
if attack_style == 'None' then
return 'None'
else
return '[[File:'..attack_style..' damage icon.png|18px|link='..attack_style..']] [['..attack_style..']]'
end
end
return nil
end


function p.main(frame)
function p.main(frame)
Line 40: Line 18:
parse.premium,
parse.premium,
parse.episode,
parse.episode,
parse.unlock_level,
{name = 'level', func = parse.number},
parse.health,
{name = 'hp', func = parse.number}, -- TODO - move to Module:Param Parse once more details are available, and create smw_property
parse.experience,
{name = 'xp', func = parse.number}, -- TODO - same as above
parse.attack_style,
{name = 'att_style', func = attack_style_func},
{name = 'immune_to', func = attack_style_func},
parse.immune_to,
{name = 'vulnerable_to', func = attack_style_func},
parse.vulnerable_to,
parse.variant,
parse.variant,
parse.passive,
parse.passive,
parse.knowledge,
parse.aggressive,
parse.aggressive,
parse.examine,
parse.description,
parse.profession_bubble_a,
parse.profession_bubble_a,
parse.profession_bubble_b,
parse.profession_bubble_b,
Line 56: Line 35:
parse.profession_a_level_smw,
parse.profession_a_level_smw,
parse.profession_b_smw,
parse.profession_b_smw,
parse.profession_b_level_smw,
parse.profession_b_level_smw
}
}
Line 80: Line 59:
}
}
:add_row{
:add_row{
{tag='th', content='Level', colspan="7"},
{tag='th', content='Unlocked at', colspan="7"},
{tag='td', content=Infobox.param('level'), colspan="13"},
{tag='td', content=Infobox.param('unlock_level'), colspan="13"},
}
}
:add_row{
:add_row{
{tag='th', content='[[Health]]', colspan="7"},
{tag='th', content='[[Health]]', colspan="7"},
{tag='td', content=Infobox.param('hp'), colspan="13"},
{tag='td', content=Infobox.param('health'), colspan="13"},
}
}
:add_row{
:add_row{
{tag='th', content='Experience', colspan="7"},
{tag='th', content='Experience', colspan="7"},
{tag='td', content=Infobox.param('xp'), colspan="13"},
{tag='td', content=Infobox.param('experience'), colspan="13"},
}
}
if infobox:is_param_defined(Infobox.param('att_style')) > 0 then
if infobox:is_param_defined(Infobox.param('attack_style')) > 0 then
infobox:add_row{
infobox:add_row{
{tag='th', content='[[Attack Style]]', colspan="7"},
{tag='th', content='[[Attack Style]]', colspan="7"},
{tag='td', content=Infobox.param('att_style'), colspan="13"},
{tag='td', content=Infobox.param('attack_style'), colspan="13"},
}
}
end
end
Line 116: Line 95:
end
end
infobox:add_row{
infobox:add_row{
{tag='th', content='[[File:Passive activity icon.png|14px|link=Passive activity]] [[Passive activity|Passive]]', colspan="7"},
{tag='th', content='[[File:Passive activity icon.png|14px|link=Passive activity]] [[Passive activity|Passive]]', colspan="7"},
{tag='td', content=Infobox.param('passive'), colspan="13"},
{tag='td', content=Infobox.param('passive'), colspan="13"},
}
if infobox:get_param(Infobox.param('passive'), 0) == 'Yes' then
infobox:add_row{
{tag='th', content='[[File:Knowledge_icon.png|link=Knowledge|width=18x18]] [[Knowledge]]', colspan="7"},
{tag='td', content=Infobox.param('knowledge'), colspan="13"},
}
}
end
:add_row{
infobox:add_row{
{tag='th', content='[[File:Aggressive activity icon.png|3px|link=Aggressive]] [[Aggressive]]', colspan="7"},
{tag='th', content='[[File:Aggressive activity icon.png|3px|link=Aggressive]] [[Aggressive]]', colspan="7"},
{tag='td', content=Infobox.param('aggressive'), colspan="13"},
{tag='td', content=Infobox.param('aggressive'), colspan="13"},
}
}
:add_row{
:add_row{
{tag='th', content='Examine', colspan="7"},
{tag='th', content='Description', colspan="7"},
{tag='td', content=Infobox.param('examine'), colspan="13"}
{tag='td', content=Infobox.param('description'), colspan="13"}
}
}
local bubble_a = infobox:is_param_defined(Infobox.param('profession_bubble_a')) > 0
local bubble_a = infobox:is_param_defined(Infobox.param('profession_bubble_a')) > 0

Latest revision as of 23:13, 15 November 2024

Module documentation
This documentation is transcluded from Module:Infobox Monster/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Infobox Monster/doc. [edit]
Module:Infobox Monster's function main is invoked by Template:Infobox Monster.
Module:Infobox Monster requires Module:Infobox.
Module:Infobox Monster requires Module:Param Parse.

local p = {}

local Infobox = require('Module:Infobox')
local parse = require('Module:Param Parse')

function p.main(frame)
	local args = frame:getParent().args
	
	local config = {
		infobox_name = 'Monster',
		class = {Infobox.smw_param('episode')},
	}
	
	local params = {
		parse.name,
		parse.image_size300,
		parse.release,
		parse.premium,
		parse.episode,
		parse.unlock_level,
		parse.health,
		parse.experience,
		parse.attack_style,
		parse.immune_to,
		parse.vulnerable_to,
		parse.variant,
		parse.passive,
		parse.knowledge,
		parse.aggressive,
		parse.description,
		parse.profession_bubble_a,
		parse.profession_bubble_b,
		-- Include these next params just to export data to smw
		parse.profession_a_smw,
		parse.profession_a_level_smw,
		parse.profession_b_smw,
		parse.profession_b_level_smw
	}
	
	local infobox = Infobox.new(config, params, args)
	infobox
		:add_row{
			{tag='th', content=Infobox.param('name'), class='infobox-header', colspan='20'},
		}
		:add_row{
			{tag='td', content=Infobox.param('image'), class='infobox-image', colspan='20'},
		}
		:add_row{
			{tag='th', content='Release', colspan="7"},
			{tag='td', content=Infobox.param('release'), colspan="13"},
		}
		:add_row{
			{tag='th', content='[[Episode]]', colspan="7"},
			{tag='td', content=Infobox.param('episode'), colspan="13"},
		}
		:add_row{
			{tag='th', content='[[Premium Pass|Premium]]', colspan="7"},
			{tag='td', content=Infobox.param('premium'), colspan="13"},
		}
		:add_row{
			{tag='th', content='Unlocked at', colspan="7"},
			{tag='td', content=Infobox.param('unlock_level'), colspan="13"},
		}
		:add_row{
			{tag='th', content='[[Health]]', colspan="7"},
			{tag='td', content=Infobox.param('health'), colspan="13"},
		}
		:add_row{
			{tag='th', content='Experience', colspan="7"},
			{tag='td', content=Infobox.param('experience'), colspan="13"},
		}
	if infobox:is_param_defined(Infobox.param('attack_style')) > 0 then
		infobox:add_row{
			{tag='th', content='[[Attack Style]]', colspan="7"},
			{tag='td', content=Infobox.param('attack_style'), colspan="13"},
		}
	end
	if infobox:is_param_defined(Infobox.param('immune_to')) > 0 then
		infobox:add_row{
			{tag='th', content='Immune to', colspan="7"},
			{tag='td', content=Infobox.param('immune_to'), colspan="13"},
		}
	end
	if infobox:is_param_defined(Infobox.param('vulnerable_to')) > 0 then
		infobox:add_row{
			{tag='th', content='Vulnerable to', colspan="7"},
			{tag='td', content=Infobox.param('vulnerable_to'), colspan="13"},
		}
	end
	if infobox:is_param_defined(Infobox.param('variant')) > 0 and infobox:get_param(Infobox.param('variant'), 0) ~= 'N/A' then
		infobox:add_row{
			{tag='th', content='[[Variant]] of', colspan="7"},
			{tag='td', content=Infobox.param('variant'), colspan="13"},
		}
	end
	infobox:add_row{
		{tag='th', content='[[File:Passive activity icon.png|14px|link=Passive activity]] [[Passive activity|Passive]]', colspan="7"},
		{tag='td', content=Infobox.param('passive'), colspan="13"},
	}
	if infobox:get_param(Infobox.param('passive'), 0) == 'Yes' then
		infobox:add_row{
			{tag='th', content='[[File:Knowledge_icon.png|link=Knowledge|width=18x18]] [[Knowledge]]', colspan="7"},
			{tag='td', content=Infobox.param('knowledge'), colspan="13"},
		}
	end
	infobox:add_row{
			{tag='th', content='[[File:Aggressive activity icon.png|3px|link=Aggressive]] [[Aggressive]]', colspan="7"},
			{tag='td', content=Infobox.param('aggressive'), colspan="13"},
		}
		:add_row{
			{tag='th', content='Description', colspan="7"},
			{tag='td', content=Infobox.param('description'), colspan="13"}
		}
	local bubble_a = infobox:is_param_defined(Infobox.param('profession_bubble_a')) > 0
	local bubble_b = infobox:is_param_defined(Infobox.param('profession_bubble_b')) > 0
	if bubble_a and bubble_b then
		infobox:add_row{
			{tag='td', content=Infobox.param('profession_bubble_a'), class='infobox-bubble-item', colspan="10"},
			{tag='td', content=Infobox.param('profession_bubble_b'), class='infobox-bubble-item', colspan="10"},
			addClass = 'infobox-bubble-row'
		}
	elseif bubble_a then
		infobox:add_row{
			{tag='td', content=Infobox.param('profession_bubble_a'), class='infobox-bubble-item', colspan="20"},
			addClass = 'infobox-bubble-row'
		}
	elseif bubble_b then
		infobox:add_row{
			{tag='td', content=Infobox.param('profession_bubble_b'), class='infobox-bubble-item', colspan="20"},
			addClass = 'infobox-bubble-row'
		}
	else
		infobox:pad('20')
	end
	
	return infobox
end

return p