diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm
index 6c43f7c9ead..af1e3376687 100644
--- a/code/datums/dog_fashion.dm
+++ b/code/datums/dog_fashion.dm
@@ -124,6 +124,10 @@
name = "Pyromancer REAL_NAME"
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "ONI SOMA!")
+/datum/dog_fashion/head/black_wizard
+ name = "Necromancer REAL_NAME"
+ speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
+
/datum/dog_fashion/head/cardborg
name = "Borgi"
speak = list("Ping!","Beep!","Woof!")
@@ -148,6 +152,8 @@
name = "Corgi Tech REAL_NAME"
desc = "The reason your yellow gloves have chew-marks."
+/datum/dog_fashion/head/softcap
+
/datum/dog_fashion/head/reindeer
name = "REAL_NAME the red-nosed Corgi"
emote_hear = list("lights the way!", "illuminates.", "yaps!")
@@ -208,3 +214,38 @@
/datum/dog_fashion/head/fried_vox_empty
name = "Colonel REAL_NAME"
desc = "Keep away from live vox."
+
+/datum/dog_fashion/head/HoS
+ name = "Head of Security REAL_NAME"
+ desc = "Probably better than the last HoS."
+
+/datum/dog_fashion/head/beret/sec
+ name = "Officer REAL_NAME"
+ desc = "Ever-loyal, ever-vigilant."
+
+/datum/dog_fashion/head/bowlerhat
+ name = "REAL_NAME"
+ desc = "A sophisticated city gent."
+
+/datum/dog_fashion/head/surgery
+ name = "Nurse-in-Training REAL_NAME"
+ desc = "The most adorable bed-side manner ever."
+
+/datum/dog_fashion/head/bucket
+ name = "REAL_NAME"
+ desc = "A janitor's best friend."
+
+/datum/dog_fashion/head/justice_wig
+ name = "Arbiter REAL_NAME"
+ desc = "Head of the High Court of Cute."
+
+/datum/dog_fashion/head/wizard/magus
+ name = "Battlemage REAL_NAME"
+
+/datum/dog_fashion/head/wizard/marisa
+ name = "Witch REAL_NAME"
+ desc = "Flying broom not included."
+
+/datum/dog_fashion/head/roman
+ name = "Imperator REAL_NAME"
+ desc = "For the Senate and the people of Rome!"
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 69d37bf1ce6..e299f0c97c2 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -331,7 +331,8 @@
to_chat(L, "The blast wave from [src] tears you atom from atom!")
L.dust()
to_chat(world, "The AI cleansed the station of life with the doomsday device!")
- SSticker.force_ending = 1
+ SSticker.force_ending = TRUE
+ SSticker.mode.station_was_nuked = TRUE
//AI Turret Upgrade: Increases the health and damage of all turrets.
/datum/AI_Module/large/upgrade_turrets
@@ -785,4 +786,3 @@
/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI)
if(AI.builtInCamera)
QDEL_NULL(AI.builtInCamera)
-
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 9837b1ea896..b7ff2d7992e 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -262,11 +262,13 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
/datum/objective/block/check_completion()
if(!istype(owner.current, /mob/living/silicon))
- return 0
+ return FALSE
+ if(SSticker.mode.station_was_nuked)
+ return TRUE
if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME)
- return 0
+ return FALSE
if(!owner.current)
- return 0
+ return FALSE
var/area/A = SSshuttle.emergency.areaInstance
@@ -276,9 +278,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
if(player.mind && player.stat != DEAD)
if(get_area(player) == A)
- return 0 // If there are any other organic mobs on the shuttle, you failed the objective.
+ return FALSE // If there are any other organic mobs on the shuttle, you failed the objective.
- return 1
+ return TRUE
/datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive and free."
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 59ab53f3ca6..55895e5b282 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -136,15 +136,14 @@ GLOBAL_VAR_INIT(sent_strike_team, 0)
/client/proc/create_death_commando(obj/spawn_location, is_leader = FALSE)
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
- var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
- var/commando_name = pick(GLOB.last_names)
+ var/commando_name = pick(GLOB.commando_names)
var/datum/preferences/A = new()//Randomize appearance for the commando.
if(is_leader)
A.age = rand(35,45)
A.real_name = "[commando_leader_rank] [commando_name]"
else
- A.real_name = "[commando_rank] [commando_name]"
+ A.real_name = "[commando_name]"
A.copy_to(new_commando)
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index dac6b8f3dac..fe1799b5048 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -8,8 +8,8 @@
#define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 10MB //Boosted this thing. What's the worst that can happen?
#define MIN_CLIENT_VERSION 513 // Minimum byond major version required to play.
//I would just like the code ready should it ever need to be used.
-#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1536
-#define SUGGESTED_CLIENT_BUILD 1536 // only integers (e.g: 1536, 1539) are useful here. This is the part AFTER the ".", IE 1536 out of 513.1536
+#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1542
+#define SUGGESTED_CLIENT_BUILD 1542 // only integers (e.g: 1542, 1543) are useful here. This is the part AFTER the ".", IE 1542 out of 513.1542
#define SSD_WARNING_TIMER 30 // cycles, not seconds, so 30=60s
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index dc880f82541..95c4e04b3ac 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -55,14 +55,12 @@
icon_state = "hardhat0_orange"
item_state = "hardhat0_orange"
item_color = "orange"
- dog_fashion = null
/obj/item/clothing/head/hardhat/red
name = "firefighter helmet"
icon_state = "hardhat0_red"
item_state = "hardhat0_red"
item_color = "red"
- dog_fashion = null
flags = STOPSPRESSUREDMAGE
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
@@ -84,7 +82,6 @@
icon_state = "hardhat0_dblue"
item_state = "hardhat0_dblue"
item_color = "dblue"
- dog_fashion = null
/obj/item/clothing/head/hardhat/atmos
name = "atmospheric technician's firefighting helmet"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index bafe3a9f0a9..e8ce88dba1e 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -162,7 +162,7 @@
icon_state = "roman"
item_state = "roman"
strip_delay = 100
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/roman
/obj/item/clothing/head/helmet/roman/fake
desc = "An ancient helmet made of plastic and leather."
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 44b1431bdfe..db5da84af68 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -25,7 +25,7 @@
name = "captain's parade cap"
desc = "Worn only by Captains with an abundance of class."
icon_state = "capcap"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/captain
//Head of Personnel
/obj/item/clothing/head/hopcap
@@ -106,11 +106,13 @@
icon_state = "hoscap"
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
strip_delay = 80
+ dog_fashion = /datum/dog_fashion/head/HoS
/obj/item/clothing/head/HoS/beret
name = "head of security's beret"
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
icon_state = "beret_hos_black"
+ dog_fashion = /datum/dog_fashion/head/HoS
/obj/item/clothing/head/warden
name = "warden's police hat"
@@ -134,7 +136,7 @@
icon_state = "beret_officer"
armor = list("melee" = 35, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/beret/sec
/obj/item/clothing/head/beret/sec/warden
name = "warden's beret"
@@ -180,15 +182,19 @@
/obj/item/clothing/head/surgery/purple
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is deep purple."
icon_state = "surgcap_purple"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/blue
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is baby blue."
icon_state = "surgcap_blue"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/green
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is dark green."
icon_state = "surgcap_green"
+ dog_fashion = /datum/dog_fashion/head/surgery
/obj/item/clothing/head/surgery/black
desc = "A cap coroners wear during autopsies. Keeps their hair from falling into the cadavers. It is as dark than the coroner's humor."
icon_state = "surgcap_black"
+ dog_fashion = /datum/dog_fashion/head/surgery
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index ba01f0347b2..388fa0374ed 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -25,6 +25,7 @@
desc = "A fancy powdered wig given to arbitrators of the law. It looks itchy."
icon_state = "jwig"
item_state = "jwig"
+ dog_fashion = /datum/dog_fashion/head/justice_wig
/obj/item/clothing/head/beret/blue
icon_state = "beret_blue"
@@ -187,6 +188,7 @@
icon_state = "bowler_hat"
item_state = "bowler_hat"
desc = "For that industrial age look."
+ dog_fashion = /datum/dog_fashion/head/bowlerhat
/obj/item/clothing/head/beaverhat
name = "beaver hat"
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 818e92eb667..dd2c70692f5 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -38,35 +38,35 @@
desc = "It's a baseball hat in a tasteless red colour."
icon_state = "redsoft"
item_color = "red"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/blue
name = "blue cap"
desc = "It's a baseball hat in a tasteless blue colour."
icon_state = "bluesoft"
item_color = "blue"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/green
name = "green cap"
desc = "It's a baseball hat in a tasteless green colour."
icon_state = "greensoft"
item_color = "green"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/yellow
name = "yellow cap"
desc = "It's a baseball hat in a tasteless yellow colour."
icon_state = "yellowsoft"
item_color = "yellow"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/grey
name = "grey cap"
desc = "It's a baseball hat in a tasteful grey colour."
icon_state = "greysoft"
item_color = "grey"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/orange
name = "orange cap"
@@ -79,28 +79,28 @@
desc = "It's a baseball hat in a tasteless white colour."
icon_state = "mimesoft"
item_color = "mime"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/purple
name = "purple cap"
desc = "It's a baseball hat in a tasteless purple colour."
icon_state = "purplesoft"
item_color = "purple"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/black
name = "black cap"
desc = "It's a baseball hat in a tasteless black colour."
icon_state = "blacksoft"
item_color = "black"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/rainbow
name = "rainbow cap"
desc = "It's a baseball hat in a bright rainbow of colors."
icon_state = "rainbowsoft"
item_color = "rainbow"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/sec
name = "security cap"
@@ -109,7 +109,7 @@
item_color = "sec"
armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/softcap
/obj/item/clothing/head/soft/sec/corp
name = "corporate security cap"
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 5b35f14f943..d7c146e3602 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -22,7 +22,7 @@
name = "black wizard hat"
desc = "Strange-looking black hat-wear that most certainly belongs to a real skeleton. Spooky."
icon_state = "blackwizard"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/black_wizard
/obj/item/clothing/head/wizard/clown
name = "purple wizard hat"
@@ -58,14 +58,14 @@
name = "witch hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/wizard/marisa
/obj/item/clothing/head/wizard/magus
name = "magus helm"
desc = "A mysterious helmet that hums with an unearthly power"
icon_state = "magus"
item_state = "magus"
- dog_fashion = null
+ dog_fashion = /datum/dog_fashion/head/wizard/magus
/obj/item/clothing/head/wizard/amp
name = "psychic amplifier"
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 1be2504d387..3905458d864 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -361,6 +361,13 @@
/obj/item/bikehorn)
category = CAT_MISC
+/datum/crafting_recipe/sad_trombone
+ name = "Sad trombone"
+ result = list(/obj/item/instrument/trombone/sad)
+ time = 20
+ reqs = list(/obj/item/stack/sheet/mineral/bananium = 5)
+ category = CAT_MISC
+
/datum/crafting_recipe/blackcarpet
name = "Black Carpet"
result = list(/obj/item/stack/tile/carpet/black)
diff --git a/code/modules/detective_work/evidence.dm b/code/modules/detective_work/evidence.dm
index 555dbe542de..e8bb1b578ae 100644
--- a/code/modules/detective_work/evidence.dm
+++ b/code/modules/detective_work/evidence.dm
@@ -76,6 +76,7 @@
"You hear someone rustle around in a plastic bag, and remove something.")
overlays.Cut() //remove the overlays
user.put_in_hands(I)
+ I.pickup(user)
w_class = WEIGHT_CLASS_TINY
icon_state = "evidenceobj"
desc = "An empty evidence bag."
@@ -83,4 +84,3 @@
else
to_chat(user, "[src] is empty.")
icon_state = "evidenceobj"
-
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index a24b73ae56c..4cdb2f88f07 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -18,13 +18,13 @@
/mob/living/carbon/proc/custom_dreams(list/dreamlist, mob/user)
var/list/newlist = dreamlist.Copy()
for(var/i in 1 to newlist.len)
- newlist[i] = replacetext(newlist[i], "\[DREAMER\]", "[user.name]")
+ newlist[i] = replacetext(newlist[i], "DREAMER", "[user.name]")
return newlist
//NIGHTMARES
/mob/living/carbon/proc/nightmare()
- var/list/nightmares = GLOB.nightmare_strings.Copy()
+ var/list/nightmares = custom_dreams(GLOB.nightmare_strings, src)
for(var/obj/item/bedsheet/sheet in loc)
nightmares += sheet.nightmare_messages
diff --git a/code/modules/instruments/objs/items/instruments.dm b/code/modules/instruments/objs/items/instruments.dm
index 9920a808fc0..ec41f9578a7 100644
--- a/code/modules/instruments/objs/items/instruments.dm
+++ b/code/modules/instruments/objs/items/instruments.dm
@@ -135,6 +135,16 @@
playsound (src, 'sound/instruments/trombone/Cn4.mid', 100,1,-1)
..()
+/obj/item/instrument/trombone/sad
+ name = "sad trombone"
+ desc = "Wah. Waah. Waaah. Waaaaaaah."
+ force = 0
+ attack_verb = list("Wahed", "Waahed", "Waaahed", "Honked")
+
+/obj/item/instrument/trombone/sad/attack(mob/living/carbon/C, mob/user)
+ playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 1, -1)
+ ..()
+
/obj/item/instrument/recorder
name = "recorder"
desc = "Just like in school, playing ability and all."
diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm
index 7da1634b9da..faded5e7fec 100644
--- a/code/modules/martial_arts/sleeping_carp.dm
+++ b/code/modules/martial_arts/sleeping_carp.dm
@@ -12,6 +12,7 @@
var/obj/item/grab/G = D.grabbedby(A,1)
if(G)
G.state = GRAB_AGGRESSIVE //Instant aggressive grab
+ add_attack_logs(A, D, "Melee attacked with martial-art [src] : Grabbed", ATKLOG_ALL)
return TRUE
/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
@@ -27,6 +28,7 @@
if(prob(D.getBruteLoss()) && !D.lying)
D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!")
D.Weaken(4)
+ add_attack_logs(A, D, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL)
return TRUE
/datum/martial_art/the_sleeping_carp/explaination_header(user)
diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm
index 6c9d9d38bee..84a87fbd51f 100644
--- a/code/modules/mob/living/simple_animal/bot/honkbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm
@@ -101,6 +101,14 @@
addtimer(CALLBACK(src, .proc/react_buzz), 5)
return ..()
+/mob/living/simple_animal/bot/honkbot/attackby(obj/item/W, mob/user, params)
+ ..()
+ if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
+ return
+ if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
+ retaliate(user)
+ addtimer(CALLBACK(src, .proc/react_buzz), 5)
+
/mob/living/simple_animal/bot/honkbot/emag_act(mob/user)
..()
if(emagged == 2)
@@ -167,6 +175,9 @@
sensor_blink()
if(!spam_flag)
if(ishuman(C))
+ var/mob/living/carbon/human/H = C
+ if(H.check_ear_prot() >= HEARING_PROTECTION_MAJOR)
+ return
C.stuttering = 20 //stammer
C.AdjustEarDamage(0, 5) //far less damage than the H.O.N.K.
C.Jitter(50)
@@ -202,6 +213,7 @@
// if can't reach perp for long enough, go idle
if(frustration >= 5) //gives up easier than beepsky
walk_to(src, 0)
+ playsound(loc, 'sound/misc/sadtrombone.ogg', 25, 1, -1)
back_to_idle()
return
if(target) // make sure target exists
@@ -257,14 +269,12 @@
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- if(threatlevel <= 3)
+ if(threatlevel <= 3 && emagged <= 1)
if(C in view(4, src)) //keep the range short for patrolling
if(!spam_flag)
bike_horn()
- else if(threatlevel >= 10)
- bike_horn() //just spam the shit outta this
else if(threatlevel >= 4)
- if(!spam_flag)
+ if(!spam_flag || emagged > 1)
target = C
oldtarget_name = C.name
bike_horn()
@@ -275,6 +285,8 @@
break
else
continue
+ else if(emagged > 1)
+ bike_horn() //just spam the shit outta this
/mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material.
walk_to(src, 0)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index aa4ae90d380..5d505554c84 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -280,6 +280,10 @@
add_overlay(causality_field, TRUE)
var/speaking = "[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated."
+ for(var/mob/M in GLOB.player_list) // for all players
+ var/turf/T = get_turf(M)
+ if(istype(T) && atoms_share_level(T, src)) // if the player is on the same zlevel as the SM shared
+ SEND_SOUND(M, sound('sound/machines/engine_alert2.ogg')) // then send them the sound file
radio.autosay(speaking, name, null, list(z))
for(var/i in SUPERMATTER_COUNTDOWN_TIME to 0 step -10)
if(damage < explosion_point) // Cutting it a bit close there engineers
diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm
index c5a5195a848..bead1467de5 100644
--- a/code/modules/reagents/reagent_containers/glass_containers.dm
+++ b/code/modules/reagents/reagent_containers/glass_containers.dm
@@ -297,6 +297,7 @@
slot_flags = SLOT_HEAD
resistance_flags = NONE
container_type = OPENCONTAINER
+ dog_fashion = /datum/dog_fashion/head/bucket
/obj/item/reagent_containers/glass/bucket/wooden
name = "wooden bucket"
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 571d3f06c18..035cb1b31b2 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -62,8 +62,13 @@
Retract()
..()
+/obj/item/organ/internal/cyberimp/arm/proc/check_cuffs()
+ if(owner.handcuffed)
+ to_chat(owner, "The handcuffs interfere with [src]!")
+ return TRUE
+
/obj/item/organ/internal/cyberimp/arm/proc/Retract()
- if(!holder || (holder in src))
+ if(!holder || (holder in src) || check_cuffs())
return
owner.visible_message("[owner] retracts [holder] back into [owner.p_their()] [parent_organ == "r_arm" ? "right" : "left"] arm.",
@@ -80,10 +85,9 @@
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
/obj/item/organ/internal/cyberimp/arm/proc/Extend(obj/item/item)
- if(!(item in src))
+ if(!(item in src) || check_cuffs())
return
-
holder = item
holder.flags |= NODROP
diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm
index 3317aca4648..9812c3d8fc6 100644
--- a/code/modules/surgery/organs/subtypes/diona.dm
+++ b/code/modules/surgery/organs/subtypes/diona.dm
@@ -5,6 +5,7 @@
amputation_point = "trunk"
encased = null
gendered_icon = 0
+ convertable_children = list(/obj/item/organ/external/groin/diona)
/obj/item/organ/external/groin/diona
name = "fork"
@@ -17,24 +18,28 @@
max_damage = 35
min_broken_damage = 20
amputation_point = "upper left trunk"
+ convertable_children = list(/obj/item/organ/external/arm/diona)
/obj/item/organ/external/arm/right/diona
name = "right upper tendril"
max_damage = 35
min_broken_damage = 20
amputation_point = "upper right trunk"
+ convertable_children = list(/obj/item/organ/external/arm/right/diona)
/obj/item/organ/external/leg/diona
name = "left lower tendril"
max_damage = 35
min_broken_damage = 20
amputation_point = "lower left fork"
+ convertable_children = list(/obj/item/organ/external/leg/diona)
/obj/item/organ/external/leg/right/diona
name = "right lower tendril"
max_damage = 35
min_broken_damage = 20
amputation_point = "lower right fork"
+ convertable_children = list(/obj/item/organ/external/leg/right/diona)
/obj/item/organ/external/foot/diona
name = "left foot"
diff --git a/code/modules/surgery/organs/subtypes/unbreakable.dm b/code/modules/surgery/organs/subtypes/unbreakable.dm
index b4fca2150fc..047e2f01fa1 100644
--- a/code/modules/surgery/organs/subtypes/unbreakable.dm
+++ b/code/modules/surgery/organs/subtypes/unbreakable.dm
@@ -1,21 +1,26 @@
/obj/item/organ/external/chest/unbreakable
cannot_break = TRUE
encased = null
+ convertable_children = list(/obj/item/organ/external/groin/unbreakable)
/obj/item/organ/external/groin/unbreakable
cannot_break = TRUE
/obj/item/organ/external/arm/unbreakable
cannot_break = TRUE
+ convertable_children = list(/obj/item/organ/external/hand/unbreakable)
/obj/item/organ/external/arm/right/unbreakable
cannot_break = TRUE
+ convertable_children = list(/obj/item/organ/external/hand/right/unbreakable)
/obj/item/organ/external/leg/unbreakable
cannot_break = TRUE
+ convertable_children = list(/obj/item/organ/external/foot/right/unbreakable)
/obj/item/organ/external/leg/right/unbreakable
cannot_break = TRUE
+ convertable_children = list(/obj/item/organ/external/foot/right/unbreakable)
/obj/item/organ/external/foot/unbreakable
cannot_break = TRUE
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 6e118068127..51267c859b9 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -112,6 +112,9 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
if(check_flags & AB_CHECK_CONSCIOUS)
if(owner.stat)
return FALSE
+ if(istype(owner.loc, /obj/effect/dummy/spell_jaunt))
+ to_chat(owner, "No one can hear you when you are jaunting, no point in talking now!")
+ return FALSE
return TRUE
/datum/action/item_action/organ_action/colossus/Trigger()
@@ -139,12 +142,15 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
return FALSE
if(owner.stat)
return FALSE
+ if(istype(owner.loc, /obj/effect/dummy/spell_jaunt))
+ to_chat(owner, "No one can hear you when you are jaunting, no point in talking now!")
+ return FALSE
return TRUE
/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message)
spans = "colossus yell" //reset spans, just in case someone gets deculted or the cords change owner
if(iscultist(owner))
- spans += " narsiesmall"
+ spans += "narsiesmall"
return "[uppertext(message)]"
/obj/item/organ/internal/vocal_cords/colossus/speak_with(message)
diff --git a/config/names/dreams.txt b/config/names/dreams.txt
index 4bd2c2b984e..263b57ace12 100644
--- a/config/names/dreams.txt
+++ b/config/names/dreams.txt
@@ -109,4 +109,4 @@ the AI core
the mining station
the research station
a beaker of strange liquid
-Captain [DREAMER]
+Captain DREAMER
diff --git a/config/names/nightmares.txt b/config/names/nightmares.txt
index 022a0494edd..a71f9d0ba84 100644
--- a/config/names/nightmares.txt
+++ b/config/names/nightmares.txt
@@ -25,4 +25,4 @@ aaaAAAaaaaAAAAAAaa
pApErWork
we SEE yoU
the ceiling
-we have been waiting for you [DREAMER]
\ No newline at end of file
+we have been waiting for you DREAMER
\ No newline at end of file
diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi
index 7492b40833d..9c84a030aaf 100644
Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ
diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi
index 5ff3a9b0fb2..b3dda4e8c81 100644
Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ
diff --git a/icons/mob/species/drask/eyes.dmi b/icons/mob/species/drask/eyes.dmi
index 04771713282..8c2653cc281 100644
Binary files a/icons/mob/species/drask/eyes.dmi and b/icons/mob/species/drask/eyes.dmi differ
diff --git a/icons/mob/species/grey/eyes.dmi b/icons/mob/species/grey/eyes.dmi
index 707c9c1659f..ec6444b0aa4 100644
Binary files a/icons/mob/species/grey/eyes.dmi and b/icons/mob/species/grey/eyes.dmi differ
diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi
index 4b9ee667e6c..3beffab6d9b 100644
Binary files a/icons/mob/species/vox/eyes.dmi and b/icons/mob/species/vox/eyes.dmi differ
diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi
index 03bcddbd266..14ad340a547 100644
Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index db9d3daf506..66dede9aa8e 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