Merge pull request #23 from PHIDIAS0303/main

Main
This commit is contained in:
2026-06-25 13:41:44 +09:00
committed by GitHub
15 changed files with 7 additions and 2237 deletions
@@ -16,8 +16,6 @@ return {
"modules.data.quickbar", "modules.data.quickbar",
"modules.data.alt-view", "modules.data.alt-view",
"modules.data.tag", "modules.data.tag",
-- 'modules.data.bonus',
"modules.data.personal-logistic",
"modules.data.language", "modules.data.language",
--"modules.data.toolbar", --"modules.data.toolbar",
-201
View File
@@ -3,10 +3,6 @@
return { return {
--[[ --[[
TODO
force bonus
quick health regeneration
Base point is equal to the amount of standard value in each parameter. Base point is equal to the amount of standard value in each parameter.
CMMS CRS CCS CISB CHB CRDB PBR CMMS CRS CCS CISB CHB CRDB PBR
@@ -28,7 +24,6 @@ return {
scale = 1, scale = 1,
cost = 10, cost = 10,
max_value = 4, max_value = 4,
initial_value = 2,
value_step = 0.5, value_step = 0.5,
is_percentage = true, is_percentage = true,
}, },
@@ -37,7 +32,6 @@ return {
scale = 1, scale = 1,
cost = 60, cost = 60,
max_value = 2, max_value = 2,
initial_value = 1,
value_step = 0.25, value_step = 0.25,
is_percentage = true, is_percentage = true,
}, },
@@ -46,7 +40,6 @@ return {
scale = 1, scale = 1,
cost = 4, cost = 4,
max_value = 12, max_value = 12,
initial_value = 6,
value_step = 1, value_step = 1,
is_percentage = true, is_percentage = true,
}, },
@@ -55,7 +48,6 @@ return {
scale = 10, scale = 10,
cost = 2, cost = 2,
max_value = 100, max_value = 100,
initial_value = 50,
value_step = 10, value_step = 10,
}, },
{ {
@@ -63,7 +55,6 @@ return {
scale = 50, scale = 50,
cost = 4, cost = 4,
max_value = 300, max_value = 300,
initial_value = 150,
value_step = 50, value_step = 50,
}, },
{ {
@@ -71,7 +62,6 @@ return {
scale = 1, scale = 1,
cost = 1, cost = 1,
max_value = 16, max_value = 16,
initial_value = 8,
value_step = 2, value_step = 2,
combined_bonus = { combined_bonus = {
"character_resource_reach_distance_bonus", "character_resource_reach_distance_bonus",
@@ -83,101 +73,12 @@ return {
scale = 4, scale = 4,
cost = 40, cost = 40,
max_value = 8, max_value = 8,
initial_value = 4,
value_step = 1, value_step = 1,
is_special = true, is_special = true,
}, },
--[[
['character_item_pickup_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
},
['character_loot_pickup_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
},
['character_item_drop_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
}
]]
}, },
force_bonus = { force_bonus = {
--[[
['character_mining_speed_modifier'] = {
initial_value = 0,
max_value = 6,
value_step = 0.5,
scale = 1,
cost = 10,
is_percentage = true
},
['character_running_speed_modifier'] = {
initial_value = 0,
max_value = 3,
value_step = 0.25,
scale = 1,
cost = 40,
is_percentage = true
},
['character_crafting_speed_modifier'] = {
initial_value = 0,
max_value = 16,
value_step = 1,
scale = 1,
cost = 4,
is_percentage = true
},
['character_inventory_slots_bonus'] = {
initial_value = 0,
max_value = 200,
value_step = 10,
scale = 100,
cost = 2,
is_percentage = false
},
['character_health_bonus'] = {
initial_value = 0,
max_value = 400,
value_step = 50,
cost = 4,
is_percentage = false
},
['character_reach_distance_bonus'] = {
initial_value = 0,
max_value = 24,
value_step = 2,
scale = 1,
cost = 1,
is_percentage = false,
combined_bonus = {
'character_resource_reach_distance_bonus',
'character_build_distance_bonus'
}
},
['worker_robots_speed_modifier'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
]]
["worker_robots_battery_modifier"] = { ["worker_robots_battery_modifier"] = {
initial_value = 1,
max_value = 1, max_value = 1,
value_step = 1, value_step = 1,
scale = 1, scale = 1,
@@ -185,7 +86,6 @@ return {
is_percentage = false, is_percentage = false,
}, },
["worker_robots_storage_bonus"] = { ["worker_robots_storage_bonus"] = {
initial_value = 1,
max_value = 1, max_value = 1,
value_step = 1, value_step = 1,
scale = 1, scale = 1,
@@ -193,114 +93,13 @@ return {
is_percentage = false, is_percentage = false,
}, },
["following_robots_lifetime_modifier"] = { ["following_robots_lifetime_modifier"] = {
initial_value = 1,
max_value = 1, max_value = 1,
value_step = 1, value_step = 1,
scale = 1, scale = 1,
cost = 1, cost = 1,
is_percentage = false, is_percentage = false,
}, },
--[[
['character_item_pickup_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
},
['character_loot_pickup_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
},
['character_item_drop_distance_bonus'] = {
initial_value = 0,
max_value = 20,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
},
['character_trash_slot_count'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['mining_drill_productivity_bonus'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['train_braking_force_bonus'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['laboratory_speed_modifier'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['laboratory_productivity_bonus'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['inserter_stack_size_bonus'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['stack_inserter_capacity_bonus'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
},
['artillery_range_modifier'] = {
initial_value = 0,
max_value = 0,
value_step = 0,
scale = 1,
cost = 1,
is_percentage = false
}
]]
}, },
surface_bonus = { surface_bonus = {
--[[
['solar_power_multiplier'] = {
initial_value = 1,
max_value = 1000,
value_step = 1,
scale = 1,
cost = 1,
is_percentage = false
}
]]
}, },
} }
@@ -261,7 +261,6 @@ local default = Roles.new_role("Guest", "")
"gui/research", "gui/research",
"gui/autofill", "gui/autofill",
"gui/module", "gui/module",
"gui/landfill",
"gui/production", "gui/production",
-- "command/tag", -- "command/tag",
-- "command/tag-clear", -- "command/tag-clear",
File diff suppressed because it is too large Load Diff
+2 -4
View File
@@ -5,15 +5,13 @@ return {
repeat_lifetime = 3600 * 20, --- @setting repeat_lifetime The length of time, in ticks, that protected removals will be remembered for repeat_lifetime = 3600 * 20, --- @setting repeat_lifetime The length of time, in ticks, that protected removals will be remembered for
refresh_rate = 3600 * 5, --- @setting refresh_rate How often the age of protected removals are checked against repeat_lifetime refresh_rate = 3600 * 5, --- @setting refresh_rate How often the age of protected removals are checked against repeat_lifetime
always_protected_names = { --- @setting always_protected_names Names of entities which are always protected always_protected_names = { --- @setting always_protected_names Names of entities which are always protected
}, },
always_protected_types = { --- @setting always_protected_types Types of entities which are always protected always_protected_types = { --- @setting always_protected_types Types of entities which are always protected
"boiler", "generator", "offshore-pump", "power-switch", "reactor", "rocket-silo", "boiler", "generator", "offshore-pump", "reactor", "heat-exchanger", "heat-pipe", "fusion-reactor", "fusion-generator", "power-switch", "rocket-silo",
}, },
always_trigger_repeat_names = { --- @setting always_trigger_repeat_names Names of entities which always trigger repeated removal protection always_trigger_repeat_names = { --- @setting always_trigger_repeat_names Names of entities which always trigger repeated removal protection
}, },
always_trigger_repeat_types = { --- @setting always_trigger_repeat_types Types of entities which always trigger repeated removal protection always_trigger_repeat_types = { --- @setting always_trigger_repeat_types Types of entities which always trigger repeated removal protection
"reactor", "rocket-silo", "reactor", "fusion-reactor", "rocket-silo",
}, },
} }
@@ -514,9 +514,6 @@ function vlayer.get_statistics()
energy_sustained = vdp * gsm, energy_sustained = vdp * gsm,
energy_capacity = vlayer_data.properties.capacity * mega, energy_capacity = vlayer_data.properties.capacity * mega,
energy_storage = vlayer_data.storage.energy, energy_storage = vlayer_data.storage.energy,
day_time = math.floor(vlayer_data.surface.daytime * vlayer_data.surface.ticks_per_day),
day_length = vlayer_data.surface.ticks_per_day,
tick = game.tick,
} }
end end
@@ -540,9 +537,6 @@ function vlayer.get_circuits()
energy_sustained = "signal-S", energy_sustained = "signal-S",
energy_capacity = "signal-C", energy_capacity = "signal-C",
energy_storage = "signal-E", energy_storage = "signal-E",
day_time = "signal-D",
day_length = "signal-L",
tick = "signal-T",
} }
end end
-99
View File
@@ -1,99 +0,0 @@
--[[-- Commands Module - Bonus
- Adds a command that allows players to have increased stats
@data Bonus
]]
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
local config = require("modules.exp_legacy.config.bonus") --- @dep config.bonuses
local Commands = require("modules/exp_commands")
-- Stores the bonus for the player
local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data
local PlayerBonus = PlayerData.Settings:combine("Bonus")
PlayerBonus:set_default(0)
PlayerBonus:set_metadata{
permission = "command/bonus",
stringify = function(value)
if not value or value == 0 then
return "None set"
end
return value
end,
}
--- Apply a bonus to a player
local function apply_bonus(player, stage)
if not player.character then
return
end
for k, v in pairs(config.player_bonus) do
player[k] = v.value * stage / 10
if v.combined_bonus then
for i = 1, #v.combined_bonus, 1 do
player[v.combined_bonus[i]] = v.value * stage / 10
end
end
end
end
--- When store is updated apply new bonus to the player
PlayerBonus:on_update(function(player_name, player_bonus)
apply_bonus(game.players[player_name], player_bonus or 0)
end)
--- Changes the amount of bonus you receive
Commands.new("bonus", { "bonus.description" })
:optional("amount", { "bonus.arg-amount" }, Commands.types.integer_range(0, 10))
:register(function(player, amount)
--- @cast amount number?
if amount then
PlayerBonus:set(player, amount)
return Commands.status.success{ "bonus.set", amount }
else
return Commands.status.success{ "bonus.get", PlayerBonus:get(player) }
end
end)
--- When a player respawns re-apply bonus
Event.add(defines.events.on_player_respawned, function(event)
local player = game.players[event.player_index]
apply_bonus(player, PlayerBonus:get(player))
end)
--- Remove bonus if a player no longer has access to the command
local function role_update(event)
local player = game.players[event.player_index]
if not Roles.player_allowed(player, "command/bonus") then
apply_bonus(player, 0)
end
end
--- When a player dies allow them to have instant respawn
Event.add(defines.events.on_player_died, function(event)
local player = game.players[event.player_index]
if Roles.player_has_flag(player, "instant-respawn") then
player.ticks_to_respawn = 120
end
end)
Event.add(defines.events.on_player_created, function(event)
if event.player_index ~= 1 then
return
end
for k, v in pairs(config.force_bonus) do
game.players[event.player_index].force[k] = v.value
end
for k, v in pairs(config.surface_bonus) do
game.players[event.player_index].surface[k] = v.value
end
end)
Event.add(Roles.events.on_role_assigned, role_update)
Event.add(Roles.events.on_role_unassigned, role_update)
@@ -1,89 +0,0 @@
local Commands = require("modules/exp_commands")
local config = require("modules.exp_legacy.config.personal_logistic") --- @dep config.personal-logistic
---@param target LuaEntity | LuaPlayer
---@param amount number
local function pl(target, amount)
local c
local s
--- @cast target any Remove cast once implemented
error("Needs updating to use 2.0 logistics")
if target.object_name == "LuaPlayer" then
c = target.clear_personal_logistic_slot
s = target.set_personal_logistic_slot
else
c = target.clear_vehicle_logistic_slot
s = target.set_vehicle_logistic_slot
end
for _, v in pairs(config.request) do
c(config.start + v.key)
end
if (amount < 0) then
return
end
local stats = target.force.get_item_production_statistics(target.surface)
for k, v in pairs(config.request) do
local v_min = math.ceil(v.min * amount)
local v_max = math.ceil(v.max * amount)
if v.stack ~= nil and v.stack ~= 1 and v.type ~= "weapon" then
v_min = math.floor(v_min / v.stack) * v.stack
v_max = math.ceil(v_max / v.stack) * v.stack
end
if v.upgrade_of == nil then
if v.type ~= nil then
if stats.get_input_count(k) < config.production_required[v.type] then
if v_min > 0 then
if v_min == v_max then
v_min = math.floor((v_max * 0.5) / v.stack) * v.stack
end
else
v_min = 0
end
end
end
s(config.start + v.key, { name = k, min = v_min, max = v_max })
else
if v.type ~= nil then
if stats.get_input_count(k) >= config.production_required[v.type] then
s(config.start + v.key, { name = k, min = v_min, max = v_max })
local vuo = v.upgrade_of
while (vuo ~= nil) do
s(config.start + config.request[vuo].key, { name = vuo, min = 0, max = 0 })
vuo = config.request[vuo].upgrade_of
end
else
s(config.start + v.key, { name = k, min = 0, max = v_max })
end
end
end
end
end
Commands.new("personal-logistic", "Set Personal Logistic (-1 to cancel all) (Select spidertron to edit spidertron)")
:argument("amount", "", Commands.types.integer_range(-1, 10))
:add_aliases{ "pl" }
:add_flags{ "disabled" } -- Remove once implemented above
:register(function(player, amount)
--- @cast amount number
if player.force.technologies["logistic-robotics"].researched then
if player.selected ~= nil then
if player.selected.name == "spidertron" then
pl(player.selected, amount / 10)
end
else
pl(player, amount / 10)
end
else
return Commands.status.error("Personal Logistic not researched")
end
end)
-1
View File
@@ -70,7 +70,6 @@ add(require("modules/exp_scenario/control/station_auto_name"))
--- Guis --- Guis
add(require("modules/exp_scenario/gui/autofill")) add(require("modules/exp_scenario/gui/autofill"))
add(require("modules/exp_scenario/gui/elements")) add(require("modules/exp_scenario/gui/elements"))
add(require("modules/exp_scenario/gui/landfill_blueprint"))
add(require("modules/exp_scenario/gui/module_inserter")) add(require("modules/exp_scenario/gui/module_inserter"))
add(require("modules/exp_scenario/gui/player_bonus")) add(require("modules/exp_scenario/gui/player_bonus"))
add(require("modules/exp_scenario/gui/player_stats")) add(require("modules/exp_scenario/gui/player_stats"))
+2 -2
View File
@@ -11,7 +11,7 @@ local config = require("modules/exp_legacy/config/bonus")
local function apply_force_bonus(event) local function apply_force_bonus(event)
local force = event.force local force = event.force
for k, v in pairs(config.force_bonus) do for k, v in pairs(config.force_bonus) do
force[k] = v.initial_value force[k] = math.floor(v.max_value / 2)
end end
end end
@@ -19,7 +19,7 @@ end
local function apply_surface_bonus(event) local function apply_surface_bonus(event)
local surface = assert(game.get_surface(event.surface_index)) local surface = assert(game.get_surface(event.surface_index))
for k, v in pairs(config.surface_bonus) do for k, v in pairs(config.surface_bonus) do
surface[k] = v.initial_value surface[k] = math.floor(v.max_value / 2)
end end
end end
@@ -1,175 +0,0 @@
--[[-- Gui - Landfill Blueprint
Adds a button to the toolbar which adds landfill to the held blueprint
]]
local Gui = require("modules/exp_gui")
local Roles = require("modules/exp_legacy/expcore/roles")
--- @param box BoundingBox
local function rotate_bounding_box(box)
box.left_top.x, box.left_top.y, box.right_bottom.x, box.right_bottom.y
= -box.right_bottom.y, box.left_top.x, -box.left_top.y, box.right_bottom.x
end
local function curve_flip_lr(oc)
local nc = table.deep_copy(oc)
for r = 1, 8 do
for c = 1, 8 do
nc[r][c] = oc[r][9 - c]
end
end
return nc
end
local function curve_flip_d(oc)
local nc = table.deep_copy(oc)
for r = 1, 8 do
for c = 1, 8 do
nc[r][c] = oc[c][r]
end
end
return nc
end
local curve_masks = {} do
local curves = { {
{ 0, 0, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0 },
{ 0, 0, 0, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 1, 1, 1, 0, 0, 0 },
{ 0, 0, 1, 1, 0, 0, 0, 0 },
{ 0, 0, 1, 1, 0, 0, 0, 0 },
} }
curves[6] = curve_flip_d(curves[1])
curves[3] = curve_flip_lr(curves[6])
curves[4] = curve_flip_d(curves[3])
curves[5] = curve_flip_lr(curves[4])
curves[2] = curve_flip_d(curves[5])
curves[7] = curve_flip_lr(curves[2])
curves[8] = curve_flip_d(curves[7])
for i, map in ipairs(curves) do
local index = 0
local mask = {}
curve_masks[i] = mask
for row = 1, 8 do
for col = 1, 8 do
if map[row][col] == 1 then
index = index + 1
mask[index] = {
x = col - 5,
y = row - 5,
}
end
end
end
end
end
local rolling_stocks = {}
for name, _ in pairs(prototypes.get_entity_filtered{ { filter = "rolling-stock" } }) do
rolling_stocks[name] = true
end
--- @param blueprint LuaItemStack
--- @return table
local function landfill_gui_add_landfill(blueprint)
local entities = assert(blueprint.get_blueprint_entities())
local tile_index = 0
local new_tiles = {}
for _, entity in pairs(entities) do
if rolling_stocks[entity.name] or entity.name == "offshore-pump" then
goto continue
end
if entity.name == "curved-rail" then
-- Curved rail
local curve_mask = curve_masks[entity.direction or 8]
for _, offset in ipairs(curve_mask) do
tile_index = tile_index + 1
new_tiles[tile_index] = {
name = "landfill",
position = { entity.position.x + offset.x, entity.position.y + offset.y },
}
end
else
-- Any other entity
local proto = prototypes.entity[entity.name]
if proto.collision_mask["ground-tile"] ~= nil then
goto continue
end
-- Rotate the collision box to be north facing
local box = proto.collision_box or proto.selection_box
if entity.direction then
if entity.direction ~= defines.direction.north then
rotate_bounding_box(box)
if entity.direction ~= defines.direction.east then
rotate_bounding_box(box)
if entity.direction ~= defines.direction.south then
rotate_bounding_box(box)
end
end
end
end
-- Add the landfill
for y = math.floor(entity.position.y + box.left_top.y), math.floor(entity.position.y + box.right_bottom.y), 1 do
for x = math.floor(entity.position.x + box.left_top.x), math.floor(entity.position.x + box.right_bottom.x), 1 do
tile_index = tile_index + 1
new_tiles[tile_index] = {
name = "landfill",
position = { x, y },
}
end
end
end
::continue::
end
local old_tiles = blueprint.get_blueprint_tiles()
if old_tiles then
for _, old_tile in pairs(old_tiles) do
tile_index = tile_index + 1
new_tiles[tile_index] = {
name = "landfill",
position = old_tile.position,
}
end
end
return { tiles = new_tiles }
end
--- Add the toolbar button
Gui.toolbar.create_button{
name = "trigger_landfill_blueprint",
sprite = "item/landfill",
tooltip = { "exp-gui_landfill-blueprint.tooltip-main" },
visible = function(player, element)
return Roles.player_allowed(player, "gui/landfill")
end
}:on_click(function(def, player, element)
local stack = player.cursor_stack
if stack and stack.valid_for_read and stack.type == "blueprint" and stack.is_blueprint_setup() then
local modified = landfill_gui_add_landfill(stack)
if modified and next(modified.tiles) then
stack.set_blueprint_tiles(modified.tiles)
end
else
player.print{ "exp-gui_landfill-blueprint.error-no-blueprint" }
end
end)
return {}
+2 -3
View File
@@ -16,7 +16,6 @@ local Elements = {}
--- @field cost number --- @field cost number
--- @field scale number --- @field scale number
--- @field max_value number --- @field max_value number
--- @field initial_value number
--- @field is_percentage boolean --- @field is_percentage boolean
--- @field is_special boolean --- @field is_special boolean
--- @field value_step number --- @field value_step number
@@ -229,7 +228,7 @@ Elements.bonus_slider = Gui.define("player_bonus/bonus_slider")
local player = Gui.get_player(parent) local player = Gui.get_player(parent)
local value = Elements.container.get_player_bonus(player, bonus_data.name) local value = Elements.container.get_player_bonus(player, bonus_data.name)
if not value then if not value then
value = bonus_data.initial_value value = math.floor(bonus_data.initial_value / 2)
elements.apply_button.enabled = true elements.apply_button.enabled = true
end end
@@ -290,7 +289,7 @@ function Elements.bonus_slider.reset_value(slider)
local player = Gui.get_player(slider) local player = Gui.get_player(slider)
local element_data = Elements.bonus_slider.data[slider] local element_data = Elements.bonus_slider.data[slider]
local bonus_data = element_data.bonus_data local bonus_data = element_data.bonus_data
local value = Elements.container.get_player_bonus(player, bonus_data.name) or bonus_data.initial_value local value = Elements.container.get_player_bonus(player, bonus_data.name) or math.floor(bonus_data.initial_value / 2)
slider.slider_value = value slider.slider_value = value
element_data.label.caption = Elements.bonus_slider.calculate_slider_caption(bonus_data, value) element_data.label.caption = Elements.bonus_slider.calculate_slider_caption(bonus_data, value)
element_data.previous_value = value element_data.previous_value = value
+1 -5
View File
@@ -295,10 +295,6 @@ tooltip-amount=Amount of items to insert into the __1__ slots
invalid=Autofill set to maximum amount: __1__ __2__ for __3__ invalid=Autofill set to maximum amount: __1__ __2__ for __3__
inserted=Inserted __1__ __2__ into __3__ inserted=Inserted __1__ __2__ into __3__
[exp-gui_landfill-blueprint]
tooltip-main=Landfill Blueprint
error-no-blueprint=You need to hold the blueprint in cursor
[exp-gui_module-inserter] [exp-gui_module-inserter]
tooltip-main=Module Inserter tooltip-main=Module Inserter
caption-main=Modules caption-main=Modules
@@ -572,4 +568,4 @@ chat-found=You cannot have __1__ in your inventory, so it was placed into the ch
chat-jailed=__1__ was jailed because they removed too many protected entities. Please wait for a moderator. chat-jailed=__1__ was jailed because they removed too many protected entities. Please wait for a moderator.
[exp_report-jail] [exp_report-jail]
chat-jailed=__1__ was jailed because they were reported too many times. Please wait for a moderator. chat-jailed=__1__ was jailed because they were reported too many times. Please wait for a moderator.
-4
View File
@@ -295,10 +295,6 @@ tooltip-amount=自動填入 __1__ 的數量
invalid=自動填入最大值 __1__ __2__ 給 __3__ invalid=自動填入最大值 __1__ __2__ 給 __3__
inserted=自動填入 __1__ __2__ 到 __3__ inserted=自動填入 __1__ __2__ 到 __3__
[exp-gui_landfill-blueprint]
tooltip-main=藍圖填海
error-no-blueprint=您需要將藍圖保持在遊標處
[exp-gui_module-inserter] [exp-gui_module-inserter]
tooltip-main=模組 tooltip-main=模組
caption-main=Modules caption-main=Modules
-4
View File
@@ -295,10 +295,6 @@ tooltip-amount=自動填入 __1__ 的數量
invalid=自動填入最大值 __1__ __2__ 給 __3__ invalid=自動填入最大值 __1__ __2__ 給 __3__
inserted=自動填入 __1__ __2__ 到 __3__ inserted=自動填入 __1__ __2__ 到 __3__
[exp-gui_landfill-blueprint]
tooltip-main=藍圖填海
error-no-blueprint=您需要將藍圖保持在遊標處
[exp-gui_module-inserter] [exp-gui_module-inserter]
tooltip-main=模組 tooltip-main=模組
caption-main=Modules caption-main=Modules