mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-11-11 23:54:52 +09:00
104 lines
4.0 KiB
Lua
104 lines
4.0 KiB
Lua
--- The items players start with, and how many depending on what the factory has made
|
|
-- @config Starting-Items
|
|
|
|
--- These are called factories because they return another function
|
|
-- use these as a simple methods of adding new items
|
|
-- they will do most of the work for you
|
|
-- ['item-name'] = factory(params)
|
|
|
|
-- Use these to adjust for ticks ie game.tick < 5*minutes
|
|
local seconds, minutes, hours = 60, 3600, 216000
|
|
|
|
--- Use to make a split point for the number of items given based on time
|
|
-- ['stone-furnace']=cutoff_time(5*minutes, 4,0) -- before 5 minutes give four items after 5 minutes give none
|
|
local function cutoff_time(time, before, after)
|
|
return function(amount_made, items_made, player)
|
|
if game.tick < time then
|
|
return before
|
|
else
|
|
return after
|
|
end
|
|
end
|
|
end
|
|
|
|
--- Use to make a split point for the number of items given based on amount made
|
|
-- ['firearm-magazine']=cutoff_amount_made(100, 10, 0) -- give 10 items until 100 items have been made
|
|
local function cutoff_amount_made(amount, before, after)
|
|
return function(amount_made, items_made, player)
|
|
if amount_made < amount then
|
|
return before
|
|
else
|
|
return after
|
|
end
|
|
end
|
|
end
|
|
|
|
--- Same as above but will not give any items if x amount has been made of another item, useful for tiers
|
|
-- ['light-armor']=cutoff_amount_made_unless(5, 0,1,'heavy-armor',5) -- give light armor once 5 have been made unless 5 heavy armor has been made
|
|
local function cutoff_amount_made_unless(amount, before, after, second_item, second_amount)
|
|
return function(amount_made, items_made, player)
|
|
if items_made(second_item) < second_amount then
|
|
if amount_made < amount then
|
|
return before
|
|
else
|
|
return after
|
|
end
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Use for mass production items where you want the amount to change based on the amount already made
|
|
-- ['iron-plate']=scale_amount_made(5*minutes, 10, 10) -- for first 5 minutes give 10 items then after apply a factor of 10
|
|
local function scale_amount_made(amount, before, scalar)
|
|
return function(amount_made, items_made, player)
|
|
if amount_made < amount then
|
|
return before
|
|
else
|
|
return (amount_made * scalar) / ((game.tick / minutes) ^ 2)
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
Common values
|
|
game.tick is the amount of time the game has been on for
|
|
amount_made is the amount of that item which has been made
|
|
items_made('item-name') will return the amount of any item made
|
|
player is the player who just spawned
|
|
hours, minutes, seconds are the number of ticks in each unit of time
|
|
]]
|
|
|
|
--- @type table<string, number | fun(amount_made: number, items_made: fun(name: string): number, player: LuaPlayer): number>
|
|
return {
|
|
-- ['item-name'] = function(amount_made, production_stats, player) return <Number> end -- 0 means no items given
|
|
-- Plates
|
|
["iron-plate"] = scale_amount_made(100, 10, 10),
|
|
["copper-plate"] = scale_amount_made(100, 0, 8),
|
|
["steel-plate"] = scale_amount_made(100, 0, 4),
|
|
-- Secondary Items
|
|
["electronic-circuit"] = scale_amount_made(1000, 0, 6),
|
|
["iron-gear-wheel"] = scale_amount_made(1000, 0, 6),
|
|
-- Starting Items
|
|
["burner-mining-drill"] = cutoff_time(10 * minutes, 4, 0),
|
|
["stone-furnace"] = cutoff_time(10 * minutes, 4, 0),
|
|
-- Armor
|
|
["light-armor"] = cutoff_amount_made_unless(5, 0, 1, "heavy-armor", 5),
|
|
["heavy-armor"] = cutoff_amount_made(5, 0, 1),
|
|
-- Weapon
|
|
["pistol"] = cutoff_amount_made_unless(0, 1, 1, "submachine-gun", 5),
|
|
["submachine-gun"] = cutoff_amount_made(5, 0, 1),
|
|
-- Ammo
|
|
["firearm-magazine"] = cutoff_amount_made_unless(100, 10, 0, "piercing-rounds-magazine", 100),
|
|
["piercing-rounds-magazine"] = cutoff_amount_made(100, 0, 10),
|
|
--[[
|
|
['construction-robot'] = 10,
|
|
['modular-armor'] = 1,
|
|
['solar-panel-equipment'] = 16,
|
|
['belt-immunity-equipment'] = 1,
|
|
['battery-equipment'] = 2,
|
|
['personal-roboport-equipment'] = 1
|
|
]]
|
|
}
|