This commit is contained in:
2025-02-08 00:11:35 +09:00
parent a763d30e2b
commit 0a9d4f4c8c
2 changed files with 24 additions and 51 deletions

View File

@@ -91,6 +91,7 @@ Roles.new_role("Trainee Moderator", "Trainee")
:set_flag("is_admin") :set_flag("is_admin")
:set_flag("is_spectator") :set_flag("is_spectator")
:set_flag("report-immune") :set_flag("report-immune")
:set_flag("instant-respawn")
:set_flag("deconlog-bypass") :set_flag("deconlog-bypass")
:set_parent("Board Member") :set_parent("Board Member")
:allow{ :allow{
@@ -147,6 +148,7 @@ Roles.new_role("Supporter", "Sup")
:set_permission_group("Trusted") :set_permission_group("Trusted")
:set_custom_color{ r = 230, g = 99, b = 34 } :set_custom_color{ r = 230, g = 99, b = 34 }
:set_flag("is_spectator") :set_flag("is_spectator")
:set_flag("instant-respawn")
:set_flag("deconlog-bypass") :set_flag("deconlog-bypass")
:set_parent("Partner") :set_parent("Partner")
:allow{ :allow{
@@ -156,6 +158,7 @@ Roles.new_role("Partner", "Part")
:set_permission_group("Trusted") :set_permission_group("Trusted")
:set_custom_color{ r = 24, g = 172, b = 188 } :set_custom_color{ r = 24, g = 172, b = 188 }
:set_flag("is_spectator") :set_flag("is_spectator")
:set_flag("instant-respawn")
:set_flag("deconlog-bypass") :set_flag("deconlog-bypass")
:set_parent("Senior Member") :set_parent("Senior Member")
:allow{ :allow{
@@ -166,6 +169,7 @@ Roles.new_role("Senior Member", "SMem")
:set_custom_color{ r = 24, g = 172, b = 188 } :set_custom_color{ r = 24, g = 172, b = 188 }
:set_flag("is_spectator") :set_flag("is_spectator")
:set_flag("deconlog-bypass") :set_flag("deconlog-bypass")
:set_flag("instant-respawn")
:set_parent("Member") :set_parent("Member")
:allow{ :allow{
"command/set-join-message", "command/set-join-message",
@@ -182,6 +186,7 @@ Roles.new_role("Senior Member", "SMem")
Roles.new_role("Member", "Mem") Roles.new_role("Member", "Mem")
:set_permission_group("Trusted") :set_permission_group("Trusted")
:set_custom_color{ r = 24, g = 172, b = 188 } :set_custom_color{ r = 24, g = 172, b = 188 }
:set_flag("instant-respawn")
:set_flag("deconlog-bypass") :set_flag("deconlog-bypass")
:set_parent("Veteran") :set_parent("Veteran")
:allow{ :allow{

View File

@@ -11,10 +11,7 @@ local vlayer = require("modules.exp_legacy.modules.control.vlayer")
local format_number = require("util").format_number --- @dep util local format_number = require("util").format_number --- @dep util
local bonus_container local bonus_container
local bonus_score = { local bonus_score_limit = config.pts.base
["current"] = 0,
["limit"] = config.pts.base,
}
--- @param player LuaPlayer --- @param player LuaPlayer
--- @param container LuaGuiElement? --- @param container LuaGuiElement?
@@ -71,14 +68,6 @@ local function apply_bonus(player)
end end
end end
--[[
local function max_bonus_pts_update(player)
local frame = Gui.get_left_element(player, bonus_container)
local disp = frame.container["bonus_st_2"].disp.table
disp[bonus_gui_control_pts_count.name].caption = math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_player_highest_role(player).index - Roles.get_role_by_name(config.pts.role_name).index)))
end
]]
local function apply_periodic_bonus(player) local function apply_periodic_bonus(player)
if not Roles.player_allowed(player, "gui/bonus") then if not Roles.player_allowed(player, "gui/bonus") then
return return
@@ -130,7 +119,7 @@ local bonus_gui_control_pts_count = Gui.element("vlayer_gui_display_item_solar_c
:draw{ :draw{
type = "progressbar", type = "progressbar",
name = Gui.property_from_name, name = Gui.property_from_name,
caption = bonus_score["current"] .. " / " .. bonus_score["limit"], caption = "0 / " .. bonus_score_limit,
value = 0, value = 0,
style = "electric_satisfaction_statistics_progressbar", style = "electric_satisfaction_statistics_progressbar",
}:style{ }:style{
@@ -154,18 +143,13 @@ local bonus_gui_control_reset = Gui.element("bonus_gui_control_reset")
for k, v in pairs(config.conversion) do for k, v in pairs(config.conversion) do
local s = "bonus_display_" .. k .. "_slider" local s = "bonus_display_" .. k .. "_slider"
disp[s].slider_value = config.player_bonus[v].value disp[s].slider_value = config.player_bonus[v].value
disp[disp[s].tags.counter].caption = (config.player_bonus[v].is_percentage and format_number(disp[s].slider_value * 100, false) .. " %") or format_number(disp[s].slider_value, false)
if config.player_bonus[v].is_percentage then
disp[disp[s].tags.counter].caption = format_number(disp[s].slider_value * 100, false) .. " %"
else
disp[disp[s].tags.counter].caption = format_number(disp[s].slider_value, false)
end
end end
local slider = disp["bonus_display_personal_battery_recharge_slider"] local slider = disp["bonus_display_personal_battery_recharge_slider"]
slider.slider_value = config.player_special_bonus["personal_battery_recharge"].value slider.slider_value = config.player_special_bonus["personal_battery_recharge"].value
disp[slider.tags.counter].caption = format_number(slider.slider_value, false) disp[slider.tags.counter].caption = format_number(slider.slider_value, false)
disp[bonus_gui_control_pts_count.name].caption = bonus_gui_pts_needed(player) .. " / " .. bonus_score["limit"] disp[bonus_gui_control_pts_count.name].caption = bonus_gui_pts_needed(player) .. " / " .. bonus_score_limit
end) end)
--- A button used for pts apply --- A button used for pts apply
@@ -179,11 +163,9 @@ local bonus_gui_control_apply = Gui.element("bonus_gui_control_apply")
width = config.gui_display_width["half"], width = config.gui_display_width["half"],
}:on_click(function(def, player, element) }:on_click(function(def, player, element)
local n = bonus_gui_pts_needed(player) local n = bonus_gui_pts_needed(player)
element.parent[bonus_gui_control_pts_n_count.name].caption = n element.parent[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_score_limit
local r = tonumber(element.parent[bonus_gui_control_pts_count.name].caption) - n
element.parent[bonus_gui_control_pts_r_count.name].caption = r
if r >= 0 then if n <= bonus_score_limit then
apply_bonus(player) apply_bonus(player)
end end
end) end)
@@ -215,14 +197,6 @@ local bonus_gui_slider = Gui.element("bonus_gui_slider")
} }
label.style.width = config.gui_display_width["label"] label.style.width = config.gui_display_width["label"]
local value = bonus.value
if bonus.is_percentage then
value = format_number(value * 100, false) .. " %"
else
value = format_number(value, false)
end
local slider = parent.add{ local slider = parent.add{
type = "slider", type = "slider",
name = name .. "_slider", name = name .. "_slider",
@@ -242,7 +216,7 @@ local bonus_gui_slider = Gui.element("bonus_gui_slider")
local count = parent.add{ local count = parent.add{
type = "label", type = "label",
name = name .. "_count", name = name .. "_count",
caption = value, caption = (bonus.is_percentage and format_number(bonus.value * 100, false) .. " %") or format_number(bonus.value, false),
style = "heading_2_label", style = "heading_2_label",
} }
count.style.width = config.gui_display_width["count"] count.style.width = config.gui_display_width["count"]
@@ -250,16 +224,10 @@ local bonus_gui_slider = Gui.element("bonus_gui_slider")
return slider return slider
end) end)
:on_value_changed(function(def, player, element) :on_value_changed(function(def, player, element)
if element.tags.is_percentage then element.parent[element.tags.counter].caption = (element.tags.is_percentage and format_number(element.slider_value * 100, false) .. " %") or format_number(element.slider_value, false)
element.parent[element.tags.counter].caption = format_number(element.slider_value * 100, false) .. " %"
else
element.parent[element.tags.counter].caption = format_number(element.slider_value, false)
end
local r = bonus_gui_pts_needed(player)
local container = Gui.get_left_element(bonus_container, player) local container = Gui.get_left_element(bonus_container, player)
local disp = container.frame["bonus_st_1"].disp.table local disp = container.frame["bonus_st_1"].disp.table
disp[bonus_gui_control_pts_count.name].caption = 0 .. " / " .. config.pts.base disp[bonus_gui_control_pts_count.name].caption = bonus_gui_pts_needed(player) .. " / " .. bonus_score_limit
end) end)
--- A vertical flow containing all the bonus data --- A vertical flow containing all the bonus data
@@ -290,10 +258,8 @@ bonus_container = Gui.element("bonus_container")
bonus_data_set(container, "bonus_st_2") bonus_data_set(container, "bonus_st_2")
local disp = container["bonus_st_1"].disp.table local disp = container["bonus_st_1"].disp.table
local n = bonus_gui_pts_needed(player, container.parent) bonus_score_limit = math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_player_highest_role(player).index - Roles.get_role_by_name(config.pts.role_name).index)))
disp[bonus_gui_control_pts_n_count.name].caption = n disp[bonus_gui_control_pts_count.name].caption = bonus_gui_pts_needed(player) .. " / " .. bonus_score_limit
local r = tonumber(disp[bonus_gui_control_pts_count.name].caption) - n
disp[bonus_gui_control_pts_r_count.name].caption = r
return container.parent return container.parent
end) end)
@@ -325,11 +291,15 @@ Event.add(defines.events.on_player_created, function(event)
end) end)
Event.add(Roles.events.on_role_assigned, function(event) Event.add(Roles.events.on_role_assigned, function(event)
apply_bonus(game.players[event.player_index]) local player = game.players[event.player_index]
bonus_score_limit = math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_player_highest_role(player).index - Roles.get_role_by_name(config.pts.role_name).index)))
apply_bonus(player)
end) end)
Event.add(Roles.events.on_role_unassigned, function(event) Event.add(Roles.events.on_role_unassigned, function(event)
apply_bonus(game.players[event.player_index]) local player = game.players[event.player_index]
bonus_score_limit = math.floor(config.pts.base * (1 + config.pts.increase_percentage_per_role_level * (Roles.get_player_highest_role(player).index - Roles.get_role_by_name(config.pts.role_name).index)))
apply_bonus(player)
end) end)
--- When a player respawns re-apply bonus --- When a player respawns re-apply bonus
@@ -338,11 +308,9 @@ Event.add(defines.events.on_player_respawned, function(event)
local container = Gui.get_left_element(bonus_container, player) local container = Gui.get_left_element(bonus_container, player)
local disp = container.frame["bonus_st_1"].disp.table local disp = container.frame["bonus_st_1"].disp.table
local n = bonus_gui_pts_needed(player) local n = bonus_gui_pts_needed(player)
disp[bonus_gui_control_pts_n_count.name].caption = n disp[bonus_gui_control_pts_count.name].caption = n .. " / " .. bonus_score_limit
local r = tonumber(disp[bonus_gui_control_pts_count.name].caption) - n
disp[bonus_gui_control_pts_r_count.name].caption = r
if r >= 0 then if n <= bonus_score_limit then
apply_bonus(player) apply_bonus(player)
end end
end) end)