Module:StrangelandsCreatureData

From UO Outlands Wiki
Revision as of 03:11, 28 November 2025 by TheGmaster (talk | contribs) (Updated to reflect the creature difficulty rebalances and decided to remove diseased varients (as they share the same stats))
Jump to navigation Jump to search

Documentation for this module may be created at Module:StrangelandsCreatureData/doc

local p = {
  ["Ankheg"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 22.4,
    ["goldvalue"] = 224,
    ["uniquescalar"] = 1.25,
    ["hits"] = 1500,
    ["minmeleedmg"] = 25,
    ["maxmeleedmg"] = 35,
    ["wrestling"] = 80,
    ["armor"] = 75,
    ["magicresist"] = 25,
    ["poisoning"] = 50,
    ["poisonresist"] = 0.4,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Slow",
  },
  ["Bullvore"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 31.9,
    ["goldvalue"] = 320,
    ["uniquescalar"] = 1.1,
    ["hits"] = 2000,
    ["minmeleedmg"] = 35,
    ["maxmeleedmg"] = 45,
    ["wrestling"] = 90,
    ["armor"] = 50,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Fast",
  },
  ["Devilbat"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 20.8,
    ["goldvalue"] = 208,
    ["uniquescalar"] = 1.25,
    ["hits"] = 1500,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 85,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Diseased Ankheg"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 22.4,
    ["goldvalue"] = 224,
    ["uniquescalar"] = 1.25,
    ["hits"] = 1500,
    ["minmeleedmg"] = 25,
    ["maxmeleedmg"] = 35,
    ["wrestling"] = 80,
    ["armor"] = 75,
    ["magicresist"] = 25,
    ["poisoning"] = 50,
    ["poisonresist"] = 0.4,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Slow",
  },
  ["Diseased Bullvore"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 31.9,
    ["goldvalue"] = 320,
    ["uniquescalar"] = 1.1,
    ["hits"] = 2000,
    ["minmeleedmg"] = 35,
    ["maxmeleedmg"] = 45,
    ["wrestling"] = 90,
    ["armor"] = 50,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Fast",
  },
  ["Diseased Devilbat"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 20.8,
    ["goldvalue"] = 208,
    ["uniquescalar"] = 1.25,
    ["hits"] = 1500,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 85,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Diseased Giant Slug"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 6.5,
    ["goldvalue"] = 65,
    ["uniquescalar"] = 1.14,
    ["hits"] = 600,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 50,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["poisonresist"] = 0.4,
    ["slayer"] = "Nature",
    ["ai"] = "Melee",
    ["speed"] = "Slow",
  },
  ["Diseased Giant Spider"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 15.7,
    ["goldvalue"] = 157,
    ["uniquescalar"] = 1.1,
    ["hits"] = 1200,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 80,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["poisontype"] = "Deadly",
    ["poisoning"] = 50,
    ["poisonresist"] = 0.6,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Medium",
  },
  ["Diseased Great Hart"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 6,
    ["goldvalue"] = 60,
    ["uniquescalar"] = 1,
    ["hits"] = 600,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 60,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Fast",
  },
  ["Diseased Guar"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 7.6,
    ["goldvalue"] = 76,
    ["uniquescalar"] = 1,
    ["hits"] = 800,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 50,
    ["armor"] = 50,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Medium",
  },
  ["Diseased Stalker"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 25.8,
    ["goldvalue"] = 259,
    ["uniquescalar"] = 1.2,
    ["hits"] = 1500,
    ["minmeleedmg"] = 30,
    ["maxmeleedmg"] = 40,
    ["wrestling"] = 90,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["stealth"] = "X",
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Giant Slug"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 6.5,
    ["goldvalue"] = 65,
    ["uniquescalar"] = 1.14,
    ["hits"] = 600,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 50,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["poisonresist"] = 0.4,
    ["slayer"] = "Nature",
    ["ai"] = "Melee",
    ["speed"] = "Slow",
  },
  ["Giant Spider"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 15.7,
    ["goldvalue"] = 157,
    ["uniquescalar"] = 1.1,
    ["hits"] = 1200,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 80,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["poisontype"] = "Deadly",
    ["poisoning"] = 50,
    ["poisonresist"] = 0.6,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Medium",
  },
  ["Great Hart"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 6,
    ["goldvalue"] = 60,
    ["uniquescalar"] = 1,
    ["hits"] = 600,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 60,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Fast",
  },
  ["Guar"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 7.6,
    ["goldvalue"] = 76,
    ["uniquescalar"] = 1,
    ["hits"] = 800,
    ["minmeleedmg"] = 10,
    ["maxmeleedmg"] = 20,
    ["wrestling"] = 50,
    ["armor"] = 50,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "Medium",
  },
  ["Primordial"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 12.4,
    ["goldvalue"] = 125,
    ["uniquescalar"] = 1.1,
    ["hits"] = 1000,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 80,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Primordial"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 12.4,
    ["goldvalue"] = 125,
    ["uniquescalar"] = 1.1,
    ["hits"] = 1000,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 80,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Stalker"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 25.8,
    ["goldvalue"] = 259,
    ["uniquescalar"] = 1.2,
    ["hits"] = 1500,
    ["minmeleedmg"] = 30,
    ["maxmeleedmg"] = 40,
    ["wrestling"] = 90,
    ["armor"] = 25,
    ["magicresist"] = 25,
    ["stealth"] = "X",
    ["slayer"] = "Beastial",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Strangehell Deathstalk"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 47.1,
    ["goldvalue"] = 472,
    ["uniquescalar"] = 1.3,
    ["hits"] = 2500,
    ["minmeleedmg"] = 25,
    ["maxmeleedmg"] = 35,
    ["wrestling"] = 130,
    ["armor"] = 25,
    ["magicresist"] = 200,
    ["poisonresist"] = 0.2,
    ["slayer"] = "Nature",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Strangehell Lashweed"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 27.4,
    ["goldvalue"] = 275,
    ["uniquescalar"] = 1.5,
    ["hits"] = 1500,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 110,
    ["armor"] = 25,
    ["magicresist"] = 100,
    ["poisontype"] = "Greater",
    ["poisoning"] = 25,
    ["poisonresist"] = 0.2,
    ["slayer"] = "Monstrous",
    ["ai"] = "Ranged",
    ["speed"] = "Fast",
  },
  ["Strangehell Spikebush"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 40.7,
    ["goldvalue"] = 408,
    ["uniquescalar"] = 1.5,
    ["hits"] = 2500,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 100,
    ["armor"] = 50,
    ["magicresist"] = 200,
    ["poisonresist"] = 0.2,
    ["slayer"] = "Nature",
    ["ai"] = "Melee",
    ["speed"] = "Fast",
  },
  ["Strangehell Vines"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 25.6,
    ["goldvalue"] = 256,
    ["uniquescalar"] = 1.2,
    ["hits"] = 1500,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 120,
    ["armor"] = 25,
    ["magicresist"] = 100,
    ["poisontype"] = "Deadly",
    ["poisoning"] = 50,
    ["poisonresist"] = 0.4,
    ["slayer"] = "Nature",
    ["ai"] = "Melee",
    ["speed"] = "VeryFast",
  },
  ["Stranger"] = {
    ["location"] = "Strangelands",
    ["difficulty"] = 10.8,
    ["goldvalue"] = 109,
    ["uniquescalar"] = 1,
    ["hits"] = 1200,
    ["minmeleedmg"] = 15,
    ["maxmeleedmg"] = 25,
    ["wrestling"] = 85,
    ["armor"] = 50,
    ["magicresist"] = 50,
    ["atkspd"] = 45,
    ["poisonresist"] = 0.2,
    ["slayer"] = "Humanoid",
    ["ai"] = "Melee",
    ["speed"] = "Medium",
  },
}

