diff --git a/code/datums/achievements/achievements.dm b/code/datums/achievements/achievements.dm index 074b916aa8ce..c9c7175076a0 100644 --- a/code/datums/achievements/achievements.dm +++ b/code/datums/achievements/achievements.dm @@ -24,7 +24,7 @@ desc = "Emag a Particle Accelerator" id = 4 hidden = TRUE - + /datum/achievement/flukeops name = "Reverse Card" desc = "As a member of the Crew, deal a Humiliating defeat to Nuclear Team" @@ -93,3 +93,15 @@ desc = "Get cremated... alive" id = 17 hidden = TRUE + +/datum/achievement/Poly_silent + name = "Silence Bird!" + desc = "As a signal technician create a script that mutes poly" + id = 18 + hidden = TRUE + +/datum/achievement/Poly_loud + name = "Embrace The Bird!" + desc = "As a signal technician create a script that makes poly LOUD" + id = 19 + hidden = TRUE \ No newline at end of file diff --git a/yogstation/code/game/machinery/telecomms/machines/server.dm b/yogstation/code/game/machinery/telecomms/machines/server.dm index bf71fea5ae58..f2e348e8f4b5 100644 --- a/yogstation/code/game/machinery/telecomms/machines/server.dm +++ b/yogstation/code/game/machinery/telecomms/machines/server.dm @@ -57,5 +57,33 @@ if(!compileerrors.len && (compiledcode != rawcode)) user.log_message(rawcode, LOG_NTSL) compiledcode = rawcode + if(user.mind.assigned_role == "Signal Technician") //achivement description says only Signal Technician gets the achivement + var/freq + if(freq_listening.len > 0) + freq = freq_listening[1] + else + freq = 1459 + var/atom/movable/M = new() + var/atom/movable/virtualspeaker/speaker = new(null, M, server_radio) + speaker.name = "Poly" + speaker.job = "" + var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, /datum/language/common, "test", list(), ) + signal.data["server"] = src + Compiler.Run(signal) + if(signal.data["reject"] == 1) + signal.data["name"] = "" + signal.data["reject"] = 0 + Compiler.Run(signal) + if(signal.data["reject"] == 0) + SSachievements.unlock_achievement(/datum/achievement/Poly_silent, user.client) + else + for(var/sample in signal.data["spans"]) + if(sample == SPAN_COMMAND) + signal.data["name"] = "" + signal.data["spans"] = list() + Compiler.Run(signal) + for(var/S in signal.data["spans"]) + if(S == SPAN_COMMAND) + SSachievements.unlock_achievement(/datum/achievement/Poly_loud, user.client) return compileerrors //end-NTSL