diff --git a/code/controllers/configuration/entries/dynamic.dm b/code/controllers/configuration/entries/dynamic.dm index 0fa7bc81d8..0ca48258d8 100644 --- a/code/controllers/configuration/entries/dynamic.dm +++ b/code/controllers/configuration/entries/dynamic.dm @@ -84,3 +84,11 @@ /datum/config_entry/number/dynamic_summon_events_cost config_entry_value = 10 min_val = 0 + +/datum/config_entry/number/dynamic_warops_requirement + config_entry_value = 60 + min_val = 0 + +/datum/config_entry/number/dynamic_warops_cost + config_entry_value = 10 + min_val = 0 diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 779dfb43a7..9441236692 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -74,6 +74,11 @@ GLOBAL_VAR_INIT(war_declared, FALSE) new uplink_type(get_turf(user), user.key, CHALLENGE_TELECRYSTALS - tc_malus + CEILING(PLAYER_SCALING * actual_players, 1)) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) + if(istype(SSticker.mode, /datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + var/threat_spent = CONFIG_GET(number/dynamic_warops_cost) + mode.spend_threat(threat_spent) + mode.threat_log += "[worldtime2text()]: Nuke ops spent [threat_spent] on war ops." SSblackbox.record_feedback("amount", "nuclear_challenge_mode", 1) qdel(src) @@ -94,6 +99,14 @@ GLOBAL_VAR_INIT(war_declared, FALSE) if(board.moved) to_chat(user, "The shuttle has already been moved! You have forfeit the right to declare war.") return FALSE + if(istype(SSticker.mode, /datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + if(mode.threat_level < CONFIG_GET(number/dynamic_warops_requirement)) + to_chat(user, "Due to the dynamic space in which the station resides, you are too deep into Nanotrasen territory to reasonably go loud.") + return FALSE + else if(mode.threat < CONFIG_GET(number/dynamic_warops_cost)) + to_chat(user, "Due to recent threats on the station, Nanotrasen is looking too closely for a war declaration to be wise.") + return FALSE return TRUE /obj/item/nuclear_challenge/clownops diff --git a/config/dynamic_config.txt b/config/dynamic_config.txt index 3baf81a991..d43fa9e685 100644 --- a/config/dynamic_config.txt +++ b/config/dynamic_config.txt @@ -109,7 +109,7 @@ DYNAMIC_REQUIREMENTS METEOR 101 101 101 101 101 101 101 101 101 101 DYNAMIC_REQUIREMENTS MIDROUND_TRAITOR 30 25 20 15 15 15 15 15 15 15 DYNAMIC_REQUIREMENTS MIDROUND_MALF_AI 101 101 70 50 50 50 40 30 30 30 DYNAMIC_REQUIREMENTS MIDROUND_WIZARD 90 90 70 50 50 50 50 40 30 30 -DYNAMIC_REQUIREMENTS MIDROUND_NUCLEAR 90 90 90 80 60 50 50 50 50 50 +DYNAMIC_REQUIREMENTS MIDROUND_NUCLEAR 90 90 90 80 70 60 50 40 40 40 DYNAMIC_REQUIREMENTS BLOB 101 101 101 80 60 50 50 50 50 50 DYNAMIC_REQUIREMENTS XENOS 101 101 101 70 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS NIGHTMARE 101 101 101 70 50 40 20 15 15 15 @@ -174,3 +174,8 @@ DYNAMIC_SUMMON_MAGIC_COST 5 ## As above, but for summon events DYNAMIC_SUMMON_EVENTS_REQUIREMENT 20 DYNAMIC_SUMMON_EVENTS_COST 10 + +## This requirement uses threat level, rather than current threat, which is why it's higher. +DYNAMIC_WAROPS_REQUIREMENT 60 + +DYNAMIC_WAROPS_COST 10