diff --git a/baystation12.dme b/baystation12.dme
index 659c9e6e914..ebf832778b2 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -921,6 +921,7 @@
#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\death.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm"
+#include "code\modules\mob\living\carbon\alien\humanoid\empress.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm"
#include "code\modules\mob\living\carbon\alien\humanoid\life.dm"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index b312052728e..0ac2b1915bb 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -65,6 +65,7 @@
pixel_x = -16
maxHealth = 200
health = 200
+ move_delay_add = 1
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
new file mode 100644
index 00000000000..3ba1c7daac7
--- /dev/null
+++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
@@ -0,0 +1,87 @@
+/mob/living/carbon/alien/humanoid/empress/large
+ name = "alien empress"
+ caste = "e"
+ maxHealth = 700
+ health = 700
+ icon_state = "empress_s"
+ status_flags = CANPARALYSE
+ heal_rate = 5
+ plasma_rate = 20
+ icon = 'icons/mob/alienhuge.dmi'
+ icon_state = "empress_s"
+ pixel_x = -32
+ move_delay_add = 3
+
+/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
+ update_hud() //TODO: remove the need for this to be here
+ overlays.Cut()
+ if(lying)
+ if(resting) icon_state = "empress_sleep"
+ else icon_state = "empress_l"
+ for(var/image/I in overlays_lying)
+ overlays += I
+ else
+ icon_state = "empress_s"
+ for(var/image/I in overlays_standing)
+ overlays += I
+
+
+/mob/living/carbon/alien/humanoid/empress/New()
+ var/datum/reagents/R = new/datum/reagents(100)
+ reagents = R
+ R.my_atom = src
+
+ //there should only be one queen
+ for(var/mob/living/carbon/alien/humanoid/empress/E in living_mob_list)
+ if(E == src) continue
+ if(E.stat == DEAD) continue
+ if(E.client)
+ name = "alien grand princess ([rand(1, 999)])" //if this is too cutesy feel free to change it/remove it.
+ break
+
+ real_name = src.name
+ verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin)
+ verbs -= /mob/living/carbon/alien/verb/alien_ventcrawl
+ ..()
+
+/mob/living/carbon/alien/humanoid/empress
+
+ handle_regular_hud_updates()
+
+ ..() //-Yvarov
+
+ if (src.healths)
+ if (src.stat != 2)
+ switch(health)
+ if(250 to INFINITY)
+ src.healths.icon_state = "health0"
+ if(175 to 250)
+ src.healths.icon_state = "health1"
+ if(100 to 175)
+ src.healths.icon_state = "health2"
+ if(50 to 100)
+ src.healths.icon_state = "health3"
+ if(0 to 50)
+ src.healths.icon_state = "health4"
+ else
+ src.healths.icon_state = "health5"
+ else
+ src.healths.icon_state = "health6"
+
+/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
+
+ set name = "Lay Egg (75)"
+ set desc = "Lay an egg to produce huggers to impregnate prey with."
+ set category = "Alien"
+
+ if(locate(/obj/effect/alien/egg) in get_turf(src))
+ src << "There's already an egg here."
+ return
+
+ if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-75)
+ 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)
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 8cd2c767e42..3ec332eb2f3 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -7,7 +7,7 @@
status_flags = CANPARALYSE
heal_rate = 5
plasma_rate = 20
-
+ move_delay_add = 2
/mob/living/carbon/alien/humanoid/queen/New()
var/datum/reagents/R = new/datum/reagents(100)
@@ -89,4 +89,32 @@
else
icon_state = "queen_s"
for(var/image/I in overlays_standing)
- overlays += I
\ No newline at end of file
+ overlays += I
+
+
+
+/mob/living/carbon/alien/humanoid/queen/verb/evolve() // -- TLE
+ set name = "Evolve (1000)"
+ set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time."
+ set category = "Alien"
+
+ if(powerc(500))
+ // Queen check
+ var/no_queen = 1
+ for(var/mob/living/carbon/alien/humanoid/empress/E in living_mob_list)
+ if(!E.key && E.brain_op_stage != 4)
+ continue
+ no_queen = 0
+
+ if(no_queen)
+ adjustToxLoss(-500)
+ 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)
+ var/mob/living/carbon/alien/humanoid/empress/large/new_xeno = new (loc)
+ mind.transfer_to(new_xeno)
+ del(src)
+ else
+ src << "We already have an alive empress."
+ return
+
diff --git a/icons/mob/alienhuge.dmi b/icons/mob/alienhuge.dmi
new file mode 100644
index 00000000000..93eae9e1ec8
Binary files /dev/null and b/icons/mob/alienhuge.dmi differ