Module:AbilityData: Difference between revisions

From Deadlock Wiki
Jump to navigation Jump to search
Saag (talk | contribs)
mNo edit summary
Saag (talk | contribs)
m Fixed get_ability_name
 
(100 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {};
local data = mw.loadJsonData("Data:AbilityCards.json")
local data = mw.loadJsonData("Data:ItemData.json")
 
local p = {}


-- returns the table of a specific item
-- returns the table of a specific item
function get_json_item(name)
function get_ability(hero_key, ability_num)
for i,v in pairs(data) do
local ui_data = data[hero_key]
if (v["Name"] == name) then
if(ui_data == nil) then return "Hero Not Found" end
return v
return ui_data[tonumber(ability_num)]
end
 
--{{#invoke:AbilityData|get_ability_name|HERO_NAME|ABILITY_NUM}}--
p.get_ability_name = function(frame)
local hero_name = frame.args[1]
local ability_num = frame.args[2]
local ability = get_ability(hero_name, ability_num)
if(ability == nil) then return "Ability Not Found" end
return ability.Name
end
 
--Write's an ability link for a given ability name in english
--Siphon Life --> Abrams#(1)_Siphon_Life
function ability_to_hyperlink(ability_name_to_search)
if (ability_name_to_search == nil) then return "No ability name provided" end
local hero_name
local ability_name
-- Iterate heros
for hero_key, hero_data in pairs(data) do
-- Iterate abilities
hero_name = hero_data["Name"]
for ability_num, ability_data in pairs(hero_data) do
if (ability_num ~= "Name") then
ability_name = ability_data["Name"]
if (ability_name == ability_name_to_search) then
-- Ability number and hero found
-- "Siphon Life" > "Siphon_Life"
ability_name = ability_name:gsub(" ", "_")
return hero_name .. "#(" .. ability_num .. ")_" .. ability_name
end
end
end
end
end
end
return nil
return nil
end
end


local abilities = {
--Writes an ability's icon from its name
    shoulderCharge = {
--Shoulder Charge --> [[File:Shoulder Charge.png|link=Abrams#(1)_Shoulder_Charge|size=20px]] [[Abrams...|Shoulder Charge]]
        name = "Shoulder Charge",
p.write_ability_icon = function(frame)
        duration = "1.2s",
local ability_name = frame.args[1]
        cooldown = "35s",
local custom_display_text = frame.args[2]
        description = "'''Charge forward''', colliding with enemies and dragging them along. Hitting a '''wall''' will '''Stun''' enemies caught by Abrams. Speed increased after colliding with enemy Heroes.",
if (custom_display_text == nil or custom_display_text == "") then custom_display_text = ability_name end
        effect1 = "'''Damage:''' 40 {{ss|2.1}}",
        effect2 = "'''Stun Duration:''' 0.85s",
local size = 20
        upgrade1 = "'''-20s''' Cooldown",
        upgrade2 = "'''+0.5s''' Duration",
local hyperlink = ability_to_hyperlink(ability_name)
        upgrade3 = "'''+5.5''' Weapon Damage for '''8s''' after colliding with an enemy"
if (hyperlink == nil) then return "Ability " .. ability_name .. " not found" end
    }
}
local icon = "[[File:" .. ability_name .. ".png|link=" .. hyperlink .. "|" .. size .. "px]]"
 
icon = '<span style="position: relative; bottom: 2px; filter: brightness(0) saturate(100%);">' .. icon .. '</span>'
--{{#invoke:ItemData|get_cost|ITEM_NAME}}--
p.test = function(frame)
local link = "[[" .. hyperlink .. "|" .. custom_display_text .. "]]"
    local abilityName = frame.args.abilityName
    local ability = abilities[abilityName]
return icon .. " " .. link
 
    if ability then
    return ability.name
        -- Pass the table fields to the template
        -- return frame:expandTemplate{
        --    title = "Ability card",
        --    args = {
        --        name = ability.name,
        --        duration = ability.duration,
        --        cooldown = ability.cooldown,
        --        description = ability.description,
        --        effect1 = ability.effect1,
        --        effect2 = ability.effect2,
        --        upgrade1 = ability.upgrade1,
        --        upgrade2 = ability.upgrade2,
        --        upgrade3 = ability.upgrade3
        --    }
        -- }
    else
        return "Ability data not found."
    end
end
end


return p
return p

Latest revision as of 17:25, 26 October 2024

Deprecated[edit source]

This module is being replaced by multiple modules in Module:Abilities. Any new functions should be created there


local data = mw.loadJsonData("Data:AbilityCards.json")

local p = {}

-- returns the table of a specific item
function get_ability(hero_key, ability_num)
	local ui_data = data[hero_key]
	if(ui_data == nil) then return "Hero Not Found" end
	return ui_data[tonumber(ability_num)]
end

--{{#invoke:AbilityData|get_ability_name|HERO_NAME|ABILITY_NUM}}--
p.get_ability_name = function(frame)
	local hero_name = frame.args[1]
	local ability_num = frame.args[2]
	
	local ability = get_ability(hero_name, ability_num)
	if(ability == nil) then return "Ability Not Found" end
	return ability.Name
end

--Write's an ability link for a given ability name in english
--Siphon Life --> Abrams#(1)_Siphon_Life
function ability_to_hyperlink(ability_name_to_search)
	if (ability_name_to_search == nil) then return "No ability name provided" end
	local hero_name
	local ability_name
	
	-- Iterate heros
	for hero_key, hero_data in pairs(data) do
		-- Iterate abilities
		hero_name = hero_data["Name"]
		for ability_num, ability_data in pairs(hero_data) do
			if (ability_num ~= "Name") then
				ability_name = ability_data["Name"]
				if (ability_name == ability_name_to_search) then
					-- Ability number and hero found
					-- "Siphon Life" > "Siphon_Life"
					ability_name = ability_name:gsub(" ", "_")
					return hero_name .. "#(" .. ability_num .. ")_" .. ability_name
				end
			end
		end
	end
	
	return nil
end

--Writes an ability's icon from its name
--Shoulder Charge --> [[File:Shoulder Charge.png|link=Abrams#(1)_Shoulder_Charge|size=20px]] [[Abrams...|Shoulder Charge]]
p.write_ability_icon = function(frame)
	local ability_name = frame.args[1]
	local custom_display_text = frame.args[2]
	if (custom_display_text == nil or custom_display_text == "") then custom_display_text = ability_name end
	
	local size = 20
	
	local hyperlink = ability_to_hyperlink(ability_name)
	if (hyperlink == nil) then return "Ability " .. ability_name .. " not found" end
	
	local icon = "[[File:" .. ability_name .. ".png|link=" .. hyperlink .. "|" .. size .. "px]]"
	icon = '<span style="position: relative; bottom: 2px; filter: brightness(0) saturate(100%);">' .. icon .. '</span>'
	
	local link = "[[" .. hyperlink .. "|" .. custom_display_text .. "]]"
	
	return icon .. " " .. link
end

return p