本WIKI由spt赛小息6于2020年05月27日担任站长并维护更新,编辑权限开放,如遇Chrome浏览器登陆后无法编辑点这里    BWIKI反馈留言板
目前WIKI是开放编辑权限,任何人都可以在遵守《BWIKI社区规则》和《赛尔号星球大战WIKI社区规则》的前提下进行内容制作,违规者将会被封禁。

全站通知:

模块:属性克制

来自赛尔号星球大战WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:属性克制/doc创建

local p = {}

-- 所有属性(单 + 双)
p.allAttributes = {
    "草", "水", "火", "飞行", "电", "机械", "地面", "普通", "冰", "超能", "战斗", "光", "暗影", "神秘", "龙", "圣灵","次元", "远古", "邪灵", "自然",  
    "草·超能", "草·战斗", "草·暗影",
            "水·超能", "水·龙", "火·龙",
            "火·超能", "飞行·超能", "光·飞行", "飞行·龙", "火·电",
            "机械·地面",
            "机械·龙","地面·暗影", 
            "光·冰", "冰·暗影", "战斗·火", "战斗·暗影",
            "战斗·地面", "神秘·光", "神秘·暗影", "暗影·龙", "光·火"
}

-- 外部命名 → 内部命名
p.externalToInternal = {
    ["草超能"] = "草·超能", ["草战斗"] = "草·战斗", ["草暗影"] = "草·暗影",
    ["水超能"] = "水·超能", ["水龙"] = "水·龙",
    ["火龙"] = "火·龙", ["火超能"] = "火·超能",
    ["飞行超能"] = "飞行·超能", ["光飞行"] = "光·飞行", ["飞行龙"] = "飞行·龙",
    ["火电"] = "火·电", ["机械地面"] = "机械·地面", 
    ["机械龙"] = "机械·龙",
    ["地面暗影"] = "地面·暗影", ["光冰"] = "光·冰",
    ["冰暗影"] = "冰·暗影",["战斗火"] = "战斗·火",
    ["战斗暗影"] = "战斗·暗影", ["战斗地面"] = "战斗·地面", ["神秘光"] = "神秘·光",
    ["神秘暗影"] = "神秘·暗影", ["暗影龙"] = "暗影·龙", ["光火"] = "光·火"
}
-- 去重函数
local function unique(t)
    local seen, out = {}, {}
    for _, v in ipairs(t) do
        if not seen[v] then
            seen[v] = true
            table.insert(out, v)
        end
    end
    for i, v in ipairs(out) do t[i] = v end
    for i = #out + 1, #t do t[i] = nil end  -- 把多余尾巴清掉
end

-- 自动插入双属性(仅当不存在时才插入)
for _, internal in pairs(p.externalToInternal) do
    local found = false
    for _, v in ipairs(p.allAttributes) do
        if v == internal then found = true; break end
    end
    if not found then
        table.insert(p.allAttributes, internal)
    end
end

