Please note that some information on this wiki is still based on the demo version.
If you notice any errors, feel free to correct them.

Module:Stats

From Super Fantasy Kingdom Official Wiki
Revision as of 14:30, 15 July 2023 by wgg>Cadaei (table fix)

Displays stats for units. Call with Template:Stats, code is in Module:Stats.

Parameters

  • inline: If not empty stats will be shown in one line, else in a table format
  • align: Optional, valid values are left, center or right. It will display the stats in a simple column with the stated alignment.
  • hp: Health
  • ma: Mana
  • sh: Shield
  • pd: Physical Defense
  • md: Magical Defense
  • dm: Damage
  • cr: Critical Chance
  • ra: Range
  • cd: Cooldown
  • ar: Area
  • kb: Knockback
  • sp: Speed
  • du: Duration
  • rg: Rage
  • gr: Greed
  • rr: Reroll
  • ba: Banish
  • cu: Curse

Examples

{{stats|hp=33|dm=8|sh=4|cr=2%|pd=20%|md=10%}}
8
10%
20%
2%
33
4
{{stats|hp=20.5|ra=8.33 m|cd=1.2 s|cr=2%}}
1.2 s
8.33 m
20.5
2%
{{stats|hp=33|dm=8|sh=4|cr=2%|pd=20%|md=10%|inline=1}}

 8 •  10% •  20% •  2% •  33 •  4

{{stats|hp=33|dm=8|sh=4|cr=2%|pd=20%|md=10%|align=center}}
8
20%
10%
2%
33
4
{{stats
| first = Base stats
| second = Maxed<br/>Base stats
| dm = 5
| dm2 = 6.25
| dmGain = 1
| hp = 11
| hp2 = 14.3
| hpGain = 1
| sh = 13 m
| sh2 = 16.9 m
| shGain = 2
| cr = 5%
| cr2 = 5.63%
| crGain = 1
| pd = 0%
| pd2 = 15%
| pdGain = 3
| md = 0%
| md2 = 15%
| mdGain = 3
}}
5
11
0%
13 m
0%
5%

local p = {}

function p.stats(f)
	local args = f:getParent().args
	
	-- argument name and full name (also used for icon name)
	local possibleStats = {["hp"] = "Health",
						   ["sh"] = "Shield",
						   ["pd"] = "Physical Defense",
						   ["md"] = "Magical Defense",
						   ["dm"] = "Damage",
						   ["cr"] = "Critical Chance",
						   ["ra"] = "Range",
						   ["cd"] = "Cooldown",
						   ["ar"] = "Area",
						   ["kb"] = "Knockback",
						   ["sp"] = "Speed",
						   ["du"] = "Duration",
						   ["gr"] = "Greed",
						   ["rr"] = "Reroll",
						   ["ba"] = "Banish",
						   ["cu"] = "Curse"
						   }
	
	local usedStats = {}
	local useInline = args.inline ~= nil
	
	for a, v in pairs(args) do
		local statName = possibleStats[a]
		if v ~= '' and statName ~= nil and statName ~= '' then
			table.insert(usedStats, p.StatEntryFormat(statName, v, useInline) )
		end
	end
	
	if #usedStats == 0 then
	  return ''
	end
	
	if useInline then
	  -- one line, separated by bullet points
	  return table.concat(usedStats, ' &bull; ')
	end
		
	-- table format
	return '<table style="text-align:right;display:inline-block">'..table.concat(usedStats, '')..'</table>'
end

function p.StatEntryFormat(name, val, inline)
	if inline then
		return '[[File:'..name..'.png|link='..name..']]&nbsp;'..val
	else
		return '<tr><td>[[File:'..name..'.png|link='..name..']]</td><td>'..val..'</td></tr>'
	end
end

return p