Files
factorio-mod-PHI-CL/PHI-EQ/main.lua
2022-12-02 00:32:51 +09:00

200 lines
7.4 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
local alpha_order = {"b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"}
local base_battery_energy = 5
local base_battery_flow = 300
local base_solar_energy = 60
local graphics_location = "__PHI-EQ__/graphics/"
local items = {"solar-panel", "battery", "fusion-reactor", "personal-laser-defense", "energy-shield", "personal-roboport", "night-vision", "exoskeleton"}
-- equipment
local function EE(source, tier)
item = {}
item["name"] = source .. "-mk" .. tier
item["categories"] = armor
local w = 1
local h = 1
if (source == "solar-panel")
then
ty = source .. "-equipment"
item["power"] = (60 * (2 ^ (tier - 1))) .. "kW"
item["energy_source"] = {type = "electric", usage_priority = "primary-output"}
elseif (source == "battery")
then
h = 2
ty = source .. "-equipment"
item["energy_source"] = {type = "electric", usage_priority = "tertiary", buffer_capacity= (100 * (2 ^ (tier - 1))) .. "MJ"}
elseif (source == "fusion-reactor")
then
w = 4
h = 4
ty = "generator-equipment"
item["power"] = (750 * (2 ^ (tier - 1))) .. "kW"
item["energy_source"] = {type = "electric", usage_priority = "primary-output"}
elseif (source == "personal-laser-defense")
then
w = 2
h = 2
ty = "active-defense-equipment"
item["energy_source"] = {type = "electric", usage_priority = "secondary-input", buffer_capacity = (250 * (2 ^ (tier - 1))) .. "kJ"}
-- item["source_direction_count"] = 64
-- item["source_offset"] = {0, -3.423489 / 4}
item["attack_parameters"] = {type = "beam", cooldown = 60, range = (18 + tier), damage_modifier = (3 + 1.5 * (tier - 1)), ammo_type = {category = "laser", energy_consumption = (50 * (tier - 1)) .. "kJ", action = {type = "direct", action_delivery = {type = "beam", beam = "laser-beam", max_length = (18 + tier), duration = 60, source_offset = {0, -1.31439}}}}}
item["automatic"] = true
elseif (source == "energy-shield")
then
w = 2
h = 2
ty = "energy-shield-equipment"
item["energy_source"] = {type = "electric", usage_priority = "primary-input", input_flow_limit = (1000 * (2 ^ (tier - 1))) .. "kW", buffer_capacity = (480 * (2 ^ (tier - 1))) .. "kJ"}
item["max_shield_value"] = (150 * (2 ^ (tier - 1)))
item["energy_per_shield"] = "80kJ"
elseif (source == "personal-roboport")
then
w = 2
h = 2
ty = "roboport-equipment"
item["energy_source"] = {type = "electric", usage_priority = "secondary-input", buffer_capacity = (80 * (2 ^ (tier - 1))) .. "MJ"}
item["robot_limit"] = 50
item["construction_radius"] = 25
item["spawn_and_station_height"] = 0.4
item["spawn_and_station_shadow_height_offset"] = 0.5
item["robots_shrink_when_entering_and_exiting"] = true
item["recharging_animation"] = {filename = "__base__/graphics/entity/roboport/roboport-recharging.png", draw_as_glow = true, priority = "high", width = 37, height = 35, frame_count = 16, scale = 1.5, animation_speed = 0.5}
item["recharging_light"] = {intensity = 0.2, size = 3, color = {r = 0.5, g = 0.5, b = 1.0}}
item["stationing_offset"] = {0, -0.6}
item["charging_station_shift"] = {0, 0.5}
item["charging_station_count"] = 16
item["charging_energy"] = (8 * (2 ^ (tier - 1))) .. "MW"
item["charging_distance"] = 1.6
item["charging_threshold_distance"] = 5
elseif (source == "night-vision")
then
w = 2
h = 2
ty = "night-vision-equipment"
item["energy_source"] = {type = "electric", usage_priority = "primary-input", buffer_capacity = "1MJ"}
item["energy_input"] = "10kW"
item["activate_sound"] = {filename = "__base__/sound/nightvision-on.ogg", volume = 0.5}
item["deactivate_sound"] = {filename = "__base__/sound/nightvision-off.ogg", volume = 0.5}
item["darkness_to_turn_on"] = 1
item["color_lookup"] = {{0, "__core__/graphics/color_luts/lut-sunset.png"}}
elseif (source == "exoskeleton")
then
w = 2
h = 4
ty = "movement-bonus-equipment"
item["energy_source"] = {type = "electric", usage_priority = "secondary-input", buffer_capacity = "10MJ"}
item["energy_consumption"] = "400kW"
item["movement_bonus"] = 0.4
end
item["type"] = ty
item["shape"] = {width = w, height = h, type = "full"}
item["sprite"] = {filename = graphics_location .. source .. "-equipment-e.png", width = w * 32, height = h * 32, priority = "medium", hr_version = {filename = graphics_location .. source .. "-equipment-eh.png", width = w * 64, height = h *64, priority = "medium", scale = 0.5}}
data:extend({item})
end
-- item
local function EI(source, tier)
local item = table.deepcopy(data.raw.item[source])
item.name = source .. "-mk" .. tier
item.place_result = source .. "-mk" .. tier
item.max_health = 1000
item.subgroup = "energy"
item.stack_size = 50
item.default_request_amount = 50
item.icons = {{icon = graphics_location .. source .. "-i.png", icon_mipmaps = 4, icon_size = 64}}
if (source == "accumulator")
then
item.order = "d[" .. source .. "]-a" .. alpha_order[tier - 1] .. "[" .. source .. "-mk" .. tier .. "]"
else
item.order = "e[" .. source .. "]-a" .. alpha_order[tier - 1] .. "[" .. source .. "-mk" .. tier .. "]"
end
data:extend({item})
end
-- recipe
local function ER(source, tier)
na = source
if (tier >= 3)
then
na = na .. "-mk" .. (tier - 1)
end
data:extend({{
type = "recipe",
name = source .. "-mk" .. tier,
energy_required = 5,
enabled = "false",
ingredients = {{na, 4}},
result = source .. "-mk" .. tier,
}})
end
-- technology
local function ET(tier)
if (tier == 2)
then
prereq = {"solar-energy", "advanced-electronics", "electric-energy-accumulators"}
else
prereq = {"compound-energy-" .. (tier - 2)}
end
data:extend({{
type = "technology",
name = "compound-energy-" .. (tier - 1),
icon_size = 256,
icon = graphics_location .. "solar-energy" .. "-t.png",
effects = {
{
type = "unlock-recipe",
recipe = "solar-panel-mk" .. tier
},
{
type = "unlock-recipe",
recipe = "accumulator-mk" .. tier
}
},
prerequisites = prereq,
unit = {
count = 200 * (tier - 1),
ingredients = {
{"automation-science-pack", 1},
{"logistic-science-pack", 1}
},
time = 10 * (tier - 1)
},
order = "a-h-" .. alpha_order[tier + 1]
}})
end
for i=1, 8, 1 do
if (i <= 3)
then
for j=2, 8, 1 do
EE(items[i], j)
EI(items[i], j)
ER(items[i], j)
ET(j)
end
elseif (i == 4)
then
for j=2, 6, 1 do
EE(items[i], j)
end
elseif (i <= 6)
then
for j=3, 6, 1 do
EE(items[i], j)
end
elseif (i <= 8)
then
EE(items[i], 2)
end
end