K225-BB

From ΔV: Wiki
Revision as of 20:32, 8 July 2024 by Hev (talk | contribs) (created page for BB variant titan)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
A stock AT-K225-BB in the fleet menu

The break-bulk cargo version designed for carrying unprocessed ore reallocates the space of the four front cargo bays to increase the cargo bay capacity. -In-Game Description

local p = {}

local d = require('Module:Data') local dv = require('Module:Data/View') local capiunto = require 'capiunto'

local processedCargoTypes = 6

p.view = {}

p.view['Name'] = dv.title{'key', text='name'} p.view['Make'] = dv.text{'make'}

local nonZero = function(n)

   return n and n ~= 0

end

p.view['Processed cargo'] = {

   format = function(ship)
       local pc  = dv.formatNum(ship.processedCargo, 'kg')
       local pcc = dv.formatNum(ship.processedCargoCombined, 'kg (combined)')
       if nonZero(ship.processedCargo) and nonZero(ship.processedCargoCombined) then
           return pc .. ' + ' .. pcc
       elseif nonZero(ship.processedCargoCombined) then
           return pcc
       elseif nonZero(ship.processedCargo) then
           return pc
       end
   end,
   sortType = 'number',
   sortValue = function(ship)
        return ship.processedCargo * processedCargoTypes + ship.processedCargoCombined
   end

}

p.view['Processed cargo (tons)'] = {

   format = function(ship)
       local pc  = dv.formatNum(ship.processedCargo/1000, 't')
       local pcc = dv.formatNum(ship.processedCargoCombined/1000, 't (combined)')
       if nonZero(ship.processedCargo) and nonZero(ship.processedCargoCombined) then
           return pc .. ' + ' .. pcc
       elseif nonZero(ship.processedCargoCombined) then
           return pcc
       elseif nonZero(ship.processedCargo) then
           return pc
       end
   end,
   sortType = 'number',
   sortValue = function(ship)
        return ship.processedCargo * processedCargoTypes + ship.processedCargoCombined
   end

}

p.view['High-Stress'] = dv.number{'highStress'} p.view['Low-Stress'] = dv.number{'lowStress'} p.view['Drone hardpoints'] = dv.number{'droneHardpoints'} p.view['Docking bays'] = dv.number{'dockingBays'} p.view['Crew'] = dv.number{'crew'} p.view['Engines'] = dv.number{'engines'} p.view['Thrusters'] = dv.number{'thrusters'}

p.view['Dry mass'] = dv.number{'dryMass', unit='kg'}

p.view['Dry mass (tons)'] = {

   format = function(ship)
       local pc  = dv.formatNum(ship.dryMass/1000, 't')
       if nonZero(ship.dryMass) then
           return pc
       elseif nonZero(ship.dryMass) then
           return pc
       end
   end,
   sortType = 'number',
   sortValue = function(ship)
        return ship.drymass
   end

}

p.view['Cargo bay'] = dv.number{'cargoBay', unit='m^3'} p.view['EMP shielding'] = dv.number{'empShielding', unit='MJ', omitZero=true} p.view['New price'] = dv.number{'priceNew', unit='E$'} p.view['Stripped hull price'] = dv.number{'hullValue', unit='E$'}

p.view['Hull Width'] = dv.number{'width', unit='m'} p.view['Hull Length'] = dv.number{'length', unit='m'} p.view['Min. Cargo Bay Width'] = dv.number{'minBayWidth', unit='m'}

p.view['Variant'] = dv.text{'variant'}

for k,v in pairs(p.view) do

   v.heading = v.heading or k

end

p.infoboxRows = {

   'Make',
   'High-Stress', 'Low-Stress', 'Drone hardpoints', 'Docking bays', 'Crew',
   'Dry mass', 'Cargo bay', 'Processed cargo',
   'New price', 
   'Hull Length', 
   'Hull Width', 
   'Min. Cargo Bay Width'

}