-- 单属性系数表(已简化,可继续补充)
p.coefData = {
 ["草"] = {
        ["attack"] = { ["火"] = 0.5, ["水"] = 2, ["草"] = 0.5, ["飞行"] = 0.5, ["电"] = 1, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 2, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 0.5, ["邪灵"] = 1, ["自然"] = 1 },
        ["defense"] = { ["火"] = 2, ["水"] = 0.5, ["草"] = 0.5, ["飞行"] = 2, ["电"] = 0.5, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 0, ["龙"] = 0.5, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 2, ["邪灵"] = 1, ["自然"] = 2 }
    },
    ["水"] = {
        ["attack"] = { ["火"] = 2, ["水"] = 0.5, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 1, ["地面"] = 2, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5 },
        ["defense"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 2, ["飞行"] = 1, ["电"] = 2, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2 }
    },
    ["火"] = {
        ["attack"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 2, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5 },
        ["defense"] = { ["火"] = 0.5, ["水"] = 2, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 1, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2}
    },
    ["飞行"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 2, ["飞行"] = 1, ["电"] = 0.5, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 0.5, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 0.5},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 2, ["地面"] = 0, ["机械"] = 1, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 2, ["远古"] = 2, ["邪灵"] = 1, ["自然"] = 2}
    },
    ["电"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 2, ["草"] = 0.5, ["飞行"] = 2, ["电"] = 0.5, ["地面"] = 0, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 2, ["光"] = 1, ["龙"] = 1, ["神秘"] = 0.5, ["圣灵"] = 0.5, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 0.5, ["电"] = 0.5, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 2, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2}
    },
    ["机械"] = {
        ["attack"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 1, ["飞行"] = 1, ["电"] = 0.5, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 0.5, ["远古"] = 2, ["邪灵"] = 2, ["自然"] = 1},
        ["defense"] = { ["火"] = 2, ["水"] = 1, ["草"] = 0.5, ["飞行"] = 0.5, ["电"] = 1, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 0.5, ["光"] = 0.5, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 2, ["远古"] = 0.5, ["邪灵"] = 0.5, ["自然"] = 0.5}
    },
    ["地面"] = {
        ["attack"] = { ["火"] = 2, ["水"] = 1, ["草"] = 0.5, ["飞行"] = 0, ["电"] = 2, ["地面"] = 1, ["机械"] = 2, ["冰"] = 1, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 0.5, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5},
        ["defense"] = { ["火"] = 1, ["水"] = 2, ["草"] = 2, ["飞行"] = 1, ["电"] = 0, ["地面"] = 1, ["机械"] = 1, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 0.5, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2 }
    },
    ["普通"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 1},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 1}
    },
    ["冰"] = {
        ["attack"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 2, ["飞行"] = 2, ["电"] = 1, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 2, ["远古"] = 2, ["邪灵"] = 1, ["自然"] = 1},
        ["defense"] = { ["火"] = 2, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 0.5, ["光"] = 0.5, ["龙"] = 2, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 0.5, ["远古"] = 0.5, ["邪灵"] = 0.5, ["自然"] = 1}
    },
    ["超能"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 1, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 1, ["光"] = 0, ["龙"] = 1, ["神秘"] = 2, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2 },
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 1, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 2, ["光"] = 2, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 0.5}
    },
    ["战斗"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 2, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 0.5, ["光"] = 1, ["龙"] = 2, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 1},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 2, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 1, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 0.5, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5}
    },
    ["光"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 0, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 2, ["光"] = 0.5, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 0.5},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 2, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 1, ["冰"] = 1, ["超能"] = 0, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 0.5, ["光"] = 0.5, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 2, ["自然"] = 2 }
    },
    ["暗影"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 2, ["光"] = 0.5, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 1},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 2, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 2, ["光"] = 2, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 0, ["远古"] = 1, ["邪灵"] = 2, ["自然"] = 0.5 }
    },
    ["神秘"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 2, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 2, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 2},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 0.5, ["地面"] = 1, ["机械"] = 1, ["冰"] = 1, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 1, ["神秘"] = 2, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 2, ["邪灵"] = 2, ["自然"] = 0.5}
    },
    ["龙"] = {
        ["attack"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 0.5, ["地面"] = 1, ["机械"] = 1, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 2, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 0.5, ["邪灵"] = 2, ["自然"] = 1 },
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 1, ["光"] = 1, ["龙"] = 2, ["神秘"] = 1, ["圣灵"] = 0.5, ["次元"] = 1, ["远古"] = 2, ["邪灵"] = 1, ["自然"] = 1}
    },
    ["圣灵"] = {
        ["attack"] = { ["火"] = 2, ["水"] = 2, ["草"] = 2, ["飞行"] = 1, ["电"] = 2, ["地面"] = 1, ["机械"] = 1, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 1, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 0.5, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 2, ["邪灵"] = 0.5, ["自然"] = 1},
        ["defense"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 0.5, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 2, ["暗影"] = 0.5, ["光"] = 0.5, ["龙"] = 2, ["神秘"] = 2, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 1}
    },
    ["次元"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 2, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 0.5, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 0, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 2, ["自然"] = 2},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 0.5, ["电"] = 2, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 2, ["光"] = 1, ["龙"] = 1, ["神秘"] = 1, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 2, ["自然"] = 0.5}
    },
    ["远古"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 2, ["飞行"] = 2, ["电"] = 1, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 2, ["神秘"] = 2, ["圣灵"] = 1, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 1},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 0.5, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 2, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 1, ["龙"] = 0.5, ["神秘"] = 1, ["圣灵"] = 2, ["次元"] = 1, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 1}
    },
    ["邪灵"] = {
        ["attack"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 1, ["电"] = 1, ["地面"] = 1, ["机械"] = 0.5, ["冰"] = 0.5, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 2, ["光"] = 2, ["龙"] = 1, ["神秘"] = 2, ["圣灵"] = 0.5, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 2},
        ["defense"] = { ["火"] = 1, ["水"] = 1, ["草"] = 1, ["飞行"] = 0.5, ["电"] = 1, ["地面"] = 1, ["机械"] = 2, ["冰"] = 1, ["超能"] = 1, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 0.5, ["光"] = 0.5, ["龙"] = 2, ["神秘"] = 0.5, ["圣灵"] = 1, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 1, ["自然"] = 0.5}
    },
    ["自然"] = {
        ["attack"] = { ["火"] = 2, ["水"] = 2, ["草"] = 2, ["飞行"] = 2, ["电"] = 2, ["地面"] = 2, ["机械"] = 0.5, ["冰"] = 1, ["超能"] = 0.5, ["普通"] = 1, ["战斗"] = 0.5, ["暗影"] = 0.5, ["光"] = 2, ["龙"] = 1, ["神秘"] = 0.5, ["圣灵"] = 1, ["次元"] = 0.5, ["远古"] = 1, ["邪灵"] = 0.5, ["自然"] = 1},
        ["defense"] = { ["火"] = 0.5, ["水"] = 0.5, ["草"] = 1, ["飞行"] = 0.5, ["电"] = 0.5, ["地面"] = 0.5, ["机械"] = 1, ["冰"] = 1, ["超能"] = 2, ["普通"] = 1, ["战斗"] = 1, ["暗影"] = 1, ["光"] = 0.5, ["龙"] = 1, ["神秘"] = 2, ["圣灵"] = 1, ["次元"] = 2, ["远古"] = 1, ["邪灵"] = 2, ["自然"] = 1}
    }
}

