From dc015bc609eb91d7f611a07105d96931d55261ee Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Thu, 25 Jun 2026 05:30:46 +0900 Subject: [PATCH] bonus changes (#429) * Delete exp_legacy/module/modules/data/bonus.lua * Update _file_loader.lua * Update roles.lua * Update bonus.lua * Update player_bonus.lua * Update bonus.lua --------- Co-authored-by: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com> --- exp_legacy/module/config/_file_loader.lua | 1 - exp_legacy/module/config/bonus.lua | 231 ++------------------- exp_legacy/module/config/expcore/roles.lua | 2 - exp_legacy/module/modules/data/bonus.lua | 99 --------- exp_scenario/module/control/bonus.lua | 4 +- exp_scenario/module/gui/player_bonus.lua | 5 +- 6 files changed, 19 insertions(+), 323 deletions(-) delete mode 100644 exp_legacy/module/modules/data/bonus.lua diff --git a/exp_legacy/module/config/_file_loader.lua b/exp_legacy/module/config/_file_loader.lua index fae86b7c..b0868f01 100644 --- a/exp_legacy/module/config/_file_loader.lua +++ b/exp_legacy/module/config/_file_loader.lua @@ -16,7 +16,6 @@ return { "modules.data.quickbar", "modules.data.alt-view", "modules.data.tag", - -- 'modules.data.bonus', "modules.data.language", --"modules.data.toolbar", diff --git a/exp_legacy/module/config/bonus.lua b/exp_legacy/module/config/bonus.lua index 67e3d0be..5c1a3c22 100644 --- a/exp_legacy/module/config/bonus.lua +++ b/exp_legacy/module/config/bonus.lua @@ -3,21 +3,17 @@ return { --[[ - TODO - force bonus - quick health regeneration - Base point is equal to the amount of standard value in each parameter. CMMS CRS CCS CISB CHB CRDB PBR - STD 30 90 32 20 16 12 60 - = 260 + STD 20 60 24 10 12 8 40 + = 174 - MAX 60 180 64 40 32 24 120 - = 480 + MAX 40 120 48 20 24 16 80 + = 348 ]] points = { - base = 260, + base = 174, increase_percentage_per_role_level = 0.03, role_name = "Member", }, @@ -27,8 +23,7 @@ return { name = "character_mining_speed_modifier", scale = 1, cost = 10, - max_value = 6, - initial_value = 3, + max_value = 4, value_step = 0.5, is_percentage = true, }, @@ -36,8 +31,7 @@ return { name = "character_running_speed_modifier", scale = 1, cost = 60, - max_value = 3, - initial_value = 1.5, + max_value = 2, value_step = 0.25, is_percentage = true, }, @@ -45,33 +39,29 @@ return { name = "character_crafting_speed_modifier", scale = 1, cost = 4, - max_value = 16, - initial_value = 8, + max_value = 12, value_step = 1, is_percentage = true, }, { name = "character_inventory_slots_bonus", - cost = 2, scale = 10, - max_value = 200, - initial_value = 100, + cost = 2, + max_value = 100, value_step = 10, }, { name = "character_health_bonus", scale = 50, cost = 4, - max_value = 400, - initial_value = 200, + max_value = 300, value_step = 50, }, { name = "character_reach_distance_bonus", - cost = 1, scale = 1, - max_value = 24, - initial_value = 12, + cost = 1, + max_value = 16, value_step = 2, combined_bonus = { "character_resource_reach_distance_bonus", @@ -80,104 +70,15 @@ return { }, { name = "personal_battery_recharge", - initial_value = 6, - max_value = 12, - value_step = 1, scale = 4, cost = 40, + max_value = 8, + value_step = 1, is_special = true, }, - --[[ - ['character_item_pickup_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - }, - ['character_loot_pickup_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - }, - ['character_item_drop_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - } - ]] }, force_bonus = { - --[[ - ['character_mining_speed_modifier'] = { - initial_value = 0, - max_value = 6, - value_step = 0.5, - scale = 1, - cost = 10, - is_percentage = true - }, - ['character_running_speed_modifier'] = { - initial_value = 0, - max_value = 3, - value_step = 0.25, - scale = 1, - cost = 40, - is_percentage = true - }, - ['character_crafting_speed_modifier'] = { - initial_value = 0, - max_value = 16, - value_step = 1, - scale = 1, - cost = 4, - is_percentage = true - }, - ['character_inventory_slots_bonus'] = { - initial_value = 0, - max_value = 200, - value_step = 10, - scale = 100, - cost = 2, - is_percentage = false - }, - ['character_health_bonus'] = { - initial_value = 0, - max_value = 400, - value_step = 50, - cost = 4, - is_percentage = false - }, - ['character_reach_distance_bonus'] = { - initial_value = 0, - max_value = 24, - value_step = 2, - scale = 1, - cost = 1, - is_percentage = false, - combined_bonus = { - 'character_resource_reach_distance_bonus', - 'character_build_distance_bonus' - } - }, - ['worker_robots_speed_modifier'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ]] ["worker_robots_battery_modifier"] = { - initial_value = 1, max_value = 1, value_step = 1, scale = 1, @@ -185,7 +86,6 @@ return { is_percentage = false, }, ["worker_robots_storage_bonus"] = { - initial_value = 1, max_value = 1, value_step = 1, scale = 1, @@ -193,114 +93,13 @@ return { is_percentage = false, }, ["following_robots_lifetime_modifier"] = { - initial_value = 1, max_value = 1, value_step = 1, scale = 1, cost = 1, is_percentage = false, }, - --[[ - ['character_item_pickup_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - }, - ['character_loot_pickup_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - }, - ['character_item_drop_distance_bonus'] = { - initial_value = 0, - max_value = 20, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - }, - ['character_trash_slot_count'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['mining_drill_productivity_bonus'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['train_braking_force_bonus'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['laboratory_speed_modifier'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['laboratory_productivity_bonus'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['inserter_stack_size_bonus'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['stack_inserter_capacity_bonus'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - }, - ['artillery_range_modifier'] = { - initial_value = 0, - max_value = 0, - value_step = 0, - scale = 1, - cost = 1, - is_percentage = false - } - ]] }, surface_bonus = { - --[[ - ['solar_power_multiplier'] = { - initial_value = 1, - max_value = 1000, - value_step = 1, - scale = 1, - cost = 1, - is_percentage = false - } - ]] }, } diff --git a/exp_legacy/module/config/expcore/roles.lua b/exp_legacy/module/config/expcore/roles.lua index a42a0a52..2dd07f77 100644 --- a/exp_legacy/module/config/expcore/roles.lua +++ b/exp_legacy/module/config/expcore/roles.lua @@ -80,7 +80,6 @@ Roles.new_role("Moderator", "Mod") "command/clear-inventory", "command/kill-enemies", "command/remove-enemies", - --'command/bonus', "command/home", "command/set-home", "command/get-home", @@ -167,7 +166,6 @@ Roles.new_role("Sponsor", "Spon") "gui/rocket-info/toggle-active", "gui/rocket-info/remote_launch", "gui/bonus", - --"command/bonus", "command/home", "command/set-home", "command/get-home", diff --git a/exp_legacy/module/modules/data/bonus.lua b/exp_legacy/module/modules/data/bonus.lua deleted file mode 100644 index 6ebf2a34..00000000 --- a/exp_legacy/module/modules/data/bonus.lua +++ /dev/null @@ -1,99 +0,0 @@ ---[[-- Commands Module - Bonus - - Adds a command that allows players to have increased stats - @data Bonus -]] - -local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles -local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event -local config = require("modules.exp_legacy.config.bonus") --- @dep config.bonuses -local Commands = require("modules/exp_commands") - --- Stores the bonus for the player -local PlayerData = require("modules.exp_legacy.expcore.player_data") --- @dep expcore.player_data -local PlayerBonus = PlayerData.Settings:combine("Bonus") -PlayerBonus:set_default(0) -PlayerBonus:set_metadata{ - permission = "command/bonus", - stringify = function(value) - if not value or value == 0 then - return "None set" - end - - return value - end, -} - ---- Apply a bonus to a player -local function apply_bonus(player, stage) - if not player.character then - return - end - - for k, v in pairs(config.player_bonus) do - player[k] = v.value * stage / 10 - - if v.combined_bonus then - for i = 1, #v.combined_bonus, 1 do - player[v.combined_bonus[i]] = v.value * stage / 10 - end - end - end -end - ---- When store is updated apply new bonus to the player -PlayerBonus:on_update(function(player_name, player_bonus) - apply_bonus(game.players[player_name], player_bonus or 0) -end) - ---- Changes the amount of bonus you receive -Commands.new("bonus", { "bonus.description" }) - :optional("amount", { "bonus.arg-amount" }, Commands.types.integer_range(0, 10)) - :register(function(player, amount) - --- @cast amount number? - if amount then - PlayerBonus:set(player, amount) - return Commands.status.success{ "bonus.set", amount } - else - return Commands.status.success{ "bonus.get", PlayerBonus:get(player) } - end - end) - ---- When a player respawns re-apply bonus -Event.add(defines.events.on_player_respawned, function(event) - local player = game.players[event.player_index] - apply_bonus(player, PlayerBonus:get(player)) -end) - ---- Remove bonus if a player no longer has access to the command -local function role_update(event) - local player = game.players[event.player_index] - if not Roles.player_allowed(player, "command/bonus") then - apply_bonus(player, 0) - end -end - ---- When a player dies allow them to have instant respawn -Event.add(defines.events.on_player_died, function(event) - local player = game.players[event.player_index] - - if Roles.player_has_flag(player, "instant-respawn") then - player.ticks_to_respawn = 120 - end -end) - -Event.add(defines.events.on_player_created, function(event) - if event.player_index ~= 1 then - return - end - - for k, v in pairs(config.force_bonus) do - game.players[event.player_index].force[k] = v.value - end - - for k, v in pairs(config.surface_bonus) do - game.players[event.player_index].surface[k] = v.value - end -end) - -Event.add(Roles.events.on_role_assigned, role_update) -Event.add(Roles.events.on_role_unassigned, role_update) diff --git a/exp_scenario/module/control/bonus.lua b/exp_scenario/module/control/bonus.lua index e253b0f6..f8b532cb 100644 --- a/exp_scenario/module/control/bonus.lua +++ b/exp_scenario/module/control/bonus.lua @@ -11,7 +11,7 @@ local config = require("modules/exp_legacy/config/bonus") local function apply_force_bonus(event) local force = event.force for k, v in pairs(config.force_bonus) do - force[k] = v.initial_value + force[k] = math.floor(v.max_value / 2) end end @@ -19,7 +19,7 @@ end local function apply_surface_bonus(event) local surface = assert(game.get_surface(event.surface_index)) for k, v in pairs(config.surface_bonus) do - surface[k] = v.initial_value + surface[k] = math.floor(v.max_value / 2) end end diff --git a/exp_scenario/module/gui/player_bonus.lua b/exp_scenario/module/gui/player_bonus.lua index 82595d71..79c9eac6 100644 --- a/exp_scenario/module/gui/player_bonus.lua +++ b/exp_scenario/module/gui/player_bonus.lua @@ -16,7 +16,6 @@ local Elements = {} --- @field cost number --- @field scale number --- @field max_value number ---- @field initial_value number --- @field is_percentage boolean --- @field is_special boolean --- @field value_step number @@ -229,7 +228,7 @@ Elements.bonus_slider = Gui.define("player_bonus/bonus_slider") local player = Gui.get_player(parent) local value = Elements.container.get_player_bonus(player, bonus_data.name) if not value then - value = bonus_data.initial_value + value = math.floor(bonus_data.initial_value / 2) elements.apply_button.enabled = true end @@ -290,7 +289,7 @@ function Elements.bonus_slider.reset_value(slider) local player = Gui.get_player(slider) local element_data = Elements.bonus_slider.data[slider] local bonus_data = element_data.bonus_data - local value = Elements.container.get_player_bonus(player, bonus_data.name) or bonus_data.initial_value + local value = Elements.container.get_player_bonus(player, bonus_data.name) or math.floor(bonus_data.initial_value / 2) slider.slider_value = value element_data.label.caption = Elements.bonus_slider.calculate_slider_caption(bonus_data, value) element_data.previous_value = value