p.infobox = function(f)

   local key = mw.text.trim(f.args[1])
   local data = mw.loadData('Module:Ships/Data')
   data = data[key]
   local cap = capiunto.create{title=p.view.Name.format(data)}
   if f.args.image then
       cap:addImage(f.args.image, f.args.caption)
   end
   for i,viewKey in ipairs(p.infoboxRows) do
       local view = p.view[viewKey]
       local dataPoint = view.format(data)
       -- Skip zeros
       if view.sortType == 'number' then
           local sortValue = view.sortValue(data)
           if sortValue == 0 then
               dataPoint = nil
           end
       end
       if dataPoint then
           cap:addRow(view.heading, dataPoint)
       end
   end
   return cap

end


p.defaultColumns = {

   'Name',
   'High-Stress', 'Low-Stress', 'Drone hardpoints', 'Docking bays', 'Crew',
   'Dry mass', 'Processed cargo',
   'Engines', 'EMP shielding', 'New price', 
   'Hull Length', 
   'Hull Width', 
   'Min. Cargo Bay Width',
   'Variant'

}

p.positionalArgs = function(f)

   local posArgs = {}
   for i,posArg in ipairs(f.args) do
       -- positional arguments don't get trimmed
       table.insert(posArgs, mw.text.trim(posArg))
   end
   return posArgs

end

p.list = function(f)

   local columns = p.positionalArgs (f)
   if table.getn(columns) == 0 then
       columns = p.defaultColumns
   end


   local data = mw.loadData('Module:Ships/Data')
   data = d.sort(data, {
       d.on(d.path{'baseModelData', 'hullValue'}, d.asc),
       d.on(d.path{'baseModelData', 'name'}, d.asc),
       d.on(d.path{'isVariant'}, d.asc),
       d.on(d.path{'hullValue'}, d.asc),
       d.on(d.path{'name'}, d.asc),
   })
   return dv.displayTable(data, p.view, columns)

end

p.variants = function(f)

   local posArgs = p.positionalArgs(f)
   local baseModel = table.remove(posArgs, 1)
   local columns = posArgs
   if table.getn(columns) == 0 then
       columns = p.defaultColumns
   end
   local data = mw.loadData('Module:Ships/Data')
   data = d.filter(data, function (ship)
        return ship.baseModel == baseModel
   end)
   data = d.sort(data, {
       d.on(d.path{'isVariant'}, d.asc),
       d.on(d.path{'hullValue'}, d.asc),
       d.on(d.path{'name'}, d.asc),
   })
   return dv.displayTable(data, p.view, columns)

end

p.minInfoboxRows = {

   'High-Stress', 'Low-Stress', 'Drone hardpoints', 'Docking bays', 'Crew',
   'Dry mass (tons)', 'Cargo bay', 'Processed cargo (tons)',
   'New price'

}

p.minInfobox = function(f)

   local key = mw.text.trim(f.args[1])
   local data = mw.loadData('Module:Ships/Data')
   data = data[key]
   local cap = capiunto.create{title=p.view.Name.format(data)}
   if f.args.image then
       cap:addImage(f.args.image, f.args.caption)
   end
   for i,viewKey in ipairs(p.minInfoboxRows) do
       local view = p.view[viewKey]
       local dataPoint = view.format(data)
       -- Skip zeros
       if view.sortType == 'number' then
           local sortValue = view.sortValue(data)
           if sortValue == 0 then
               dataPoint = nil
           end
       end
       if dataPoint then
           cap:addRow(view.heading, dataPoint)
       end
   end
   return cap

end


return pThe Antonoff-Titan K225 Break Bulk variant is a 3rd-party modification to the standard-issue K225. It sacrifices four of the docking bays to increase the internal cargo bay's size. The reduction in the theoretical processed capacity makes it less beneficial to process minerals mid-dive, and instead benefit from the greater capacity for raw ore chunks. The larger cargo bay also makes for lifepods to be less of a clogging issue. The K225-BB will generally spend less time out in the rings for the same value of ore, as processing times aren't an issue and de-clogging isn't as much of a chore.

Notes