-- 工具:分割属性
local function splitAttribute(attr)
    if string.find(attr, "·") then
        local parts = {}
        for part in string.gmatch(attr, "([^·]+)") do
            table.insert(parts, part)
        end
        return parts
    else
        return { attr }
    end
end

-- 双属性系数计算
-- 返回单属性 atkAttr 对 defAttr 的系数(缺省=1)
local function singleCoef(atkAttr, defAttr, mode)
    local t = p.coefData[atkAttr]
    if not t then return 1 end
    local v = t[mode][defAttr]
    return v == nil and 1 or v
end

--[[
  计算 双属性 A·B 对 单属性 C 的系数
  符合官方规则:
    两个系数都是 2 → 4
    任一系数为 0 → (和)/4
    其余           → (和)/2
]]
local function dualVsSingle(A, B, C, mode)
    local a = singleCoef(A, C, mode)
    local b = singleCoef(B, C, mode)
    if a == 2 and b == 2 then return 4 end
    if a == 0 or b == 0 then return (a + b) / 4 end
    return (a + b) / 2
end

-- 主入口:计算 dualAttr 对 targetAttr 的系数
-- mode = "attack" / "defense"
function p.getDualAttributeCoef(dualAttr, targetAttr, mode)
    local A, B = dualAttr:match("([^·]+)·([^·]+)")
    if not A or not B then return 1 end

    -- 拆分目标
    local tParts = splitAttribute(targetAttr)

    if #tParts == 1 then
        -- 双 vs 单
        return dualVsSingle(A, B, tParts[1], mode)
    else
        -- 双 vs 双:分别计算 双→t1 和 双→t2 两个中间值,再平均
        local x = dualVsSingle(A, B, tParts[1], mode)
        local y = dualVsSingle(A, B, tParts[2], mode)
        return (x + y) / 2
    end
end

-- 图片路径
function p.getImagePath(attr)
    local key = attr:gsub("·", "") -- "草·超能" → "草超能"
    local filename = key .. "系.png"
    return string.format("[[File:%s|%s系|30px|link=%s系]]", filename,key, key)
end

-- 输入归一化
function p.normalizeInput(attr)
    return p.externalToInternal[attr] or attr
end

-- 主入口
-- 主入口
function p.getResults(frame)
    local attr = frame.args.attribute or ""
    if attr == "" then return "未提供属性" end
    attr = p.normalizeInput(attr) -- "草超能" → "草·超能"

    local isDual = string.find(attr, "·") ~= nil

    local attackResults, defenseResults = {}, {}

    -- 攻击方克制:当前属性 打 其他属性
    -- 攻击方克制:当前属性 打 其他属性(含双属性)
