diff --git a/yogstation.dme b/yogstation.dme index df5920d57f70..998d54abe85a 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -3272,6 +3272,7 @@ #include "yogstation\code\modules\admin\admin_ranks.dm" #include "yogstation\code\modules\admin\admin_verbs.dm" #include "yogstation\code\modules\admin\holder2.dm" +#include "yogstation\code\modules\admin\moja.dm" #include "yogstation\code\modules\admin\prettyfilter.dm" #include "yogstation\code\modules\admin\secrets.dm" #include "yogstation\code\modules\admin\sql_message_system.dm" diff --git a/yogstation/code/modules/admin/moja.dm b/yogstation/code/modules/admin/moja.dm new file mode 100644 index 000000000000..f4fb45f14d0e --- /dev/null +++ b/yogstation/code/modules/admin/moja.dm @@ -0,0 +1,90 @@ +/mob/living/proc/moja_divulge() + INVOKE_ASYNC(_moja_divulge()) + +/mob/living/proc/_moja_divulge() + visible_message("A vortex of violet energies surrounds [src]!", "Your barrier will keep you shielded to a point..") + visible_message("[src] slowly rises into the air, their belongings falling away, and begins to shimmer...", \ + "You begin the removal of your human disguise. You will be completely vulnerable during this time.") + setDir(SOUTH) + for(var/obj/item/I in src) + dropItemToGround(I) + for(var/turf/T in RANGE_TURFS(1, src)) + new/obj/structure/psionic_barrier(T) + for(var/stage in 1 to 3) + switch(stage) + if(1) + visible_message("Vibrations pass through the air. [src]'s eyes begin to glow a deep violet.", \ + "Psi floods into your consciousness. You feel your mind growing more powerful... expanding.") + playsound(src, 'yogstation/sound/magic/divulge_01.ogg', 30, 0) + if(2) + visible_message("Gravity fluctuates. Psychic tendrils extend outward and feel blindly around the area.", \ + "Gravity around you fluctuates. You tentatively reach out, feel with your mind.") + Shake(0, 3, 750) //50 loops in a second times 15 seconds = 750 loops + playsound(src, 'yogstation/sound/magic/divulge_02.ogg', 40, 0) + if(3) + visible_message("Sigils form along [src]'s body. \His skin blackens as \he glows a blinding purple.", \ + "Your body begins to warp. Sigils etch themselves upon your flesh.") + animate(src, color = list(rgb(0, 0, 0), rgb(0, 0, 0), rgb(0, 0, 0), rgb(0, 0, 0)), time = 150) //Produces a slow skin-blackening effect + playsound(src, 'yogstation/sound/magic/divulge_03.ogg', 50, 0) + if(!do_after(src, 150, target = src)) + visible_message("[src] falls to the ground!", "Your transformation was interrupted!") + animate(src, color = initial(src.color), pixel_y = initial(src.pixel_y), time = 10) + return + playsound(src, 'yogstation/sound/magic/divulge_ending.ogg', 50, 0) + visible_message("[src] rises into the air, crackling with power!", "Your mind...! can't--- THINK--") + animate(src, pixel_y = src.pixel_y + 8, time = 60) + sleep(45) + Shake(5, 5, 110) + for(var/i in 1 to 20) + to_chat(src, "[pick("I- I- I-", "Mind-", "Sigils-", "Can't think-", "POWER-","TAKE-", "M-M-MOOORE-")]") + sleep(1.1) //Spooky flavor message spam + visible_message("A tremendous shockwave emanates from [src]!", "YOU ARE FREE!!") + playsound(src, 'yogstation/sound/magic/divulge_end.ogg', 50, 0) + animate(src, color = initial(color), pixel_y = initial(pixel_y), time = 30) + for(var/mob/living/L in view(7, src)) + if(L == src) + continue + L.flash_act(1, 1) + L.Knockdown(50) + if(istype(src,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + H.make_moja() + else + var/mob/living/carbon/human/moja/moja = new /mob/living/carbon/human/moja(src.loc) + moja.ckey = src.ckey + qdel(src) + +/mob/living/proc/moja_burst(new_key) + var/mob/living/carbon/human/moja/moja = new /mob/living/carbon/human/moja(src.loc) + moja.ckey = (new_key ? new_key : ckey) + gib() + +/mob/living/carbon/human/moja/Initialize() + . = ..() + make_moja() + +/mob/living/carbon/human/proc/make_moja() + if(!ishumanbasic(src)) + set_species(/datum/species/human) + real_name = "Moja Manley" + name = real_name + gender = "male" + age = 54 + eye_color = "630" + var/obj/item/organ/eyes/organ_eyes = getorgan(/obj/item/organ/eyes) + if(organ_eyes) + organ_eyes.eye_color = eye_color + organ_eyes.old_eye_color = eye_color + hair_color = "888" + facial_hair_color = "876" + + skin_tone = "asian2" + hair_style = "Balding Hair" + facial_hair_style = "Beard (Neckbeard)" + underwear = "Nude" + undershirt = "Nude" + socks = "Nude" + backbag = "Department Satchel" + update_body() + update_hair() + update_body_parts()