From 1e01a06b23d07253f9106fb7d5c3f28f0cd29aa2 Mon Sep 17 00:00:00 2001 From: Erol509 <81807356+Erol509@users.noreply.github.com> Date: Tue, 30 Apr 2024 03:25:20 +0200 Subject: [PATCH] Nerfs Powerator a bit (#27165) * yes * Lets try it then. Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> * more powerators, bigger penality --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- code/__DEFINES/subsystems.dm | 1 + .../modules/power/code/powerator.dm | 8 +++++- .../modules/power/code/powerator_subsystem.dm | 28 +++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 modular_skyrat/modules/power/code/powerator_subsystem.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index ccd7e4e06bb..4281fba00cb 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -190,6 +190,7 @@ #define INIT_ORDER_PATH -50 #define INIT_ORDER_MATURITY_GUARD -60 //SKYRAT EDIT ADDITION #define INIT_ORDER_DECAY -61 //SKYRAT EDIT ADDITION +#define INIT_ORDER_POWERATOR_PENALITY -62 // SKYRAT EDIT ADDITION #define INIT_ORDER_EXPLOSIONS -69 #define INIT_ORDER_STATPANELS -97 #define INIT_ORDER_BAN_CACHE -98 diff --git a/modular_skyrat/modules/power/code/powerator.dm b/modular_skyrat/modules/power/code/powerator.dm index 2bf1225fa5a..4e6af3888e5 100644 --- a/modular_skyrat/modules/power/code/powerator.dm +++ b/modular_skyrat/modules/power/code/powerator.dm @@ -66,10 +66,14 @@ /obj/machinery/powerator/Initialize(mapload) . = ..() + SSpowerator_penality.sum_powerators() + SSpowerator_penality.calculate_penality() START_PROCESSING(SSobj, src) /obj/machinery/powerator/Destroy() STOP_PROCESSING(SSobj, src) + SSpowerator_penality.remove_deled_powerators(src) + SSpowerator_penality.calculate_penality() attached_cable = null return ..() @@ -98,6 +102,8 @@ . += span_notice("Current Power: [display_power(current_power)]/[display_power(max_power)]") . += span_notice("This machine has made [credits_made] credits from selling power so far.") + if(length(SSpowerator_penality.powerator_list) > 1) + . += span_notice("Multiple powerators detected, total efficiency reduced by [(SSpowerator_penality.diminishing_gains_multiplier)*100]%") /obj/machinery/powerator/RefreshParts() . = ..() @@ -157,7 +163,7 @@ current_power = attached_cable.newavail() attached_cable.add_delayedload(current_power) - var/money_ratio = round(current_power * divide_ratio) + var/money_ratio = round(current_power * divide_ratio) * SSpowerator_penality.diminishing_gains_multiplier var/datum/bank_account/synced_bank_account = SSeconomy.get_dep_account(ACCOUNT_CAR) synced_bank_account.adjust_money(money_ratio) credits_made += money_ratio diff --git a/modular_skyrat/modules/power/code/powerator_subsystem.dm b/modular_skyrat/modules/power/code/powerator_subsystem.dm new file mode 100644 index 00000000000..c816ffca03c --- /dev/null +++ b/modular_skyrat/modules/power/code/powerator_subsystem.dm @@ -0,0 +1,28 @@ +SUBSYSTEM_DEF(powerator_penality) + name = "Powerator Penalities" + flags = SS_NO_FIRE + init_order = INIT_ORDER_POWERATOR_PENALITY + + /// How many powerators we have build on server + var/list/powerator_list = list() + /// Current penality for powerator cash gain + var/diminishing_gains_multiplier = 1 + +/datum/controller/subsystem/powerator_penality/Initialize() + return SS_INIT_SUCCESS + + +/datum/controller/subsystem/powerator_penality/proc/sum_powerators() + for(var/obj/machinery/powerator/poweratorc as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/powerator)) + powerator_list |= poweratorc + +/datum/controller/subsystem/powerator_penality/proc/remove_deled_powerators(src) + powerator_list -= src + return + +/datum/controller/subsystem/powerator_penality/proc/calculate_penality() + if(length(powerator_list) > 0) + diminishing_gains_multiplier = min(1, 2 ** log(4, length(powerator_list)) / length(powerator_list)) + return diminishing_gains_multiplier + else + diminishing_gains_multiplier = initial(diminishing_gains_multiplier) diff --git a/tgstation.dme b/tgstation.dme index 3016bcfd285..574b028bc52 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8057,6 +8057,7 @@ #include "modular_skyrat\modules\poly_commands\parrot.dm" #include "modular_skyrat\modules\positronic_alert_console\code\positronic_alert_console.dm" #include "modular_skyrat\modules\power\code\powerator.dm" +#include "modular_skyrat\modules\power\code\powerator_subsystem.dm" #include "modular_skyrat\modules\power\code\teg.dm" #include "modular_skyrat\modules\primitive_catgirls\code\clothing.dm" #include "modular_skyrat\modules\primitive_catgirls\code\clothing_vendor.dm"