|
|
|
@@ -53,10 +53,11 @@
|
|
|
|
|
L.on = 0
|
|
|
|
|
L.visible_message("<span class='danger'>[L] flickers and falls dark.</span>")
|
|
|
|
|
L.update(0)
|
|
|
|
|
for(var/obj/item/device/pda/P in orange(5, usr))
|
|
|
|
|
for(var/obj/item/device/pda/P in T.contents)
|
|
|
|
|
P.fon = 0
|
|
|
|
|
P.SetLuminosity(0) //failsafe
|
|
|
|
|
for(var/obj/effect/glowshroom/G in orange(3, usr)) //Smaller radius
|
|
|
|
|
P.SetLuminosity(0)
|
|
|
|
|
for(var/obj/effect/glowshroom/G in orange(2, usr)) //Very small radius
|
|
|
|
|
G.visible_message("<span class='warning'>\The [G] withers away!</span>")
|
|
|
|
|
qdel(G)
|
|
|
|
|
for(var/mob/living/carbon/human/H in T.contents)
|
|
|
|
|
for(var/obj/item/device/flashlight/F in H)
|
|
|
|
@@ -69,6 +70,8 @@
|
|
|
|
|
for(var/obj/item/device/pda/P in H)
|
|
|
|
|
P.fon = 0
|
|
|
|
|
P.SetLuminosity(0) //failsafe
|
|
|
|
|
if(H != usr)
|
|
|
|
|
H << "<span class='boldannounce'>You feel a chill and are plunged into darkness.</span>"
|
|
|
|
|
H.luminosity = 0 //This is required with the object-based lighting
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -178,11 +181,23 @@
|
|
|
|
|
usr.visible_message("<span class='danger'>[usr] leans over [target], their eyes glowing a deep crimson, and stares into their face.</span>")
|
|
|
|
|
target << "<span class='danger'>Your gaze is forcibly drawn into a blinding red light. You fall to the floor as conscious thought is wiped away.</span>"
|
|
|
|
|
target.Weaken(12)
|
|
|
|
|
sleep(20)
|
|
|
|
|
if(isloyal(target))
|
|
|
|
|
usr << "<span class='notice'>They are enslaved by Nanotrasen. You begin to shut down the nanobot implant - this will take some time.</span>"
|
|
|
|
|
usr.visible_message("<span class='danger'>[usr] halts for a moment, then begins passing its hand over [target]'s body.</span>")
|
|
|
|
|
target << "<span class='danger'>You feel your loyalties begin to weaken!</span>"
|
|
|
|
|
sleep(150) //15 seconds - not spawn() so the enthralling takes longer
|
|
|
|
|
usr << "<span class='notice'>The nanobots composing the loyalty implant have been rendered inert. Now to continue.</span>"
|
|
|
|
|
usr.visible_message("<span class='danger'>[usr] halts thier hand and resumes staring into [target]'s face.</span>")
|
|
|
|
|
for(var/obj/item/weapon/implant/loyalty/L in target)
|
|
|
|
|
if(L && L.implanted)
|
|
|
|
|
qdel(L)
|
|
|
|
|
target << "<span class='danger'>Your unwavering loyalty to Nanotrasen falters, dims, dies.</span>"
|
|
|
|
|
if(3)
|
|
|
|
|
usr << "<span class='notice'>You begin rearranging [target]'s memories.</span>"
|
|
|
|
|
usr.visible_message("<span class='danger'>[usr]'s eyes flare brightly, and a horrible grin begins to spread across [target]'s face...</span>")
|
|
|
|
|
target << "<span class='danger'>Your head cries out. The veil of reality begins to crumple and something evil bleeds through.</span>" //Ow the edge
|
|
|
|
|
if(!do_mob(usr, target, 100)) //around 30 seconds total for enthralling
|
|
|
|
|
if(!do_mob(usr, target, 100)) //around 30 seconds total for enthralling, 45 for someone with a loyalty implant
|
|
|
|
|
usr << "<span class='danger'>The enthralling has been interrupted - your target's mind returns to its previous state.</span>"
|
|
|
|
|
target << "<span class='warning'>Your thoughts become coherent once more. Already you can barely remember what's happened to you.</span>"
|
|
|
|
|
enthralling = 0
|
|
|
|
@@ -220,6 +235,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor
|
|
|
|
|
name = "Regenerate Chitin"
|
|
|
|
|
desc = "Re-forms protective chitin that may be lost during cloning or similar processes."
|
|
|
|
|
panel = "Shadowling Abilities"
|
|
|
|
|
charge_max = 600
|
|
|
|
|
clothes_req = 0
|
|
|
|
|
range = -1
|
|
|
|
|
include_user = 1
|
|
|
|
|
|
|
|
|
|
/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor/cast(list/targets)
|
|
|
|
|
for(var/mob/living/user in targets)
|
|
|
|
|
user.visible_message("<span class='warning'>[user]'s skin suddenly bubbles and begins to shift around their body!</span>", \
|
|
|
|
|
"<span class='shadowling'>You regenerate your protective armor and cleanse your form of defects.</span>")
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(usr), slot_w_uniform)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/shoes/shadowling(usr), slot_shoes)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/suit/space/shadowling(usr), slot_wear_suit)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/head/shadowling(usr), slot_head)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(usr), slot_gloves)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(usr), slot_wear_mask)
|
|
|
|
|
user.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/shadowling(usr), slot_glasses)
|
|
|
|
|
hardset_dna(user, null, null, null, null, /datum/species/shadow/ling) //can't be a shadowling without being a shadowling
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/obj/effect/proc_holder/spell/targeted/collective_mind
|
|
|
|
|
name = "Collective Hivemind"
|
|
|
|
|
desc = "Gathers the power of all of your thralls and compares it to what is needed for ascendance. Also gains you new abilities."
|
|
|
|
@@ -266,7 +305,7 @@
|
|
|
|
|
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Sonic Screech</b> ability. This ability will shatter nearby windows and deafen enemies.</span>"
|
|
|
|
|
user.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech
|
|
|
|
|
|
|
|
|
|
if(thralls >= 10 && !thrall_swap_acquired)
|
|
|
|
|
if(thralls >= 9 && !thrall_swap_acquired)
|
|
|
|
|
thrall_swap_acquired = 1
|
|
|
|
|
user << "<span class='shadowling'><i>The power of your thralls has granted you the <b>Spatial Relocation</b> ability. This will, allow you to instantly swap places with one of your thralls in \
|
|
|
|
|
addition to shattering nearby lights.</i></span>"
|
|
|
|
@@ -363,7 +402,6 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
|
|
|
|
|
if(iscarbon(target))
|
|
|
|
|
var/mob/living/carbon/M = target
|
|
|
|
|
M << "<span class='danger'><b>A spike of pain drives into your head and scrambles your thoughts!</b></span>"
|
|
|
|
|
M.Weaken(2)
|
|
|
|
|
M.confused += 10
|
|
|
|
|
M.setEarDamage(M.ear_damage + 3)
|
|
|
|
|
else if(issilicon(target))
|
|
|
|
@@ -376,7 +414,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
|
|
|
|
|
sp.start()
|
|
|
|
|
S.Weaken(6)
|
|
|
|
|
for(var/obj/structure/window/W in T.contents)
|
|
|
|
|
W.hit(rand(25,50))
|
|
|
|
|
W.hit(rand(50,100))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -460,7 +498,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob)
|
|
|
|
|
charge_counter = charge_max
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
for(var/mob/boom in targets)
|
|
|
|
|
for(var/mob/living/carbon/human/boom in targets)
|
|
|
|
|
if(is_shadow_or_thrall(boom))
|
|
|
|
|
usr << "<span class='warning'>Making an ally explode seems unwise.<span>"
|
|
|
|
|
charge_counter = charge_max
|
|
|
|
|