Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 54 additions & 1 deletion code/datums/achievements/achievements.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
var/hidden = FALSE // Whether or not this achievement's description is hidden untill you accomplish this (doesn't apply to the online viewer)

/datum/achievement/bubblegum
name = "Kick Ass and Chew Bubblegum."
name = "Kick Ass and Chew Bubblegum"
desc = "Kill Bubblegum, the king of slaughter demons." //Should be improved(?)
id = 1

Expand Down Expand Up @@ -40,3 +40,56 @@
desc = "Kill yourself using the nuclear authentication disk"
id = 7
hidden = TRUE

/datum/achievement/badass
name = "Badass Syndie"
desc = "As a traitor, complete your objectives without buying any items"
id = 8

/datum/achievement/jones
name = "Lead Lined"
desc = "Survive an explosion while inside of a freezer"
id = 9
hidden = TRUE

/datum/achievement/wizwin
name = "Scholars of the Arcane"
desc = "As a wizard, complete your objectives"
id = 10

/datum/achievement/cpr
name = "Breath of Life"
desc = "Perform CPR on someone..."
id = 11

/datum/achievement/anticpr
name = "Breath of Death"
desc = "... with incompatible lungs"
id = 12
hidden = TRUE

/datum/achievement/changelingwin
name = "The Thing"
desc = "As a changeling, complete your objectives"
id = 13

/datum/achievement/slingascend
name = "The Dark Shadow"
desc = "As a shadowling, ascend successfully"
id = 14

/datum/achievement/death
name = "Flatlined"
desc = "You died"
id = 15

/datum/achievement/cremated
name = "Back to Carbon"
desc = "Get cremated"
id = 16

/datum/achievement/cremated_alive
name = "Burn in Hell"
desc = "Get cremated... alive"
id = 17
hidden = TRUE
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
/obj/structure/closet/secure_closet/freezer/ex_act()
if(!jones)
jones = TRUE
for(var/mob/I in contents)
if(I.client && I.stat != DEAD)
SSachievements.unlock_achievement(/datum/achievement/jones, I.client)
else
..()

Expand Down
8 changes: 7 additions & 1 deletion code/game/objects/structures/morgue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,14 @@ GLOBAL_LIST_EMPTY(crematoriums)
update_icon()

for(var/mob/living/M in conts)
if (M.stat != DEAD)
if(M.stat != DEAD)
M.emote("scream")
if(M.client)
if(M.stat != DEAD)
SSachievements.unlock_achievement(/datum/achievement/cremated_alive, M.client) //they are in body and alive, give achievement
SSachievements.unlock_achievement(/datum/achievement/cremated, M.client) //they are in body, but dead, they can have one achievement
else if(M.oobe_client) //they might be ghosted if they are dead, we'll allow it.
SSachievements.unlock_achievement(/datum/achievement/cremated, M.oobe_client) //no burning alive achievement if you are ghosted though
if(user)
log_combat(user, M, "cremated")
else
Expand Down
1 change: 1 addition & 0 deletions code/modules/antagonists/changeling/changeling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@

if(changelingwin)
parts += "<span class='greentext'>The changeling was successful!</span>"
SSachievements.unlock_achievement(/datum/achievement/changelingwin, owner.current.client) //changeling wins, give achivement
else
parts += "<span class='redtext'>The changeling has failed.</span>"

Expand Down
1 change: 1 addition & 0 deletions code/modules/antagonists/traitor/datum_traitor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@
if(TC_uses==0 && traitorwin)
var/static/icon/badass = icon('icons/badass.dmi', "badass")
uplink_text += "<BIG>[icon2html(badass, world)]</BIG>"
SSachievements.unlock_achievement(/datum/achievement/badass, owner.current.client)
result += uplink_text

result += objectives_text
Expand Down
1 change: 1 addition & 0 deletions code/modules/antagonists/wizard/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@

if(wizardwin)
parts += "<span class='greentext'>The wizard was successful!</span>"
SSachievements.unlock_achievement(/datum/achievement/wizwin, owner.current.client) //wizard wins, give achievement
else
parts += "<span class='redtext'>The wizard has failed!</span>"

Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/human/death.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@
var/datum/antagonist/hivemind/hive = mind.has_antag_datum(/datum/antagonist/hivemind)
hive.destroy_hive()

if(client)
SSachievements.unlock_achievement(/datum/achievement/death, client)

/mob/living/carbon/human/proc/makeSkeleton()
ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
set_species(/datum/species/skeleton)
Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -643,15 +643,18 @@
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "perform_cpr", /datum/mood_event/perform_cpr)
C.cpr_time = world.time
log_combat(src, C, "CPRed")
SSachievements.unlock_achievement(/datum/achievement/cpr, client)
// yogs start - can't CPR people with ash walker lungs whithout having them yourself
if(they_breathe && they_ashlung && !we_ashlung)
C.adjustOxyLoss(anticpr)
C.updatehealth()
to_chat(C, "<span class='unconscious'>You feel a breath of fresh air enter your lungs... you feel worse...")
SSachievements.unlock_achievement(/datum/achievement/anticpr, client) //you can get both achievements at the same time I guess
else if(they_breathe && they_lung && we_ashlung)
C.adjustOxyLoss(anticpr)
C.updatehealth()
to_chat(C, "<span class='unconscious'>You feel a breath of fresh air enter your lungs... you feel worse...")
SSachievements.unlock_achievement(/datum/achievement/anticpr, client)
//yogs end
else if(they_breathe && they_lung)
var/suff = min(C.getOxyLoss(), 7)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@
SEND_SOUND(M, sound('sound/hallucinations/veryfar_noise.ogg'))
for(var/obj/machinery/power/apc/A in GLOB.apcs_list)
A.overload_lighting()
SSachievements.unlock_achievement(/datum/achievement/slingascend, H.client)
var/mob/A = new /mob/living/simple_animal/ascendant_shadowling(H.loc)
for(var/X in H.mind.spell_list)
var/obj/effect/proc_holder/spell/S = X
Expand Down