Anonymous
×
Create a new article
Write your page title here:
We currently have 496 articles on WIKI - Idle Pixel. Type your article name above or click on one of the titles below and start writing!



WIKI - Idle Pixel

Module:Enemy DB: Difference between revisions

No edit summary
No edit summary
Tag: Reverted
Line 1: Line 1:
return {
u = require("Module:Util")
edb = require("Module:Enemy_DB")
lt = require("Module:Loot_Table")
local p = {}
function round(n)
    return n + 0.5 - (n + 0.5) % 1
end
function p.enemy_table(enemy)
    result = [[]]
    for _, e in ipairs(enemy[8]) do
        -- TODO: refactor 1 - 1 -> 1 conversion to loot table module if possible
        result = result .. lt.ltr({args= {e[1], (e[2] == e[3] and u.c(e[2]) or (u.c(e[2]) .. ' - ' .. u.c(e[3]))), e[4], e[6], e[5] and enemy[2], image=e['image']}})
    end
    return lt.lt({args= {result, area=enemy[2]}}) .. [[
]]
end
function p.enemy_stats(enemy)
    return [[{| class="loot-table"
!Enemy
]] .. '![[File: Heart.png|20px]]\n![[File: Attack.png|20px]]\n![[File: Accuracy.png|20px]]\n![[File: Speed.png|20px]]\n![[File: Defence.png|20px]]' .. [[


-- Format: {Name, Area, Attack, Accuracy, Speed, Defence, HP, {Loot1, Loot2, ...}},
|-
|]] .. '[[' .. [[File: ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Icon.png')) .. [[|40px|link=]] .. enemy[1] .. ']]' .. [[


-- Loot Format: {Name, Min, Max, Chance(1/x), Drops Once Only (optional)},
|]] .. enemy[1] .. [[


--Fields
|]] .. enemy[7] .. [[
{"Chicken",'Fields',1,0,3,0,5,{{"Bones",1,1,1},{"Raw Chicken",1,1,1},{"Feathers",5,15,1},{"Dotted Green Leaf",1,1,3},{"Green Leaf",1,1,10},{"Lime Leaf",1,1,25},{"Gold Leaf",1,1,96},{"Chicken Sigil",1,1,1000}}},
{"Rat",'Fields',2,0,3,0,3,{{"Bones",1,1,1},{"Cheese",1,1,2},{"Dotted Green Leaf",1,1,3},{"Green Leaf",1,1,10},{"Lime Leaf",1,1,25},{"Gold Leaf",1,1,96},{"Rat Sigil",1,1,1000}}},
{"Spider",'Fields',3,0,4,0,2,{{"String",1,4,1},{"Dotted Green Leaf",1,1,3},{"Green Leaf",1,1,10},{"Lime Leaf",1,1,25},{"Gold Leaf",1,1,96},{"Spider Fields Sigil",1,1,1000}}},
{"Bee",'Fields',4,0,4,0,2,{{"Honey",1,2,1},{"Stinger",1,1,1},{"Bee Sigil",1,1,1000}}},


--Forests
|]] .. enemy[2] .. [[
{"Lizard",'Forests',1,0,3,3,2,{{"Bones",1,1,1},{"Lizard Skin",3,10,1},{"Lizard Mask",1,1,7},{"Lizard Body",1,1,7},{"Lizard Legs",1,1,7},{"Lizard Gloves",1,1,7},{"Lizard Boots",1,1,7},{"Lizard Sigil",1,1,1000}}},
{"Snake",'Forests',2,0,3,0,10,{{"Bones",1,1,1},{"Dotted Green Leaf Seeds",1,1,6},{"Poison",1,1,4},{"Green Leaf Seeds",1,1,31},{"Lime Leaf Seeds",1,1,71},{"Gold Leaf Seeds",1,1,181},{"Snake Sigil",1,1,1000}}},
{"Ants",'Forests',0,0,3,0,5,{{"Ant Needles",3,8,1},{"Dotted Green Leaf Seeds",1,1,6},{"Green Leaf Seeds",1,1,31},{"Lime Leaf Seeds",1,1,71},{"Gold Leaf Seeds",1,1,181},{"Ants Sigil",1,1,1000}}},
{"Wolf",'Forests',3,2,3,0,15,{{"Bones",1,1,1},{"Raw Meat",1,1,1},{"Heart Crystal",1,1,1,true},{"Dotted Green Leaf Seeds",1,1,6},{"Green Leaf Seeds",1,1,31},{"Lime Leaf Seeds",1,1,71},{"Gold Leaf Seeds",1,1,181},{"Wolf Sigil",1,1,1000}}},
{"Thief",'Forests',3,4,4,0,10,{{"Bones",1,1,1},{"Coins",1,100,2},{"Iron Dagger",1,1,5},{"Dotted Green Leaf Seeds",1,1,6},{"Green Leaf Seeds",1,1,31},{"Lime Leaf Seeds",1,1,71},{"Gold Leaf Seeds",1,1,181},{"Coins",100000,200000,251},{"Thief Sigil",1,1,1000}}},
{"Forest Ent",'Forests',3,4,3,0,10,{{"Strange Leaf",1,1,1},{"Logs",20,60,1},{"Strange Leaf Fertilizer",1,1,4,true},{"Oak Logs",10,50,2},{"Willow Logs",5,25,5},{"Maple Logs",3,15,10},{"Tree Seeds",1,1,11},{"Oak Tree Seeds",1,1,26},{"Willow Tree Seeds",1,1,51},{"Maple Tree Seeds",1,1,71},{"Forest Ent Sigil",1,1,1000}}},


--Caves
|]] .. enemy[3] .. [[
{"Bear",'Caves',3,6,3,0,10,{{"Bones",1,1,1},{"Bear Fur",1,3,1},{"Train Cart Piece 1",1,1,2,true},{"Bear Mask",1,1,11},{"Bear Body",1,1,11},{"Bear Legs",1,1,11},{"Bear Gloves",1,1,11},{"Bear Boots",1,1,11},{"Bear Sigil",1,1,1000}}},
{"Goblin",'Caves',3,6,3,0,10,{{"Bones",1,1,1},{"Lantern",1,1,2},{"Train Cart Piece 2",1,1,2,true},{"Goblin Mask",1,1,3},{"Stone",1000,5000,8},{"Copper",800,2000,12},{"Iron",500,1000,14},{"Silver",250,350,16},{"Gold",25,60,23},{"Goblin Sigil",1,1,1000}}},
{"Bat",'Caves',3,6,5,0,4,{{"Bones",1,1,1},{"Bat Skin",1,3,1},{"Train Cart Piece 3",1,1,2,true},{"Bat Mask",1,1,11},{"Bat Body",1,1,11},{"Bat Legs",1,1,11},{"Bat Gloves",1,1,11},{"Bat Boots",1,1,11},{"Bat Caves Sigil",1,1,1000}}},
{"Skeleton",'Caves',3,7,3,3,6,{{"Bones",5,10,1},{"Skeleton Sword",1,1,3},{"Skeleton Shield",1,1,3},{"Train Cart Piece 4",1,1,2,true},{"Skull",1,1,10,true},{"Bone Amulet",1,1,20},{"Promethium",1,1,51},{"Skeleton Sigil",1,1,1000}}},


--Volcano
|]] .. enemy[4] .. [[
{"Fire Hawk",'Volcano',3,8,4,3,25,{{"Ashes",1,1,1},{"Fire Feathers",5,15,1},{"Raw Bird Meat",1,1,1},{"Fire Hawk Sigil",1,1,1000}}},
{"Fire Snake",'Volcano',2,0,3,3,12,{{"Ashes",1,1,1},{"Fire Spellscroll",1,1,1,true},{"Fire Snake Sigil",1,1,1000}}},
{"Fire Golem",'Volcano',2,0,3,6,12,{{"Ashes",1,1,1},{"Bomb",1,1,4},{"Fire Golem Sigil",1,1,1000}}},
{"Fire Witch",'Volcano',3,3,3,0,30,{{"Ashes",1,1,1},{"String",3,8,1},{"Fire Crystal",1,1,1,true},{"Heart Crystal",1,1,5,true},{"Fire Witch Sigil",1,1,1000}}},


--Northen Fields
|]] .. enemy[5] .. [[
{"Ice Hawk",'Northen Fields',3,5,4,0,80,{{"Ice Bones",1,1,1},{"Ice Feathers",5,15,1},{"Raw Bird Meat",1,1,1},{"Pine Logs",5,25,2},{"Pine Tree Seeds",1,1,14},{"Ice Hawk Sigil",1,1,1000}}},
{"Ice Golem",'Northen Fields',8,8,3,0,45,{{"Ice Bones",1,1,1},{"Wooden Arrows",5,15,1},{"Fire Arrows",5,15,2},{"Ice Arrows",5,15,3},{"Pine Logs",5,25,2},{"Long Bow Frame",1,1,10},{"Pine Tree Seeds",1,1,14},{"Ice Golem Sigil",1,1,1000}}},
{"Ice Witch",'Northen Fields',8,8,3,0,60,{{"Ice Bones",1,1,1},{"String",3,8,1},{"Pine Logs",5,25,2},{"Heart Crystal",1,1,7,true},{"Mana Crystal",1,1,7,true},{"Pine Tree Seeds",1,1,14},{"Ice Witch Sigil",1,1,1000}}},
{"Yeti",'Northen Fields',3,7,3,6,120,{{"Ice Bones",1,1,1},{"Pine Logs",20,100,4},{"Ice Crystal",1,1,7,true},{"Pine Tree Seeds",2,3,14},{"Club",1,1,15},{"Yeti Sigil",1,1,1000}}},


--Haunted Mansion
|]] .. enemy[6] .. [[
{"Ghost",'Haunted Mansion',10,9,3,10,30,{{"Ghost Essence",100,500,1},{"Green Gaurdian Key",1,1,20},{"Ghost Hm Sigil",1,1,1000}}},
{"Grandma",'Haunted Mansion',6,10,1,0,30,{{"Ghost Essence",100,500,1},{"Heal Upgrade Spellscroll",1,1,5,true},{"Green Gaurdian Key",1,1,20},{"Grandma Sigil",1,1,1000}}},
{"Exorcist",'Haunted Mansion',0,0,3,0,70,{{"Ghost Essence",100,500,1},{"Oxygen Mask",1,1,4,true},{"Oxygen Tank",1,1,4,true},{"Green Gaurdian Key",1,1,20},{"Exorcist Sigil",1,1,1000}}},
{"Reaper",'Haunted Mansion',10,25,3,10,90,{{"Ghost Essence",1000,2000,1},{"Green Gaurdian Key",1,1,10},{"Scythe",1,1,100},{"Reaper Hood",1,1,100},{"Reaper Body",1,1,100},{"Reaper Skirt",1,1,100},{"Reaper Boots",1,1,100},{"Reaper Gloves",1,1,100},{"Reaper Sigil",1,1,1000}}},


--Beach
|}
{"Shark",'Beach',20,15,3,9,60,{{"Bones",1,1,1},{"Seaweed",1,6,1},{"Super Bait",1,1,3},{"Raw Bloated Shark",1,1,6},{"Flippers",1,1,10},{"Shark Tooth",1,1,10},{"Bait",2,5,20},{"Mega Bait",1,1,60},{"Crystal Leaf",1,10,60},{"Shark Sigil",1,1,1000}}},
{"Sea Soldier",'Beach',25,16,3,30,50,{{"Bones",1,1,1},{"Seaweed",1,6,1},{"Super Bait",1,1,3},{"Flippers",1,1,10},{"Trident",1,1,10},{"Sea Helmet",1,1,40},{"Mega Bait",1,1,60},{"Crystal Leaf",1,10,60},{"Sea Soldier Sigil",1,1,1000}}},
{"Puffer Fish",'Beach',10,20,3,0,50,{{"Bones",1,1,1},{"Puffer Needles",3,8,1},{"Seaweed",1,6,1},{"Super Bait",1,1,3},{"Flippers",1,1,10},{"Mega Bait",1,1,60},{"Crystal Leaf",1,10,60},{"Puffer Fish Sigil",1,1,1000}}},
{"Saltwater Crocodile",'Beach',10,20,3,30,300,{{"Big Bones",1,1,1},{"Seaweed",1,6,1},{"Crocodile Hide",1,3,1},{"Super Bait",1,1,3},{"Flippers",1,1,10},{"Crocodile Mask",1,1,30},{"Crocodile Body",1,1,30},{"Crocodile Legs",1,1,30},{"Crocodile Gloves",1,1,30},{"Crocodile Boots",1,1,30},{"Mega Bait",1,1,60},{"Crystal Leaf",1,10,60},{"Saltwater Crocodile Sigil",1,1,1000}}},


--Blood Fields
]] .. p.enemy_table(enemy)
{"Blood Chicken",'Blood Fields',15,10,3,10,100,{{"Blood Chicken Foot",1,1,1},{"Blood Bones",1,1,1},{"Raw Chicken",2,4,1},{"Feathers",15,30,1},{"Field Tablette 1",1,1,4},{"Dotted Green Leaf",1,4,3},{"Egg",1,1,6},{"Green Leaf",1,4,10},{"Lime Leaf",1,4,25},{"Gold Leaf",1,4,96},{"Chicken Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
end
{"Blood Rat",'Blood Fields',30,8,3,14,100,{{"Blood Rat Tail",1,1,1},{"Blood Bones",1,1,1},{"Cheese",3,3,2},{"Field Tablette 2",1,1,4},{"Dotted Green Leaf",3,6,3},{"Green Leaf",3,6,10},{"Lime Leaf",3,6,25},{"Gold Leaf",3,6,96},{"Rat Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
function p.enemy_zone_tabber(enemies)
{"Blood Spider",'Blood Fields',30,8,4,0,20,{{"Blood Spider Legs",1,1,1},{"String",1,4,1},{"Dotted Green Leaf",3,6,3},{"Field Tablette 3",1,1,4},{"Green Leaf",3,6,10},{"Lime Leaf",3,6,25},{"Gold Leaf",3,6,96},{"Spider Fields Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
    result = [[{{#tag:tab|
{"Blood Bee",'Blood Fields',20,20,5,0,20,{{"Blood Bee Wings",1,1,1},{"Honey",4,8,1},{"Stinger",1,2,1},{"Field Tablette 4",1,1,4},{"Bee Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
]]
{"Blood Lizard",'Blood Fields',15,10,3,15,100,{{"Blood Lizard Head",1,1,1},{"Blood Bones",1,1,1},{"Lizard Skin",3,10,1},{"Field Tablette 5",1,1,4},{"Lizard Mask",1,1,6},{"Lizard Body",1,1,6},{"Lizard Legs",1,1,6},{"Lizard Gloves",1,1,6},{"Lizard Boots",1,1,6},{"Lizard Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
    for _, e in ipairs(enemies) do
 
        result = result .. e[1] .. [[=
--Blood Forests
]] .. p.enemy_stats(e):gsub('|', '{{!}}') .. [[
{"Blood Snake",'Blood Forests',20,16,3,0,100,{{"Blood Bones",1,1,1},{"Blood Snake Head",1,1,1},{"Forest Tablette 1",1,1,4},{"Dotted Green Leaf Seeds",1,5,6},{"Poison",1,3,5},{"Green Leaf Seeds",1,5,31},{"Lime Leaf Seeds",1,5,71},{"Gold Leaf Seeds",1,5,181},{"Snake Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,2000},{"Dragon Shield Right Half",1,1,2000},{"Blood Moon Sigil",1,1,10000}}},
{{!}}-{{!}}
{"Blood Ants",'Blood Forests',5,20,3,0,100,{{"Ant Needles",6,20,1},{"Blood Ant Remains",1,1,1},{"Forest Tablette 2",1,1,4},{"Dotted Green Leaf Seeds",1,5,6},{"Green Leaf Seeds",1,5,31},{"Lime Leaf Seeds",1,5,71},{"Gold Leaf Seeds",1,5,181},{"Ants Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,1000},{"Dragon Shield Right Half",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
]]
{"Blood Wolf",'Blood Forests',20,16,3,0,100,{{"Blood Bones",1,1,1},{"Blood Wolf Paw",1,1,1},{"Raw Meat",1,5,1},{"Heart Crystal",1,1,1,true},{"Forest Tablette 3",1,1,4},{"Dotted Green Leaf Seeds",1,5,6},{"Green Leaf Seeds",1,5,31},{"Lime Leaf Seeds",1,5,71},{"Gold Leaf Seeds",1,5,181},{"Wolf Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,1000},{"Dragon Shield Right Half",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
    end
{"Blood Forest Ent",'Blood Forests',30,16,3,20,100,{{"Blood Logs",1,1,1},{"Strange Leaf",1,5,1},{"Stranger Leaf",1,1,1},{"Logs",100,300,1},{"Oak Logs",50,200,2},{"Forest Tablette 4",1,1,4},{"Willow Logs",25,100,5},{"Maple Logs",15,80,10},{"Tree Seeds",3,3,11},{"Oak Tree Seeds",3,3,26},{"Willow Tree Seeds",3,3,51},{"Maple Tree Seeds",3,3,71},{"Stardust Tree Seeds",3,3,100},{"Forest Ent Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,1000},{"Dragon Shield Right Half",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
    return result:sub(1, -13) .. [[}}
{"Blood Thief",'Blood Forests',30,30,4,0,50,{{"Blood Bones",1,1,1},{"Blood Thief Skull",1,1,1},{"Coins",100,1000,2},{"Forest Tablette 5",1,1,4},{"Iron Dagger",1,3,5},{"Dotted Green Leaf Seeds",1,5,6},{"Green Leaf Seeds",1,5,31},{"Thiefs Mask",1,1,51},{"Lime Leaf Seeds",1,5,71},{"Gold Leaf Seeds",1,5,181},{"Coins",100000,2000000,251},{"Thief Sigil",1,1,1000},{"Dragon Shield Left Half",1,1,1000},{"Dragon Shield Right Half",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
]]
 
end
--Blood Caves
function p.enemy_all_tabber()
{"Blood Bear",'Blood Caves',20,16,3,7,100,{{"Blood Bones",1,1,1},{"Blood Bear Paw",1,1,1},{"Bear Fur",1,6,1},{"Cave Tablette 1",1,1,4},{"Bear Mask",1,2,7},{"Bear Body",1,2,7},{"Bear Legs",1,2,7},{"Bear Gloves",1,2,7},{"Bear Boots",1,2,7},{"Dragon Shield Left Half",1,1,700},{"Dragon Shield Right Half",1,1,700},{"Bear Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
    result = [[<tabs name =
{"Blood Goblin",'Blood Caves',20,17,1,28,80,{{"Blood Bones",1,1,1},{"Blood Goblin Fingers",1,1,1},{"Lantern",1,1,2},{"Ring Of Light",1,1,3},{"Blood Goblin Mask",1,1,3},{"Cave Tablette 2",1,1,4},{"Stone",1000,10000,6},{"Copper",800,5000,9},{"Iron",500,2000,10},{"Silver",250,700,14},{"Gold",25,100,18},{"Dragon Shield Left Half",1,1,700},{"Dragon Shield Right Half",1,1,700},{"Goblin Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
]]
{"Blood Bat",'Blood Caves',10,25,6,0,50,{{"Blood Bones",1,1,1},{"Blood Bat Wing",1,1,1},{"Bat Skin",1,6,1},{"Cave Tablette 3",1,1,4},{"Bat Mask",1,2,7},{"Bat Body",1,2,7},{"Bat Legs",1,2,7},{"Bat Gloves",1,2,7},{"Bat Boots",1,2,7},{"Dragon Shield Left Half",1,1,700},{"Dragon Shield Right Half",1,1,700},{"Bat Caves Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
    area = [[]]
{"Blood Skeleton",'Blood Caves',40,21,3,0,100,{{"Blood Bones",3,6,1},{"Blood Skeleton Ribcage",1,1,1},{"Skeleton Sword",1,2,2},{"Skeleton Shield",1,2,2},{"Cave Tablette 4",1,1,4},{"Bone Amulet",1,2,10},{"Promethium",1,10,31},{"Dragon Shield Left Half",1,1,700},{"Dragon Shield Right Half",1,1,700},{"Skeleton Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
    enemies = {}
 
    for _, e in ipairs(edb) do
--Blood Volcano
        if e[2] ~= area and area ~= [[]] then
{"Blood Fire Snake",'Blood Volcano',10,20,3,30,300,{{"Ashes",2,2,1},{"Blood Fire Snake Tongue",1,1,1},{"Fire Upgrade Spellscroll",1,1,4,true},{"Volcano Tablette 1",1,1,4},{"Dragon Shield Left Half",1,1,500},{"Dragon Shield Right Half",1,1,500},{"Fire Snake Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
            result = result .. e[2] .. [[ > ]] .. [[=
{"Blood Fire Hawk",'Blood Volcano',10,21,5,30,300,{{"Ashes",2,2,1},{"Blood Fire Hawk Wing",1,1,1},{"Fire Feathers",15,30,1},{"Raw Bird Meat",2,4,1},{"Volcano Tablette 2",1,1,4},{"Dragon Shield Left Half",1,1,500},{"Dragon Shield Right Half",1,1,500},{"Fire Hawk Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
]] .. p.enemy_zone_tabber(enemies) .. [[|-|
{"Blood Fire Golem",'Blood Volcano',0,0,3,30,160,{{"Ashes",2,2,1},{"Blood Fire Golem Head",1,1,1},{"Volcano Tablette 3",1,1,4},{"Bomb",1,1,4},{"Tnt",1,1,10},{"Dragon Shield Left Half",1,1,500},{"Dragon Shield Right Half",1,1,500},{"Fire Golem Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
]]
{"Blood Fire Witch",'Blood Volcano',15,21,3,35,200,{{"Ashes",2,2,1},{"String",15,30,1},{"Blood Fire Witch Web",1,1,1},{"Volcano Tablette 4",1,1,4},{"Reflect Upgrade Spellscroll",1,1,6,true},{"Dragon Shield Left Half",1,1,500},{"Dragon Shield Right Half",1,1,500},{"Fire Witch Sigil",1,1,1000},{"Blood Moon Sigil",1,1,10000}}},
            enemies = {}
 
        end
--Special
        table.insert(enemies, e)
{"Gem Goblin",'Special',0,0,0,0,100,{{"Bones",1,1,1},{"Gem Bag",1,3,1},{"Gem Goblin Sigil",1,1,1000}}},
        area = e[2]
{"Blood Gem Goblin",'Special',0,0,0,0,100,{{"Blood Bones",1,1,1},{"Gem Bag",3,7,1},{"Dragon Shield Left Half",1,1,100},{"Dragon Shield Right Half",1,1,100},{"Gem Goblin Sigil",1,1,1000}}},
    end
{"Evil Pirate",'Special',50,31,0,70,100,{{"Bones",1,1,1},{"Iron Cannonball",1,2,1},{"Sextant",1,1,4,true},{"Cannon Wheels",1,1,10},{"Cannon Barrel",1,1,10},{"Cannon Base",1,1,10},{"Cannonball Mould",1,1,10},{"Random Treasure Chest",1,1,20},{"Cannon",1,1,500}}},
    return result .. area .. [[=
 
]] .. p.enemy_zone_tabber(enemies) .. [[</tabs>
--Event
]]
{"Zombie Purple",'Event','?','?','?','?','?',{{"Bones",1,1,1},{"Maggots",1,10,1},{"Zombie Left Foot Purple",1,1,5},{"Zombie Right Foot Purple",1,1,5},{"Zombie Right Arm Purple",1,1,5},{"Zombie Left Arm Purple",1,1,5}}},
end
{"Zombie Green",'Event','?','?','?','?','?',{{"Bones",1,1,1},{"Maggots",1,10,1},{"Zombie Left Foot Green",1,1,5},{"Zombie Right Foot Green",1,1,5},{"Zombie Right Arm Green",1,1,5},{"Zombie Left Arm Green",1,1,5}}},
function p.enemy_page_before(name)
{"Zombie Red",'Event','?','?','?','?','?',{{"Bones",1,1,1},{"Maggots",1,10,1},{"Zombie Left Foot Red",1,1,5},{"Zombie Right Foot Red",1,1,5},{"Zombie Right Arm Red",1,1,5},{"Zombie Left Arm Red",1,1,5}}},
    enemy = nil
{"Zombie Blue",'Event','?','?','?','?','?',{{"Bones",1,1,1},{"Maggots",1,10,1},{"Zombie Left Foot Blue",1,1,5},{"Zombie Right Foot Blue",1,1,5},{"Zombie Right Arm Blue",1,1,5},{"Zombie Left Arm Blue",1,1,5}}},
    if type(name) == 'table' then
 
        enemy = name
--Castle
        name = name[1]
{"Castle Ants",'Castle','?','?','?','?','?',{{"Castle Key 3",1,1,1},{"Ant Needles",6,20,1},{"Dotted Green Leaf Seeds",1,5,1},{"Green Leaf Seeds",1,5,1},{"Lime Leaf Seeds",1,5,1},{"Gold Leaf Seeds",1,5,1},{"Ants Sigil",1,1,1000}}},
    else
{"Castle Golem",'Castle','?','?','?','?','?',{{"Stone",100000,300000,1},{"Red Mushroom",1,1,1},{"Mega Bomb",1,1,1},{"Heavy Rock",1,1,1}}},
        for _, e in ipairs(edb) do
{"Castle Saltwater Crocodile",'Castle',20,20,3,52,500,{{"Big Bones",1,1,1},{"Castle Key 5",1,1,1},{"Frozen Crocodile Hide",1,3,1},{"Frozen Crocodile Mask",1,1,7},{"Frozen Crocodile Body",1,1,7},{"Frozen Crocodile Legs",1,1,7},{"Frozen Crocodile Gloves",1,1,7},{"Frozen Crocodile Boots",1,1,7},{"Saltwater Crocodile Sigil",1,1,1000}}},
            if e[1] == name then
{"Castle Yeti",'Castle',20,24,3,15,600,{{"Ice Bones",10,10,1},{"Pine Logs",200,400,1},{"Castle Key 6",1,1,1},{"Yeti Sigil",1,1,1000}}}
                enemy = e
}
                break
            end
        end
    end
    return [[
{{Infobox Monsters
| title= ]] .. enemy[1] .. [[
| image= ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Icon.png'))  .. [[
| imagewidth= 90
| health= ]] .. enemy[7] .. [[
| damage= ]] .. enemy[3] .. [[
| accuracy= ]] .. enemy[4] .. [[
| speed= ]] .. enemy[5] .. [[
| defence= ]] .. enemy[6] .. [[
| areas= ]] .. enemy[2] .. [[
}}]]
end
function p.enemy_page_after(name)
    enemy = nil
    if type(name) == 'table' then
        enemy = name
        name = name[1]
    else
        for _, e in ipairs(edb) do
            if e[1] == name then
                enemy = e
                break
            end
        end
    end
    return [[{{Navbox Monsters}}
]] .. '[[Category:' .. enemy[2] .. ']] [[Category:Monsters]]' .. [[
]]
end
function p.enemy_page(name)
    enemy = nil
    for _, e in ipairs(edb) do
        if e[1] == name then
            enemy = e
            break
        end
    end
    return p.enemy_page_before(enemy) .. [[
== Loot ==
]] .. p.enemy_table(enemy) .. p.enemy_page_after(enemy)
end
function p.tep(frame)
    return p.enemy_page(frame.args[1] or frame:getParent():getTitle())
end
function p.tepb(frame)
    return p.enemy_page_before(frame.args[1] or frame:getParent():getTitle())
end
function p.tepa(frame)
    return p.enemy_page_after(frame.args[1] or frame:getParent():getTitle())
end
function p.tet(frame)
    name = frame.args[1] or frame:getParent():getTitle()
    for _, e in ipairs(edb) do
        if e[1] == name then
            return [[
== Loot ==
]] .. p.enemy_table(e)
        end
    end
end
function p.tes(frame)
    name = frame.args[1] or frame:getParent():getTitle()
    for _, e in ipairs(edb) do
        if e[1] == name then
            return p.enemy_stats(e)
        end
    end
end
return p

Revision as of 17:03, 4 December 2023

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

u = require("Module:Util")
edb = require("Module:Enemy_DB")
lt = require("Module:Loot_Table")
local p = {}
function round(n)
    return n + 0.5 - (n + 0.5) % 1
end
function p.enemy_table(enemy)
    result = [[]]
    for _, e in ipairs(enemy[8]) do
        -- TODO: refactor 1 - 1 -> 1 conversion to loot table module if possible
        result = result .. lt.ltr({args= {e[1], (e[2] == e[3] and u.c(e[2]) or (u.c(e[2]) .. ' - ' .. u.c(e[3]))), e[4], e[6], e[5] and enemy[2], image=e['image']}})
    end
    return lt.lt({args= {result, area=enemy[2]}}) .. [[
]]
end
function p.enemy_stats(enemy)
    return [[{| class="loot-table"
!Enemy
]] .. '![[File: Heart.png|20px]]\n![[File: Attack.png|20px]]\n![[File: Accuracy.png|20px]]\n![[File: Speed.png|20px]]\n![[File: Defence.png|20px]]' .. [[

|-
|]] .. '[[' .. [[File: ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Icon.png')) .. [[|40px|link=]] .. enemy[1] .. ']]' .. [[

|]] .. enemy[1] .. [[

|]] .. enemy[7] .. [[

|]] .. enemy[2] .. [[

|]] .. enemy[3] .. [[

|]] .. enemy[4] .. [[

|]] .. enemy[5] .. [[

|]] .. enemy[6] .. [[

|}

]] .. p.enemy_table(enemy)
end
function p.enemy_zone_tabber(enemies)
    result = [[{{#tag:tab|
]]
    for _, e in ipairs(enemies) do
        result = result .. e[1] .. [[=
]] .. p.enemy_stats(e):gsub('|', '{{!}}') .. [[
{{!}}-{{!}}
]]
    end
    return result:sub(1, -13) .. [[}}
]]
end
function p.enemy_all_tabber()
    result = [[<tabs name =
]]
    area = [[]]
    enemies = {}
    for _, e in ipairs(edb) do
        if e[2] ~= area and area ~= [[]] then
            result = result .. e[2] .. [[ > ]] .. [[=
]] .. p.enemy_zone_tabber(enemies) .. [[|-|
]]
            enemies = {}
        end
        table.insert(enemies, e)
        area = e[2]
    end
    return result .. area .. [[=
]] .. p.enemy_zone_tabber(enemies) .. [[</tabs>
]]
end
function p.enemy_page_before(name)
    enemy = nil
    if type(name) == 'table' then
        enemy = name
        name = name[1]
    else
        for _, e in ipairs(edb) do
            if e[1] == name then
                enemy = e
                break
            end
        end
    end
    return [[
{{Infobox Monsters
| title= ]] .. enemy[1] .. [[
| image= ]] .. (enemy['raw_image'] and enemy['raw_image'] or ((enemy['image'] or enemy[1]:gsub(' ', ''):gsub('%(', ''):gsub('%)', '')) .. 'Icon.png'))  .. [[
| imagewidth= 90
| health= ]] .. enemy[7] .. [[
| damage= ]] .. enemy[3] .. [[
| accuracy= ]] .. enemy[4] .. [[
| speed= ]] .. enemy[5] .. [[
| defence= ]] .. enemy[6] .. [[
| areas= ]] .. enemy[2] .. [[
}}]]
end
function p.enemy_page_after(name)
    enemy = nil
    if type(name) == 'table' then
        enemy = name
        name = name[1]
    else
        for _, e in ipairs(edb) do
            if e[1] == name then
                enemy = e
                break
            end
        end
    end
    return [[{{Navbox Monsters}}
]] .. '[[Category:' .. enemy[2] .. ']] [[Category:Monsters]]' .. [[
]]
end
function p.enemy_page(name)
    enemy = nil
    for _, e in ipairs(edb) do
        if e[1] == name then
            enemy = e
            break
        end
    end
    return p.enemy_page_before(enemy) .. [[
== Loot == 
]] .. p.enemy_table(enemy) .. p.enemy_page_after(enemy)
end
function p.tep(frame)
    return p.enemy_page(frame.args[1] or frame:getParent():getTitle())
end
function p.tepb(frame)
    return p.enemy_page_before(frame.args[1] or frame:getParent():getTitle())
end
function p.tepa(frame)
    return p.enemy_page_after(frame.args[1] or frame:getParent():getTitle())
end
function p.tet(frame)
    name = frame.args[1] or frame:getParent():getTitle()
    for _, e in ipairs(edb) do
        if e[1] == name then
            return [[
== Loot == 
]] .. p.enemy_table(e)
        end
    end
end
function p.tes(frame)
    name = frame.args[1] or frame:getParent():getTitle()
    for _, e in ipairs(edb) do
        if e[1] == name then
            return p.enemy_stats(e)
        end
    end
end
return p