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