You've already forked ComfyFactorio
mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2026-06-20 16:32:28 +02:00
refactor and changes
This commit is contained in:
@@ -56,14 +56,15 @@ function Public.set(key, value)
|
||||
end
|
||||
end
|
||||
|
||||
Event.on_init(
|
||||
function()
|
||||
this.players = {}
|
||||
end
|
||||
)
|
||||
|
||||
function Public.reset()
|
||||
this.players = {}
|
||||
local players = game.players
|
||||
for i = 1, #players do
|
||||
local player = players[i]
|
||||
if not player.connected then
|
||||
this.players[player.index] = nil
|
||||
this.bottom_quickbar_button[player.index] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
----! Gui Functions ! ----
|
||||
@@ -73,8 +74,8 @@ local function destroy_frame(player)
|
||||
local frame = gui.screen[bottom_guis_frame]
|
||||
if frame and frame.valid then
|
||||
frame.destroy()
|
||||
this.bottom_quickbar_button[player.index] = nil
|
||||
end
|
||||
this.bottom_quickbar_button[player.index] = nil
|
||||
end
|
||||
|
||||
local function create_frame(player, rebuild)
|
||||
@@ -149,18 +150,10 @@ local function set_location(player)
|
||||
y = (resolution.height - (96 * scale))
|
||||
}
|
||||
else
|
||||
local experimental = get_game_version()
|
||||
if experimental then
|
||||
frame.location = {
|
||||
x = (resolution.width / 2) - ((54 + 445) * scale),
|
||||
y = (resolution.height - (96 * scale))
|
||||
}
|
||||
else
|
||||
frame.location = {
|
||||
x = (resolution.width / 2) - ((54 + 258) * scale),
|
||||
y = (resolution.height - (96 * scale))
|
||||
}
|
||||
end
|
||||
frame.location = {
|
||||
x = (resolution.width / 2) - ((54 + 445) * scale),
|
||||
y = (resolution.height - (96 * scale))
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ local SessionData = require 'utils.datastore.session_data'
|
||||
local Utils = require 'utils.core'
|
||||
local Tabs = require 'comfy_panel.main'
|
||||
local SpamProtection = require 'utils.spam_protection'
|
||||
local BottomFrame = require 'comfy_panel.bottom_frame'
|
||||
local Token = require 'utils.token'
|
||||
local Global = require 'utils.global'
|
||||
local Gui = require 'utils.gui'
|
||||
|
||||
local module_name = 'Config'
|
||||
|
||||
@@ -120,6 +122,20 @@ local functions = {
|
||||
game.players[event.player_index].spectator = false
|
||||
end
|
||||
end,
|
||||
['comfy_panel_bottom_right_frame'] = function(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if event.element.switch_state == 'left' then
|
||||
local bottom_frame = BottomFrame.get_player_data(player)
|
||||
if not bottom_frame then
|
||||
return
|
||||
end
|
||||
bottom_frame.bottom_left = true
|
||||
BottomFrame.set_location(player)
|
||||
else
|
||||
BottomFrame.get_player_data(player, true)
|
||||
BottomFrame.set_location(player)
|
||||
end
|
||||
end,
|
||||
['comfy_panel_auto_hotbar_switch'] = function(event)
|
||||
if event.element.switch_state == 'left' then
|
||||
global.auto_hotbar_enabled[event.player_index] = true
|
||||
@@ -166,6 +182,13 @@ local functions = {
|
||||
global.bb_settings.only_admins_vote = false
|
||||
game.print('Admin-only difficulty voting has been disabled!')
|
||||
end
|
||||
end,
|
||||
['disable_cleaning'] = function(event)
|
||||
if event.element.switch_state == 'left' then
|
||||
Gui.set_disable_clear_invalid_data(true)
|
||||
else
|
||||
Gui.set_disable_clear_invalid_data(false)
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
@@ -371,6 +394,22 @@ local function build_config_gui(data)
|
||||
scroll_pane.add({type = 'line'})
|
||||
end
|
||||
|
||||
if BottomFrame.is_custom_buttons_enabled() then
|
||||
switch_state = 'right'
|
||||
local bottom_frame = BottomFrame.get('players')
|
||||
if bottom_frame[player.index] then
|
||||
switch_state = 'left'
|
||||
end
|
||||
add_switch(
|
||||
scroll_pane,
|
||||
switch_state,
|
||||
'comfy_panel_bottom_right_frame',
|
||||
'Button Location',
|
||||
'Toggle to select if you want the bottom button on the right side or the left side.'
|
||||
)
|
||||
scroll_pane.add({type = 'line'})
|
||||
end
|
||||
|
||||
if admin then
|
||||
label = scroll_pane.add({type = 'label', caption = 'Admin Settings'})
|
||||
label.style.font = 'default-bold'
|
||||
@@ -391,6 +430,14 @@ local function build_config_gui(data)
|
||||
|
||||
scroll_pane.add({type = 'line'})
|
||||
|
||||
switch_state = 'right'
|
||||
if Gui.get_disable_clear_invalid_data() then
|
||||
switch_state = 'left'
|
||||
end
|
||||
add_switch(scroll_pane, switch_state, 'disable_cleaning', 'Gui Data Cleaning', 'Toggles the Gui data cleaning.')
|
||||
|
||||
scroll_pane.add({type = 'line'})
|
||||
|
||||
switch_state = 'right'
|
||||
if this.gui_config.spaghett.enabled then
|
||||
switch_state = 'left'
|
||||
|
||||
+12
-1
@@ -775,7 +775,7 @@ local function tick()
|
||||
if not polls.running then
|
||||
return
|
||||
end
|
||||
for _, p in pairs(game.connected_players) do
|
||||
for _, p in pairs(game.players) do
|
||||
local frame = p.gui.left[main_frame_name]
|
||||
if frame and frame.valid then
|
||||
local data = Gui.get_data(frame)
|
||||
@@ -790,6 +790,17 @@ local function tick()
|
||||
end
|
||||
end
|
||||
end
|
||||
local player_index = p.index
|
||||
local tbl = player_create_poll_data[player_index]
|
||||
if tbl then
|
||||
for k, element in pairs(tbl) do
|
||||
if type(element) == 'table' then
|
||||
if not element.valid then
|
||||
player_create_poll_data[player_index] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+5
-6
@@ -275,15 +275,14 @@ commands.add_command(
|
||||
end
|
||||
local item = game.item_prototypes
|
||||
local i = 0
|
||||
local p_modifer = Modifiers.get_table()
|
||||
for _k, _v in pairs(item) do
|
||||
i = i + 1
|
||||
if _k and _v.type ~= 'mining-tool' then
|
||||
p_modifer[player.index].character_inventory_slots_bonus['creative'] = tonumber(i)
|
||||
p_modifer[player.index].character_mining_speed_modifier['creative'] = 50
|
||||
p_modifer[player.index].character_health_bonus['creative'] = 2000
|
||||
p_modifer[player.index].character_crafting_speed_modifier['creative'] = 50
|
||||
v.character_inventory_slots_bonus = p_modifer[player.index].character_inventory_slots_bonus['creative']
|
||||
Modifiers.update_single_modifier(player, 'character_inventory_slots_bonus', 'creative', tonumber(i))
|
||||
Modifiers.update_single_modifier(player, 'character_mining_speed_modifier', 'creative', 50)
|
||||
Modifiers.update_single_modifier(player, 'character_health_bonus', 'creative', 2000)
|
||||
Modifiers.update_single_modifier(player, 'character_crafting_speed_modifier', 'creative', 50)
|
||||
v.character_inventory_slots_bonus = Modifiers.get_single_modifier(player, 'character_inventory_slots_bonus', 'creative')
|
||||
v.insert {name = _k, count = _v.stack_size}
|
||||
v.print('[CREATIVE] Inserted all base items.', Color.success)
|
||||
Modifiers.update_player_modifiers(player)
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ dexterity_name=DEXTERITY
|
||||
dexterity_tooltip=Increases running and crafting speed.
|
||||
vitality_name=VITALITY
|
||||
vitality_tooltip=Increases health.\nIncreases melee life on-hit.
|
||||
points_to_dist=POINTS TO\nDISTRIBUTE
|
||||
points_to_dist=POINTS LEFT
|
||||
life_name=LIFE
|
||||
life_tooltip=Your current health
|
||||
life_increase=Current life. Increase it by adding vitality.
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
global.offline_loot = true
|
||||
local darkness = false
|
||||
|
||||
require 'player_modifiers'
|
||||
require 'functions.soft_reset'
|
||||
require 'functions.basic_markets'
|
||||
|
||||
@@ -442,7 +441,6 @@ local function on_research_finished(event)
|
||||
end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player_modifiers = Modifier.get_table()
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
set_difficulty()
|
||||
@@ -467,7 +465,7 @@ local function on_player_joined_game(event)
|
||||
end
|
||||
end
|
||||
|
||||
player_modifiers[player.index].character_mining_speed_modifier['mountain_fortress'] = 0.5
|
||||
Modifier.update_single_modifier(player, 'character_mining_speed_modifier', 'mountain_fortress', 0.5)
|
||||
Modifier.update_player_modifiers(player)
|
||||
|
||||
local tile = surface.get_tile(player.position)
|
||||
|
||||
@@ -21,7 +21,13 @@ local this = {
|
||||
surface_cleared = false
|
||||
}
|
||||
|
||||
local starting_items = {['pistol'] = 1, ['firearm-magazine'] = 16, ['rail'] = 16, ['wood'] = 16, ['explosives'] = 32}
|
||||
local starting_items = {
|
||||
['pistol'] = 1,
|
||||
['firearm-magazine'] = 16,
|
||||
['rail'] = 16,
|
||||
['wood'] = 16,
|
||||
['explosives'] = 32
|
||||
}
|
||||
|
||||
Global.register(
|
||||
this,
|
||||
@@ -59,21 +65,6 @@ local artillery_target_entities = {
|
||||
'spidertron'
|
||||
}
|
||||
|
||||
function Public.get_player_data(player, remove_user_data)
|
||||
local players = WPT.get('players')
|
||||
if remove_user_data then
|
||||
if players[player.index] then
|
||||
players[player.index] = nil
|
||||
end
|
||||
end
|
||||
if not players[player.index] then
|
||||
players[player.index] = {}
|
||||
end
|
||||
return players[player.index]
|
||||
end
|
||||
|
||||
local get_player_data = Public.get_player_data
|
||||
|
||||
local function debug_str(msg)
|
||||
local debug = WPT.get('debug')
|
||||
if not debug then
|
||||
@@ -1132,6 +1123,7 @@ end
|
||||
|
||||
function Public.on_player_joined_game(event)
|
||||
local active_surface_index = WPT.get('active_surface_index')
|
||||
local players = WPT.get('players')
|
||||
local player = game.players[event.player_index]
|
||||
local surface = game.surfaces[active_surface_index]
|
||||
|
||||
@@ -1139,15 +1131,15 @@ function Public.on_player_joined_game(event)
|
||||
|
||||
ICW_Func.is_minimap_valid(player, surface)
|
||||
|
||||
local player_data = get_player_data(player)
|
||||
|
||||
if not player_data.first_join then
|
||||
if player.online_time < 1 then
|
||||
if not players[player.index] then
|
||||
players[player.index] = {}
|
||||
end
|
||||
local message = ({'main.greeting', player.name})
|
||||
Alert.alert_player(player, 15, message)
|
||||
for item, amount in pairs(starting_items) do
|
||||
player.insert({name = item, count = amount})
|
||||
end
|
||||
player_data.first_join = true
|
||||
end
|
||||
|
||||
local top = player.gui.top
|
||||
@@ -1213,26 +1205,6 @@ function Public.on_pre_player_left_game(event)
|
||||
end
|
||||
end
|
||||
|
||||
function Public.on_player_respawned(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if not (player and player.valid) then
|
||||
return
|
||||
end
|
||||
local player_data = get_player_data(player)
|
||||
if player_data.died then
|
||||
player_data.died = nil
|
||||
end
|
||||
end
|
||||
|
||||
function Public.on_player_died(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if not (player and player.valid) then
|
||||
return
|
||||
end
|
||||
local player_data = get_player_data(player)
|
||||
player_data.died = true
|
||||
end
|
||||
|
||||
function Public.on_player_changed_position(event)
|
||||
local active_surface_index = WPT.get('active_surface_index')
|
||||
if not active_surface_index then
|
||||
@@ -1363,16 +1335,12 @@ end
|
||||
|
||||
local on_player_joined_game = Public.on_player_joined_game
|
||||
local on_player_left_game = Public.on_player_left_game
|
||||
local on_player_respawned = Public.on_player_respawned
|
||||
local on_player_died = Public.on_player_died
|
||||
local on_research_finished = Public.on_research_finished
|
||||
local on_player_changed_position = Public.on_player_changed_position
|
||||
local on_pre_player_left_game = Public.on_pre_player_left_game
|
||||
|
||||
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
Event.add(defines.events.on_player_left_game, on_player_left_game)
|
||||
Event.add(defines.events.on_player_respawned, on_player_respawned)
|
||||
Event.add(defines.events.on_player_died, on_player_died)
|
||||
Event.add(defines.events.on_research_finished, on_research_finished)
|
||||
Event.add(defines.events.on_player_changed_position, on_player_changed_position)
|
||||
Event.add(defines.events.on_pre_player_left_game, on_pre_player_left_game)
|
||||
|
||||
@@ -619,6 +619,10 @@ local function redraw_market_items(gui, player, search_text)
|
||||
return
|
||||
end
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
|
||||
local trusted = Session.get_trusted_table()
|
||||
|
||||
if gui and gui.valid then
|
||||
@@ -781,6 +785,9 @@ end
|
||||
local function slider_changed(event)
|
||||
local player = game.players[event.player_index]
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
local slider_value
|
||||
|
||||
slider_value = players
|
||||
@@ -821,6 +828,10 @@ local function text_changed(event)
|
||||
end
|
||||
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
|
||||
local player = game.players[event.player_index]
|
||||
|
||||
local data = players[player.index].data
|
||||
@@ -886,6 +897,9 @@ local function gui_opened(event)
|
||||
local player_item_count = inventory.get_item_count('coin')
|
||||
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
|
||||
if not players[player.index].data then
|
||||
players[player.index].data = {}
|
||||
@@ -983,6 +997,9 @@ end
|
||||
|
||||
local function gui_click(event)
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
|
||||
local element = event.element
|
||||
local player = game.players[event.player_index]
|
||||
@@ -1316,6 +1333,9 @@ end
|
||||
local function gui_closed(event)
|
||||
local player = game.players[event.player_index]
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
|
||||
local type = event.gui_type
|
||||
|
||||
@@ -1330,6 +1350,9 @@ end
|
||||
|
||||
local function on_player_changed_position(event)
|
||||
local players = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
local player = game.players[event.player_index]
|
||||
if not players[player.index] then
|
||||
return
|
||||
@@ -1868,6 +1891,9 @@ function Public.refresh_gui()
|
||||
local screen = gui.screen
|
||||
|
||||
local player_data = WPT.get('players')
|
||||
if not players then
|
||||
return
|
||||
end
|
||||
local data = player_data[player.index].data
|
||||
|
||||
if screen and data and data.frame then
|
||||
|
||||
@@ -31,6 +31,7 @@ local Difficulty = require 'modules.difficulty_vote_by_amount'
|
||||
local Task = require 'utils.task'
|
||||
local Token = require 'utils.token'
|
||||
local Alert = require 'utils.alert'
|
||||
-- local BottomFrame = require 'comfy_panel.bottom_frame'
|
||||
local AntiGrief = require 'antigrief'
|
||||
local Misc = require 'commands.misc'
|
||||
local Modifiers = require 'player_modifiers'
|
||||
@@ -131,8 +132,11 @@ function Public.reset_map()
|
||||
|
||||
Autostash.insert_into_furnace(true)
|
||||
Autostash.insert_into_wagon(true)
|
||||
Autostash.bottom_button(false)
|
||||
BuriedEnemies.reset()
|
||||
|
||||
--[[ BottomFrame.reset()
|
||||
BottomFrame.activate_custom_buttons(true)
|
||||
BottomFrame.bottom_right(true) ]]
|
||||
Poll.reset()
|
||||
ICW.reset()
|
||||
IC.reset()
|
||||
@@ -277,15 +281,9 @@ end
|
||||
local is_player_valid = function()
|
||||
local players = game.connected_players
|
||||
for _, player in pairs(players) do
|
||||
if player.connected and not player.character or not player.character.valid then
|
||||
if not player.admin then
|
||||
local player_data = Functions.get_player_data(player)
|
||||
if player_data.died then
|
||||
return
|
||||
end
|
||||
player.set_controller {type = defines.controllers.god}
|
||||
player.create_character()
|
||||
end
|
||||
if player.connected and player.controller_type == 2 then
|
||||
player.set_controller {type = defines.controllers.god}
|
||||
player.create_character()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -201,10 +201,8 @@ function Public.reset_table()
|
||||
}
|
||||
this.market_announce = game.tick + 1200
|
||||
this.check_heavy_damage = true
|
||||
|
||||
--!reset player tables
|
||||
for _, player in pairs(this.players) do
|
||||
player.died = false
|
||||
for k, _ in pairs(this.players) do
|
||||
this.players[k] = {}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+49
-17
@@ -3,6 +3,7 @@
|
||||
|
||||
local Global = require 'utils.global'
|
||||
local Event = require 'utils.event'
|
||||
local BottomFrame = require 'comfy_panel.bottom_frame'
|
||||
local floor = math.floor
|
||||
local print_color = {r = 120, g = 255, b = 0}
|
||||
|
||||
@@ -11,6 +12,7 @@ local this = {
|
||||
whitelist = {},
|
||||
insert_into_furnace = false,
|
||||
insert_into_wagon = false,
|
||||
bottom_button = false,
|
||||
small_radius = 2
|
||||
}
|
||||
|
||||
@@ -537,23 +539,38 @@ local function create_gui_button(player)
|
||||
else
|
||||
tooltip = 'Sort your inventory into nearby chests.\nLMB: Everything, excluding quickbar items.\nRMB: Only ores to nearby chests, excluding quickbar items.'
|
||||
end
|
||||
local b =
|
||||
player.gui.top.add(
|
||||
{
|
||||
type = 'sprite-button',
|
||||
sprite = 'item/wooden-chest',
|
||||
name = 'auto_stash',
|
||||
tooltip = tooltip
|
||||
}
|
||||
)
|
||||
b.style.font_color = {r = 0.11, g = 0.8, b = 0.44}
|
||||
b.style.font = 'heading-1'
|
||||
b.style.minimal_height = 40
|
||||
b.style.maximal_width = 40
|
||||
b.style.minimal_width = 38
|
||||
b.style.maximal_height = 38
|
||||
b.style.padding = 1
|
||||
b.style.margin = 0
|
||||
if this.bottom_button then
|
||||
local data = BottomFrame.get('bottom_quickbar_button')
|
||||
-- save it for later use
|
||||
data.tooltip = tooltip
|
||||
data.sprite = 'item/wooden-chest'
|
||||
|
||||
if data[player.index] then
|
||||
local f = data[player.index]
|
||||
if f.frame and f.frame.valid then
|
||||
f.frame.sprite = 'item/wooden-chest'
|
||||
f.frame.tooltip = tooltip
|
||||
end
|
||||
end
|
||||
else
|
||||
local b =
|
||||
player.gui.top.add(
|
||||
{
|
||||
type = 'sprite-button',
|
||||
sprite = 'item/wooden-chest',
|
||||
name = 'auto_stash',
|
||||
tooltip = tooltip
|
||||
}
|
||||
)
|
||||
b.style.font_color = {r = 0.11, g = 0.8, b = 0.44}
|
||||
b.style.font = 'heading-1'
|
||||
b.style.minimal_height = 40
|
||||
b.style.maximal_width = 40
|
||||
b.style.minimal_width = 38
|
||||
b.style.maximal_height = 38
|
||||
b.style.padding = 1
|
||||
b.style.margin = 0
|
||||
end
|
||||
end
|
||||
|
||||
local function do_whitelist()
|
||||
@@ -596,6 +613,13 @@ local function on_gui_click(event)
|
||||
end
|
||||
local player = game.players[event.player_index]
|
||||
local name = 'auto_stash'
|
||||
if this.bottom_button then
|
||||
local data = BottomFrame.get('bottom_quickbar_button')
|
||||
if data[player.index] then
|
||||
data = data[player.index]
|
||||
name = data.name
|
||||
end
|
||||
end
|
||||
|
||||
if event.element.name == name then
|
||||
auto_stash(player, event)
|
||||
@@ -618,6 +642,14 @@ function Public.insert_into_wagon(value)
|
||||
end
|
||||
end
|
||||
|
||||
function Public.bottom_button(value)
|
||||
if value then
|
||||
this.bottom_button = value
|
||||
else
|
||||
this.bottom_button = false
|
||||
end
|
||||
end
|
||||
|
||||
Event.on_configuration_changed(do_whitelist)
|
||||
|
||||
Event.on_init(do_whitelist)
|
||||
|
||||
+2
-3
@@ -40,14 +40,13 @@ local function compute_fullness(player)
|
||||
end
|
||||
|
||||
local function check_burden(event)
|
||||
local player_modifiers = Modifier.get_table()
|
||||
local player = game.players[event.player_index]
|
||||
if not validate_player(player) then
|
||||
return
|
||||
end
|
||||
local fullness = compute_fullness(player)
|
||||
player_modifiers[player.index].character_running_speed_modifier['randomness'] = 0.3 - fullness
|
||||
player_modifiers[player.index].character_mining_speed_modifier['randomess'] = 0.3 - fullness
|
||||
Modifier.update_single_modifier(player, 'character_running_speed_modifier', 'randomness', 0.3 - fullness)
|
||||
Modifier.update_single_modifier(player, 'character_mining_speed_modifier', 'randomness', 0.3 - fullness)
|
||||
Modifier.update_player_modifiers(player)
|
||||
if fullness >= 0.9 and fullness <= 0.901 then
|
||||
player.print('Maybe you should drop some of that inventory to lessen the burden.', Color.red)
|
||||
|
||||
+3
-6
@@ -1,7 +1,5 @@
|
||||
-- hunger module by mewmew --
|
||||
|
||||
require 'player_modifiers'
|
||||
|
||||
local P = require 'player_modifiers'
|
||||
|
||||
local starve_messages = {' ran out of foodstamps.', ' starved.', ' should not have skipped breakfast today.'}
|
||||
@@ -101,7 +99,6 @@ local function update_hunger_gui(player)
|
||||
end
|
||||
|
||||
local function hunger_update(player, food_value)
|
||||
local player_modifiers = P.get_table()
|
||||
if not player.character then
|
||||
return
|
||||
end
|
||||
@@ -147,11 +144,11 @@ local function hunger_update(player, food_value)
|
||||
end
|
||||
|
||||
if player_hunger_buff[global.player_hunger[player.name]] < 0 then
|
||||
player_modifiers[player.index].character_running_speed_modifier['hunger'] = player_hunger_buff[global.player_hunger[player.name]] * 0.75
|
||||
P.update_single_modifier(player, 'character_running_speed_modifier', 'hunger', player_hunger_buff[global.player_hunger[player.name]] * 0.75)
|
||||
else
|
||||
player_modifiers[player.index].character_running_speed_modifier['hunger'] = player_hunger_buff[global.player_hunger[player.name]] * 0.15
|
||||
P.update_single_modifier(player, 'character_running_speed_modifier', 'hunger', player_hunger_buff[global.player_hunger[player.name]] * 0.15)
|
||||
end
|
||||
player_modifiers[player.index].character_mining_speed_modifier['hunger'] = player_hunger_buff[global.player_hunger[player.name]]
|
||||
P.update_single_modifier(player, 'character_mining_speed_modifier', 'hunger', player_hunger_buff[global.player_hunger[player.name]])
|
||||
P.update_player_modifiers(player)
|
||||
|
||||
update_hunger_gui(player)
|
||||
|
||||
+20
-24
@@ -13,8 +13,6 @@ VITALITY > character_health_bonus
|
||||
|
||||
Modified by Gerkiz *-*
|
||||
]]
|
||||
require 'player_modifiers'
|
||||
|
||||
local math_random = math.random
|
||||
local math_sqrt = math.sqrt
|
||||
local math_floor = math.floor
|
||||
@@ -145,7 +143,7 @@ local function update_char_button(player)
|
||||
if not player.gui.top.rpg then
|
||||
draw_gui_char_button(player)
|
||||
end
|
||||
if rpg_t[player.index].points_to_distribute > 0 then
|
||||
if rpg_t[player.index].points_left > 0 then
|
||||
player.gui.top.rpg.style.font_color = {245, 0, 0}
|
||||
else
|
||||
player.gui.top.rpg.style.font_color = {175, 175, 175}
|
||||
@@ -155,24 +153,22 @@ end
|
||||
local function update_player_stats(player)
|
||||
local player_modifiers = P.get_table()
|
||||
local strength = rpg_t[player.index].strength - 10
|
||||
player_modifiers[player.index].character_inventory_slots_bonus['rpg'] = math.round(strength * 0.2, 3)
|
||||
player_modifiers[player.index].character_mining_speed_modifier['rpg'] = math.round(strength * 0.008, 3)
|
||||
P.update_single_modifier(player, 'character_inventory_slots_bonus', 'rpg', math.round(strength * 0.2, 3))
|
||||
P.update_single_modifier(player, 'character_mining_speed_modifier', 'rpg', math.round(strength * 0.008, 3))
|
||||
|
||||
local magic = rpg_t[player.index].magic - 10
|
||||
local v = magic * 0.15
|
||||
player_modifiers[player.index].character_build_distance_bonus['rpg'] = math.round(v, 3)
|
||||
player_modifiers[player.index].character_item_drop_distance_bonus['rpg'] = math.round(v, 3)
|
||||
player_modifiers[player.index].character_reach_distance_bonus['rpg'] = math.round(v, 3)
|
||||
player_modifiers[player.index].character_loot_pickup_distance_bonus['rpg'] = math.round(v * 0.5, 3)
|
||||
player_modifiers[player.index].character_item_pickup_distance_bonus['rpg'] = math.round(v * 0.25, 3)
|
||||
player_modifiers[player.index].character_resource_reach_distance_bonus['rpg'] = math.round(v * 0.15, 3)
|
||||
P.update_single_modifier(player, 'character_build_distance_bonus', 'rpg', math.round(v, 3))
|
||||
P.update_single_modifier(player, 'character_item_drop_distance_bonus', 'rpg', math.round(v, 3))
|
||||
P.update_single_modifier(player, 'character_reach_distance_bonus', 'rpg', math.round(v, 3))
|
||||
P.update_single_modifier(player, 'character_loot_pickup_distance_bonus', 'rpg', math.round(v * 0.5, 3))
|
||||
P.update_single_modifier(player, 'character_item_pickup_distance_bonus', 'rpg', math.round(v * 0.25, 3))
|
||||
P.update_single_modifier(player, 'character_resource_reach_distance_bonus', 'rpg', math.round(v * 0.15, 3))
|
||||
|
||||
local dexterity = rpg_t[player.index].dexterity - 10
|
||||
player_modifiers[player.index].character_running_speed_modifier['rpg'] = math.round(dexterity * 0.002, 3)
|
||||
player_modifiers[player.index].character_crafting_speed_modifier['rpg'] = math.round(dexterity * 0.015, 3)
|
||||
|
||||
player_modifiers[player.index].character_health_bonus['rpg'] = math.round((rpg_t[player.index].vitality - 10) * 6, 3)
|
||||
|
||||
P.update_single_modifier(player, 'character_running_speed_modifier', 'rpg', math.round(dexterity * 0.002, 3))
|
||||
P.update_single_modifier(player, 'character_crafting_speed_modifier', 'rpg', math.round(dexterity * 0.015, 3))
|
||||
P.update_single_modifier(player, 'character_health_bonus', 'rpg', math.round((rpg_t[player.index].vitality - 10) * 6, 3))
|
||||
P.update_player_modifiers(player)
|
||||
end
|
||||
|
||||
@@ -222,7 +218,7 @@ end
|
||||
local function add_gui_increase_stat(element, name, player, width)
|
||||
local sprite = 'virtual-signal/signal-red'
|
||||
local symbol = '✚'
|
||||
if rpg_t[player.index].points_to_distribute <= 0 then
|
||||
if rpg_t[player.index].points_left <= 0 then
|
||||
sprite = 'virtual-signal/signal-black'
|
||||
end
|
||||
local e = element.add({type = 'sprite-button', name = name, caption = symbol, sprite = sprite})
|
||||
@@ -335,7 +331,7 @@ local function draw_gui(player, forced)
|
||||
add_gui_increase_stat(tt, 'vitality', player)
|
||||
|
||||
add_gui_description(tt, 'POINTS TO\nDISTRIBUTE', w1)
|
||||
local e = add_gui_stat(tt, rpg_t[player.index].points_to_distribute, w2)
|
||||
local e = add_gui_stat(tt, rpg_t[player.index].points_left, w2)
|
||||
e.style.font_color = {200, 0, 0}
|
||||
add_gui_description(tt, ' ', w2)
|
||||
|
||||
@@ -500,7 +496,7 @@ local function level_up(player)
|
||||
return
|
||||
end
|
||||
draw_level_text(player)
|
||||
rpg_t[player.index].points_to_distribute = rpg_t[player.index].points_to_distribute + distribute_points_gain
|
||||
rpg_t[player.index].points_left = rpg_t[player.index].points_left + distribute_points_gain
|
||||
update_char_button(player)
|
||||
table.shuffle_table(rpg_frame_icons)
|
||||
if player.gui.left.rpg then
|
||||
@@ -552,7 +548,7 @@ function Public.rpg_reset_player(player)
|
||||
magic = 10,
|
||||
dexterity = 10,
|
||||
vitality = 10,
|
||||
points_to_distribute = 0,
|
||||
points_left = 0,
|
||||
last_floaty_text = visuals_delay,
|
||||
xp_since_last_floaty_text = 0,
|
||||
rotated_entity_delay = 0,
|
||||
@@ -616,11 +612,11 @@ local function on_gui_click(event)
|
||||
|
||||
if event.button == defines.mouse_button_type.right then
|
||||
for a = 1, 5, 1 do
|
||||
if rpg_t[player.index].points_to_distribute <= 0 then
|
||||
if rpg_t[player.index].points_left <= 0 then
|
||||
draw_gui(player, true)
|
||||
return
|
||||
end
|
||||
rpg_t[player.index].points_to_distribute = rpg_t[player.index].points_to_distribute - 1
|
||||
rpg_t[player.index].points_left = rpg_t[player.index].points_left - 1
|
||||
rpg_t[player.index][index] = rpg_t[player.index][index] + 1
|
||||
update_player_stats(player)
|
||||
end
|
||||
@@ -628,11 +624,11 @@ local function on_gui_click(event)
|
||||
return
|
||||
end
|
||||
|
||||
if rpg_t[player.index].points_to_distribute <= 0 then
|
||||
if rpg_t[player.index].points_left <= 0 then
|
||||
draw_gui(player, true)
|
||||
return
|
||||
end
|
||||
rpg_t[player.index].points_to_distribute = rpg_t[player.index].points_to_distribute - 1
|
||||
rpg_t[player.index].points_left = rpg_t[player.index].points_left - 1
|
||||
rpg_t[player.index][index] = rpg_t[player.index][index] + 1
|
||||
update_player_stats(player)
|
||||
draw_gui(player, true)
|
||||
|
||||
@@ -117,12 +117,12 @@ local function level_up(player)
|
||||
return
|
||||
end
|
||||
RPG_GUI.draw_level_text(player)
|
||||
rpg_t[player.index].points_to_distribute = rpg_t[player.index].points_to_distribute + distribute_points_gain
|
||||
rpg_t[player.index].points_left = rpg_t[player.index].points_left + distribute_points_gain
|
||||
if rpg_t[player.index].allocate_index ~= 1 then
|
||||
local node = rpg_t[player.index].allocate_index
|
||||
local index = names[node]:lower()
|
||||
rpg_t[player.index][index] = rpg_t[player.index][index] + distribute_points_gain
|
||||
rpg_t[player.index].points_to_distribute = rpg_t[player.index].points_to_distribute - distribute_points_gain
|
||||
rpg_t[player.index].points_left = rpg_t[player.index].points_left - distribute_points_gain
|
||||
if not rpg_t[player.index].reset then
|
||||
rpg_t[player.index].total = rpg_t[player.index].total + distribute_points_gain
|
||||
end
|
||||
@@ -517,7 +517,7 @@ function Public.rpg_reset_player(player, one_time_reset)
|
||||
total = 0
|
||||
end
|
||||
local old_level = rpg_t[player.index].level
|
||||
local old_points_to_distribute = rpg_t[player.index].points_to_distribute
|
||||
local old_points_to_distribute = rpg_t[player.index].points_left
|
||||
local old_xp = rpg_t[player.index].xp
|
||||
rpg_t[player.index] = {
|
||||
level = 1,
|
||||
@@ -539,7 +539,7 @@ function Public.rpg_reset_player(player, one_time_reset)
|
||||
enable_entity_spawn = false,
|
||||
health_bar = rpg_t[player.index].health_bar,
|
||||
mana_bar = rpg_t[player.index].mana_bar,
|
||||
points_to_distribute = 0,
|
||||
points_left = 0,
|
||||
last_floaty_text = visuals_delay,
|
||||
xp_since_last_floaty_text = 0,
|
||||
reset = true,
|
||||
@@ -551,7 +551,7 @@ function Public.rpg_reset_player(player, one_time_reset)
|
||||
stone_path = false,
|
||||
one_punch = false
|
||||
}
|
||||
rpg_t[player.index].points_to_distribute = old_points_to_distribute + total
|
||||
rpg_t[player.index].points_left = old_points_to_distribute + total
|
||||
rpg_t[player.index].xp = old_xp
|
||||
rpg_t[player.index].level = old_level
|
||||
else
|
||||
@@ -573,7 +573,7 @@ function Public.rpg_reset_player(player, one_time_reset)
|
||||
flame_boots = false,
|
||||
explosive_bullets = false,
|
||||
enable_entity_spawn = false,
|
||||
points_to_distribute = 0,
|
||||
points_left = 0,
|
||||
last_floaty_text = visuals_delay,
|
||||
xp_since_last_floaty_text = 0,
|
||||
reset = false,
|
||||
|
||||
+29
-41
@@ -48,7 +48,7 @@ function Public.update_char_button(player)
|
||||
if not player.gui.top[draw_main_frame_name] then
|
||||
Public.draw_gui_char_button(player)
|
||||
end
|
||||
if rpg_t[player.index].points_to_distribute > 0 then
|
||||
if rpg_t[player.index].points_left > 0 then
|
||||
player.gui.top[draw_main_frame_name].style.font_color = {245, 0, 0}
|
||||
else
|
||||
player.gui.top[draw_main_frame_name].style.font_color = {175, 175, 175}
|
||||
@@ -119,7 +119,7 @@ local function add_gui_increase_stat(element, name, player)
|
||||
local rpg_t = RPG.get('rpg_t')
|
||||
local sprite = 'virtual-signal/signal-red'
|
||||
local symbol = '✚'
|
||||
if rpg_t[player.index].points_to_distribute <= 0 then
|
||||
if rpg_t[player.index].points_left <= 0 then
|
||||
sprite = 'virtual-signal/signal-black'
|
||||
end
|
||||
local e = element.add({type = 'sprite-button', name = name, caption = symbol, sprite = sprite})
|
||||
@@ -275,7 +275,7 @@ local function draw_main_frame(player, location)
|
||||
add_gui_increase_stat(left_bottom_table, 'vitality', player)
|
||||
|
||||
add_gui_description(left_bottom_table, ({'rpg_gui.points_to_dist'}), w1)
|
||||
add_gui_stat(left_bottom_table, rpg_t[player.index].points_to_distribute, w2, nil, nil, {200, 0, 0})
|
||||
add_gui_stat(left_bottom_table, rpg_t[player.index].points_left, w2, nil, nil, {200, 0, 0})
|
||||
add_gui_description(left_bottom_table, ' ', w2)
|
||||
|
||||
add_gui_description(left_bottom_table, ' ', 40)
|
||||
@@ -476,20 +476,19 @@ end
|
||||
function Public.update_player_stats(player)
|
||||
local rpg_extra = RPG.get('rpg_extra')
|
||||
local rpg_t = RPG.get('rpg_t')
|
||||
local player_modifiers = P.get_table()
|
||||
local strength = rpg_t[player.index].strength - 10
|
||||
player_modifiers[player.index].character_inventory_slots_bonus['rpg'] = math.round(strength * 0.2, 3)
|
||||
player_modifiers[player.index].character_mining_speed_modifier['rpg'] = math.round(strength * 0.007, 3)
|
||||
player_modifiers[player.index].character_maximum_following_robot_count_bonus['rpg'] = math.round(strength / 2 * 0.03, 3)
|
||||
P.update_single_modifier(player, 'character_inventory_slots_bonus', 'rpg', math.round(strength * 0.2, 3))
|
||||
P.update_single_modifier(player, 'character_mining_speed_modifier', 'rpg', math.round(strength * 0.007, 3))
|
||||
P.update_single_modifier(player, 'character_maximum_following_robot_count_bonus', 'rpg', math.round(strength / 2 * 0.03, 3))
|
||||
|
||||
local magic = rpg_t[player.index].magicka - 10
|
||||
local v = magic * 0.22
|
||||
player_modifiers[player.index].character_build_distance_bonus['rpg'] = math.min(60, math.round(v * 0.25, 3))
|
||||
player_modifiers[player.index].character_item_drop_distance_bonus['rpg'] = math.min(60, math.round(v * 0.25, 3))
|
||||
player_modifiers[player.index].character_reach_distance_bonus['rpg'] = math.min(60, math.round(v * 0.25, 3))
|
||||
player_modifiers[player.index].character_loot_pickup_distance_bonus['rpg'] = math.min(20, math.round(v * 0.22, 3))
|
||||
player_modifiers[player.index].character_item_pickup_distance_bonus['rpg'] = math.min(20, math.round(v * 0.25, 3))
|
||||
player_modifiers[player.index].character_resource_reach_distance_bonus['rpg'] = math.min(20, math.round(v * 0.15, 3))
|
||||
P.update_single_modifier(player, 'character_build_distance_bonus', 'rpg', math.min(60, math.round(v * 0.25, 3)))
|
||||
P.update_single_modifier(player, 'character_item_drop_distance_bonus', 'rpg', math.min(60, math.round(v * 0.25, 3)))
|
||||
P.update_single_modifier(player, 'character_reach_distance_bonus', 'rpg', math.min(60, math.round(v * 0.25, 3)))
|
||||
P.update_single_modifier(player, 'character_loot_pickup_distance_bonus', 'rpg', math.min(20, math.round(v * 0.22, 3)))
|
||||
P.update_single_modifier(player, 'character_item_pickup_distance_bonus', 'rpg', math.min(20, math.round(v * 0.25, 3)))
|
||||
P.update_single_modifier(player, 'character_resource_reach_distance_bonus', 'rpg', math.min(20, math.round(v * 0.15, 3)))
|
||||
if rpg_t[player.index].mana_max >= rpg_extra.mana_limit then
|
||||
rpg_t[player.index].mana_max = rpg_extra.mana_limit
|
||||
else
|
||||
@@ -497,11 +496,9 @@ function Public.update_player_stats(player)
|
||||
end
|
||||
|
||||
local dexterity = rpg_t[player.index].dexterity - 10
|
||||
player_modifiers[player.index].character_running_speed_modifier['rpg'] = math.round(dexterity * 0.0015, 3)
|
||||
player_modifiers[player.index].character_crafting_speed_modifier['rpg'] = math.round(dexterity * 0.015, 3)
|
||||
|
||||
player_modifiers[player.index].character_health_bonus['rpg'] = math.round((rpg_t[player.index].vitality - 10) * 6, 3)
|
||||
|
||||
P.update_single_modifier(player, 'character_running_speed_modifier', 'rpg', math.round(dexterity * 0.0015, 3))
|
||||
P.update_single_modifier(player, 'character_crafting_speed_modifier', 'rpg', math.round(dexterity * 0.015, 3))
|
||||
P.update_single_modifier(player, 'character_health_bonus', 'rpg', math.round((rpg_t[player.index].vitality - 10) * 6, 3))
|
||||
P.update_player_modifiers(player)
|
||||
end
|
||||
|
||||
@@ -559,7 +556,6 @@ Gui.on_click(
|
||||
|
||||
local screen = player.gui.screen
|
||||
local frame = screen[settings_frame_name]
|
||||
local player_modifiers = P.get_table()
|
||||
local data = Gui.get_data(event.element)
|
||||
local health_bar_gui_input = data.health_bar_gui_input
|
||||
local reset_gui_input = data.reset_gui_input
|
||||
@@ -624,39 +620,31 @@ Gui.on_click(
|
||||
end
|
||||
|
||||
if movement_speed_gui_input and movement_speed_gui_input.valid then
|
||||
if not player_modifiers.disabled_modifier[player.index] then
|
||||
player_modifiers.disabled_modifier[player.index] = {}
|
||||
end
|
||||
if not movement_speed_gui_input.state then
|
||||
player_modifiers.disabled_modifier[player.index].character_running_speed_modifier = true
|
||||
P.disable_single_modifier(player, 'character_running_speed_modifier', true)
|
||||
P.update_player_modifiers(player)
|
||||
elseif movement_speed_gui_input.state then
|
||||
player_modifiers.disabled_modifier[player.index].character_running_speed_modifier = false
|
||||
P.disable_single_modifier(player, 'character_running_speed_modifier', false)
|
||||
P.update_player_modifiers(player)
|
||||
end
|
||||
end
|
||||
|
||||
if magic_pickup_gui_input and magic_pickup_gui_input.valid then
|
||||
if not player_modifiers.disabled_modifier[player.index] then
|
||||
player_modifiers.disabled_modifier[player.index] = {}
|
||||
end
|
||||
if not magic_pickup_gui_input.state then
|
||||
player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_build_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_item_drop_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_reach_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_loot_pickup_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus = true
|
||||
player_modifiers.disabled_modifier[player.index].character_resource_reach_distance_bonus = true
|
||||
P.disable_single_modifier(player, 'character_item_pickup_distance_bonus', true)
|
||||
P.disable_single_modifier(player, 'character_build_distance_bonus', true)
|
||||
P.disable_single_modifier(player, 'character_item_drop_distance_bonus', true)
|
||||
P.disable_single_modifier(player, 'character_reach_distance_bonus', true)
|
||||
P.disable_single_modifier(player, 'character_loot_pickup_distance_bonus', true)
|
||||
P.disable_single_modifier(player, 'character_resource_reach_distance_bonus', true)
|
||||
P.update_player_modifiers(player)
|
||||
elseif magic_pickup_gui_input.state then
|
||||
player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_build_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_item_drop_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_reach_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_loot_pickup_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus = false
|
||||
player_modifiers.disabled_modifier[player.index].character_resource_reach_distance_bonus = false
|
||||
P.disable_single_modifier(player, 'character_item_pickup_distance_bonus', false)
|
||||
P.disable_single_modifier(player, 'character_build_distance_bonus', false)
|
||||
P.disable_single_modifier(player, 'character_item_drop_distance_bonus', false)
|
||||
P.disable_single_modifier(player, 'character_reach_distance_bonus', false)
|
||||
P.disable_single_modifier(player, 'character_loot_pickup_distance_bonus', false)
|
||||
P.disable_single_modifier(player, 'character_resource_reach_distance_bonus', false)
|
||||
P.update_player_modifiers(player)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -78,11 +78,11 @@ local function on_gui_click(event)
|
||||
end
|
||||
|
||||
if shift then
|
||||
local count = rpg_t.points_to_distribute
|
||||
local count = rpg_t.points_left
|
||||
if not count then
|
||||
return
|
||||
end
|
||||
rpg_t.points_to_distribute = 0
|
||||
rpg_t.points_left = 0
|
||||
rpg_t[index] = rpg_t[index] + count
|
||||
if not rpg_t.reset then
|
||||
rpg_t.total = rpg_t.total + count
|
||||
@@ -91,11 +91,11 @@ local function on_gui_click(event)
|
||||
RPG_GUI.update_player_stats(player)
|
||||
elseif event.button == defines.mouse_button_type.right then
|
||||
for _ = 1, points_per_level, 1 do
|
||||
if rpg_t.points_to_distribute <= 0 then
|
||||
if rpg_t.points_left <= 0 then
|
||||
RPG_GUI.toggle(player, true)
|
||||
return
|
||||
end
|
||||
rpg_t.points_to_distribute = rpg_t.points_to_distribute - 1
|
||||
rpg_t.points_left = rpg_t.points_left - 1
|
||||
rpg_t[index] = rpg_t[index] + 1
|
||||
if not rpg_t.reset then
|
||||
rpg_t.total = rpg_t.total + 1
|
||||
@@ -106,11 +106,11 @@ local function on_gui_click(event)
|
||||
return
|
||||
end
|
||||
|
||||
if rpg_t.points_to_distribute <= 0 then
|
||||
if rpg_t.points_left <= 0 then
|
||||
RPG_GUI.toggle(player, true)
|
||||
return
|
||||
end
|
||||
rpg_t.points_to_distribute = rpg_t.points_to_distribute - 1
|
||||
rpg_t.points_left = rpg_t.points_left - 1
|
||||
rpg_t[index] = rpg_t[index] + 1
|
||||
if not rpg_t.reset then
|
||||
rpg_t.total = rpg_t.total + 1
|
||||
|
||||
@@ -129,7 +129,6 @@ function Public.spell_gui_settings(player)
|
||||
end
|
||||
|
||||
function Public.extra_settings(player)
|
||||
local player_modifiers = P.get_table()
|
||||
local rpg_extra = RPG.get('rpg_extra')
|
||||
local rpg_t = RPG.get('rpg_t')
|
||||
local trusted = Session.get_trusted_table()
|
||||
@@ -263,8 +262,9 @@ function Public.extra_settings(player)
|
||||
magic_pickup_input_style.height = 35
|
||||
magic_pickup_input_style.vertical_align = 'center'
|
||||
local reach_mod
|
||||
if player_modifiers.disabled_modifier[player.index] and player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus then
|
||||
reach_mod = not player_modifiers.disabled_modifier[player.index].character_item_pickup_distance_bonus
|
||||
local character_item_pickup_distance_bonus = P.get_single_disabled_modifier(player, 'character_item_pickup_distance_bonus')
|
||||
if character_item_pickup_distance_bonus then
|
||||
reach_mod = false
|
||||
else
|
||||
reach_mod = true
|
||||
end
|
||||
@@ -290,8 +290,9 @@ function Public.extra_settings(player)
|
||||
movement_speed_input_style.height = 35
|
||||
movement_speed_input_style.vertical_align = 'center'
|
||||
local speed_mod
|
||||
if player_modifiers.disabled_modifier[player.index] and player_modifiers.disabled_modifier[player.index].character_running_speed_modifier then
|
||||
speed_mod = not player_modifiers.disabled_modifier[player.index].character_running_speed_modifier
|
||||
local character_running_speed_modifier = P.get_single_disabled_modifier(player, 'character_running_speed_modifier')
|
||||
if character_running_speed_modifier then
|
||||
speed_mod = false
|
||||
else
|
||||
speed_mod = true
|
||||
end
|
||||
|
||||
@@ -311,6 +311,9 @@ end
|
||||
|
||||
local function on_gui_click(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not this.data[player.index] then
|
||||
return
|
||||
end
|
||||
|
||||
local element = event.element
|
||||
|
||||
@@ -371,6 +374,9 @@ local function on_gui_click(event)
|
||||
end
|
||||
local function gui_closed(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not this.data[player.index] then
|
||||
return
|
||||
end
|
||||
|
||||
local type = event.gui_type
|
||||
|
||||
@@ -385,6 +391,10 @@ end
|
||||
|
||||
local function on_pre_player_left_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not this.data[player.index] then
|
||||
return
|
||||
end
|
||||
|
||||
close_player_inventory(player)
|
||||
end
|
||||
|
||||
@@ -394,6 +404,10 @@ local function update_gui(event)
|
||||
return
|
||||
end
|
||||
|
||||
if not this.data[player.index] then
|
||||
return
|
||||
end
|
||||
|
||||
local sourcePlayer = watching_inventory(player)
|
||||
local success, tab = last_tab(player)
|
||||
|
||||
|
||||
+3
-4
@@ -14,10 +14,9 @@ local function update_player_modifiers(player)
|
||||
end
|
||||
|
||||
local m = ((global.hydration[player.index] - 100) * 0.01) + 0.2
|
||||
local modifiers = Player_modifiers.get_table()
|
||||
modifiers[player.index].character_mining_speed_modifier['thirst'] = m
|
||||
modifiers[player.index].character_running_speed_modifier['thirst'] = m
|
||||
modifiers[player.index].character_crafting_speed_modifier['thirst'] = m
|
||||
Player_modifiers.update_single_modifier(player, 'character_mining_speed_modifier', 'thirst', m)
|
||||
Player_modifiers.update_single_modifier(player, 'character_running_speed_modifier', 'thirst', m)
|
||||
Player_modifiers.update_single_modifier(player, 'character_crafting_speed_modifier', 'thirst', m)
|
||||
Player_modifiers.update_player_modifiers(player)
|
||||
end
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ local function set_enemy_evolution()
|
||||
local threat = WD.get('threat')
|
||||
local evolution_factor = wave_number * 0.001
|
||||
local biter_h_boost = 1
|
||||
--local damage_increase = 0
|
||||
local enemy = game.forces.enemy
|
||||
|
||||
if evolution_factor > 1 then
|
||||
evolution_factor = 1
|
||||
@@ -383,12 +383,13 @@ local function set_enemy_evolution()
|
||||
if biter_h_boost <= 1 then
|
||||
biter_h_boost = 1
|
||||
end
|
||||
--damage_increase = math_round(damage_increase + threat * 0.0000025, 3)
|
||||
|
||||
BiterHealthBooster.set('biter_health_boost', biter_h_boost)
|
||||
--game.forces.enemy.set_ammo_damage_modifier("melee", damage_increase)
|
||||
--game.forces.enemy.set_ammo_damage_modifier("biological", damage_increase)
|
||||
game.forces.enemy.evolution_factor = evolution_factor
|
||||
if enemy.evolution_factor == 1 and evolution_factor == 1 then
|
||||
return
|
||||
end
|
||||
|
||||
enemy.evolution_factor = evolution_factor
|
||||
end
|
||||
|
||||
local function can_units_spawn()
|
||||
|
||||
+108
-22
@@ -4,6 +4,7 @@
|
||||
local Global = require 'utils.global'
|
||||
|
||||
local this = {
|
||||
modifiers = {},
|
||||
disabled_modifier = {}
|
||||
}
|
||||
|
||||
@@ -21,28 +22,28 @@ function Public.get_table()
|
||||
end
|
||||
|
||||
local modifiers = {
|
||||
'character_build_distance_bonus',
|
||||
'character_crafting_speed_modifier',
|
||||
'character_health_bonus',
|
||||
'character_inventory_slots_bonus',
|
||||
'character_item_drop_distance_bonus',
|
||||
'character_item_pickup_distance_bonus',
|
||||
'character_loot_pickup_distance_bonus',
|
||||
'character_mining_speed_modifier',
|
||||
'character_reach_distance_bonus',
|
||||
'character_resource_reach_distance_bonus',
|
||||
'character_maximum_following_robot_count_bonus',
|
||||
'character_running_speed_modifier'
|
||||
[1] = 'character_build_distance_bonus',
|
||||
[2] = 'character_crafting_speed_modifier',
|
||||
[3] = 'character_health_bonus',
|
||||
[4] = 'character_inventory_slots_bonus',
|
||||
[5] = 'character_item_drop_distance_bonus',
|
||||
[6] = 'character_item_pickup_distance_bonus',
|
||||
[7] = 'character_loot_pickup_distance_bonus',
|
||||
[8] = 'character_mining_speed_modifier',
|
||||
[9] = 'character_reach_distance_bonus',
|
||||
[10] = 'character_resource_reach_distance_bonus',
|
||||
[11] = 'character_maximum_following_robot_count_bonus',
|
||||
[12] = 'character_running_speed_modifier'
|
||||
}
|
||||
|
||||
function Public.update_player_modifiers(player)
|
||||
for _, modifier in pairs(modifiers) do
|
||||
for k, modifier in pairs(modifiers) do
|
||||
local sum_value = 0
|
||||
for _, value in pairs(this[player.index][modifier]) do
|
||||
for _, value in pairs(this.modifiers[player.index][k]) do
|
||||
sum_value = sum_value + value
|
||||
end
|
||||
if player.character then
|
||||
if this.disabled_modifier[player.index] and this.disabled_modifier[player.index][modifier] then
|
||||
if this.disabled_modifier[player.index] and this.disabled_modifier[player.index][k] then
|
||||
player[modifier] = 0
|
||||
else
|
||||
player[modifier] = sum_value
|
||||
@@ -51,14 +52,99 @@ function Public.update_player_modifiers(player)
|
||||
end
|
||||
end
|
||||
|
||||
function Public.update_single_modifier(player, modifier, category, value)
|
||||
if not this.modifiers[player.index] then
|
||||
return
|
||||
end
|
||||
if not modifier then
|
||||
return
|
||||
end
|
||||
for k, _ in pairs(this.modifiers[player.index]) do
|
||||
if modifiers[k] == modifier and this.modifiers[player.index][k] then
|
||||
if category then
|
||||
if not this.modifiers[player.index][k][category] then
|
||||
this.modifiers[player.index][k][category] = {}
|
||||
end
|
||||
this.modifiers[player.index][k][category] = value
|
||||
else
|
||||
this.modifiers[player.index][k] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Public.disable_single_modifier(player, modifier, value)
|
||||
if not this.disabled_modifier[player.index] then
|
||||
return
|
||||
end
|
||||
if not modifier then
|
||||
return
|
||||
end
|
||||
for k, _ in pairs(modifiers) do
|
||||
if modifiers[k] == modifier then
|
||||
if value then
|
||||
this.disabled_modifier[player.index][k] = value
|
||||
else
|
||||
this.disabled_modifier[player.index][k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Public.get_single_modifier(player, modifier, category)
|
||||
if not this.modifiers[player.index] then
|
||||
return
|
||||
end
|
||||
if not modifier then
|
||||
return
|
||||
end
|
||||
for k, _ in pairs(this.modifiers[player.index]) do
|
||||
if modifiers[k] == modifier then
|
||||
if category then
|
||||
if this.modifiers[player.index][k] and this.modifiers[player.index][k][category] then
|
||||
return this.modifiers[player.index][k][category]
|
||||
end
|
||||
else
|
||||
if this.modifiers[player.index][k] then
|
||||
return this.modifiers[player.index][k]
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function Public.get_single_disabled_modifier(player, modifier, category)
|
||||
if not this.disabled_modifier[player.index] then
|
||||
return
|
||||
end
|
||||
if not modifier then
|
||||
return
|
||||
end
|
||||
for k, _ in pairs(this.disabled_modifier[player.index]) do
|
||||
if modifiers[k] == modifier then
|
||||
if category then
|
||||
if this.disabled_modifier[player.index][k] and this.disabled_modifier[player.index][k][category] then
|
||||
return this.disabled_modifier[player.index][k][category]
|
||||
end
|
||||
else
|
||||
if this.disabled_modifier[player.index][k] then
|
||||
return this.disabled_modifier[player.index][k]
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function Public.reset_player_modifiers(player)
|
||||
if player and player.valid then
|
||||
this[player.index] = {}
|
||||
if this.disabled_modifier[player.index] then
|
||||
this.disabled_modifier[player.index] = {}
|
||||
end
|
||||
for _, modifier in pairs(modifiers) do
|
||||
this[player.index][modifier] = {}
|
||||
this.modifiers[player.index] = {}
|
||||
this.disabled_modifier[player.index] = {}
|
||||
for k, _ in pairs(modifiers) do
|
||||
this.modifiers[player.index][k] = {}
|
||||
end
|
||||
Public.update_player_modifiers(player)
|
||||
end
|
||||
@@ -66,7 +152,7 @@ end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.get_player(event.player_index)
|
||||
if this[player.index] then
|
||||
if this.modifiers[player.index] then
|
||||
Public.update_player_modifiers(player)
|
||||
return
|
||||
end
|
||||
|
||||
@@ -117,8 +117,7 @@ end
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
local modifiers = Player_modifiers.get_table()
|
||||
modifiers[player.index].character_mining_speed_modifier['caves'] = 3
|
||||
Player_modifiers.update_single_modifier(player, 'character_mining_speed_modifier', 'caves', 3)
|
||||
Player_modifiers.update_player_modifiers(player)
|
||||
end
|
||||
|
||||
|
||||
+23
-6
@@ -10,13 +10,15 @@ local Gui = {}
|
||||
|
||||
local data = {}
|
||||
local element_map = {}
|
||||
local settings = {}
|
||||
|
||||
Gui.token =
|
||||
Global.register(
|
||||
{data = data, element_map = element_map},
|
||||
{data = data, element_map = element_map, settings = settings},
|
||||
function(tbl)
|
||||
data = tbl.data
|
||||
element_map = tbl.element_map
|
||||
settings = tbl.settings
|
||||
end
|
||||
)
|
||||
|
||||
@@ -115,13 +117,16 @@ function Gui.clear(element)
|
||||
element.clear()
|
||||
end
|
||||
|
||||
--[[
|
||||
local function clear_invalid_data()
|
||||
for _, player in pairs(game.connected_players) do
|
||||
local function clear_invalid_data()
|
||||
if settings.disable_clear_invalid_data then
|
||||
return
|
||||
end
|
||||
|
||||
for _, player in pairs(game.players) do
|
||||
local player_index = player.index
|
||||
local values = data[player_index]
|
||||
if values then
|
||||
for _, element in next, values do
|
||||
for k, element in next, values do
|
||||
if type(element) == 'table' then
|
||||
for key, obj in next, element do
|
||||
if type(obj) == 'table' and obj.valid ~= nil then
|
||||
@@ -130,13 +135,15 @@ end
|
||||
end
|
||||
end
|
||||
end
|
||||
if type(element) == 'userdata' and not element.valid then
|
||||
values[k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Event.on_nth_tick(300, clear_invalid_data)
|
||||
]]
|
||||
|
||||
local function handler_factory(event_id)
|
||||
local handlers
|
||||
@@ -195,6 +202,16 @@ local function custom_raise(handlers, element, player)
|
||||
handler({element = element, player = player})
|
||||
end
|
||||
|
||||
-- Disabled the handler so it does not clean then data table of invalid data.
|
||||
function Gui.set_disable_clear_invalid_data(value)
|
||||
settings.disable_clear_invalid_data = value or false
|
||||
end
|
||||
|
||||
-- Gets state if the cleaner handler is active or false
|
||||
function Gui.get_disable_clear_invalid_data()
|
||||
return settings.disable_clear_invalid_data
|
||||
end
|
||||
|
||||
-- Register a handler for the on_gui_checked_state_changed event for LuaGuiElements with element_name.
|
||||
-- Can only have one handler per element name.
|
||||
-- Guarantees that the element and the player are valid when calling the handler.
|
||||
|
||||
Reference in New Issue
Block a user