Module:Cargo

From Phantasy Star Universe Clementine

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

--[[

Takes a series of ELEMENT_status_ids and corresponding ELEMENT_status_levels and returns unique strings, delineated by a line break.
Supports SEs that don't exist. Depends on Template:Status Effect.

]]

local p = {}

function p.status_effect(frame)
   unique_statuses = {}
   result = ""
   elements = {'neutral', 'fire', 'ice', 'lightning', 'ground', 'light', 'dark'}

   for i=1,table.getn(elements) do
      if(tonumber(frame.args[elements[i] .. "_status_id"]) and tonumber(frame.args[elements[i] .. "_status_level"])) then

         --check if in table
         in_table = false
         for j=1, table.getn(unique_statuses) do
            if((frame.args[elements[i] .. "_status_id"] == unique_statuses[j]["id"]) and (frame.args[elements[i] .. "_status_level"] == unique_statuses[j]["level"])) then
               in_table = true
               break;
            end
         end

         if(not in_table) then
            se = {}
            se['id'] = frame.args[elements[i] .. "_status_id"]
            se['level'] = frame.args[elements[i] .. "_status_level"]
            table.insert(unique_statuses, se)
         end
      end
   end

   local textonly = "";
   if(frame.args["text_only"]) then
       textonly = 1
   end
   for i=1, table.getn(unique_statuses) do
        status = frame:expandTemplate{ title = 'Status Effect', args = { unique_statuses[i]["id"], ['text only'] = textonly } }

        if(tonumber(unique_statuses[i]["id"]) > 0) then
            status = status  .. " LV" .. unique_statuses[i]["level"]
        end

        if(result == "") then
            result = status
        else
            result = result .. "<br />" .. status
        end
   end
    
   return result;
end

return p