diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm
index b610eb50cc1..acf77ed73e1 100644
--- a/code/__DEFINES/achievements.dm
+++ b/code/__DEFINES/achievements.dm
@@ -19,6 +19,11 @@
#define MEDAL_SELFOUCH "Hands???"
#define MEDAL_SANDMAN "Mister Sandman"
#define MEDAL_CLEANBOSS "Cleanboss"
+#define MEDAL_RULE8 "Rule 8"
+#define MEDAL_LONGSHIFT "longshift"
+
+//Skill medal hub IDs
+#define MEDAL_LEGENDARY_MINER "Legendary Miner"
//Boss medals
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 9132a378d32..e173231ffdf 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -188,10 +188,16 @@
cb.InvokeAsync()
LAZYCLEARLIST(round_end_events)
+ var/speed_round = FALSE
+ if(world.time - SSticker.round_start_time <= 300 SECONDS)
+ speed_round = TRUE
+
for(var/client/C in GLOB.clients)
if(!C.credits)
C.RollCredits()
C.playtitlemusic(40)
+ if(speed_round)
+ C.give_award(/datum/award/achievement/misc/speed_round, C.mob)
var/popcount = gather_roundend_feedback()
display_report(popcount)
diff --git a/code/datums/achievements/boss_achievements.dm b/code/datums/achievements/boss_achievements.dm
index d50c6a37203..1c0cc0ad9ee 100644
--- a/code/datums/achievements/boss_achievements.dm
+++ b/code/datums/achievements/boss_achievements.dm
@@ -1,75 +1,90 @@
/datum/award/achievement/boss
category = "Bosses"
+ icon = "baseboss"
/datum/award/achievement/boss/tendril_exterminator
name = "Tendril Exterminator"
desc = "Watch your step"
database_id = BOSS_MEDAL_TENDRIL
+ icon = "tendril"
/datum/award/achievement/boss/boss_killer
name = "Boss Killer"
desc = "You've come a long ways from asking how to switch hands."
database_id = "Boss Killer"
+ icon = "firstboss"
/datum/award/achievement/boss/blood_miner_kill
name = "Blood-drunk Miner Killer"
desc = "I guess he couldn't handle his drink that well."
database_id = BOSS_MEDAL_MINER
+ icon = "miner"
/datum/award/achievement/boss/bubblegum_kill
name = "Bubblegum Killer"
desc = "I guess he wasn't made of candy after all"
database_id = BOSS_MEDAL_BUBBLEGUM
+ icon = "bbgum"
-/datum/award/achievement/boss/colussus_kill
- name = "Colussus Killer"
+/datum/award/achievement/boss/colossus_kill
+ name = "Colossus Killer"
desc = "The bigger they are... the better the loot"
database_id = BOSS_MEDAL_COLOSSUS
+ icon = "colossus"
/datum/award/achievement/boss/drake_kill
name = "Drake Killer"
desc = "Now I can wear Rune Platebodies!"
database_id = BOSS_MEDAL_DRAKE
+ icon = "drake"
/datum/award/achievement/boss/hierophant_kill
name = "Hierophant Killer"
desc = "Hierophant, but not triumphant."
database_id = BOSS_MEDAL_HIEROPHANT
+ icon = "hierophant"
/datum/award/achievement/boss/legion_kill
name = "Legion Killer"
desc = "We were many..now we are none."
database_id = BOSS_MEDAL_LEGION
+ icon = "legion"
/datum/award/achievement/boss/swarmer_beacon_kill
name = "Swarm Beacon Killer"
desc = "GET THEM OFF OF ME!"
database_id = BOSS_MEDAL_SWARMERS
+ icon = "swarmer"
/datum/award/achievement/boss/blood_miner_crusher
name = "Blood-drunk Miner Crusher"
desc = "I guess he couldn't handle his drink that well."
database_id = BOSS_MEDAL_MINER_CRUSHER
+ icon = "miner"
/datum/award/achievement/boss/bubblegum_crusher
name = "Bubblegum Crusher"
desc = "I guess he wasn't made of candy after all"
database_id = BOSS_MEDAL_BUBBLEGUM_CRUSHER
+ icon = "bbgum"
-/datum/award/achievement/boss/colussus_crusher
- name = "Colussus Crusher"
+/datum/award/achievement/boss/colossus_crusher
+ name = "Colossus Crusher"
desc = "The bigger they are... the better the loot"
database_id = BOSS_MEDAL_COLOSSUS_CRUSHER
+ icon = "colossus"
/datum/award/achievement/boss/drake_crusher
name = "Drake Crusher"
desc = "Now I can wear Rune Platebodies!"
database_id = BOSS_MEDAL_DRAKE_CRUSHER
+ icon = "drake"
/datum/award/achievement/boss/hierophant_crusher
name = "Hierophant Crusher"
desc = "Hierophant, but not triumphant."
database_id = BOSS_MEDAL_HIEROPHANT_CRUSHER
+ icon = "hierophant"
/datum/award/achievement/boss/legion_crusher
name = "Legion Crusher"
diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm
index a4f65925d27..3d3fe61a9f0 100644
--- a/code/datums/achievements/misc_achievements.dm
+++ b/code/datums/achievements/misc_achievements.dm
@@ -1,41 +1,49 @@
/datum/award/achievement/misc
category = "Misc"
+ icon = "basemisc"
/datum/award/achievement/misc/meteor_examine
name = "Your Life Before Your Eyes"
desc = "Take a close look at hurtling space debris"
database_id = MEDAL_METEOR
+ icon = "meteors"
/datum/award/achievement/misc/pulse
name = "Jackpot"
desc = "Win a pulse rifle from an arcade machine"
database_id = MEDAL_PULSE
+ icon = "jackpot"
/datum/award/achievement/misc/time_waste
name = "Time waster"
desc = "Speak no evil, hear no evil, see just errors"
database_id = MEDAL_TIMEWASTE
+ icon = "timewaste"
/datum/award/achievement/misc/feat_of_strength
name = "Feat of Strength"
desc = "If the rod is immovable, is it passing you or are you passing it?"
database_id = MEDAL_RODSUPLEX
+ icon = "featofstrength"
/datum/award/achievement/misc/round_and_full
name = "Round and Full"
desc = "Well at least you aren't down the river, I hear they eat people there."
database_id = MEDAL_CLOWNCARKING
+ icon = "clownking"
/datum/award/achievement/misc/the_best_driver
name = "The Best Driver"
desc = "100 honks later"
database_id = MEDAL_THANKSALOT
+ icon = "clownthanks"
/datum/award/achievement/misc/helbitaljanken
name = "Helbitaljanken"
desc = "You janked hard"
database_id = MEDAL_HELBITALJANKEN
-
+ icon = "helbital"
+
/datum/award/achievement/misc/getting_an_upgrade
name = "Getting an upgrade"
desc = "Make your first unique material item!"
@@ -75,3 +83,15 @@
name = "One Lean, Mean, Cleaning Machine"
desc = "How does it feel to know that your workplace values a mop bucket on wheels more than you?" // i can do better than this give me time
database_id = MEDAL_CLEANBOSS
+
+/datum/award/achievement/misc/rule8
+ name = "Rule 8"
+ desc = "Call an admin this is ILLEGAL!!"
+ database_id = MEDAL_RULE8
+ icon = "rule8"
+
+/datum/award/achievement/misc/speed_round
+ name = "Long shift"
+ desc = "Well, that didn't take long."
+ database_id = MEDAL_LONGSHIFT
+ icon = "longshift"
diff --git a/code/datums/achievements/skill_achievements.dm b/code/datums/achievements/skill_achievements.dm
new file mode 100644
index 00000000000..7da936c61f4
--- /dev/null
+++ b/code/datums/achievements/skill_achievements.dm
@@ -0,0 +1,10 @@
+/datum/award/achievement/skill
+ category = "Skills"
+ icon = "baseskill"
+
+/datum/award/achievement/skill/legendary_miner
+ name = "Legendary miner"
+ desc = "No mere rock can stop me!"
+ database_id = MEDAL_LEGENDARY_MINER
+ icon = "mining"
+
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 15a91627886..dbdddf4eade 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -216,6 +216,7 @@
else if(Kisser.partner == src && !plush_child) //the one advancing does not take ownership of the child and we have a one child policy in the toyshop
user.visible_message("[user] is going to break [Kisser] and [src] by bashing them like that.",
"[Kisser] passionately embraces [src] in your hands. Look away you perv!")
+ user.client.give_award(/datum/award/achievement/misc/rule8, user)
if(plop(Kisser))
user.visible_message("Something drops at the feet of [user].",
"The miracle of oh god did that just come out of [src]?!")
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index 590bc2a6f44..9edef593c18 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -558,6 +558,7 @@
if(!(H.mind.get_skill_level(/datum/skill/mining) >= SKILL_LEVEL_MASTER))
return
drop_ores()
+ H.client.give_award(/datum/award/achievement/skill/legendary_miner, H)
var/flags = NONE
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index ebfc2b62519..68911fa5af3 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -600,7 +600,27 @@ GLOBAL_LIST_EMPTY(asset_datums)
/datum/asset/spritesheet/simple/achievements
name ="achievements"
assets = list(
- "default" = 'icons/UI_Icons/Achievements/default.png'
+ "default" = 'icons/UI_Icons/Achievements/default.png',
+ "basemisc" = 'icons/UI_Icons/Achievements/basemisc.png',
+ "baseboss" = 'icons/UI_Icons/Achievements/baseboss.png',
+ "baseskill" = 'icons/UI_Icons/Achievements/baseskill.png',
+ "bbgum" = 'icons/UI_Icons/Achievements/Boss/bbgum.png',
+ "colossus" = 'icons/UI_Icons/Achievements/Boss/colossus.png',
+ "hierophant" = 'icons/UI_Icons/Achievements/Boss/hierophant.png',
+ "legion" = 'icons/UI_Icons/Achievements/Boss/legion.png',
+ "miner" = 'icons/UI_Icons/Achievements/Boss/miner.png',
+ "swarmer" = 'icons/UI_Icons/Achievements/Boss/swarmer.png',
+ "tendril" = 'icons/UI_Icons/Achievements/Boss/tendril.png',
+ "featofstrength" = 'icons/UI_Icons/Achievements/Misc/featofstrength.png',
+ "helbital" = 'icons/UI_Icons/Achievements/Misc/helbital.png',
+ "jackpot" = 'icons/UI_Icons/Achievements/Misc/jackpot.png',
+ "meteors" = 'icons/UI_Icons/Achievements/Misc/meteors.png',
+ "timewaste" = 'icons/UI_Icons/Achievements/Misc/timewaste.png',
+ "upgrade" = 'icons/UI_Icons/Achievements/Misc/upgrade.png',
+ "clownking" = 'icons/UI_Icons/Achievements/Misc/clownking.png',
+ "clownthanks" = 'icons/UI_Icons/Achievements/Misc/clownthanks.png',
+ "rule8" = 'icons/UI_Icons/Achievements/Misc/rule8.png',
+ "mining" = 'icons/UI_Icons/Achievements/Skills/mining.png',
)
/datum/asset/spritesheet/simple/pills
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index a6239093dfe..1bdaea6b59d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -45,8 +45,8 @@ Difficulty: Very Hard
pixel_x = -32
del_on_death = TRUE
gps_name = "Angelic Signal"
- achievement_type = /datum/award/achievement/boss/colussus_kill
- crusher_achievement_type = /datum/award/achievement/boss/colussus_crusher
+ achievement_type = /datum/award/achievement/boss/colossus_kill
+ crusher_achievement_type = /datum/award/achievement/boss/colossus_crusher
score_achievement_type = /datum/award/score/colussus_score
crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher)
loot = list(/obj/structure/closet/crate/necropolis/colossus)
diff --git a/icons/UI_Icons/Achievements/Boss/bbgum.png b/icons/UI_Icons/Achievements/Boss/bbgum.png
new file mode 100644
index 00000000000..a0962fb1ced
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/bbgum.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/colossus.png b/icons/UI_Icons/Achievements/Boss/colossus.png
new file mode 100644
index 00000000000..f544084786d
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/colossus.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/drake.png b/icons/UI_Icons/Achievements/Boss/drake.png
new file mode 100644
index 00000000000..19ecc5ae941
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/drake.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/hierophant.png b/icons/UI_Icons/Achievements/Boss/hierophant.png
new file mode 100644
index 00000000000..a8f2e6a45ed
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/hierophant.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/legion.png b/icons/UI_Icons/Achievements/Boss/legion.png
new file mode 100644
index 00000000000..dc9470a8a97
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/legion.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/miner.png b/icons/UI_Icons/Achievements/Boss/miner.png
new file mode 100644
index 00000000000..5164dcfb10b
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/miner.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/swarmer.png b/icons/UI_Icons/Achievements/Boss/swarmer.png
new file mode 100644
index 00000000000..bcc017af32d
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/swarmer.png differ
diff --git a/icons/UI_Icons/Achievements/Boss/tendril.png b/icons/UI_Icons/Achievements/Boss/tendril.png
new file mode 100644
index 00000000000..3b6b908d3eb
Binary files /dev/null and b/icons/UI_Icons/Achievements/Boss/tendril.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/clownking.png b/icons/UI_Icons/Achievements/Misc/clownking.png
new file mode 100644
index 00000000000..7260c34dcdd
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/clownking.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/clownthanks.png b/icons/UI_Icons/Achievements/Misc/clownthanks.png
new file mode 100644
index 00000000000..214a4e0a74d
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/clownthanks.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/featofstrength.png b/icons/UI_Icons/Achievements/Misc/featofstrength.png
new file mode 100644
index 00000000000..5cfc5240bd1
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/featofstrength.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/helbital.png b/icons/UI_Icons/Achievements/Misc/helbital.png
new file mode 100644
index 00000000000..10b5efdd5e6
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/helbital.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/jackpot.png b/icons/UI_Icons/Achievements/Misc/jackpot.png
new file mode 100644
index 00000000000..e171c5cb7c9
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/jackpot.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/longshift.png b/icons/UI_Icons/Achievements/Misc/longshift.png
new file mode 100644
index 00000000000..5f511e21fd5
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/longshift.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/meteors.png b/icons/UI_Icons/Achievements/Misc/meteors.png
new file mode 100644
index 00000000000..5e6d4bc9bd7
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/meteors.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/rule8.png b/icons/UI_Icons/Achievements/Misc/rule8.png
new file mode 100644
index 00000000000..2bc518d5ab5
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/rule8.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/timewaste.png b/icons/UI_Icons/Achievements/Misc/timewaste.png
new file mode 100644
index 00000000000..24d23025fb0
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/timewaste.png differ
diff --git a/icons/UI_Icons/Achievements/Misc/upgrade.png b/icons/UI_Icons/Achievements/Misc/upgrade.png
new file mode 100644
index 00000000000..e73bb512eb1
Binary files /dev/null and b/icons/UI_Icons/Achievements/Misc/upgrade.png differ
diff --git a/icons/UI_Icons/Achievements/Skills/mining.png b/icons/UI_Icons/Achievements/Skills/mining.png
new file mode 100644
index 00000000000..7d87d135b43
Binary files /dev/null and b/icons/UI_Icons/Achievements/Skills/mining.png differ
diff --git a/icons/UI_Icons/Achievements/baseboss.png b/icons/UI_Icons/Achievements/baseboss.png
new file mode 100644
index 00000000000..df2227b391d
Binary files /dev/null and b/icons/UI_Icons/Achievements/baseboss.png differ
diff --git a/icons/UI_Icons/Achievements/basemisc.png b/icons/UI_Icons/Achievements/basemisc.png
new file mode 100644
index 00000000000..1346d1c001d
Binary files /dev/null and b/icons/UI_Icons/Achievements/basemisc.png differ
diff --git a/icons/UI_Icons/Achievements/baseskill.png b/icons/UI_Icons/Achievements/baseskill.png
new file mode 100644
index 00000000000..de6ff8a2e5f
Binary files /dev/null and b/icons/UI_Icons/Achievements/baseskill.png differ
diff --git a/icons/UI_Icons/Achievements/default.png b/icons/UI_Icons/Achievements/default.png
index 0572262dfb8..852298aa0c5 100644
Binary files a/icons/UI_Icons/Achievements/default.png and b/icons/UI_Icons/Achievements/default.png differ
diff --git a/tgstation.dme b/tgstation.dme
index 2f943989c6b..4d6d21e0d1f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -351,6 +351,7 @@
#include "code\datums\achievements\boss_achievements.dm"
#include "code\datums\achievements\boss_scores.dm"
#include "code\datums\achievements\misc_achievements.dm"
+#include "code\datums\achievements\skill_achievements.dm"
#include "code\datums\actions\beam_rifle.dm"
#include "code\datums\actions\ninja.dm"
#include "code\datums\atmosphere\_atmosphere.dm"