Module:ListTrapRecipes

From Outward Wiki
Jump to navigation Jump to search
Template-info.svg Documentation

Module used to list traps.

Can optionally supply a basetrap argument to filter traps to Tripwire Trap or Pressure Plate Trap.

Usage

{{#invoke:ListTrapRecipes|main|basetrap=}}
Trap Trap type Armed With Effects
Bleed Trap Tripwire Trap Axes
Insect Husk
Predator Bones
Swords
Bludgeon Trap Tripwire Trap Maces
Gauntlets
Ethereal Trap Pressure Plate Trap Ghost's Eye
Occult Remains
Shark Cartilage
Spiritual Varnish
With Pressure Plate Expertise:
Flash Trap Pressure Plate Trap Firefly Powder
With Pressure Plate Expertise:
Frost Trap Pressure Plate Trap Ice Varnish
Blue Sand
Cold Stone
With Pressure Plate Expertise:
  • + 40 Frost Frost damage (total 120 Frost)
Improved Bleed Trap Tripwire Trap Coralhorn Antler
Shark Cartilage
Thorny Cartilage
Improved Incendiary Trap Pressure Plate Trap Explorer Lantern
Fire Varnish
Fire Stone
Obsidian Shard
With Pressure Plate Expertise:
Improved Spike Trap Tripwire Trap Assassin Tongue
Beast Golem Scraps
Spikes – Palladium
Improved Toxic Trap Pressure Plate Trap Dark Varnish
Poison Varnish
Phytosaur Horn
With Pressure Plate Expertise:
Incendiary Trap Pressure Plate Trap Charge – Incendiary
Old Lantern
With Pressure Plate Expertise:
Nerve Gas Trap Pressure Plate Trap Charge – Nerve Gas
Creates an area-of-effect cloud, which inflicts the effects below every 0.5 seconds for 4 seconds (total 8 times):With Pressure Plate Expertise:
Sapped Trap Pressure Plate Trap Arcane Dampener
With Pressure Plate Expertise:
Shock Trap Pressure Plate Trap Bolt Varnish
Gold-Lich Mechanism
With Pressure Plate Expertise:
Spike Trap Tripwire Trap Spikes – Iron
Polearms
Spears
Toxic Trap Pressure Plate Trap Charge – Toxic
Miasmapod
Boiled Miasmapod
With Pressure Plate Expertise:
Wood Spike Trap Tripwire Trap Spikes – Wood
Primitive Club
Quarterstaff
Trap Armed With Effects
Ethereal Trap Ghost's Eye
Occult Remains
Shark Cartilage
Spiritual Varnish
With Pressure Plate Expertise:
Flash Trap Firefly Powder
With Pressure Plate Expertise:
Frost Trap Ice Varnish
Blue Sand
Cold Stone
With Pressure Plate Expertise:
  • + 40 Frost Frost damage (total 120 Frost)
Improved Incendiary Trap Explorer Lantern
Fire Varnish
Fire Stone
Obsidian Shard
With Pressure Plate Expertise:
Improved Toxic Trap Dark Varnish
Poison Varnish
Phytosaur Horn
With Pressure Plate Expertise:
Incendiary Trap Charge – Incendiary
Old Lantern
With Pressure Plate Expertise:
Nerve Gas Trap Charge – Nerve Gas
Creates an area-of-effect cloud, which inflicts the effects below every 0.5 seconds for 4 seconds (total 8 times):With Pressure Plate Expertise:
Sapped Trap Arcane Dampener
With Pressure Plate Expertise:
Shock Trap Bolt Varnish
Gold-Lich Mechanism
With Pressure Plate Expertise:
Toxic Trap Charge – Toxic
Miasmapod
Boiled Miasmapod
With Pressure Plate Expertise:
Trap Armed With Effects
Bleed Trap Axes
Insect Husk
Predator Bones
Swords
Bludgeon Trap Maces
Gauntlets
Improved Bleed Trap Coralhorn Antler
Shark Cartilage
Thorny Cartilage
Improved Spike Trap Assassin Tongue
Beast Golem Scraps
Spikes – Palladium
Spike Trap Spikes – Iron
Polearms
Spears
Wood Spike Trap Spikes – Wood
Primitive Club
Quarterstaff

local p = {}

function p.main(frame)
	if frame == mw.getCurrentFrame() then
		args = require('Module:ProcessArgs').merge(true)
	else
		frame = mw.getCurrentFrame()
	end	
	
	local cargoWhere = ''
	if (args.basetrap) then
		cargoWhere = 'baseTrap = "' .. args.basetrap .. '"'
	end	
	
	local result = mw.ext.cargo.query('TrapRecipes',
		'_pageName,ingredients,basetrap,effects',
		{
			where = cargoWhere,
			orderBy = '_pageName',
			limit = 5000
		}
	)
	
	if not result or #result < 1 then return 'No traps found' end
	
	local out = '{| class="wikitable sortable"\n|-\n'
	
	out = out .. '! Trap !! '
	if not args.basetrap then
		out = out .. 'Trap type !! '
	end
	out = out .. 'Armed With !! Effects\n'
	
	for i,row in ipairs(result) do
		out = out .. '|-\n'
		out = out .. '| [[' .. row._pageName .. ']]'
		if not args.basetrap then
			out = out .. '|| [[' .. row.basetrap .. ']] '
		end
		
		out = out .. '|| '
		local ings = p.split(row.ingredients, ',')
		for _,ing in ipairs(ings) do
			out = out .. '[[' .. ing .. ']]<br>'
		end
		
		out = out .. ' || ' ..  row.effects
		out = out .. '\n'
	end
	
	out = out .. '|}'
	
	return frame:preprocess(out)
end

-- splits the input string into a table by the provided seperator
function p.split(inputstr, sep)
    local t={}
    for str in string.gmatch(inputstr .. ',', "([^"..sep.."]+)") do
        table.insert(t, str)
    end
    return t
end

return p