diff --git a/modular_zubbers/code/datums/station_traits/neutral_traits.dm b/modular_zubbers/code/datums/station_traits/neutral_traits.dm new file mode 100644 index 00000000000..b708ef1fa09 --- /dev/null +++ b/modular_zubbers/code/datums/station_traits/neutral_traits.dm @@ -0,0 +1,30 @@ +/datum/station_trait/triple_ai + name = "AI Triumvirate" + trait_type = STATION_TRAIT_NEUTRAL + show_in_report = TRUE + weight = 1 + report_message = "Your station has been instated with three Nanotrasen Artificial Intelligence models." + +/datum/station_trait/triple_ai/New() + . = ..() + RegisterSignal(SSjob, COMSIG_OCCUPATIONS_DIVIDED, PROC_REF(on_occupations_divided)) + if(!GLOB.triple_ai_controller) + GLOB.triple_ai_controller = new() + +/datum/station_trait/triple_ai/revert() + UnregisterSignal(SSjob, COMSIG_OCCUPATIONS_DIVIDED) + if(GLOB.triple_ai_controller) + QDEL_NULL(GLOB.triple_ai_controller) + return ..() + +/datum/station_trait/triple_ai/proc/on_occupations_divided(datum/source, pure, allow_all) + SIGNAL_HANDLER + if(!GLOB.triple_ai_controller) + return + + for(var/datum/job/ai/ai_datum in SSjob.joinable_occupations) + ai_datum.spawn_positions = 3 + ai_datum.total_positions = 3 + if(!pure) + for(var/obj/effect/landmark/start/ai/secondary/secondary_ai_spawn in GLOB.start_landmarks_list) + secondary_ai_spawn.latejoin_active = TRUE diff --git a/tgstation.dme b/tgstation.dme index 006c9065de7..bf50a935c17 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9271,6 +9271,7 @@ #include "modular_zubbers\code\datums\station_traits\disabled_traits.dm" #include "modular_zubbers\code\datums\station_traits\job_traits.dm" #include "modular_zubbers\code\datums\station_traits\negative_traits.dm" +#include "modular_zubbers\code\datums\station_traits\neutral_traits.dm" #include "modular_zubbers\code\datums\storage\subtypes\belts.dm" #include "modular_zubbers\code\datums\storage\subtypes\others\misc.dm" #include "modular_zubbers\code\datums\votes\_vote_datum.dm"