diff --git a/code/game/gamemodes/calamity/calamity.dm b/code/game/gamemodes/calamity/calamity.dm index 2e77fcb19d8..53cd72d447c 100644 --- a/code/game/gamemodes/calamity/calamity.dm +++ b/code/game/gamemodes/calamity/calamity.dm @@ -411,11 +411,7 @@ var/mob/living/simple_animal/borer/roundstart/B = new(target_host) - player.current = B - B.mind = player - B.key = player.key - player.assigned_role = "Cortical Borer" - player.special_role = "Cortical Borer" + B.transfer_personality(player) B.host = target_host B.host_brain.name = target_host.name @@ -424,10 +420,6 @@ var/datum/organ/external/head = target_host.get_organ("head") head.implants += B - player.current << "\blue You are a cortical borer! You are a brain slug that worms its way \ - into the head of its victim, lurking out of sight until it needs to take control." - player.current << "You can speak to your victim with say, to other borers with say ;, and use your Alien tab for abilities." - if(!config.objectives_disabled) player.objectives += new /datum/objective/borer_survive() player.objectives += new /datum/objective/borer_reproduce() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 8a8ee1b50a9..bb1416dac0d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -643,6 +643,12 @@ else jobs += "Dionaea" + if(jobban_isbanned(M, "Borer")) + jobs += "Borer" + else + jobs += "Borer" + + jobs += "" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 98512d92fc5..b9f898ab5dc 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -490,17 +490,17 @@ var/mob/living/simple_animal/borer/B = src.loc var/mob/living/captive_brain/H = src - H << "\red You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." - B.host << "\red You feel the captive mind of [src] begin to resist your control." + H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." + B.host << "You feel the captive mind of [src] begin to resist your control." - spawn(rand(400,500)+B.host.brainloss) + spawn(rand(200,250)+B.host.brainloss) if(!B || !B.controlling) return B.host.adjustBrainLoss(rand(5,10)) - H << "\red With an immense exertion of will, you regain control of your body!" - B.host << "\red You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." + H << "With an immense exertion of will, you regain control of your body!" + B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." B.detatch() diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm index 35915234775..43aa9a9d68b 100644 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -174,7 +174,7 @@ //Procs for grabbing players. /mob/living/simple_animal/borer/proc/request_player() for(var/mob/dead/observer/O in player_list) - if(jobban_isbanned(O, "Syndicate")) + if(jobban_isbanned(O, "Borer")) continue if(O.client) if(O.client.prefs.be_special & BE_ALIEN) @@ -193,15 +193,21 @@ /mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) - if(!candidate) + if(!candidate || !candidate.mob || !candidate.mob.mind) return src.mind = candidate.mob.mind + candidate.mob.mind.current = src src.ckey = candidate.ckey + if(src.mind) src.mind.assigned_role = "Cortical Borer" src.mind.special_role = "Cortical Borer" - ticker.mode.borers |= src.mind + + src << "You are a cortical borer! You are a brain slug that worms its way \ + into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, \ + your host and your eventual spawn safe and warm." + src << "You can speak to your victim with say, to other borers with say :x, and use your Abilities tab to access powers." /mob/living/simple_animal/borer/can_use_vents() return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 39b2cadf1dc..59f6aed6f0b 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -69,6 +69,10 @@ if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M + var/datum/organ/external/E = H.organs_by_name["head"] + if(!E || (E.status & ORGAN_DESTROYED)) + src << "\The [H] does not have a head!" + if(!H.species.has_organ["brain"]) src << "\The [H] does not seem to have an ear canal to breach." return @@ -124,6 +128,7 @@ src << "They are no longer in range!" return +/* /mob/living/simple_animal/borer/verb/devour_brain() set category = "Abilities" set name = "Devour Brain" @@ -147,6 +152,7 @@ src << "It only takes a few moments to render the dead host brain down into a nutrient-rich slurry..." replace_brain() +*/ // BRAIN WORM ZOMBIES AAAAH. /mob/living/simple_animal/borer/proc/replace_brain() diff --git a/maps/RandomZLevels/stationCollision.dmm b/maps/RandomZLevels/stationCollision.dmm index e401ac1ed4f..cbdd44a7c80 100644 --- a/maps/RandomZLevels/stationCollision.dmm +++ b/maps/RandomZLevels/stationCollision.dmm @@ -263,7 +263,7 @@ "fc" = (/turf/simulated/floor,/area/awaymission/northblock) "fd" = (/obj/machinery/light/small,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/awaymission/northblock) "fe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/awaymission/northblock) -"ff" = (/obj/structure/table,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor{pixel_x = -3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_y = -3; step_y = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) +"ff" = (/obj/structure/table,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor{pixel_x = -3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_y = -3},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fg" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fh" = (/obj/structure/table,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stock_parts/micro_laser{pixel_x = -3; pixel_y = -3},/obj/item/weapon/stock_parts/micro_laser{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research) "fi" = (/obj/machinery/computer/crew,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/awaymission/northblock)