for _, target in ipairs(p.allAttributes) do
    local atkCoef
    local tarParts = splitAttribute(target)   -- 目标可能是单或双

    if isDual then
        -- 当前属性是双属性:用已有函数
        atkCoef = p.getDualAttributeCoef(attr, target, "attack")
    else
        -- 当前属性是单属性:统一按「单 vs 单」两次再合并
        if #tarParts == 1 then
            atkCoef = singleCoef(attr, tarParts[1], "attack")
        else
            local coef1 = singleCoef(attr, tarParts[1], "attack")
            local coef2 = singleCoef(attr, tarParts[2], "attack")
            -- 官方合并规则
            if coef1 == 2 and coef2 == 2 then
                atkCoef = 4
            elseif coef1 == 0 or coef2 == 0 then
                atkCoef = (coef1 + coef2) / 4
            else
                atkCoef = (coef1 + coef2) / 2
            end
        end
    end

    if atkCoef ~= 1 then
        table.insert(attackResults, { attr = target, coef = atkCoef })
    end
end

-- 防守方被克制:其他属性(单/双)打当前属性(可能单也可能双)
local curParts = splitAttribute(attr)   -- 当前属性拆半
for _, attacker in ipairs(p.allAttributes) do
    local defCoef
    local atkParts = splitAttribute(attacker)   -- attacker 拆半

    -- 统一逻辑:attacker 的每一半分别打 curParts 的每一半,再合并
    if #atkParts == 1 then
        -- attacker 是单属性
        local coefs = {}
        for _, c in ipairs(curParts) do
            table.insert(coefs, singleCoef(atkParts[1], c, "attack"))
        end
        if #curParts == 1 then
            defCoef = coefs[1]                                      -- 单 vs 单
        else
            local a, b = coefs[1], coefs[2]                         -- 单 vs 双
            if a == 2 and b == 2 then      defCoef = 4
            elseif a == 0 or b == 0 then   defCoef = (a + b) / 4
            else                           defCoef = (a + b) / 2
            end
        end
    else
        -- attacker 是双属性
        local coefs = {}
        for _, c in ipairs(curParts) do
            table.insert(coefs, dualVsSingle(atkParts[1], atkParts[2], c, "attack"))
        end
        if #curParts == 1 then
            defCoef = coefs[1]                                      -- 双 vs 单
        else
            defCoef = (coefs[1] + coefs[2]) / 2                     -- 双 vs 双(再÷2)
        end
    end

    if defCoef ~= 1 then
        table.insert(defenseResults, { attr = attacker, coef = defCoef })
    end
end
   

    -- 排序
    table.sort(attackResults, function(a, b) return a.coef > b.coef end)
    table.sort(defenseResults, function(a, b) return a.coef > b.coef end)

    local function render(title, results)
        local html = { string.format("<h3>%s</h3><div class='result-section'>", title) }
        for _, r in ipairs(results) do
            local img = p.getImagePath(r.attr)
            local cls = ""
            if r.coef > 2 then cls = "coef-2"
            elseif r.coef > 1 then cls = "coef-1"
            elseif r.coef < 1 and r.coef > 0 then cls = "coef-less-1"
            elseif r.coef == 0 then cls = "coef-0"
            end
            table.insert(html,
                string.format([[<div class="shuxing" style="display: inline-block;background: #36c;overflow: hidden;position:relative;width: 50px;height: 59px;box-shadow: 0 0 2px #000;margin:2px;border-radius: 4px;"><div class="shuxingi" style="margin-left: 11px;margin-top: 8px;">%s</div><div class="%s" style="position: absolute;bottom: -2px;left:0px;font-size:12px;color:#fff;font-weight: bolder;text-shadow: #000 -1px 0 0,#763c12 0 -1px 0,#5d2b08 1px 0 0,#1d1515 0 1px 0;width: 50px;display: inline-block;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;line-height:14px;padding:2px 0px;"><center><b color="#fff">%.3f</b></center></div></div>]],img,  cls, r.coef))
        end
        table.insert(html, "</div>")
        return table.concat(html, "\n")
    end

    return render("攻击方克制", attackResults) .. render("防守方被克制", defenseResults)
end
unique(p.allAttributes)
return p