mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-30 04:40:54 +02:00
Merge branch 'develop' into develop
This commit is contained in:
commit
fdc425493a
82
locale/ru/amap.cfg
Normal file
82
locale/ru/amap.cfg
Normal file
@ -0,0 +1,82 @@
|
||||
[amap]
|
||||
map_info_text= добро пожаловать в Mountain Defense!\n\n Спустя много лет после запуска ракеты, насекомые вернулись и уничтожили большинство человеческих городов. Вы и другие выжившие построили последний бастион человечества. К сожалению, насекомые нашли вас. Они собирают войска, чтобы двинуться на вас. Прежде чем насекомые уничтожат базу, запустите ракеты, чтобы сбежать из этого места! \n Советы: \n 1. Вы можете использовать кнопку RPG, чтобы улучшить себя. \n 2. На панели настроек RPG вы можете включить магию и выбрать свои навыки. \ n 3. Магия RPG может увеличить вашу удачу. \n 4. Вы можете покупать транспорт на основном рынке. У них есть внутреннее пространство \n 6. Синий сундук в машине включён. Ему разрешено забирать вещи из зеленого сундука и из рюкзака. \n 5. Запуск ракет принесет много наград, и чем больше вы запустите, тем больше наград получите. \n Автор: ITAM \n Спасибо: hanakoz
|
||||
science= - исследование завершено, вы получили __1__ очков умений и __2__ золотых монет.
|
||||
roll= пора крутить колесо судьбы! Посмотри, что получится!
|
||||
what= ? Что случилось! )
|
||||
sorry= ограблен! Вы потеряли __1__ золотых монет!
|
||||
nbone= ваш номер 1, вы выиграли __1__ золотых монет!
|
||||
nb2= вы получили совет мирового эксперта! Вы получаете __1__ очков навыков!
|
||||
nb3= вас избил старичок на обочине дороги! Вознаграждение __1__ очков силы.
|
||||
nb4= что делать, когда приходят жуки? Беги, мальчик! Награда __1__ очков ловкости
|
||||
nb5= это волшебная палочка?! Бонус __1__ маны
|
||||
nb6= Вы начинаете поднимать тяжести и набираете __1__ очков силы!
|
||||
nb7= Эээ, ничего не произошло, эти 25 волн сплошное спокойствие?
|
||||
nb8= проклятие, ты потерял __1__ очков опыта! Как я это допустил?
|
||||
nb9= (⊙o⊙)… У тебя есть рыба?
|
||||
nb10= О, я пошел на рыбалку и поймал __1__ рыб. Не забудьте поделиться!
|
||||
nb11= наш БПЛА готов! Вы получили __1__ капсул дронов-защитников!
|
||||
nb12= из-за переедания. Вы быстрее растете. Получите __1__ очков опыта!
|
||||
nb14= небольшой подарочный пакет, что в нем?
|
||||
nb13= первый приз! __1__ золотых монет! Поздравляем
|
||||
nb15= Пожалуйста, берегите окружающую среду и копайте меньше камней, вы потеряли __1__ очко силы!
|
||||
nb16= Бананы есть бананы, что? Где моя волшебная палочка? Вы потеряли __1__ очко магии!
|
||||
nb17= Мои мышцы слишком болят, ох, возможно, я не смогу двигаться некоторое время. Вы потеряли __1__ очко ловкости!
|
||||
nb18= Кто-то вас отравил! Вы потеряли __1__ очко жизненной силы!
|
||||
nopoint= у вас недостаточно очков, поэтому я возьму 1000 ваших монет!
|
||||
joingame= Берегите ракетную шахту! Не позволяйте насекомым уничтожить её! \n рекорд карты: \n режим одиночной игры: 700 волн! \n Автор рекорда: wwwax \n победа: нет \n \n Многопользовательская игра: 985 волн!
|
||||
usecar= вы использовали свою машину в первых 100 волнах и проиграли квалификацию для получения награды. Продолжайте усердно работать в следующий раз
|
||||
usecar2= прошли испытание, получите награду в размере 50 очков навыков, поздравляем!
|
||||
lucknb= ваше значение удачи
|
||||
whatopen= О, что ты получишь
|
||||
noenough= ребята, у вас мало денег
|
||||
pass= вы прошли таможню!!!!!!! Неплохо! Номер волны прохождения __1__
|
||||
times= вы запустили __1__. Каждый раз, когда вы запускаете ракету, награда будет повторяться!
|
||||
reward= __1__ ракет запущено! Вы получите в награду __2__ очков навыков и __3__ золотых монет.
|
||||
lost= ракетная шахта уничтожена, игра проиграна! Вы пережили __1__ волн.
|
||||
openchest= потратьте 3000 золотых монет, откройте этот ящик, у вас есть шанс получить MK2!
|
||||
buyxp= потратьте 5000 золотых монет, купите 1000 очков опыта!
|
||||
buyover= вы успешно купили 1000 очков опыта!
|
||||
getxpfromwave= о, вы прошли эту волну, так что вы получите 10 очков опыта!
|
||||
relax1= Вы знаете Рика и Морти? Это взрослый мультфильм, полный странностей и эксцентричности. Рик взял Морти и исследовал планеты. Это очень интересно. Я настоятельно рекомендую вам это посмотреть.
|
||||
relax2= Когда я был молод, я играл только в одну игру, Warcraft 3. Я играл в неё с начальной школы. Прошло 14 лет!
|
||||
relax3= Когда я был ребёнком, я всегда слышал странные истории. Например: Бермудский треугольник, водное чудовище Лох-Несса, шаровая молния. Когда я учился в средней школе, я думал, что это правда!
|
||||
relax4= Factorio была выпущена пять лет назад, и она выйдет в релиз не раньше 2020 года. За эти годы Factorio обновился и не снизил свою цену. Я считаю, что это очень добросовестная игра.
|
||||
relax5= Вы думаете, эта игра слишком сумасшедшая? Да, я тоже так думаю!
|
||||
relax6= В Китае родители спрашивают своих детей, чем они хотят заниматься в будущем, а затем говорят своим детям, что они хотят стать учеными. (но я не знаю, так ли это сейчас)
|
||||
relax7= Есть психологический эффект, называемый эффектом Барнума. Людям легко поверить в общее описание личности и подумать, что оно особенно подходит для них самих и точно раскрывает их личностные характеристики, даже если содержание пустое.
|
||||
relax8= Почему нет версии Plants vs. Zombies 2 для ПК?
|
||||
relax9= За луной живет дьявол. Он всегда ловит кроликов с земли, чтобы поесть. Мы должны организовать армию космонавтов, чтобы спасти кроликов!
|
||||
relax10= Чёрт, а почему 1 + 1 = 2 вместо 11? Это, должно быть, ошибка.
|
||||
relax11= Почему в этом мире нет магии? Я не в том мире?
|
||||
relax12= У тебя есть девушка? А? Если у тебя нет девушки, ты все равно приходишь играть в Factorio? Найди девушку!
|
||||
relax13= Вы когда-нибудь пробовали пить пиво с кока-колой? Какой был бы вкус?
|
||||
relax14= Не сдаваться, никогда не сдаваться. До тех пор, пока ты не играешь в Factorio.
|
||||
relax15= Вы слышали о классе летной подготовки? Вы можете научить летать с помощью рук за 10000 юаней?
|
||||
relax16= Однажды я нашёл на обочине дороги 50 юаней! Это было в начальной школе, о, это первый горшок с золотом, начало богатства.
|
||||
relax17= Лучший способ чего-то добиться - попросить других помочь. Второй способ - притвориться, что ничего не можешь сделать, а потом подождать, пока другой решит эту проблему.
|
||||
relax18= Береги себя, не болей, не позволяй другим беспокоить тебя.
|
||||
relax19= Единство это сила. Вместе мы можем построить большой завод. Или у нас есть печенье?
|
||||
relax20= Надеюсь, вы хорошо провели время, заходите в Discord Comfy, чтобы поделиться своим счастьем!
|
||||
single= Воин, в одиночку нелегко бросить вызов. У меня есть кое-что для тебя. Я надеюсь, что смогу помочь тебе
|
||||
gambel= потратьте 1000 монет, чтобы получить 2500 монет или 0 монет!
|
||||
gambel1= вы получили 2500 монет!
|
||||
gambel2= вы ничего не получили.
|
||||
bag_isfull= WTF? Мой инвентарь полон, почему эти камни нападают на меня?
|
||||
too_many= вы построили слишком много огненных турелей!
|
||||
ok_many= Это огненная турель номер __1__. Вы можете построить только 12 огненных турелей.
|
||||
buy_wall_over= __1__ купил здоровье стен и всех турелей, теперь у них __2__ здоровья!
|
||||
buy_health_wall= куплено 10% здоровья для стен и всех турелей
|
||||
buy_arty_dam= улучшен урон артиллерии на 10%
|
||||
player_biter_health= улучшено здоровье наших кусак на 10%
|
||||
buy_arty_over= __1__ купил урон артиллерии! теперь урон __2__!
|
||||
buy_player_biter_over= __1__ купил здоровье наших кусак! теперь здоровье __2__!
|
||||
player_spider_health= улучшено здоровье Паукотрона на 10%
|
||||
buy_spider_health_over= __1__ купил 10% здоровья Паукотрона! теперь здоровье __2__!
|
||||
player_biter_dam= улучшен урон кусак на 10%
|
||||
buy_biter_dam= __1__ купил урон кусак! теперь урон __2__!
|
||||
easy= Я хочу расслабиться
|
||||
med= Хочу испытаний
|
||||
hard= Я люблю трудности
|
||||
cap_upgrad= этот элемент уже получил максимальное улучшение для этой волны
|
||||
buy_cap_over= __1__ купил уровень улучшения, теперь у нас уровень__2__!
|
||||
buy_cap= купить уровень улучшения
|
@ -1,5 +1,4 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
require 'functions.biter_raffle'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
|
@ -1,6 +1,4 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
require 'functions.biter_raffle'
|
||||
require 'utils.get_noise'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
local table_insert = table.insert
|
||||
|
@ -1,5 +1,4 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
require 'functions.biter_raffle'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
|
@ -1,6 +1,4 @@
|
||||
local Functions = require 'maps.dungeons.functions'
|
||||
require 'functions.biter_raffle'
|
||||
require 'utils.get_noise'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
local table_insert = table.insert
|
||||
|
@ -4,7 +4,6 @@ local BiterRaffle = require 'functions.biter_raffle'
|
||||
local LootRaffle = require 'functions.loot_raffle'
|
||||
local Get_noise = require 'utils.get_noise'
|
||||
local DungeonsTable = require 'maps.dungeons.table'
|
||||
require 'modules.rpg.main'
|
||||
|
||||
local table_shuffle_table = table.shuffle_table
|
||||
local math_random = math.random
|
||||
@ -555,14 +554,14 @@ function Public.draw_spawn(surface)
|
||||
table.insert(dungeontable.transport_surfaces, surface.index)
|
||||
dungeontable.transport_chests_inputs[surface.index] = {}
|
||||
for iv = 1, 2, 1 do
|
||||
local chest = surface.create_entity({name = 'blue-chest', position = {-12 + i * 8, -4}, force = 'player'})
|
||||
local chest = surface.create_entity({name = 'blue-chest', position = {-12 + iv * 8, -4}, force = 'player'})
|
||||
dungeontable.transport_chests_inputs[surface.index][iv] = chest
|
||||
chest.destructible = false
|
||||
chest.minable = false
|
||||
end
|
||||
dungeontable.transport_poles_outputs[surface.index] = {}
|
||||
for ix = 1, 2, 1 do
|
||||
local pole = surface.create_entity({name = 'constant-combinator', position = {-15 + i * 10, -5}, force = 'player'})
|
||||
local pole = surface.create_entity({name = 'constant-combinator', position = {-15 + ix * 10, -5}, force = 'player'})
|
||||
dungeontable.transport_poles_outputs[surface.index][ix] = pole
|
||||
pole.destructible = false
|
||||
pole.minable = false
|
||||
@ -570,14 +569,14 @@ function Public.draw_spawn(surface)
|
||||
end
|
||||
dungeontable.transport_chests_outputs[surface.index] = {}
|
||||
for ic = 1, 2, 1 do
|
||||
local chest = surface.create_entity({name = 'red-chest', position = {-12 + i * 8, 4}, force = 'player'})
|
||||
local chest = surface.create_entity({name = 'red-chest', position = {-12 + ic * 8, 4}, force = 'player'})
|
||||
dungeontable.transport_chests_outputs[surface.index][ic] = chest
|
||||
chest.destructible = false
|
||||
chest.minable = false
|
||||
end
|
||||
dungeontable.transport_poles_inputs[surface.index] = {}
|
||||
for ib = 1, 2, 1 do
|
||||
local pole = surface.create_entity({name = 'medium-electric-pole', position = {-15 + i * 10, 5}, force = 'player'})
|
||||
local pole = surface.create_entity({name = 'medium-electric-pole', position = {-15 + ib * 10, 5}, force = 'player'})
|
||||
dungeontable.transport_poles_inputs[surface.index][ib] = pole
|
||||
pole.destructible = false
|
||||
pole.minable = false
|
||||
|
@ -535,8 +535,8 @@ local function on_marked_for_deconstruction(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function map_gen_settings()
|
||||
local map_gen_setting = {
|
||||
local function get_map_gen_settings()
|
||||
local settings = {
|
||||
['seed'] = math_random(1, 1000000),
|
||||
['water'] = 0,
|
||||
['starting_area'] = 1,
|
||||
@ -548,7 +548,7 @@ local function map_gen_settings()
|
||||
['decorative'] = {treat_missing_as_default = false}
|
||||
}
|
||||
}
|
||||
return map_gen_setting
|
||||
return settings
|
||||
end
|
||||
|
||||
local function get_lowest_safe_floor(player)
|
||||
@ -591,7 +591,7 @@ local function descend(player, button, shift)
|
||||
player.print({'dungeons_tiered.floor_size_required'})
|
||||
return
|
||||
end
|
||||
surface = game.create_surface('dungeons_floor' .. player.surface.index - dungeontable.original_surface_index + 1, map_gen_settings())
|
||||
surface = game.create_surface('dungeons_floor' .. player.surface.index - dungeontable.original_surface_index + 1, get_map_gen_settings())
|
||||
if surface.index % 5 == dungeontable.original_surface_index then
|
||||
dungeontable.spawn_size = 60
|
||||
else
|
||||
@ -766,7 +766,7 @@ local function on_init()
|
||||
force.set_friend('enemy', false)
|
||||
force.set_friend('player', false)
|
||||
|
||||
local surface = game.create_surface('dungeons_floor0', map_gen_settings())
|
||||
local surface = game.create_surface('dungeons_floor0', get_map_gen_settings())
|
||||
|
||||
surface.request_to_generate_chunks({0, 0}, 2)
|
||||
surface.force_generate_chunk_requests()
|
||||
@ -776,10 +776,10 @@ local function on_init()
|
||||
local nauvis = game.surfaces[1]
|
||||
nauvis.daytime = 0.25
|
||||
nauvis.freeze_daytime = true
|
||||
map_gen_settings = nauvis.map_gen_settings
|
||||
map_gen_settings.height = 3
|
||||
map_gen_settings.width = 3
|
||||
nauvis.map_gen_settings = map_gen_settings
|
||||
local map_settings = nauvis.map_gen_settings
|
||||
map_settings.height = 3
|
||||
map_settings.width = 3
|
||||
nauvis.map_gen_settings = map_settings
|
||||
for chunk in nauvis.get_chunks() do
|
||||
nauvis.delete_chunk({chunk.x, chunk.y})
|
||||
end
|
||||
|
@ -32,10 +32,10 @@ local Public = {}
|
||||
|
||||
local starting_items = {
|
||||
['pistol'] = 1,
|
||||
['firearm-magazine'] = 16,
|
||||
['raw-fish'] = 3,
|
||||
['iron-plate'] = 32,
|
||||
['stone'] = 12
|
||||
['firearm-magazine'] = 20,
|
||||
['raw-fish'] = 5,
|
||||
['iron-plate'] = 40,
|
||||
['stone'] = 20
|
||||
}
|
||||
|
||||
local function shuffle(tbl)
|
||||
@ -1369,24 +1369,37 @@ function Public.reset_game()
|
||||
Session.clear_player(player)
|
||||
end
|
||||
|
||||
--test idea
|
||||
--local spawn_poses = {
|
||||
-- {x = 0, y = 0},
|
||||
-- {x = -512, y = 0},
|
||||
-- {x = -512, y = 192},
|
||||
-- {x = -512, y = -192}
|
||||
--}
|
||||
|
||||
local map_gen_settings = {}
|
||||
map_gen_settings.seed = math_random(10000, 99999)
|
||||
map_gen_settings.starting_area = 1
|
||||
--map_gen_settings.starting_points = spawn_poses
|
||||
|
||||
map_gen_settings.width = 4000
|
||||
map_gen_settings.height = 1800
|
||||
map_gen_settings.water = 0.10
|
||||
map_gen_settings.terrain_segmentation = 3
|
||||
map_gen_settings.cliff_settings = {cliff_elevation_interval = 32, cliff_elevation_0 = 32}
|
||||
map_gen_settings.autoplace_controls = {
|
||||
['coal'] = {frequency = 4, size = 1.5, richness = 2},
|
||||
['stone'] = {frequency = 4, size = 1.5, richness = 2},
|
||||
['copper-ore'] = {frequency = 4, size = 1.5, richness = 2},
|
||||
['iron-ore'] = {frequency = 4, size = 1.5, richness = 2},
|
||||
['coal'] = {frequency = 6, size = 1.2, richness = 1.5},
|
||||
['stone'] = {frequency = 6, size = 1.2, richness = 1.5},
|
||||
['copper-ore'] = {frequency = 6, size = 1.6, richness = 2},
|
||||
['iron-ore'] = {frequency = 6, size = 1.6, richness = 2},
|
||||
['uranium-ore'] = {frequency = 0, size = 0, richness = 0},
|
||||
['crude-oil'] = {frequency = 5, size = 1.25, richness = 2},
|
||||
['trees'] = {frequency = 2, size = 1, richness = 1},
|
||||
['trees'] = {frequency = 3, size = 0.15, richness = 0.5},
|
||||
['enemy-base'] = {frequency = 'none', size = 'none', richness = 'none'}
|
||||
}
|
||||
|
||||
map_gen_settings.property_expression_names = {moisture = math_random(4, 7) * 0.1}
|
||||
|
||||
local active_surface_index = FDT.get('active_surface_index')
|
||||
|
||||
if not active_surface_index then
|
||||
|
@ -49,18 +49,18 @@ function Public.reset_table()
|
||||
this.boss_biters = {}
|
||||
this.acid_lines_delay = {}
|
||||
this.entity_limits = {
|
||||
['gun-turret'] = {placed = 1, limit = 1, str = 'gun turret', slot_price = 75},
|
||||
['gun-turret'] = {placed = 1, limit = 3, str = 'gun turret', slot_price = 70},
|
||||
['laser-turret'] = {placed = 0, limit = 1, str = 'laser turret', slot_price = 300},
|
||||
['artillery-turret'] = {placed = 0, limit = 1, str = 'artillery turret', slot_price = 500},
|
||||
['flamethrower-turret'] = {placed = 0, limit = 0, str = 'flamethrower turret', slot_price = 50000},
|
||||
['land-mine'] = {placed = 0, limit = 1, str = 'mine', slot_price = 20}
|
||||
}
|
||||
this.difficulties_votes = {
|
||||
[1] = {wave_interval = 3800, amount_modifier = 0.92, strength_modifier = 0.85, boss_modifier = 5.0},
|
||||
[1] = {wave_interval = 3800, amount_modifier = 0.90, strength_modifier = 0.90, boss_modifier = 5.0},
|
||||
[2] = {wave_interval = 3600, amount_modifier = 1.00, strength_modifier = 1.00, boss_modifier = 6.0},
|
||||
[3] = {wave_interval = 3400, amount_modifier = 1.08, strength_modifier = 1.25, boss_modifier = 7.0},
|
||||
[4] = {wave_interval = 3100, amount_modifier = 1.24, strength_modifier = 1.75, boss_modifier = 8.0},
|
||||
[5] = {wave_interval = 2700, amount_modifier = 1.48, strength_modifier = 2.50, boss_modifier = 9.0}
|
||||
[3] = {wave_interval = 3400, amount_modifier = 1.10, strength_modifier = 1.30, boss_modifier = 7.0},
|
||||
[4] = {wave_interval = 3200, amount_modifier = 1.20, strength_modifier = 1.60, boss_modifier = 8.0},
|
||||
[5] = {wave_interval = 3000, amount_modifier = 1.40, strength_modifier = 2.20, boss_modifier = 9.0}
|
||||
}
|
||||
this.boss_waves = {
|
||||
[50] = {{name = 'big-biter', count = 3}},
|
||||
|
@ -7,6 +7,15 @@ local math_random = math.random
|
||||
local math_abs = math.abs
|
||||
local math_sqrt = math.sqrt
|
||||
|
||||
--rock spawning code for stone pile
|
||||
local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'}
|
||||
local size_of_rock_raffle = #rock_raffle
|
||||
local function place_rock(surface, position)
|
||||
local a = (math_random(-250, 250)) * 0.05
|
||||
local b = (math_random(-250, 250)) * 0.05
|
||||
surface.create_entity({name = rock_raffle[math_random(1, size_of_rock_raffle)], position = {position.x + a, position.y + b}})
|
||||
end
|
||||
|
||||
local function shuffle(tbl)
|
||||
local size = #tbl
|
||||
for i = size, 1, -1 do
|
||||
@ -191,10 +200,15 @@ local function generate_spawn_area(surface)
|
||||
{x = spawn_position_x - 52, y = _y * -1}
|
||||
}
|
||||
shuffle(ore_positions)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 15, 2500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[2], 'iron-ore', surface, 15, 2500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[3], 'coal', surface, 15, 1500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[4], 'stone', surface, 15, 1500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 16, 3500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[2], 'iron-ore', surface, 16, 3500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[3], 'coal', surface, 16, 2500)
|
||||
map_functions.draw_smoothed_out_ore_circle(ore_positions[4], 'stone', surface, 16, 2500)
|
||||
|
||||
for _ = 0,10,1 do
|
||||
place_rock(surface, ore_positions[4]) --add rocks to stone area
|
||||
end
|
||||
|
||||
map_functions.draw_noise_tile_circle({x = spawn_position_x - 20, y = 0}, 'water', surface, 16)
|
||||
map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000)
|
||||
|
||||
|
@ -10,11 +10,14 @@ local Utils = require 'utils.core'
|
||||
local jailed_data_set = 'jailed'
|
||||
local jailed = {}
|
||||
local player_data = {}
|
||||
local terms_tbl = {}
|
||||
local votejail = {}
|
||||
local votefree = {}
|
||||
local settings = {
|
||||
playtime_for_vote = 25920000, -- 5 days
|
||||
playtime_for_instant_jail = 103680000, -- 20 days
|
||||
clear_voted_player = 36000, -- remove player from vote-tbl after 10 minutes
|
||||
clear_terms_tbl = 3600,
|
||||
votejail_count = 5,
|
||||
valid_surface = 'nauvis'
|
||||
}
|
||||
@ -34,7 +37,8 @@ Global.register(
|
||||
votejail = votejail,
|
||||
votefree = votefree,
|
||||
settings = settings,
|
||||
player_data = player_data
|
||||
player_data = player_data,
|
||||
terms_tbl = terms_tbl
|
||||
},
|
||||
function(t)
|
||||
jailed = t.jailed
|
||||
@ -42,6 +46,7 @@ Global.register(
|
||||
votefree = t.votefree
|
||||
settings = t.settings
|
||||
player_data = t.player_data
|
||||
terms_tbl = t.terms_tbl
|
||||
end
|
||||
)
|
||||
|
||||
@ -55,6 +60,55 @@ local validate_entity = function(entity)
|
||||
return true
|
||||
end
|
||||
|
||||
local clear_terms_tbl =
|
||||
Token.register(
|
||||
function(data)
|
||||
local player = data.player
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
if terms_tbl[player] then
|
||||
terms_tbl[player] = nil
|
||||
return
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
local play_alert_sound =
|
||||
Token.register(
|
||||
function(data)
|
||||
local name = data.name
|
||||
if not name then
|
||||
return
|
||||
end
|
||||
local player = game.get_player(name)
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
|
||||
player.play_sound {path = 'utility/scenario_message', volume_modifier = 1}
|
||||
end
|
||||
)
|
||||
|
||||
local clear_jail_data_token =
|
||||
Token.register(
|
||||
function(data)
|
||||
local griefer = data.griefer
|
||||
if not griefer then
|
||||
return
|
||||
end
|
||||
if votejail[griefer] and votejail[griefer].jailed then
|
||||
return
|
||||
end
|
||||
|
||||
local msg_two = 'You have been cleared of all accusations because not enough players voted against you.'
|
||||
Utils.print_to(griefer, msg_two)
|
||||
votejail[griefer] = nil
|
||||
votefree[griefer] = nil
|
||||
end
|
||||
)
|
||||
|
||||
local clear_gui =
|
||||
Token.register(
|
||||
function(data)
|
||||
@ -236,52 +290,6 @@ local teleport_player_to_gulag = function(player, action)
|
||||
end
|
||||
end
|
||||
|
||||
local on_player_changed_surface = function(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
|
||||
if not jailed[player.name] then
|
||||
return
|
||||
end
|
||||
|
||||
local surface = game.surfaces['gulag']
|
||||
if player.surface.index ~= surface.index then
|
||||
local p_data = get_player_data(player)
|
||||
if jailed[player.name] and p_data and p_data.locked then
|
||||
teleport_player_to_gulag(player, 'jail')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local on_player_joined_game = function(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
|
||||
if not jailed[player.name] then
|
||||
return
|
||||
end
|
||||
|
||||
local surface = game.surfaces['gulag']
|
||||
|
||||
if player.surface.index ~= surface.index then
|
||||
local p_data = get_player_data(player)
|
||||
if jailed[player.name] and p_data and p_data.locked then
|
||||
teleport_player_to_gulag(player, 'jail')
|
||||
end
|
||||
end
|
||||
|
||||
local gulag = get_gulag_permission_group()
|
||||
gulag.add_player(player)
|
||||
|
||||
if player.character and player.character.valid and player.character.driving then
|
||||
player.character.driving = false
|
||||
end
|
||||
end
|
||||
|
||||
local validate_args = function(data)
|
||||
local player = data.player
|
||||
local griefer = data.griefer
|
||||
@ -360,11 +368,21 @@ local validate_args = function(data)
|
||||
end
|
||||
|
||||
local vote_to_jail = function(player, griefer, msg)
|
||||
if not griefer then
|
||||
return
|
||||
end
|
||||
|
||||
if type(griefer) == 'table' then
|
||||
griefer = griefer.name
|
||||
end
|
||||
|
||||
if not votejail[griefer] then
|
||||
votejail[griefer] = {index = 0, actor = player.name}
|
||||
local message = player.name .. ' has started a vote to jail player ' .. griefer
|
||||
Utils.print_to(nil, message)
|
||||
Task.set_timeout_in_ticks(settings.clear_voted_player, clear_jail_data_token, {griefer = griefer})
|
||||
end
|
||||
|
||||
if not votejail[griefer][player.name] then
|
||||
votejail[griefer][player.name] = true
|
||||
votejail[griefer].index = votejail[griefer].index + 1
|
||||
@ -378,11 +396,20 @@ local vote_to_jail = function(player, griefer, msg)
|
||||
end
|
||||
|
||||
local vote_to_free = function(player, griefer)
|
||||
if not griefer then
|
||||
return
|
||||
end
|
||||
|
||||
if type(griefer) == 'table' then
|
||||
griefer = griefer.name
|
||||
end
|
||||
|
||||
if not votefree[griefer] then
|
||||
votefree[griefer] = {index = 0, actor = player.name}
|
||||
local message = player.name .. ' has started a vote to free player ' .. griefer
|
||||
Utils.print_to(nil, message)
|
||||
end
|
||||
|
||||
if not votefree[griefer][player.name] then
|
||||
votefree[griefer][player.name] = true
|
||||
votefree[griefer].index = votefree[griefer].index + 1
|
||||
@ -401,6 +428,7 @@ end
|
||||
|
||||
local jail = function(player, griefer, msg, raised)
|
||||
player = player or 'script'
|
||||
|
||||
if jailed[griefer] then
|
||||
return false
|
||||
end
|
||||
@ -414,6 +442,7 @@ local jail = function(player, griefer, msg, raised)
|
||||
end
|
||||
|
||||
local g = game.players[griefer]
|
||||
|
||||
teleport_player_to_gulag(g, 'jail')
|
||||
|
||||
local gulag = get_gulag_permission_group()
|
||||
@ -433,6 +462,10 @@ local jail = function(player, griefer, msg, raised)
|
||||
Utils.print_to(nil, message)
|
||||
Utils.action_warning_embed('{Jailed}', message)
|
||||
|
||||
if votejail[griefer] then
|
||||
votejail[griefer].jailed = true
|
||||
end
|
||||
|
||||
game.players[griefer].clear_console()
|
||||
Utils.print_to(griefer, message)
|
||||
return true
|
||||
@ -465,10 +498,10 @@ local is_jailed =
|
||||
function(data)
|
||||
local key = data.key
|
||||
local value = data.value
|
||||
if value then
|
||||
if value.jailed then
|
||||
jail(value.actor, key)
|
||||
end
|
||||
if value and value.jailed and value.reason then
|
||||
jail('script', key, value.reason, true)
|
||||
else
|
||||
free('script', key)
|
||||
end
|
||||
end
|
||||
)
|
||||
@ -546,15 +579,72 @@ function Public.get_jailed_table()
|
||||
return jailed
|
||||
end
|
||||
|
||||
Event.add(
|
||||
defines.events.on_player_joined_game,
|
||||
function(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if not player or not player.valid then
|
||||
Server.on_data_set_changed(
|
||||
jailed_data_set,
|
||||
function(data)
|
||||
if not data then
|
||||
return
|
||||
end
|
||||
|
||||
Public.try_dl_data(player.name)
|
||||
local v = data.value
|
||||
if v and v.actor then
|
||||
if v.jailed then
|
||||
jail(v.actor, data.key, v.reason, true)
|
||||
elseif not v.jailed then
|
||||
free('script', data.key)
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'jail',
|
||||
'Sends the player to gulag! Valid arguments are:\n/jail <LuaPlayer> <reason>',
|
||||
function()
|
||||
return
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'free',
|
||||
'Brings back the player from gulag.',
|
||||
function()
|
||||
return
|
||||
end
|
||||
)
|
||||
|
||||
function Public.required_playtime_for_instant_jail(value)
|
||||
if value then
|
||||
settings.playtime_for_instant_jail = value
|
||||
end
|
||||
return settings.playtime_for_instant_jail
|
||||
end
|
||||
|
||||
function Public.set_valid_surface(value)
|
||||
settings.valid_surface = value or 'nauvis'
|
||||
return settings.valid_surface
|
||||
end
|
||||
|
||||
function Public.required_playtime_for_vote(value)
|
||||
if value then
|
||||
settings.playtime_for_vote = value
|
||||
end
|
||||
return settings.playtime_for_vote
|
||||
end
|
||||
|
||||
function Public.reset_vote_table()
|
||||
for k, _ in pairs(votejail) do
|
||||
votejail[k] = nil
|
||||
end
|
||||
for k, _ in pairs(votefree) do
|
||||
votefree[k] = nil
|
||||
end
|
||||
end
|
||||
|
||||
Event.on_init(
|
||||
function()
|
||||
get_gulag_permission_group()
|
||||
create_gulag_surface()
|
||||
end
|
||||
)
|
||||
|
||||
@ -604,12 +694,26 @@ Event.add(
|
||||
return
|
||||
end
|
||||
|
||||
local delay = 30
|
||||
|
||||
if game.players[griefer] then
|
||||
griefer = game.players[griefer].name
|
||||
end
|
||||
|
||||
if trusted and playtime >= settings.playtime_for_vote and playtime < settings.playtime_for_instant_jail and not player.admin then
|
||||
if cmd == 'jail' then
|
||||
if not terms_tbl[player.name] then
|
||||
Utils.warning(player, 'Abusing the jail command will lead to revoked permissions. Jailing someone in case of disagreement is _NEVER_ OK!')
|
||||
Utils.warning(player, 'Run this command again to if you really want to do this!')
|
||||
for i = 1, 4 do
|
||||
Task.set_timeout_in_ticks(delay, play_alert_sound, {name = player.name})
|
||||
delay = delay + 30
|
||||
end
|
||||
terms_tbl[player.name] = true
|
||||
Task.set_timeout_in_ticks(settings.clear_terms_tbl, clear_terms_tbl, {player = player.name})
|
||||
return
|
||||
end
|
||||
Utils.warning(player, 'Logging your actions.')
|
||||
vote_to_jail(player, griefer, message)
|
||||
return
|
||||
elseif cmd == 'free' then
|
||||
@ -620,9 +724,18 @@ Event.add(
|
||||
|
||||
if player.admin or playtime >= settings.playtime_for_instant_jail then
|
||||
if cmd == 'jail' then
|
||||
if player.admin then
|
||||
Utils.warning(player, 'Abusing the jail command will lead to revoked permissions. Jailing someone in case of disagreement is not OK!')
|
||||
if not terms_tbl[player.name] then
|
||||
Utils.warning(player, 'Abusing the jail command will lead to revoked permissions. Jailing someone in case of disagreement is _NEVER_ OK!')
|
||||
Utils.warning(player, 'Run this command again to if you really want to do this!')
|
||||
for i = 1, 4 do
|
||||
Task.set_timeout_in_ticks(delay, play_alert_sound, {name = player.name})
|
||||
delay = delay + 30
|
||||
end
|
||||
terms_tbl[player.name] = true
|
||||
Task.set_timeout_in_ticks(settings.clear_terms_tbl, clear_terms_tbl, {player = player.name})
|
||||
return
|
||||
end
|
||||
Utils.warning(player, 'Logging your actions.')
|
||||
Public.try_ul_data(griefer, true, player.name, message)
|
||||
return
|
||||
elseif cmd == 'free' then
|
||||
@ -634,67 +747,58 @@ Event.add(
|
||||
end
|
||||
)
|
||||
|
||||
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
Event.add(defines.events.on_player_changed_surface, on_player_changed_surface)
|
||||
Event.on_init(create_gulag_surface)
|
||||
Event.add(
|
||||
defines.events.on_player_joined_game,
|
||||
function(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
|
||||
Server.on_data_set_changed(
|
||||
jailed_data_set,
|
||||
function(data)
|
||||
if data and data.value then
|
||||
if data.value.jailed and data.value.actor then
|
||||
jail(data.value.actor, data.key, data.value.reason, true)
|
||||
Public.try_dl_data(player.name)
|
||||
|
||||
if not jailed[player.name] then
|
||||
return
|
||||
end
|
||||
|
||||
local surface = game.surfaces['gulag']
|
||||
|
||||
if player.surface.index ~= surface.index then
|
||||
local p_data = get_player_data(player)
|
||||
if jailed[player.name] and p_data and p_data.locked then
|
||||
teleport_player_to_gulag(player, 'jail')
|
||||
end
|
||||
elseif data then
|
||||
free('script', data.key)
|
||||
end
|
||||
|
||||
local gulag = get_gulag_permission_group()
|
||||
gulag.add_player(player)
|
||||
|
||||
if player.character and player.character.valid and player.character.driving then
|
||||
player.character.driving = false
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'jail',
|
||||
'Sends the player to gulag! Valid arguments are:\n/jail <LuaPlayer> <reason>',
|
||||
function()
|
||||
return
|
||||
Event.add(
|
||||
defines.events.on_player_changed_surface,
|
||||
function(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not player or not player.valid then
|
||||
return
|
||||
end
|
||||
|
||||
if not jailed[player.name] then
|
||||
return
|
||||
end
|
||||
|
||||
local surface = game.surfaces['gulag']
|
||||
if player.surface.index ~= surface.index then
|
||||
local p_data = get_player_data(player)
|
||||
if jailed[player.name] and p_data and p_data.locked then
|
||||
teleport_player_to_gulag(player, 'jail')
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'free',
|
||||
'Brings back the player from gulag.',
|
||||
function()
|
||||
return
|
||||
end
|
||||
)
|
||||
|
||||
function Public.required_playtime_for_instant_jail(value)
|
||||
if value then
|
||||
settings.playtime_for_instant_jail = value
|
||||
end
|
||||
return settings.playtime_for_instant_jail
|
||||
end
|
||||
|
||||
function Public.set_valid_surface(value)
|
||||
settings.valid_surface = value or 'nauvis'
|
||||
return settings.valid_surface
|
||||
end
|
||||
|
||||
function Public.required_playtime_for_vote(value)
|
||||
if value then
|
||||
settings.playtime_for_vote = value
|
||||
end
|
||||
return settings.playtime_for_vote
|
||||
end
|
||||
|
||||
function Public.reset_vote_table()
|
||||
for k, _ in pairs(votejail) do
|
||||
votejail[k] = nil
|
||||
end
|
||||
for k, _ in pairs(votefree) do
|
||||
votefree[k] = nil
|
||||
end
|
||||
end
|
||||
|
||||
Event.on_init(get_gulag_permission_group)
|
||||
|
||||
return Public
|
||||
|
Loading…
x
Reference in New Issue
Block a user