diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 5e9b6f55b61..e8ea82d8d2a 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -150,6 +150,8 @@
// D.reagents.reaction(get_turf(D))
for(var/atom/atm in get_turf(D))
if(!D) return
+ if(istype(atm, /mob/living/carbon/alien))
+ return
if(istype(atm, /mob/living/carbon))
var/mob/living/carbon/C = atm
C.Weaken(5)
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index 0a060dd1f70..1ae09f9f161 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -39,3 +39,21 @@
spawn(15)
if(animation) del(animation)
if(src) del(src)
+
+/mob/living/carbon/alien/death(gibbed)
+ if(stat == DEAD) return
+ if(healths) healths.icon_state = "health6"
+ stat = DEAD
+
+ if(!gibbed)
+ playsound(loc, 'sound/voice/hiss6.ogg', 80, 1, 1)
+ for(var/mob/O in viewers(src, null))
+ O.show_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...", 1)
+ update_canmove()
+ if(client) blind.layer = 0
+ update_icons()
+
+ tod = worldtime2text() //weasellos time of death patch
+ if(mind) mind.store_memory("Time of death: [tod]", 0)
+
+ return ..(gibbed)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
index c5a85b280ea..dbf9d7870e7 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
@@ -12,6 +12,7 @@
pixel_x = -32
move_delay_add = 3
large = 1
+ max_plasma = 1000
/mob/living/carbon/alien/humanoid/empress/large/update_icons()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
@@ -72,7 +73,7 @@
/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
- set name = "Lay Egg (75)"
+ set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
@@ -80,8 +81,8 @@
src << "There's already an egg here."
return
- if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
- adjustToxLoss(-75)
+ if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-250)
for(var/mob/O in viewers(src, null))
O.show_message(text("\green [src] has laid an egg!"), 1)
new /obj/effect/alien/egg(loc)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 2e8abd47654..65ab3fdf87e 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -8,6 +8,7 @@
heal_rate = 5
plasma_rate = 20
move_delay_add = 2
+ max_plasma = 1000
/mob/living/carbon/alien/humanoid/queen/New()
var/datum/reagents/R = new/datum/reagents(100)
@@ -56,7 +57,7 @@
//Queen verbs
/mob/living/carbon/alien/humanoid/queen/verb/lay_egg()
- set name = "Lay Egg (75)"
+ set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
@@ -64,8 +65,8 @@
src << "There's already an egg here."
return
- if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
- adjustToxLoss(-75)
+ if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-250)
for(var/mob/O in viewers(src, null))
O.show_message(text("\green [src] has laid an egg!"), 1)
new /obj/effect/alien/egg(loc)
@@ -99,7 +100,7 @@
set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time."
set category = "Alien"
- if(powerc(500))
+ if(powerc(1000))
// Queen check
var/no_queen = 1
for(var/mob/living/carbon/alien/humanoid/empress/E in living_mob_list)
@@ -108,7 +109,7 @@
no_queen = 0
if(no_queen)
- adjustToxLoss(-500)
+ adjustToxLoss(-1000)
src << "\green You begin to evolve!"
for(var/mob/O in viewers(src, null))
O.show_message(text("\green [src] begins to twist and contort!"), 1)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 79ca2c9a03e..c0541b29a7e 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -33,14 +33,13 @@
..()
if(!affected_mob) return
if(loc != affected_mob)
- world << "Problem in contents"
affected_mob.status_flags &= ~(XENO_HOST)
spawn(0)
RemoveInfectionImages(affected_mob)
affected_mob = null
return
- if(stage < 5 && prob(30))
+ if(stage < 5 && prob(3))
stage++
spawn(0)
RefreshInfectionImage(affected_mob)
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 59b4279b39c..40077dca7ca 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -142,7 +142,7 @@ var/const/MAX_ACTIVE_TIME = 400
var/mob/living/carbon/human/H = L
if(H.head && H.head.flags & HEADCOVERSMOUTH)
H.visible_message("\red \b [src] smashes against [H]'s [H.head]!")
- stat = 2
+ death()
return
if(iscarbon(M))
@@ -181,7 +181,7 @@ var/const/MAX_ACTIVE_TIME = 400
/mob/living/carbon/alien/facehugger/proc/Impregnate(mob/living/target as mob)
if(!target || !target.wear_mask || (!src in target.wear_mask.contents) || target.stat == DEAD) //was taken off or something
- world << "Something went wrong with the impregnation!"
+ message_admins("Something went wrong with the impregnation!")
return
if(!sterile)
@@ -190,7 +190,7 @@ var/const/MAX_ACTIVE_TIME = 400
target.status_flags |= XENO_HOST
loc = get_turf(target.loc)
- stat = 2
+ death()
icon_state = "[initial(icon_state)]_impregnated"
target.visible_message("\red \b [src] falls limp after violating [target]'s face!")