diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 747467a66f..78e36dbb66 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -54,14 +54,12 @@ //Mob specific holders. /obj/item/weapon/holder/diona - name = "diona nymph" desc = "It's a tiny plant critter." icon_state = "nymph" origin_tech = "magnets=3;biotech=5" /obj/item/weapon/holder/drone - name = "maintenance drone" desc = "It's a small maintenance robot." icon_state = "drone" @@ -69,8 +67,13 @@ /obj/item/weapon/holder/cat - name = "cat" desc = "It's a cat. Meow." icon_state = "cat" - origin_tech = null \ No newline at end of file + origin_tech = null + +/obj/item/weapon/holder/borer + name = "cortical borer" + desc = "It's a slimy brain slug. Gross." + icon_state = "borer" + origin_tech = "biotech=6" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0d6aaec965..22989c3f71 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,6 +1,6 @@ /mob/living/carbon/Life() ..() - + // Increase germ_level regularly if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level germ_level++ @@ -14,7 +14,7 @@ src.nutrition -= HUNGER_FACTOR/10 if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) src.bodytemperature += 2 - + // Moving around increases germ_level faster if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) germ_level++ @@ -206,7 +206,7 @@ if (istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) - + if(lying) src.sleeping = max(0,src.sleeping-5) if(src.sleeping == 0) @@ -216,7 +216,7 @@ else M.visible_message("[M] hugs [src] to make [t_him] feel better!", \ "You hug [src] to make [t_him] feel better!") - + AdjustParalysis(-3) AdjustStunned(-3) AdjustWeakened(-3) @@ -470,9 +470,10 @@ return if(B.chemicals >= 100) - src << "\red Your host twitches and quivers as you rapdly excrete several larvae from your sluglike body." + src << "\red Your host twitches and quivers as you rapdly excretea larva from your sluglike body." visible_message("\red [src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!") B.chemicals -= 100 + B.has_reproduced = 1 new /obj/effect/decal/cleanable/vomit(get_turf(src)) playsound(loc, 'sound/effects/splat.ogg', 50, 1) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 0d15aeab54..6033c02a25 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -1,6 +1,7 @@ /mob/living/captive_brain name = "host brain" real_name = "host brain" + universal_understand = 1 /mob/living/captive_brain/say(var/message) @@ -45,6 +46,8 @@ friendly = "prods" wander = 0 pass_flags = PASSTABLE + universal_understand = 1 + holder_type = /obj/item/weapon/holder/borer var/used_dominate var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin. @@ -53,6 +56,11 @@ var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth. var/controlling // Used in human death check. var/docile = 0 // Sugar can stop borers from acting. + var/has_reproduced + var/roundstart + +/mob/living/simple_animal/borer/roundstart + roundstart = 1 /mob/living/simple_animal/borer/Life() @@ -96,9 +104,7 @@ ..() truename = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]" host_brain = new/mob/living/captive_brain(src) - - request_player() - + if(!roundstart) request_player() /mob/living/simple_animal/borer/say(var/message) @@ -338,7 +344,7 @@ detatch() -mob/living/simple_animal/borer/proc/detatch() +/mob/living/simple_animal/borer/proc/detatch() if(!host) return @@ -530,7 +536,7 @@ mob/living/simple_animal/borer/proc/detatch() src << text("\blue You have stopped hiding.") //Procs for grabbing players. -mob/living/simple_animal/borer/proc/request_player() +/mob/living/simple_animal/borer/proc/request_player() for(var/mob/dead/observer/O in player_list) if(jobban_isbanned(O, "Syndicate")) continue @@ -538,7 +544,7 @@ mob/living/simple_animal/borer/proc/request_player() if(O.client.prefs.be_special & BE_ALIEN) question(O.client) -mob/living/simple_animal/borer/proc/question(var/client/C) +/mob/living/simple_animal/borer/proc/question(var/client/C) spawn(0) if(!C) return var/response = alert(C, "A cortical borer needs a player. Are you interested?", "Cortical borer request", "Yes", "No", "Never for this round") @@ -549,7 +555,7 @@ mob/living/simple_animal/borer/proc/question(var/client/C) else if (response == "Never for this round") C.prefs.be_special ^= BE_ALIEN -mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) +/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) if(!candidate) return @@ -558,3 +564,4 @@ mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) src.ckey = candidate.ckey if(src.mind) src.mind.assigned_role = "Cortical Borer" + src.mind.special_role = "Cortical Borer" \ No newline at end of file