From 9cd4644f6af6ed7ac408ee6146ad7ee5bb4eaeee Mon Sep 17 00:00:00 2001 From: Guti <32563288+TheCaramelion@users.noreply.github.com> Date: Sat, 27 Jun 2026 10:30:43 +0200 Subject: [PATCH] Oopsies (#19553) --- code/__defines/dcs/signals/signals_global.dm | 11 +++++ .../controllers/subsystems/departmentgoals.dm | 2 +- code/datums/departmentgoals/cargogoals.dm | 37 +++++++++++++++ code/datums/departmentgoals/commongoals.dm | 19 ++++++++ code/datums/departmentgoals/medicalgoals.dm | 45 +++++++++++++++++++ code/datums/departmentgoals/researchgoals.dm | 19 ++++++++ code/datums/diseases/advance/advance.dm | 1 + code/game/machinery/computer/arcade.dm | 1 + code/game/machinery/iv_drip.dm | 1 + code/game/objects/mail.dm | 1 + code/modules/anomalies/anomaly_harvester.dm | 1 + code/modules/pda/ai.dm | 3 +- 12 files changed, 139 insertions(+), 2 deletions(-) diff --git a/code/__defines/dcs/signals/signals_global.dm b/code/__defines/dcs/signals/signals_global.dm index bd812d66a6..fa48a475c4 100644 --- a/code/__defines/dcs/signals/signals_global.dm +++ b/code/__defines/dcs/signals/signals_global.dm @@ -158,3 +158,14 @@ // base /obj/item/autopsy_scanner/do_surgery() : (mob/user, mob/target) #define COMSIG_GLOB_AUTOPSY_PERFORMED "!performed_autopsy" +// base /datum/disease/proc/cure() : (id) +#define COMSIG_GLOB_ADV_DISEASE_CURED "!adv_disease_cured" + +// base /obj/machinery/anomaly_harvester/proc/add_points() : (add_points) +#define COMSIG_GLOB_ANOMALY_HARVESTED "!anomaly_harvested" +// base /obj/item/mail_scanner/afterattack() +#define COMSIG_GLOB_MAIL_DELIVERED "!mail_delivered" +// base /obj/machinery/computer/arcade/proc/pricevend() +#define COMSIG_GLOB_ARCADE_PRIZEVEND "!arcade_win" + +#define COMSIG_GLOB_DONATE_BLOOD "!donate_blood" diff --git a/code/controllers/subsystems/departmentgoals.dm b/code/controllers/subsystems/departmentgoals.dm index b25dfde5b2..533926d22d 100644 --- a/code/controllers/subsystems/departmentgoals.dm +++ b/code/controllers/subsystems/departmentgoals.dm @@ -80,7 +80,7 @@ SUBSYSTEM_DEF(departmentgoals) if(!length(all_goals)) GLOB.command_announcement.Announce("There are no department goals for this shift.", "Station Resource Department") return - GLOB.command_announcement.Announce("Department goals have been updated for this shift. (Check your IC tab's \"Check Round Goals\" for details!)", "Station Resource Department") + GLOB.command_announcement.Announce("Department goals have been updated for this shift. Check your PDA for details!", "Station Resource Department") /datum/controller/subsystem/departmentgoals/proc/handle_round_end() SIGNAL_HANDLER diff --git a/code/datums/departmentgoals/cargogoals.dm b/code/datums/departmentgoals/cargogoals.dm index 2d8349b633..30a1c8fe95 100644 --- a/code/datums/departmentgoals/cargogoals.dm +++ b/code/datums/departmentgoals/cargogoals.dm @@ -116,3 +116,40 @@ /datum/goal/cargo/mine_rock/check_completion() current_count = GLOB.rocks_drilled_roundstat . = ..() + +// Deliver Mail +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/cargo/deliver_mail + name = "Deliver Mail" + +/datum/goal/cargo/deliver_mail/New() + . = ..() + goal_count = rand(40, 70) + goal_text = "Nothing stops the mail. Deliver [goal_count] envelopes to their corresponding employer." + RegisterSignal(SSdcs, COMSIG_GLOB_MAIL_DELIVERED, PROC_REF(handle_mail_delivery)) + +/datum/goal/cargo/deliver_mail/Destroy(force) + UnregisterSignal(SSdcs, COMSIG_GLOB_MAIL_DELIVERED) + . = ..() + +/datum/goal/cargo/deliver_mail/proc/handle_mail_delivery(atom/source) + SIGNAL_HANDLER + current_count++ + +// Sell Research Samples +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/cargo/sell_research_samples + name = "Sell Research Samples" + +/datum/goal/cargo/sell_research_samples/New() + . = ..() + goal_count = rand(40, 60) + goal_text = "Help provide insight into the unknown, ship [goal_count] research samples." + +/datum/goal/cargo/sell_research_samples/handle_cargo_sale(datum/source, atom/movable/sold_item, sold_successfully, datum/exported_crate/export_data, area/shuttle_subarea) + if(!sold_successfully) + return + if(!istype(sold_item,/obj/structure/closet/crate)) + return + for(var/obj/item/research_sample/sample in sold_item) + current_count++ diff --git a/code/datums/departmentgoals/commongoals.dm b/code/datums/departmentgoals/commongoals.dm index 02ef05e37b..c41380f665 100644 --- a/code/datums/departmentgoals/commongoals.dm +++ b/code/datums/departmentgoals/commongoals.dm @@ -89,3 +89,22 @@ /datum/goal/common/trashpiles/proc/handle_trash_searched(datum/source, mob/living/user, list/searched_by) SIGNAL_HANDLER current_count++ + +// Win arcade +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/common/arcade + name = "Win Arcade Machine Games" + +/datum/goal/common/arcade/New() + . = ..() + goal_count = rand(15, 30) + goal_text = "Enjoy some leisure time and less pocket change, and get some prizes out of [goal_count] arcade machines." + RegisterSignal(SSdcs, COMSIG_GLOB_ARCADE_PRIZEVEND, PROC_REF(handle_arcade_win)) + +/datum/goal/common/arcade/Destroy(force) + UnregisterSignal(SSdcs, COMSIG_GLOB_ARCADE_PRIZEVEND) + . = ..() + +/datum/goal/common/arcade/proc/handle_arcade_win(datum/source) + SIGNAL_HANDLER + current_count++ diff --git a/code/datums/departmentgoals/medicalgoals.dm b/code/datums/departmentgoals/medicalgoals.dm index 3d93d7988d..4609929edf 100644 --- a/code/datums/departmentgoals/medicalgoals.dm +++ b/code/datums/departmentgoals/medicalgoals.dm @@ -29,3 +29,48 @@ if(target.dna.real_name in scanned_mobs) return scanned_mobs += target.dna.real_name + +// Cure Advanced Diseases +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/medical/virology + name = "Cure Diseases" + var/list/cured_diseases = list() + +/datum/goal/medical/virology/New() + . = ..() + goal_count = rand(10, 20) + goal_text = "Ensure the galaxy doesn't suffer from a variety of advanced diseases, obtain the cure for [goal_count] of them." + RegisterSignal(SSdcs, COMSIG_GLOB_ADV_DISEASE_CURED, PROC_REF(handle_disease_cure)) + +/datum/goal/medical/virology/Destroy(force) + UnregisterSignal(SSdcs, COMSIG_GLOB_ADV_DISEASE_CURED) + . = ..() + +/datum/goal/medical/virology/check_completion() + current_count = cured_diseases.len + . = ..() + +/datum/goal/medical/virology/proc/handle_disease_cure(atom/source, id) + SIGNAL_HANDLER + if(id in cured_diseases) + return + cured_diseases += id + +// Donate Blood +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/medical/blood + name = "Donate Blood" + +/datum/goal/medical/blood/New() + . = ..() + goal_count = rand(700, 1200) + goal_text = "Make sure Medical stays well stocked, donate [goal_count] units of blood." + RegisterSignal(SSdcs, COMSIG_GLOB_DONATE_BLOOD, PROC_REF(handle_donate_blood)) + +/datum/goal/medical/blood/Destroy(force) + UnregisterSignal(SSdcs, COMSIG_GLOB_DONATE_BLOOD) + . = ..() + +/datum/goal/medical/blood/proc/handle_donate_blood(atom/source, blood_count) + SIGNAL_HANDLER + current_count += blood_count diff --git a/code/datums/departmentgoals/researchgoals.dm b/code/datums/departmentgoals/researchgoals.dm index 12f9dd8a05..bfb8215e7c 100644 --- a/code/datums/departmentgoals/researchgoals.dm +++ b/code/datums/departmentgoals/researchgoals.dm @@ -60,3 +60,22 @@ /datum/goal/research/build_mechs/proc/handle_mech_construction(atom/source) SIGNAL_HANDLER current_count++ + +// Harvest Anomalies +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/goal/research/harvest_anomalies + name = "Harvest Anomalies" + +/datum/goal/research/harvest_anomalies/New() + . = ..() + goal_count = rand(1500, 3000) + goal_text = "Harvest points from anomalies, produce [goal_count] from any kind of anomaly." + RegisterSignal(SSdcs, COMSIG_GLOB_ANOMALY_HARVESTED, PROC_REF(handle_anomaly_harvest)) + +/datum/goal/research/harvest_anomalies/Destroy(force) + UnregisterSignal(SSdcs, COMSIG_GLOB_ANOMALY_HARVESTED) + . = ..() + +/datum/goal/research/harvest_anomalies/proc/handle_anomaly_harvest(atom/source, add_points) + SIGNAL_HANDLER + current_count += add_points diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 0b1c3ee6db..332b2381c9 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -88,6 +88,7 @@ GLOBAL_LIST_INIT(advance_cures, list( if(resistance && !(id in affected_mob.GetResistances())) affected_mob.GetResistances()[id] = id remove_virus() + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_ADV_DISEASE_CURED, id) qdel(src) /datum/disease/advance/Copy() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index cf801c109d..e5a111e13a 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -37,6 +37,7 @@ /obj/machinery/computer/arcade/proc/prizevend(mob/user) SEND_SIGNAL(src, COMSIG_ARCADE_PRIZEVEND, user) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_ARCADE_PRIZEVEND) if(LAZYLEN(special_prizes)) // Downstream wanted the 'win things inside contents sans circuitboard' feature kept. var/atom/movable/AM = pick_n_take(special_prizes) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index d8a38b356c..98e4f963a9 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -131,6 +131,7 @@ visible_message("\The [src] beeps loudly.") var/datum/reagent/B = T.take_blood(beaker,amount) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_DONATE_BLOOD, amount) if(B) beaker.reagents.reagent_list |= B diff --git a/code/game/objects/mail.dm b/code/game/objects/mail.dm index 7a8fddffe9..91626fb7a5 100644 --- a/code/game/objects/mail.dm +++ b/code/game/objects/mail.dm @@ -452,6 +452,7 @@ ADMIN_VERB(spawn_mail, R_SPAWN, "Spawn Mail", "Spawn mail for a specific player, to_chat(user, span_notice("Succesful delivery acknowledged! [cargo_points] points added to Supply.")) playsound(loc, 'sound/items/mail/mailapproved.ogg', 50, TRUE) SSsupply.points += cargo_points + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MAIL_DELIVERED) // JUNK MAIL STUFF diff --git a/code/modules/anomalies/anomaly_harvester.dm b/code/modules/anomalies/anomaly_harvester.dm index ff35fe2447..76adbd9dc0 100644 --- a/code/modules/anomalies/anomaly_harvester.dm +++ b/code/modules/anomalies/anomaly_harvester.dm @@ -47,6 +47,7 @@ update_icon() /obj/machinery/anomaly_harvester/proc/add_points(add_points) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_ANOMALY_HARVESTED, add_points) add_points *= efficiency points += add_points return diff --git a/code/modules/pda/ai.dm b/code/modules/pda/ai.dm index 50275a6ee2..9790955dfc 100644 --- a/code/modules/pda/ai.dm +++ b/code/modules/pda/ai.dm @@ -10,7 +10,8 @@ new/datum/data/pda/app/notekeeper, new/datum/data/pda/app/news, new/datum/data/pda/app/messenger, - new/datum/data/pda/app/game_launcher) + new/datum/data/pda/app/game_launcher, + new/datum/data/pda/app/goals) special_handling = TRUE /obj/item/pda/ai/proc/set_name_and_job(newname as text, newjob as text, newrank as null|text)