This commit is contained in:
Xhuis
2015-04-13 19:12:29 -04:00
parent 7b5760f6d3
commit 87541dabc2
6 changed files with 59 additions and 16 deletions
+6 -4
View File
@@ -232,13 +232,15 @@ Made by Xhuis
if(A)
if(A.lighting_use_dynamic) light_amount = T.lighting_lumcount
else light_amount = 10
if(light_amount > 2) //Rapid death while in the light, countered by...
if(light_amount > 4) //Not complete blackness - they can live in very small light levels plus starlight
H.take_overall_damage(0,10)
H << "<span class='userdanger'>The light burns you!</span>"
H << 'sound/weapons/sear.ogg'
else if (light_amount < 2) //...extreme benefits while in the dark
H.heal_overall_damage(5,3)
H.adjustToxLoss(-3)
else if (light_amount < 2)
H.heal_overall_damage(5,5)
H.adjustToxLoss(-5)
H.adjustBrainLoss(-25) //gibbering shadowlings are hilarious but also bad to have
H.adjustCloneLoss(-1)
H.SetWeakened(0)
H.SetStunned(0)
@@ -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
@@ -46,7 +46,7 @@
/obj/item/clothing/gloves/shadowling
name = "chitin hands"
desc = "An electricity-resistant yet thin covering of the hands."
desc = "An electricity-resistant covering of the hands."
icon_state = "golem"
item_state = null
origin_tech = null
@@ -75,10 +75,11 @@
vision_flags = SEE_MOBS
darkness_view = 3
invis_view = 2
flash_protect = 2
flash_protect = -1
unacidable = 1
flags = ABSTRACT | NODROP
/obj/structure/shadow_vortex
name = "vortex"
desc = "A swirling hole in the fabric of reality. Eye-watering chimes sound from its depths."
@@ -85,6 +85,7 @@
usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadow_walk
usr.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/flashfreeze
usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/collective_mind
usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_regenarmor
@@ -173,7 +173,7 @@
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
if((target.mind in ticker.mode.head_revolutionaries) || (target.mind in ticker.mode.A_bosses) || (target.mind in ticker.mode.B_bosses))
if((target.mind in ticker.mode.head_revolutionaries) || (target.mind in ticker.mode.A_bosses) || (target.mind in ticker.mode.B_bosses) || is_shadow_or_thrall(target))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
return 0
if((target.mind in ticker.mode.revolutionaries) || (target.mind in ticker.mode.A_gangsters) || (target.mind in ticker.mode.B_gangsters))
@@ -684,7 +684,8 @@ proc/chemical_mob_spawn(var/datum/reagents/holder, var/amount_to_spawn, var/reac
/mob/living/simple_animal/hostile/carp/holocarp,
/mob/living/simple_animal/hostile/mining_drone,
/mob/living/simple_animal/hostile/poison,
/mob/living/simple_animal/hostile/blob
/mob/living/simple_animal/hostile/blob,
/mob/living/simple_animal/ascendant_shadowling
)//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
var/atom/A = holder.my_atom