From ea81370dcef1a85e1c23ccf3b415915fe15484ab Mon Sep 17 00:00:00 2001 From: uraniummeltdown Date: Wed, 9 Nov 2016 20:25:41 +0000 Subject: [PATCH] Cortical Borers (#21118) Adds cortical borers, a midround antag originally from Bay. The code here is from yogstation, baystation and paradise station. Borers are little brainslugs that when adjacent to a human can infest them. They can supply you with useful chemicals such as medicines and meth, and can revive you from the dead if they have maximum chemicals. They can also take over your body, putting them in control of you while you become a "captive mind". A captive mind can take back control by doing Resist. Health analyzers show borers in people, while medHUDs show borers in control. If you have Sugar in your body the borer can do nothing, it gets kicked out of control if it's controlling and becomes docile. Organ Manipulation surgery on head to remove the borer. If the brain of the body gets removed (decapitation, brain removal surgery, gibbing) the borer falls out of the host and loses control if they were controlling. Changelings can remove borers with Anatomic Panacea or Lesser Form (or Last Resort). Borers can reproduce and have an objective to escape on the shuttle with X hosts alive. --- code/__DEFINES/is_helpers.dm | 2 + code/__DEFINES/role_preferences.dm | 2 + code/controllers/subsystem/ticker.dm | 16 + code/datums/mutations.dm | 3 + code/game/data_huds.dm | 3 + .../gamemodes/changeling/powers/panacea.dm | 9 + code/game/objects/items/devices/scanners.dm | 6 + code/modules/admin/topic.dm | 6 + .../atmospherics/machinery/atmosmachinery.dm | 5 +- code/modules/client/verbs/suicide.dm | 7 +- code/modules/mob/living/brain/brain_item.dm | 13 +- code/modules/mob/living/carbon/human/human.dm | 5 + .../mob/living/simple_animal/borer/borer.dm | 1018 +++++++++++++++++ .../simple_animal/borer/borer_chemicals.dm | 59 + .../living/simple_animal/borer/borer_event.dm | 49 + .../living/simple_animal/borer/borer_html.dm | 125 ++ .../living/simple_animal/borer/borer_topic.dm | 37 + code/modules/surgery/organ_manipulation.dm | 12 + .../modules/surgery/remove_embedded_object.dm | 2 +- icons/mob/actions.dmi | Bin 152411 -> 155714 bytes icons/mob/animal.dmi | Bin 224793 -> 226324 bytes icons/mob/hud.dmi | Bin 11846 -> 11940 bytes interface/stylesheet.dm | 2 + tgstation.dme | 5 + 24 files changed, 1379 insertions(+), 7 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/borer/borer.dm create mode 100644 code/modules/mob/living/simple_animal/borer/borer_chemicals.dm create mode 100644 code/modules/mob/living/simple_animal/borer/borer_event.dm create mode 100644 code/modules/mob/living/simple_animal/borer/borer_html.dm create mode 100644 code/modules/mob/living/simple_animal/borer/borer_topic.dm diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index d96df8be171..68a7ea6b7d8 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -62,6 +62,8 @@ //Simple animals #define isanimal(A) (istype(A, /mob/living/simple_animal)) +#define isborer(A) (istype(A, /mob/living/simple_animal/borer)) + #define isbot(A) (istype(A, /mob/living/simple_animal/bot)) #define iscrab(A) (istype(A, /mob/living/simple_animal/crab)) diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 51502947f6b..94995eeb23e 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -23,6 +23,7 @@ #define ROLE_REVENANT "revenant" #define ROLE_DEVIL "devil" #define ROLE_SERVANT_OF_RATVAR "servant of Ratvar" +#define ROLE_BORER "borer" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough @@ -45,6 +46,7 @@ var/global/list/special_roles = list( ROLE_ABDUCTOR = /datum/game_mode/abduction, ROLE_DEVIL = /datum/game_mode/devil, ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult, + ROLE_BORER, ) //Job defines for what happens when you fail to qualify for any job during job selection diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 8973a6de132..093196f0512 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -442,6 +442,22 @@ var/datum/subsystem/ticker/ticker for(var/i in total_antagonists) log_game("[i]s[total_antagonists[i]].") + if(borers.len) + var/total_borers = 0 + for(var/mob/living/simple_animal/borer/B in borers) + if(B.stat != DEAD) + total_borers++ + if(total_borers) + var/total_borer_hosts = 0 + for(var/mob/living/carbon/C in mob_list) + var/mob/living/simple_animal/borer/D = C.has_brain_worms() + var/turf/location = get_turf(C) + if(location.z == ZLEVEL_CENTCOM && C.has_brain_worms() && D.stat != DEAD) + total_borer_hosts++ + world << "There were [total_borers] borers alive at round end!" + world << "A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [total_borer_hosts_needed] hosts on the shuttle so they [(total_borer_hosts_needed <= total_borer_hosts) ? "won!" : "lost!"]" + return TRUE + mode.declare_station_goal_completion() //Adds the del() log to world.log in a format condensable by the runtime condenser found in tools diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index 3cf6f187749..8e17dc87617 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -377,6 +377,9 @@ time_coeff = 2 /datum/mutation/human/race/on_acquiring(mob/living/carbon/human/owner) + if(owner.has_brain_worms()) + owner << "You feel something strongly clinging to your humanity!" + return if(..()) return . = owner.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 32f6133ee0e..4fafd007042 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -162,11 +162,14 @@ var/image/holder = hud_list[STATUS_HUD] var/icon/I = icon(icon, icon_state, dir) var/virus_state = check_virus() + var/mob/living/simple_animal/borer/B = has_brain_worms() holder.pixel_y = I.Height() - world.icon_size if(status_flags & XENO_HOST) holder.icon_state = "hudxeno" else if(stat == DEAD || (status_flags & FAKEDEATH)) holder.icon_state = "huddead" + else if(has_brain_worms() && B != null && B.controlling) + holder.icon_state = "hudbrainworm" else if(virus_state == 2) holder.icon_state = "hudill" else if(virus_state == 1) diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index d4c60625f27..65d20900d8c 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -10,6 +10,15 @@ /obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) user << "We begin cleansing impurities from our form." + var/mob/living/simple_animal/borer/B = user.has_brain_worms() + if(B) + if(B.controlling) + B.detatch() + B.leave_victim() + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.vomit(0) + user << "A parasite exits our form." var/obj/item/organ/body_egg/egg = user.getorgan(/obj/item/organ/body_egg) if(egg) egg.Remove(user) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e4e2ce466b5..78ed43bbbf2 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -131,6 +131,12 @@ MASS SPECTROMETER var/mob/living/carbon/human/H = M if(H.heart_attack && H.stat != DEAD) user << "Subject suffering from heart attack: Apply defibrillator immediately!" + + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(C.has_brain_worms()) + user << "Foreign organism detected in subject's cranium. Recommended treatment: Dosage of sucrose solution and removal of object via surgery." + user << "Analyzing results for [M]:\n\tOverall status: [mob_status]" // Damage descriptions diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 633bcbc3994..a7924868435 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -832,6 +832,12 @@ else dat += "Alien" + //Borer + if(jobban_isbanned(M, "borer") || isbanned_dept) + dat += "Borer" + else + dat += "Borer" + dat += "" usr << browse(dat, "window=jobban2;size=800x450") return diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 1877439b3fb..82d81bbe9a2 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -289,7 +289,10 @@ Pipelines + Other Objects -> Pipe network return list() /obj/machinery/atmospherics/update_remote_sight(mob/user) - user.sight |= (SEE_TURFS|BLIND) + if(isborer(user)) + user.sight |= (SEE_PIXELS) + else + user.sight |= (SEE_TURFS|BLIND) //Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. /obj/machinery/atmospherics/proc/can_see_pipes() diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index fd2e6364ba5..3dee26565f4 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -157,7 +157,7 @@ /mob/living/proc/canSuicide() if(stat == CONSCIOUS) - return 1 + return TRUE else if(stat == DEAD) src << "You're already dead!" else if(stat == UNCONSCIOUS) @@ -170,4 +170,7 @@ if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide src << "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))" return - return 1 + if(has_brain_worms()) + src << "You can't bring yourself to commit suicide!" + return + return TRUE diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 4bccb03c2d8..74c2c0e0818 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -31,10 +31,17 @@ C.update_hair() /obj/item/organ/brain/Remove(mob/living/carbon/C, special = 0) - ..() if(!special) - transfer_identity(C) - C.update_hair() + var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + if(B) + B.leave_victim() //Should remove borer if the brain is removed - RR + if(owner.mind) + src.transfer_identity(C) + + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.update_hair() + . = ..() /obj/item/organ/brain/prepare_eat() return // Too important to eat. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f89f7a2c094..b644ba2ae39 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -76,6 +76,11 @@ stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) stat("Distribution Pressure", internal.distribute_pressure) + + var/mob/living/simple_animal/borer/B = has_brain_worms() + if(B && B.controlling) + stat("Chemicals", B.chemicals) + if(mind) if(mind.changeling) stat("Chemical Storage", "[mind.changeling.chem_charges]/[mind.changeling.chem_storage]") diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm new file mode 100644 index 00000000000..68236d17596 --- /dev/null +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -0,0 +1,1018 @@ +/mob/living/captive_brain + name = "host brain" + real_name = "host brain" + +/mob/living/captive_brain/say(var/message) + + if(client) + if(client.prefs.muted & MUTE_IC) + src << "You cannot speak in IC (muted)." + return + if(client.handle_spam_prevention(message,MUTE_IC)) + return + + if(isborer(loc)) + + message = sanitize(message) + if(!message) + return + log_say("[key_name(src)] : [message]") + if(stat == 2) + return say_dead(message) + + var/mob/living/simple_animal/borer/B = loc + src << "You whisper silently, \"[message]\"" + B.victim << "The captive mind of [src] whispers, \"[message]\"" + + for (var/mob/M in player_list) + if(isnewplayer(M)) + continue + else if(M.stat == 2 && M.client.prefs.toggles & CHAT_GHOSTEARS) + M << "Thought-speech, [src] -> [B.truename]: [message]" + +/mob/living/captive_brain/emote(var/message) + return + +/mob/living/captive_brain/resist() + + var/mob/living/simple_animal/borer/B = loc + + src << "You begin doggedly resisting the parasite's control (this will take approximately 40 seconds)." + B.victim << "You feel the captive mind of [src] begin to resist your control." + + var/delay = rand(150,250) + B.victim.brainloss + addtimer(src, "return_control", delay, FALSE, src.loc) + +/mob/living/captive_brain/proc/return_control(mob/living/simple_animal/borer/B) + if(!B || !B.controlling) + return + + B.victim.adjustBrainLoss(rand(5,10)) + src << "With an immense exertion of will, you regain control of your body!" + B.victim << "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() + +var/list/mob/living/simple_animal/borer/borers = list() +var/total_borer_hosts_needed = 10 + +/mob/living/simple_animal/borer + name = "cortical borer" + real_name = "cortical borer" + desc = "A small, quivering, slug-like creature." + icon_state = "brainslug" + icon_living = "brainslug" + icon_dead = "brainslug_dead" + health = 20 + maxHealth = 20 + melee_damage_lower = 5 + melee_damage_upper = 5 + stop_automated_movement = TRUE + attacktext = "chomps" + attack_sound = 'sound/weapons/bite.ogg' + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + faction = list("creature") + ventcrawler = 2 + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 1500 + + var/generation = 1 + var/static/list/borer_names = list( + "Primary", "Secondary", "Tertiary", "Quaternary", "Quinary", "Senary", + "Septenary", "Octonary", "Novenary", "Decenary", "Undenary", "Duodenary", + ) + + var/mob/living/carbon/victim = null + var/mob/living/captive_brain/host_brain = null + var/truename + var/docile = FALSE + var/bonding = FALSE + var/controlling = FALSE + var/chemicals = 10 + var/used_dominate + var/borer_chems = list() + var/leaving = FALSE + var/hiding = FALSE + + var/datum/action/innate/borer/talk_to_host/talk_to_host_action = new + var/datum/action/innate/borer/infest_host/infest_host_action = new + var/datum/action/innate/borer/toggle_hide/toggle_hide_action = new + var/datum/action/innate/borer/talk_to_borer/talk_to_borer_action = new + var/datum/action/innate/borer/talk_to_brain/talk_to_brain_action = new + var/datum/action/innate/borer/take_control/take_control_action = new + var/datum/action/innate/borer/give_back_control/give_back_control_action = new + var/datum/action/innate/borer/leave_body/leave_body_action = new + var/datum/action/innate/borer/make_chems/make_chems_action = new + var/datum/action/innate/borer/make_larvae/make_larvae_action = new + var/datum/action/innate/borer/freeze_victim/freeze_victim_action = new + var/datum/action/innate/borer/punish_victim/punish_victim_action = new + var/datum/action/innate/borer/jumpstart_host/jumpstart_host_action = new + +/mob/living/simple_animal/borer/New(atom/newloc, var/gen=1) + ..(newloc) + generation = gen + notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) + real_name = "Cortical Borer [rand(1000,9999)]" + truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]" + borer_chems += /datum/borer_chem/epinephrine + borer_chems += /datum/borer_chem/leporazine + borer_chems += /datum/borer_chem/mannitol + borer_chems += /datum/borer_chem/bicaridine + borer_chems += /datum/borer_chem/kelotane + borer_chems += /datum/borer_chem/charcoal + borer_chems += /datum/borer_chem/methamphetamine + borer_chems += /datum/borer_chem/salbutamol + borer_chems += /datum/borer_chem/spacedrugs + //borer_chems += /datum/borer_chem/creagent + borer_chems += /datum/borer_chem/ethanol + borer_chems += /datum/borer_chem/rezadone + + borers += src + + GrantBorerActions() + +/mob/living/simple_animal/borer/attack_ghost(mob/user) + if(jobban_isbanned(user, ROLE_BORER) || jobban_isbanned(user, "Syndicate")) + return + if(ckey) + return + if(stat != CONSCIOUS) + return + var/be_swarmer = alert("Become a cortical borer? (Warning, You can no longer be cloned!)",,"Yes","No") + if(be_swarmer == "No") + return + if(src && !qdeleted(src)) + transfer_personality(user.client) + +/mob/living/simple_animal/borer/Stat() + ..() + + if(statpanel("Status")) + stat(null, "Chemicals: [chemicals]") + + src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") + +/mob/living/simple_animal/borer/verb/Communicate() + set category = "Borer" + set name = "Converse with Host" + set desc = "Send a silent message to your host." + + if(!victim) + src << "You do not have a host to communicate with!" + return + + if(stat) + src << "You cannot do that in your current state." + return + + var/input = stripped_input(src, "Please enter a message to tell your host.", "Borer", null) + if(!input) + return + + if(src && !qdeleted(src) && !qdeleted(victim)) + var/say_string = (docile) ? "slurs" :"states" + if(victim) + victim << "[truename] [say_string]: [input]" + log_say("Borer Communication: [key_name(src)] -> [key_name(victim)] : [input]") + for(var/M in dead_mob_list) + if(isobserver(M)) + var/rendered = "Borer Communication from [truename] : [input]" + var/link = FOLLOW_LINK(M, src) + M << "[link] [rendered]" + src << "[truename] [say_string]: [input]" + victim.verbs += /mob/living/proc/borer_comm + talk_to_borer_action.Grant(victim) + +/mob/living/proc/borer_comm() + set name = "Converse with Borer" + set category = "Borer" + set desc = "Communicate mentally with your borer." + + + var/mob/living/simple_animal/borer/B = has_brain_worms() + if(!B) + return + + var/input = stripped_input(src, "Please enter a message to tell the borer.", "Message", null) + if(!input) + return + + B << "[src] says: [input]" + log_say("Borer Communication: [key_name(src)] -> [key_name(B)] : [input]") + + for(var/M in dead_mob_list) + if(isobserver(M)) + var/rendered = "Borer Communication from [src] : [input]" + var/link = FOLLOW_LINK(M, src) + M << "[link] [rendered]" + src << "[src] says: [input]" + +/mob/living/proc/trapped_mind_comm() + set name = "Converse with Trapped Mind" + set category = "Borer" + set desc = "Communicate mentally with the trapped mind of your host." + + + var/mob/living/simple_animal/borer/B = has_brain_worms() + if(!B || !B.host_brain) + return + var/mob/living/captive_brain/CB = B.host_brain + var/input = stripped_input(src, "Please enter a message to tell the trapped mind.", "Message", null) + if(!input) + return + + CB << "[B.truename] says: [input]" + log_say("Borer Communication: [key_name(B)] -> [key_name(CB)] : [input]") + + for(var/M in dead_mob_list) + if(isobserver(M)) + var/rendered = "Borer Communication from [B] : [input]" + var/link = FOLLOW_LINK(M, src) + M << "[link] [rendered]" + src << "[B.truename] says: [input]" + +/mob/living/simple_animal/borer/Life() + + ..() + + if(victim) + if(stat != DEAD) + if(victim.stat == DEAD) + chemicals++ + else if(chemicals < 250) + chemicals+=2 + chemicals = min(250, chemicals) + + + if(stat != DEAD && victim.stat != DEAD) + + if(victim.reagents.has_reagent("sugar")) + if(!docile) + if(controlling) + victim << "You feel the soporific flow of sugar in your host's blood, lulling you into docility." + else + src << "You feel the soporific flow of sugar in your host's blood, lulling you into docility." + docile = TRUE + else + if(docile) + if(controlling) + victim << "You shake off your lethargy as the sugar leaves your host's blood." + else + src << "You shake off your lethargy as the sugar leaves your host's blood." + docile = FALSE + if(controlling) + + if(docile) + victim << "You are feeling far too docile to continue controlling your host..." + victim.release_control() + return + + if(prob(5)) + victim.adjustBrainLoss(rand(1,2)) + + if(prob(victim.brainloss/20)) + victim.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_s","gasp"))]") + +/mob/living/simple_animal/borer/say(message) + if(dd_hasprefix(message, ";")) + message = copytext(message,2) + for(var/borer in borers) + borer << "Cortical Link: [truename] sings, \"[message]\"" + for(var/mob/dead in dead_mob_list) + dead << "Cortical Link: [truename] sings, \"[message]\"" + return + if(!victim) + src << "You cannot speak without a host!" + return + if(message == "") + return + +/mob/living/simple_animal/borer/UnarmedAttack(mob/living/M) + healthscan(usr, M) + chemscan(usr, M) + return + +/mob/living/simple_animal/borer/ex_act() + if(victim) + return + + ..() + +/mob/living/simple_animal/borer/verb/infect_victim() + set name = "Infest" + set category = "Borer" + set desc = "Infest a suitable humanoid host." + + if(victim) + src << "You are already within a host." + + if(stat == DEAD) + return + + var/list/choices = list() + for(var/mob/living/carbon/H in view(1,src)) + if(H!=src && Adjacent(H)) + choices += H + + var/mob/living/carbon/H = input(src,"Who do you wish to infest?") in null|choices + if(!H || !src) + return + + if(!Adjacent(H)) + return FALSE + + if(stat != CONSCIOUS) + src << "You cannot do that in your current state." + return FALSE + + if(H.has_brain_worms()) + src << "[victim] is already infested!" + return + + src << "You slither up [H] and begin probing at their ear canal..." + layer = MOB_LAYER + if(!do_mob(src, H, 30)) + src << "As [H] moves away, you are dislodged and fall to the ground." + return + + if(!H || !src) + return + + Infect(H) + +/mob/living/simple_animal/borer/proc/Infect(mob/living/carbon/C) + if(!C) + return + + if(C.has_brain_worms()) + src << "[C] is already infested!" + return + + if(!C.key || !C.mind) + src << "[C]'s mind seems unresponsive. Try someone else!" + return + + if(C && C.dna && istype(C.dna.species, /datum/species/skeleton)) + src << "[C] does not possess the vital systems needed to support us." + return + + victim = C + forceMove(victim) + + RemoveBorerActions() + GrantInfestActions() + + log_game("[src]/([src.ckey]) has infested [victim]/([victim.ckey]") + +/mob/living/simple_animal/borer/verb/secrete_chemicals() + set category = "Borer" + set name = "Secrete Chemicals" + set desc = "Push some chemicals into your host's bloodstream." + + if(!victim) + src << "You are not inside a host body." + return + + if(stat != CONSCIOUS) + src << "You cannot secrete chemicals in your current state." + + if(docile) + src << "You are feeling far too docile to do that." + return + + var content = "" + content += "

Chemicals: [chemicals]

" + + content += "" + + for(var/datum in typesof(/datum/borer_chem)) + var/datum/borer_chem/C = new datum() + if(C.chemname) + content += "" + + content += "
[C.chemname] ([C.chemuse])

[C.chem_desc]

" + + var/html = get_html_template(content) + + usr << browse(null, "window=ViewBorer\ref[src]Chems;size=600x800") + usr << browse(html, "window=ViewBorer\ref[src]Chems;size=600x800") + + return + +/mob/living/simple_animal/borer/verb/hide() + set category = "Borer" + set name = "Hide" + set desc = "Become invisible to the common eye." + + if(victim) + src << "You cannot do this while you're inside a host." + + if(stat != CONSCIOUS) + return + + if(!hiding) + layer = LATTICE_LAYER + visible_message("[src] scurries to the ground!", \ + "You are now hiding.") + hiding = TRUE + else + layer = MOB_LAYER + visible_message("[src] slowly peaks up from the ground...", \ + "You stop hiding.") + hiding = FALSE + +/mob/living/simple_animal/borer/verb/dominate_victim() + set category = "Borer" + set name = "Paralyze Victim" + set desc = "Freeze the limbs of a potential host with supernatural fear." + + if(world.time - used_dominate < 150) + src << "You cannot use that ability again so soon." + return + + if(victim) + src << "You cannot do that from within a host body." + return + + if(stat != CONSCIOUS) + src << "You cannot do that in your current state." + return + + var/list/choices = list() + for(var/mob/living/carbon/C in view(1,src)) + if(C.stat == CONSCIOUS) + choices += C + + var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices + + + if(!M || !src) + return + if(!Adjacent(M)) + return + + if(M.has_brain_worms()) + src << "You cannot paralyze someone who is already infested!" + return + + layer = MOB_LAYER + + src << "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread." + M << "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing." + M.Stun(4) + + used_dominate = world.time + +/mob/living/simple_animal/borer/verb/release_victim() + set category = "Borer" + set name = "Release Host" + set desc = "Slither out of your host." + + if(!victim) + src << "You are not inside a host body." + return + + if(stat != CONSCIOUS) + src << "You cannot leave your host in your current state." + + if(leaving) + leaving = FALSE + src << "You decide against leaving your host." + return + + src << "You begin disconnecting from [victim]'s synapses and prodding at their internal ear canal." + + if(victim.stat != DEAD) + victim << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..." + + leaving = TRUE + + addtimer(src, "release_host", 100, FALSE) + +/mob/living/simple_animal/borer/proc/release_host() + if(!victim || !src || qdeleted(victim) || qdeleted(src)) + return + if(!leaving) + return + if(controlling) + return + + if(stat != CONSCIOUS) + src << "You cannot release your host in your current state." + return + + src << "You wiggle out of [victim]'s ear and plop to the ground." + if(victim.mind) + victim << "Something slimy wiggles out of your ear and plops to the ground!" + victim << "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again." + + leaving = FALSE + + leave_victim() + +/mob/living/simple_animal/borer/proc/leave_victim() + if(!victim) + return + + if(controlling) + detatch() + + GrantBorerActions() + RemoveInfestActions() + + forceMove(get_turf(victim)) + + reset_perspective(null) + machine = null + + victim.reset_perspective(null) + victim.machine = null + + var/mob/living/V = victim + V.verbs -= /mob/living/proc/borer_comm + talk_to_borer_action.Remove(victim) + victim = null + return + +/mob/living/simple_animal/borer/verb/jumpstart() + set category = "Borer" + set name = "Jumpstart Host" + set desc = "Bring your host back to life." + + if(!victim) + src << "You need a host to be able to use this." + return + + if(docile) + src << "You are feeling too docile to use this!" + return + + if(victim.stat != DEAD) + src << "Your host is already alive!" + return + + if(chemicals < 250) + src << "You need 250 chemicals to use this!" + return + + if(victim.stat == DEAD) + victim.tod = null + victim.setToxLoss(0) + victim.setOxyLoss(0) + victim.setCloneLoss(0) + victim.SetParalysis(0) + victim.SetStunned(0) + victim.SetWeakened(0) + victim.radiation = 0 + victim.heal_overall_damage(victim.getBruteLoss(), victim.getFireLoss()) + victim.reagents.clear_reagents() + if(ishuman(victim)) + var/mob/living/carbon/human/H = victim + H.restore_blood() + H.remove_all_embedded_objects() + victim.revive() + log_game("[src]/([src.ckey]) has revived [victim]/([victim.ckey]") + chemicals -= 250 + src << "You send a jolt of energy to your host, reviving them!" + victim.grab_ghost(force = TRUE) //brings the host back, no eggscape + victim <<"You bolt upright, gasping for breath!" + +/mob/living/simple_animal/borer/verb/bond_brain() + set category = "Borer" + set name = "Assume Control" + set desc = "Fully connect to the brain of your host." + + if(!victim) + src << "You are not inside a host body." + return + + if(stat != CONSCIOUS) + src << "You cannot do that in your current state." + return + + if(docile) + src << "You are feeling far too docile to do that." + return + + if(victim.stat == DEAD) + src << "This host lacks enough brain function to control." + return + + if(bonding) + bonding = FALSE + src << "You stop attempting to take control of your host." + return + + src << "You begin delicately adjusting your connection to the host brain..." + + if(qdeleted(src) || qdeleted(victim)) + return + + bonding = TRUE + + var/delay = 200+(victim.brainloss*5) + addtimer(src, "assume_control", delay, FALSE) + +/mob/living/simple_animal/borer/proc/assume_control() + if(!victim || !src || controlling || victim.stat == DEAD) + return + if(docile) + src <<"You are feeling far too docile to do that." + return + else + + + log_game("[src]/([src.ckey]) assumed control of [victim]/([victim.ckey] with borer powers.") + src << "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." + victim << "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours." + + // host -> brain + var/h2b_id = victim.computer_id + var/h2b_ip= victim.lastKnownIP + victim.computer_id = null + victim.lastKnownIP = null + + qdel(host_brain) + host_brain = new(src) + + host_brain.ckey = victim.ckey + + host_brain.name = victim.name + + if(victim.mind) + host_brain.mind = victim.mind + + if(!host_brain.computer_id) + host_brain.computer_id = h2b_id + + if(!host_brain.lastKnownIP) + host_brain.lastKnownIP = h2b_ip + + host_brain << "You are trapped in your own mind. You feel that there must be a way to resist!" + + // self -> host + var/s2h_id = src.computer_id + var/s2h_ip= src.lastKnownIP + src.computer_id = null + src.lastKnownIP = null + + victim.ckey = src.ckey + victim.mind = src.mind + + if(!victim.computer_id) + victim.computer_id = s2h_id + + if(!victim.lastKnownIP) + victim.lastKnownIP = s2h_ip + + controlling = TRUE + + bonding = FALSE + + victim.verbs += /mob/living/carbon/proc/release_control + victim.verbs += /mob/living/carbon/proc/spawn_larvae + victim.verbs -= /mob/living/proc/borer_comm + victim.verbs += /mob/living/proc/trapped_mind_comm + GrantControlActions() + talk_to_borer_action.Remove(victim) + + victim.med_hud_set_status() + +/mob/living/simple_animal/borer/verb/punish() + set category = "Borer" + set name = "Punish" + set desc = "Punish your victim." + + if(!victim) + src << "You are not inside a host body." + return + + if(stat != CONSCIOUS) + src << "You cannot do that in your current state." + return + + if(docile) + src << "You are feeling far too docile to do that." + return + + if(chemicals < 75) + src << "You need 75 chems to punish your host." + return + + var/punishment = input("Select a punishment:.", "Punish") as null|anything in list("Blindness","Deafness","Stun") + + if(!punishment) + return + + if(chemicals < 75) + src << "You need 75 chems to punish your host." + return + + switch(punishment) //Hardcoding this stuff. + if("Blindness") + victim.blind_eyes(2) + if("Deafness") + victim.ear_deaf = 20 + if("Stun") + victim.Weaken(10) + + log_game("[src]/([src.ckey]) punished [victim]/([victim.ckey] with [punishment]") + + chemicals -= 75 + + +mob/living/carbon/proc/release_control() + + set category = "Borer" + set name = "Release Control" + set desc = "Release control of your host's body." + + var/mob/living/simple_animal/borer/B = has_brain_worms() + if(B && B.host_brain) + src << "You withdraw your probosci, releasing control of [B.host_brain]" + + B.detatch() + +//Check for brain worms in head. +/mob/proc/has_brain_worms() + + for(var/I in contents) + if(isborer(I)) + return I + + return FALSE + +/mob/living/carbon/proc/spawn_larvae() + set category = "Borer" + set name = "Reproduce" + set desc = "Spawn several young." + + var/mob/living/simple_animal/borer/B = has_brain_worms() + + if(isbrain(src)) + src << "You need a mouth to be able to do this." + return + if(!B) + return + + if(B.chemicals >= 100) + visible_message("[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!") + B.chemicals -= 100 + + new /obj/effect/decal/cleanable/vomit(get_turf(src)) + playsound(loc, 'sound/effects/splat.ogg', 50, 1) + new /mob/living/simple_animal/borer(get_turf(src), B.generation + 1) + log_game("[src]/([src.ckey]) has spawned a new borer via reproducing.") + else + src << "You do not have enough chemicals stored to reproduce." + return + + +/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) + if(!candidate || !candidate.mob) + return + + if(!qdeleted(candidate) || !qdeleted(candidate.mob)) + var/datum/mind/M = create_borer_mind(candidate.ckey) + M.transfer_to(src) + + candidate.mob = src + ckey = candidate.ckey + + if(mind) + mind.store_memory("You must escape with at least [total_borer_hosts_needed] borers with hosts on the shuttle.") + + 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 << "Sugar nullifies your abilities, avoid it at all costs!" + src << "You can speak to your fellow borers by prefixing your messages with ';'. Check out your Borer tab to see your abilities." + src << "You must escape with at least [total_borer_hosts_needed] borers with hosts on the shuttle. To reproduce you must have 100 chemicals and be controlling a host." + +/mob/living/simple_animal/borer/proc/detatch() + if(!victim || !controlling) + return + + controlling = FALSE + + victim.verbs -= /mob/living/carbon/proc/release_control + victim.verbs -= /mob/living/carbon/proc/spawn_larvae + victim.verbs += /mob/living/proc/borer_comm + victim.verbs -= /mob/living/proc/trapped_mind_comm + RemoveControlActions() + talk_to_borer_action.Grant(victim) + + victim.med_hud_set_status() + + if(host_brain) + + // these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed. + // computer_id and IP are not updated magically on their own in offline mobs -walter0o + + // host -> self + var/h2s_id = victim.computer_id + var/h2s_ip= victim.lastKnownIP + victim.computer_id = null + victim.lastKnownIP = null + + ckey = victim.ckey + mind = victim.mind + + + if(!computer_id) + computer_id = h2s_id + + if(!host_brain.lastKnownIP) + lastKnownIP = h2s_ip + + // brain -> host + var/b2h_id = host_brain.computer_id + var/b2h_ip= host_brain.lastKnownIP + host_brain.computer_id = null + host_brain.lastKnownIP = null + + victim.ckey = host_brain.ckey + + victim.mind = host_brain.mind + + if(!victim.computer_id) + victim.computer_id = b2h_id + + if(!victim.lastKnownIP) + victim.lastKnownIP = b2h_ip + + log_game("[src]/([src.ckey]) released control of [victim]/([victim.ckey]") + + qdel(host_brain) + +/proc/create_borer_mind(key) + var/datum/mind/M = new /datum/mind(key) + M.assigned_role = "Cortical Borer" + M.special_role = "Cortical Borer" + return M + +/mob/living/simple_animal/borer/proc/GrantBorerActions() + infest_host_action.Grant(src) + toggle_hide_action.Grant(src) + freeze_victim_action.Grant(src) + +/mob/living/simple_animal/borer/proc/RemoveBorerActions() + infest_host_action.Remove(src) + toggle_hide_action.Remove(src) + freeze_victim_action.Remove(src) + +/mob/living/simple_animal/borer/proc/GrantInfestActions() + talk_to_host_action.Grant(src) + leave_body_action.Grant(src) + take_control_action.Grant(src) + punish_victim_action.Grant(src) + make_chems_action.Grant(src) + jumpstart_host_action.Grant(src) + +/mob/living/simple_animal/borer/proc/RemoveInfestActions() + talk_to_host_action.Remove(src) + take_control_action.Remove(src) + leave_body_action.Remove(src) + punish_victim_action.Remove(src) + make_chems_action.Remove(src) + jumpstart_host_action.Remove(src) + +/mob/living/simple_animal/borer/proc/GrantControlActions() + talk_to_brain_action.Grant(victim) + give_back_control_action.Grant(victim) + make_larvae_action.Grant(victim) + +/mob/living/simple_animal/borer/proc/RemoveControlActions() + talk_to_brain_action.Remove(victim) + make_larvae_action.Remove(victim) + give_back_control_action.Remove(victim) + +/datum/action/innate/borer + background_icon_state = "bg_alien" + +/datum/action/innate/borer/talk_to_host + name = "Converse with Host" + desc = "Send a silent message to your host." + button_icon_state = "alien_whisper" + +/datum/action/innate/borer/talk_to_host/Activate() + var/mob/living/simple_animal/borer/B = owner + B.Communicate() + +/datum/action/innate/borer/infest_host + name = "Infest" + desc = "Infest a suitable humanoid host." + button_icon_state = "infest" + +/datum/action/innate/borer/infest_host/Activate() + var/mob/living/simple_animal/borer/B = owner + B.infect_victim() + +/datum/action/innate/borer/toggle_hide + name = "Toggle Hide" + desc = "Become invisible to the common eye. Toggled on or off." + button_icon_state = "borer_hiding_false" + +/datum/action/innate/borer/toggle_hide/Activate() + var/mob/living/simple_animal/borer/B = owner + B.hide() + button_icon_state = "borer_hiding_[B.hiding ? "true" : "false"]" + UpdateButtonIcon() + +/datum/action/innate/borer/talk_to_borer + name = "Converse with Borer" + desc = "Communicate mentally with your borer." + button_icon_state = "alien_whisper" + +/datum/action/innate/borer/talk_to_borer/Activate() + var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + B.victim = owner + B.victim.borer_comm() + + +/datum/action/innate/borer/talk_to_brain + name = "Converse with Trapped Mind" + desc = "Communicate mentally with the trapped mind of your host." + button_icon_state = "alien_whisper" + +/datum/action/innate/borer/talk_to_brain/Activate() + var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + B.victim = owner + B.victim.trapped_mind_comm() + +/datum/action/innate/borer/take_control + name = "Assume Control" + desc = "Fully connect to the brain of your host." + button_icon_state = "borer_brain" + +/datum/action/innate/borer/take_control/Activate() + var/mob/living/simple_animal/borer/B = owner + B.bond_brain() + +/datum/action/innate/borer/give_back_control + name = "Release Control" + desc = "Release control of your host's body." + button_icon_state = "borer_leave" + +/datum/action/innate/borer/give_back_control/Activate() + var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + B.victim = owner + B.victim.release_control() + +/datum/action/innate/borer/leave_body + name = "Release Host" + desc = "Slither out of your host." + button_icon_state = "borer_leave" + +/datum/action/innate/borer/leave_body/Activate() + var/mob/living/simple_animal/borer/B = owner + B.release_victim() + +/datum/action/innate/borer/make_chems + name = "Secrete Chemicals" + desc = "Push some chemicals into your host's bloodstream." + icon_icon = 'icons/obj/chemical.dmi' + button_icon_state = "minidispenser" + +/datum/action/innate/borer/make_chems/Activate() + var/mob/living/simple_animal/borer/B = owner + B.secrete_chemicals() + +/datum/action/innate/borer/make_larvae + name = "Reproduce" + desc = "Spawn several young." + button_icon_state = "borer_reproduce" + +/datum/action/innate/borer/make_larvae/Activate() + var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + B.victim = owner + B.victim.spawn_larvae() + +/datum/action/innate/borer/freeze_victim + name = "Paralyze Victim" + desc = "Freeze the limbs of a potential host with supernatural fear." + button_icon_state = "freeze" + +/datum/action/innate/borer/freeze_victim/Activate() + var/mob/living/simple_animal/borer/B = owner + B.dominate_victim() + +/datum/action/innate/borer/punish_victim + name = "Punish" + desc = "Punish your victim." + button_icon_state = "blind" + +/datum/action/innate/borer/punish_victim/Activate() + var/mob/living/simple_animal/borer/B = owner + B.punish() + +/datum/action/innate/borer/jumpstart_host + name = "Jumpstart Host" + desc = "Bring your host back to life." + icon_icon = 'icons/obj/weapons.dmi' + button_icon_state = "defibpaddles0" + +/datum/action/innate/borer/jumpstart_host/Activate() + var/mob/living/simple_animal/borer/B = owner + B.jumpstart() diff --git a/code/modules/mob/living/simple_animal/borer/borer_chemicals.dm b/code/modules/mob/living/simple_animal/borer/borer_chemicals.dm new file mode 100644 index 00000000000..c45de465246 --- /dev/null +++ b/code/modules/mob/living/simple_animal/borer/borer_chemicals.dm @@ -0,0 +1,59 @@ +/datum/borer_chem + var/chemname + var/chem_desc = "This is a chemical" + var/chemuse = 30 + var/quantity = 10 + +/datum/borer_chem/epinephrine + chemname = "epinephrine" + chem_desc = "Stabilizes critical condition and slowly restores oxygen damage. If overdosed, it will deal toxin and oxyloss damage." + +/datum/borer_chem/leporazine + chemname = "leporazine" + chem_desc = "This keeps a patient's body temperature stable. High doses can allow short periods of unprotected EVA." + chemuse = 75 + +/datum/borer_chem/mannitol + chemname = "mannitol" + chem_desc = "Heals brain damage." + +/datum/borer_chem/bicaridine + chemname = "bicaridine" + chem_desc = "Heals brute damage." + +/datum/borer_chem/kelotane + chemname = "kelotane" + chem_desc = "Heals burn damage." + +/datum/borer_chem/charcoal + chemname = "charcoal" + chem_desc = "Slowly heals toxin damage, will also slowly remove any other chemicals." + +/datum/borer_chem/methamphetamine + chemname = "methamphetamine" + chem_desc = "Reduces stun times, increases stamina and run speed while dealing brain damage. If overdosed it will deal toxin and brain damage." + chemuse = 50 + quantity = 9 + +/datum/borer_chem/salbutamol + chemname = "salbutamol" + chem_desc = "Heals suffocation damage." + +/datum/borer_chem/spacedrugs + chemname = "space_drugs" + chem_desc = "Get your host high as a kite." + chemuse = 75 + +/*/datum/borer_chem/creagent + chemname = "colorful_reagent" + chem_desc = "Change the colour of your host." + chemuse = 50*/ + +/datum/borer_chem/ethanol + chemname = "ethanol" + chem_desc = "The most potent alcoholic 'beverage', with the fastest toxicity." + chemuse = 50 + +/datum/borer_chem/rezadone + chemname = "rezadone" + chem_desc = "Heals cellular damage." \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/borer_event.dm b/code/modules/mob/living/simple_animal/borer/borer_event.dm new file mode 100644 index 00000000000..f72a92bfe8e --- /dev/null +++ b/code/modules/mob/living/simple_animal/borer/borer_event.dm @@ -0,0 +1,49 @@ +/datum/round_event_control/borer + name = "Borer" + typepath = /datum/round_event/borer + weight = 20 + max_occurrences = 1 + min_players = 15 + earliest_start = 12000 + +/datum/round_event/borer + announceWhen = 3000 //Borers get 5 minutes till the crew tries to murder them. + var/successSpawn = 0 + + var/spawncount = 2 + +/datum/round_event/borer/setup() + spawncount = rand(2, 4) + +/datum/round_event/borer/announce() + if(successSpawn) + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') //Borers seem like normal xenomorphs. + + +/datum/round_event/borer/start() + + var/list/vents = list() + for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in machines) + if(qdeleted(temp_vent)) + continue + if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded) + var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + if(temp_vent_parent.other_atmosmch.len > 20) + vents += temp_vent + + if(!vents.len) + message_admins("An event attempted to spawn a borer but no suitable vents were found. Shutting down.") + return kill() + + var/total_humans = 0 + for(var/mob/living/carbon/human/H in mob_list) + if(H.stat != DEAD) + total_humans++ + + total_borer_hosts_needed = round(6 + total_humans/7) + + while(spawncount >= 1 && vents.len) + var/obj/vent = pick_n_take(vents) + new /mob/living/simple_animal/borer(vent.loc) + successSpawn = TRUE + spawncount-- \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/borer_html.dm b/code/modules/mob/living/simple_animal/borer/borer_html.dm new file mode 100644 index 00000000000..e2544a1d0b8 --- /dev/null +++ b/code/modules/mob/living/simple_animal/borer/borer_html.dm @@ -0,0 +1,125 @@ + +/mob/living/simple_animal/borer/proc/get_html_template(content) + var/html = {" + + + Borer Chemicals + + + + + + + +
+

Borer Chemicals

+
+ + [content] + +
"} + return html \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/borer_topic.dm b/code/modules/mob/living/simple_animal/borer/borer_topic.dm new file mode 100644 index 00000000000..c9c3c055a7c --- /dev/null +++ b/code/modules/mob/living/simple_animal/borer/borer_topic.dm @@ -0,0 +1,37 @@ + +/mob/living/simple_animal/borer/Topic(href, href_list, hsrc) + if(href_list["borer_use_chem"]) + locate(href_list["src"]) + if(!istype(src, /mob/living/simple_animal/borer)) + return + + var/topic_chem = href_list["borer_use_chem"] + var/datum/borer_chem/C + + for(var/datum in typesof(/datum/borer_chem)) + var/datum/borer_chem/test = new datum() + if(test.chemname == topic_chem) + C = test + break + + if(!istype(C, /datum/borer_chem)) + return + + if(!C || !victim || controlling || !src || stat) + return + + if(!istype(C, /datum/borer_chem)) + return + + if(chemicals < C.chemuse) + src << "You need [C.chemuse] chemicals stored to use this chemical!" + return + + src << "You squirt a measure of [C.chemname] from your reservoirs into [victim]'s bloodstream." + victim.reagents.add_reagent(C.chemname, C.quantity) + chemicals -= C.chemuse + log_game("[src]/([src.ckey]) has injected [C.chemname] into their host [victim]/([victim.ckey])") + + src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") + + ..() \ No newline at end of file diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index f2ccd41e270..912fab5caa7 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -67,6 +67,11 @@ else if(implement_type in implements_extract) current_type = "extract" var/list/organs = target.getorganszone(target_zone) + var/mob/living/simple_animal/borer/B = target.has_brain_worms() + if(target.has_brain_worms()) + user.visible_message("[user] begins to extract [B] from [target]'s [parse_zone(target_zone)].", + "You begin to extract [B] from [target]'s [parse_zone(target_zone)]...") + return TRUE if(!organs.len) user << "There is no removeable organs in [target]'s [parse_zone(target_zone)]!" return -1 @@ -107,6 +112,13 @@ "You insert [tool] into [target]'s [parse_zone(target_zone)].") else if(current_type == "extract") + var/mob/living/simple_animal/borer/B = target.has_brain_worms() + if(B && B.victim == target) + user.visible_message("[user] successfully extracts [B] from [target]'s [parse_zone(target_zone)]!", + "You successfully extract [B] from [target]'s [parse_zone(target_zone)].") + add_logs(user, target, "surgically removed [B] from", addition="INTENT: [uppertext(user.a_intent)]") + B.leave_victim() + return FALSE if(I && I.owner == target) user.visible_message("[user] successfully extracts [I] from [target]'s [parse_zone(target_zone)]!", "You successfully extract [I] from [target]'s [parse_zone(target_zone)].") diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index fa9db1ae8ed..a4b0b67a1a8 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -30,7 +30,7 @@ L.embedded_objects -= I if(objects > 0) - user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L]!", "You sucessfully remove [objects] objects from [H]'s [L.name].") + user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L]!", "You successfully remove [objects] objects from [H]'s [L.name].") else user << "You find no objects embedded in [H]'s [L]!" diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index af6a75e2c6ba0c3e7695e1f78c9daf1a7816283f..7454b65422540d2174da3c4390299217cc53eeb3 100644 GIT binary patch delta 18364 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 Hu0mjf{BPca delta 15035 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 diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 84ee80c19f09dfc01c06c2a6fa7261babe772761..7f297a5dd493594c5854cb93db36ed0b9ccf584c 100644 GIT binary patch delta 21222 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 z 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 H&cgdYLMO2B delta 19679 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 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index be5760d7cf5a1f5dc1241e1c054cdcd8e9dd27c5..105f56cc8ce897030610e27ea9af2aa7383bacac 100644 GIT binary patch delta 9883 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 delta 9753 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%0ACi`6}pjm`WT}ga?IV^1SDXN zaBda%&1*)OxN2u^H}|Dy^tev_>pt~wW7Ph5B+<8L@>7ww3~4+CtL$la6?R{3e0;oa zQ~a1~+NC?TCz&%fEiGf?IV4q7gdqIO&ah1=vW?mkRCB!o3b6-_JyWd^^t1T?-GmjE!U_^VMpu@gjCFnr!>Xw75MC7tRQW zw?294V~w$s3axXP5N&QPMF}2J##kYQEfyV{>t%h9D;P}xE>mB0BFe%q`qX=z0)Pw` z4~d-~Kh?X}p0SOq&NG760nEnt)l$=dG-cWU?vM4}_)k{l{InBowHLZ28%Vu!>ARwA zGGZKs$i#=8mzKhfUzvhhN~bE`65jq1+cKEBpYM*McCbE<(;IoqU1~)$LesKygstlP zLKRp-NlMvfHuYbUI)7#K_|Av}w>0g}<-BkxD=RYqzaLlMFt}sx=l9gHphNgHU`3Uv zT%?>cVc`-TZ1&_B-uPc?>1T%d#z=Pr;)O!brfQW}k3Rm6+xmd-Ry_Ek_uU z`JZuTjUm$R+2Lz0%-(^1ahVdC3Vj!SN!dz#Wg_UC&H&^7dm$I>>_=@C@coQop|+0 zX;flJ&$SJ)(CswH+%=AayHBdp2D4=a0=`1VCni?k>XT%j*+uGPjq7msJ z;`9|eK~kQn1n1tvw08x*$nLL7Fbc}aV<2hl84BCZ^#Dcyn3KKb znDy^tckLAo%=PbJf$RKEwdTcH%cB^|r0u)6-;?yj>Xu{J#^z?rg|v)G z5Q&gB7C!OrarxDB6CJyPq1Xf~L z)|9^w?@TJXRmh>DyZ4aeb(#5SddwMq_|m&C-WGhf@;qm+JP^|RA1{ZQg#%YYKCRB@ z>#hw(=$BR4ygBpl!2<9ok^#s8Q3s?kNwBk;@>Au zBmL2qaHU0N#1g#PPNPO-Zo5VxRkc^N*<)E)%}5@KrSQ{ZYJaC1+4pm+s!SQ17zP#- zp+yqrMITa3{$?a;De?wd|A z)1d;6)$WxPS!CT$TmuKgX`}> zZcDY90VF=D_P!Z@ZEc8jJkrQ`Xnj2M*= z!rc6FNaPGF%s^5~UPt3`Q{-b+qN8`;y1ZVvXWg!snXRz&?LA%f6)2BaGD%rgF z`$+3~PVz2Ca*jth0Kxt<20A05RNWXvoqctXp?jjRXie^LChqDD)G4BY zIHRL~g)yVer1afa6BKR8Qp4KDHyH`Kei>;hqxOHV6)^Y*{cKyQDPb+^$r^}pz_g9; JS7<(p`G5S*F#G@j diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 797a77653a8..eee280eaf83 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -119,6 +119,8 @@ h1.alert, h2.alert {color: #000000;} .alien {color: #543354;} .noticealien {color: #00c000;} .alertalien {color: #00c000; font-weight: bold;} +.borer {color: #543354; font-style: italic;} +.changeling {color: #800080; font-style: italic;} .interface {color: #330033;} diff --git a/tgstation.dme b/tgstation.dme index 32702e7dca2..0bbec815afe 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1502,6 +1502,11 @@ #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\spawner.dm" #include "code\modules\mob\living\simple_animal\status_procs.dm" +#include "code\modules\mob\living\simple_animal\borer\borer.dm" +#include "code\modules\mob\living\simple_animal\borer\borer_chemicals.dm" +#include "code\modules\mob\living\simple_animal\borer\borer_event.dm" +#include "code\modules\mob\living\simple_animal\borer\borer_html.dm" +#include "code\modules\mob\living\simple_animal\borer\borer_topic.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" #include "code\modules\mob\living\simple_animal\bot\construction.dm"