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