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