全站通知:
模块:Crops
刷
历
编
跳到导航
跳到搜索
local utils = require("Module:Utils")
local items = require("Module:Items")
local Object = require("Module:Object")
---@diagnostic disable-next-line: undefined-global
local mw = mw
local CropsData = mw.loadData("Module:Crops/data")
local ShopsData = mw.loadData("Module:Shops/data")
local p = {}
local Stores = {
['Joja'] = '[[Joja超市]]',
['Raccoon'] = '[[大树桩(地点)|浣熊]]',
['Sandy'] = '[[绿洲]]',
['SeedShop'] = '[[皮埃尔的杂货店]]',
['Traveler'] = '[[旅行商人]]'
}
local StoresRaw = {
['Joja'] = '超市',
['Raccoon'] = '浣熊',
['Sandy'] = '绿洲',
['SeedShop'] = '杂货店',
['Traveler'] = '旅行'
}
function getItem(frame)
local id = items.getId(frame.args[1])
if id:sub(1, 3) == "(O)" then
id = id:sub(4)
return id
else
return nil
end
end
function getData(id)
for key, entry in pairs(CropsData) do
if entry['HarvestItemId'] == id then return entry end
end
return nil
end
function getDataKey(id)
for key, entry in pairs(CropsData) do
if entry['HarvestItemId'] == id then return key end
end
return nil
end
function getDataField(id, field)
for key, entry in pairs(CropsData) do
if entry['HarvestItemId'] == id then return entry[field] end
end
return nil
end
-- =p.canRegrow{args={"Carrot"}}
function p.canRegrow(frame)
local id = getItem(frame)
if id == nil then return '' end
local regrow = getDataField(id, 'RegrowDays')
if regrow == nil then return '' end
if regrow == -1 then
return '否'
else
return '是'
end
end
-- =p.regrowDays{args={"Carrot"}}
function p.regrowDays(frame)
local id = getItem(frame)
if id == nil then return '' end
local regrow = getDataField(id, 'RegrowDays')
if regrow == nil then return '' end
if regrow == -1 then
return '否'
else
if regrow == 1 then return '是(每天)' end
return '是(每 ' .. regrow .. ' 天)'
end
return regrow
end
-- =p.isRaised{args={"Carrot"}}
-- 判定是否为棚架作物
function p.isRaised(frame)
local id = getItem(frame)
if id == nil then return '' end
local raised = getDataField(id, 'IsRaised')
if raised == nil then return '' end
if raised == true then
return '是'
else
return '否'
end
return raised
end
-- =p.daysInPhase{args={"Carrot"}}
function p.daysInPhase(frame)
local id = getItem(frame)
if id == nil then return '' end
local phase = getDataField(id, 'DaysInPhase')
if phase == nil then return '' end
local str = ''
local total = 0
for _, value in ipairs(phase) do
if str == '' then
str = value
else
str = str .. ' + ' .. value
end
total = total + value
end
str = str .. ' = ' .. total
return str
end
local function contains(text, substring)
return string.find(text, substring, 1, true) ~= nil
end
-- =p.getPrice{args={"胡萝卜"}}
function p.getPrice(frame)
local id = getItem(frame)
id = getDataKey(id)
local CanPurchase = false
local SpecialStore = false
local NormalStore = false
local Store = ''
local Price = -1
for key, entry in pairs(ShopsData) do
if entry['Currency'] == 0 then
for _, item in ipairs(entry['Items']) do
if item['ItemId'] == '(O)' .. id then
CanPurchase = true
if key ~= 'Joja' and not contains(key, 'Festival') and
not contains(key, 'IslandTrade') then
Store = key
end
if item['TradeItemId'] ~= nil then
SpecialStore = true
else
NormalStore = true
end
if item['Price'] ~= -1 then
Price = item['Price']
end
end
end
end
end
if Store == '' then return '特殊' end
if CanPurchase == true and NormalStore == true then
if Price == -1 then
local basePrice = tonumber(Object.getPriceById(id)) or 0
Price = basePrice * 2
end
return utils.expandTemplate("模板:Price", {Price}) .. '(' ..
Stores[Store] .. ')'
end
return '特殊(' .. Stores[Store] .. ')'
end
-- =p.getStore{args={"胡萝卜"}}
function p.getStore(frame)
local id = getItem(frame)
id = getDataKey(id)
local Store = ''
for key, entry in pairs(ShopsData) do
if entry['Currency'] == 0 then
for _, item in ipairs(entry['Items']) do
if item['ItemId'] == '(O)' .. id then
if key ~= 'Joja' and not contains(key, 'Festival') and
not contains(key, 'IslandTrade') then
Store = key
end
end
end
end
end
return StoresRaw[Store]
end
return p

沪公网安备 31011002002714 号