diff --git a/code/datums/achievements/achievements.dm b/code/datums/achievements/achievements.dm index cd522424614b..b50b630cf106 100644 --- a/code/datums/achievements/achievements.dm +++ b/code/datums/achievements/achievements.dm @@ -22,3 +22,18 @@ name = "Catastrophe" desc = "Emag a Particle Accelerator" id = 4 + +/datum/achievement/flukeops + name = "Reverse Card" + desc = "As a member of the Crew, deal a Humiliating defeat to Nuclear Team" + id = 5 + +/datum/achievement/nukewin + name = "Delta Alert" + desc = "As a Nuclear Operative, score a Major or Minor Victory" + id = 6 + +/datum/achievement/honorarynukie + name = "Honorary Nukie" + desc = "Kill yourself using the nuclear authentication disk" + id = 7 diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 6de3978a4798..1f781e0b5d9f 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -704,6 +704,7 @@ This is here to make the tiles around the station mininuke change when it's arme user.visible_message("[user] was destroyed by the nuclear blast!") user.adjustOxyLoss(200) user.death(0) + SSachievements.unlock_achievement(/datum/achievement/honorarynukie, user.client) /obj/item/disk/nuclear/fake fake = TRUE diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index a776dbb6aaca..13c1702a3d35 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -369,9 +369,21 @@ text += "[icon2html('icons/badass.dmi', world, "badass")]" parts += text - + handle_achievements() return "
[parts.Join("
")]
" +/datum/team/nuclear/proc/handle_achievements() + switch(get_result()) + if(NUKE_RESULT_FLUKE) + for(var/mob/living/carbon/human/H in GLOB.player_list) //if you observe, too bad + if(!is_nuclear_operative(H)) + SSachievements.unlock_achievement(/datum/achievement/flukeops, H.client) + if(NUKE_RESULT_NUKE_WIN, NUKE_RESULT_DISK_LOST) + for(var/mob/living/carbon/human/H in GLOB.player_list) + if(is_nuclear_operative(H)) + SSachievements.unlock_achievement(/datum/achievement/nukewin, H.client) + + /datum/team/nuclear/antag_listing_name() if(syndicate_name) return "[syndicate_name] Syndicates"