-- Helper function to add comma's between numbers
function FormatInt(int)
    int = string.reverse(int)

    if string.len(int) > 3 and string.len(int) < 6 then
        int = string.gsub(int, "(%d%d%d)", "%1,")
    elseif string.len(int) == 6 then
        int = string.gsub(int, "(%d%d%d)(%d%d%d)", "%1,%2")
    elseif string.len(int) > 6 and string.len(int) < 9 then
        int = string.gsub(int, "(%d%d%d)(%d%d%d)", "%1,%2,")
    end

    int = string.reverse(int)

    return int
end

-- Fill out or format values
for index, creature in pairs(p) do
    local defaultStatArray = {
        ["location"] = "Strangelands",
        ["difficulty"] = "?",
        ["goldvalue"] = "?",
        ["hits"] = "?",
        ["minmeleedmg"] = "",
        ["maxmeleedmg"] = "",
        ["wrestling"] = "",
        ["armor"] = "",
        ["magicresist"] = "",
        ["parry"] = "",
        ["atkspd"] = "?",
        ["magery"] = "",
        ["minspelldmg"] = "",
        ["maxspelldmg"] = "",
        ["poisontype"] = "",
        ["poisoning"] = "",
        ["poisonresist"] = "",
        ["stealth"] = "",
        ["slayer"] = "?",
        ["ai"] = "?",
        ["speed"] = "?",
        ["uniquescalar"] = "?",
        ["bosstype"] = "",
        ["armormin"] = "",
        ["magicresistmin"] = "",
        ["poisonresistmin"] = "",
    }

    if type(creature.location) == "table" then
        local locations = ""
        for i, spawnLocation in pairs(creature.location) do
            if locations ~= "" then
                locations = locations .. "<br>"
            end

            locations = locations .. "[[" .. spawnLocation .. "]]"
        end
        creature.location = locations
    elseif type(creature.location) == "string" and creature.location ~= "?" then
        creature.location = "[[" .. creature.location .. "]]"
    end

    if type(creature.goldvalue) == "number" then
        creature.goldvalue = FormatInt(creature.goldvalue)
    end

    if type(creature.hits) == "number" then
        creature.unformattedhits = creature.hits
        creature.hits = FormatInt(creature.hits)
    end

    if creature.armormin then
        creature.armormin = "<br>(" .. creature.armormin .. " min)"
    end

    if creature.magicresistmin then
        creature.magicresistmin = "<br>(" .. creature.magicresistmin .. " min)"
    end

    if creature.poisonresistmin then
        creature.poisonresistmin = "<br>(" .. creature.poisonresistmin .. " min)"
    end

    if creature.poisonresist then
        creature.poisonresist = (creature.poisonresist * 100) .. "%"
    end

    if creature.specialresist then
        creature.specialresist = (creature.specialresist * 100) .. "%"
    end

    if creature.minmeleedmg and creature.minmeleedmg ~= creature.maxmeleedmg then
        creature.minmeleedmg = creature.minmeleedmg .. " - "
    elseif creature.minmeleedmg == creature.maxmeleedmg then
        creature.maxmeleedmg = ""
    end

    if creature.minspelldmg and creature.minspelldmg ~= creature.maxspelldmg then
        creature.minspelldmg = creature.minspelldmg .. " - "
    elseif creature.minspelldmg == creature.maxspelldmg then
        creature.maxspelldmg = ""
    end

    if creature.tometier then
        creature.tometier = " (Tier " .. creature.tometier .. ")"
    end

    for stat, defaultValue in pairs(defaultStatArray) do
        if creature[stat] == nil then
            creature[stat] = defaultValue
        end
    end
end

return p