1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/modules/scrap_towny_ffa/info.lua
Gerkiz 0837a8d329 scrap towny ffa fixes
Rebase from the running save
2022-03-01 18:55:02 +01:00

141 lines
5.6 KiB
Lua

local Public = {}
local Table = require 'modules.scrap_towny_ffa.table'
local info =
[[You are an "outlander" stuck on this god-forsaken planet with a bunch of other desolate fools. You can choose to join
an existing town if accepted, or go at it alone, building your own outpost or living as an "outlander".
The local inhabitants are indifferent to you at first, so long as you don't build or pollute, but become increasingly aggressive
by foreign technology. In fact, they get quite aggressive at the scent of it. If you were to hurt any of the natives you will be
brandished a rogue until your untimely death or until you find better digs.
To create a new town simply place a furnace down in a suitable spot that is not near any other towns or obstructed.
The world seems to be limited in size with uninhabitable zones on four sides. News towns can only be built within these
borders and you must leave room for the town's size (radius of 27) when placing a new town. Each town costs 100 coins.
TIP: It's best to find a spot far from existing towns and pollution, as enemies will become aggressive once you form a town.
Once a town is formed, members may invite other players and teams using a coin. To invite another player, drop a coin
on that player (with the Z key). To accept an invite, offer a coin in return to the member. To leave a town, simply drop coal
on the market. As a member of a town, your respawn point will change to that of the town.
To form any alliance with another town, drop a coin on a member or their market. If they agree they can reciprocate with a
coin offering.
The town market is the heart of your town. If it is destroyed, your town is destroyed and you will lose all research. So
protect it well, repair it whenever possible, and if you can afford, increase its health by purchasing upgrades. If your
town falls, members will be disbanded, and all buildings will become neutral and lootable.
When building your town, note that you may only build nearby existing structures such as your town market and walls and
any other structure you have placed. Beware that biters and spitters become more aggressive towards towns that are
advanced in research. Their evolution will scale around technology progress in any nearby towns and pollution levels.
This is a FFA ("Free-For-All") world. Short of bullying and derogatory remarks, anything goes. Griefing is encouraged,
so best to setup proper defenses for your town or outpost to fend off enemies when you are there and away.
Have fun and be comfy ^.^]]
function Public.toggle_button(player)
if player.gui.top['towny_map_intro_button'] then
return
end
local b = player.gui.top.add({type = 'sprite-button', caption = 'Towny', name = 'towny_map_intro_button', tooltip = 'Show Info'})
b.style.font_color = {r = 0.5, g = 0.3, b = 0.99}
b.style.font = 'heading-1'
b.style.minimal_height = 38
b.style.minimal_width = 80
b.style.top_padding = 1
b.style.left_padding = 1
b.style.right_padding = 1
b.style.bottom_padding = 1
end
function Public.show(player)
local ffatable = Table.get_table()
if player.gui.center['towny_map_intro_frame'] then
player.gui.center['towny_map_intro_frame'].destroy()
end
local frame = player.gui.center.add {type = 'frame', name = 'towny_map_intro_frame'}
frame = frame.add {type = 'frame', direction = 'vertical'}
local t = frame.add {type = 'table', column_count = 2}
local label = t.add {type = 'label', caption = 'Active Factions:'}
label.style.font = 'heading-1'
label.style.font_color = {r = 0.85, g = 0.85, b = 0.85}
label.style.right_padding = 8
t = t.add {type = 'table', column_count = 4}
local label2 = t.add {type = 'label', caption = 'Outlander' .. ':' .. #game.forces.player.connected_players .. ' '}
label2.style.font_color = {170, 170, 170}
label2.style.font = 'heading-3'
label2.style.minimal_width = 80
for _, town_center in pairs(ffatable.town_centers) do
local force = town_center.market.force
local label3 = t.add {type = 'label', caption = force.name .. ':' .. #force.connected_players .. ' '}
label3.style.font = 'heading-3'
label3.style.minimal_width = 80
label3.style.font_color = town_center.color
end
frame.add {type = 'line'}
local l = frame.add {type = 'label', caption = 'Instructions:'}
l.style.font = 'heading-1'
l.style.font_color = {r = 0.85, g = 0.85, b = 0.85}
local l2 = frame.add {type = 'label', caption = info}
l2.style.single_line = false
l2.style.font = 'heading-2'
l2.style.font_color = {r = 0.8, g = 0.7, b = 0.99}
end
function Public.close(event)
if not event.element then
return
end
if not event.element.valid then
return
end
local parent = event.element.parent
for _ = 1, 4, 1 do
if not parent then
return
end
if parent.name == 'towny_map_intro_frame' then
parent.destroy()
return
end
parent = parent.parent
end
end
function Public.toggle(event)
if not event.element then
return
end
if not event.element.valid then
return
end
if event.element.name == 'towny_map_intro_button' then
local player = game.players[event.player_index]
if player.gui.center['towny_map_intro_frame'] then
player.gui.center['towny_map_intro_frame'].destroy()
else
Public.show(player)
end
end
end
local function on_gui_click(event)
Public.close(event)
Public.toggle(event)
end
local Event = require 'utils.event'
Event.add(defines.events.on_gui_click, on_gui_click)
return Public