From cf567414c25e9698ddbf2dfa2a1f5f56dee9f0a5 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 23 Mar 2016 21:25:15 -0400 Subject: [PATCH 1/3] Major Shadowling Update --- code/game/gamemodes/shadowling/shadowling.dm | 40 ++- .../shadowling/shadowling_abilities.dm | 330 +++++++++++++----- .../gamemodes/shadowling/shadowling_items.dm | 37 +- .../special_shadowling_abilities.dm | 27 +- code/modules/mob/dead/observer/observer.dm | 7 + code/modules/mob/mob.dm | 5 + code/modules/surgery/other.dm | 37 +- icons/mob/actions.dmi | Bin 56414 -> 57233 bytes icons/mob/human_races/r_lshadowling.dmi | Bin 0 -> 1772 bytes sound/magic/Staff_Chaos.ogg | Bin 0 -> 20499 bytes 10 files changed, 345 insertions(+), 138 deletions(-) create mode 100644 icons/mob/human_races/r_lshadowling.dmi create mode 100644 sound/magic/Staff_Chaos.ogg diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index a73b8b6afc6..47479f42cb4 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -87,7 +87,7 @@ Made by Xhuis if(!possible_shadowlings.len) return 0 - var/shadowlings = max(2, round(num_players()/10)) //How many shadowlings there are; hardcoded to 2 + var/shadowlings = max(3, round(num_players()/14)) while(shadowlings) var/datum/mind/shadow = pick(possible_shadowlings) @@ -114,7 +114,7 @@ Made by Xhuis /datum/game_mode/proc/greet_shadow(var/datum/mind/shadow) shadow.current << "Currently, you are disguised as an employee aboard [world.name]." - shadow.current << "In your limited state, you have three abilities: Enthrall, Hatch, and Shadowling Hivemind (:8)." + shadow.current << "In your limited state, you have two abilities: Hatch and Shadowling Hivemind (:8)." shadow.current << "Any other shadowlings are your allies. You must assist them as they shall assist you." shadow.current << "If you are new to shadowling, or want to read about abilities, check the wiki page at http://nanotrasen.se/wiki/index.php/Shadowling
" @@ -132,8 +132,6 @@ Made by Xhuis /datum/game_mode/proc/finalize_shadowling(var/datum/mind/shadow_mind) var/mob/living/carbon/human/S = shadow_mind.current shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_hatch) - shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/enthrall) - shadow_mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_vision) spawn(0) shadow_mind.current.add_language("Shadowling Hivemind") update_shadow_icons_added(shadow_mind) @@ -246,6 +244,8 @@ Made by Xhuis world << "The shadowlings have been killed by the crew!" else if(!check_shadow_victory() && shuttle_master.emergency.mode >= SHUTTLE_ESCAPE) world << "The crew escaped the station before the shadowlings could ascend!" + else + world << "The shadowlings have failed!" ..() return 1 @@ -300,7 +300,7 @@ Made by Xhuis blood_color = "#555555" flesh_color = "#222222" - flags = NO_BLOOD | NO_BREATHE | RADIMMUNE | NO_INTORGANS + flags = NO_BLOOD | NO_BREATHE | RADIMMUNE burn_mod = 1.5 //1.5x burn damage, 2x is excessive hot_env_multiplier = 1.5 @@ -327,6 +327,36 @@ Made by Xhuis H.SetWeakened(0) H.SetStunned(0) + +/datum/species/shadow/ling/lesser //Empowered thralls. Obvious, but powerful + name = "Lesser Shadowling" + + icobase = 'icons/mob/human_races/r_lshadowling.dmi' + deform = 'icons/mob/human_races/r_lshadowling.dmi' + + blood_color = "#CCCCCC" + flesh_color = "#AAAAAA" + + flags = NO_BLOOD | NO_BREATHE | RADIMMUNE + burn_mod = 1.1 + hot_env_multiplier = 1.1 + +/datum/species/shadow/ling/lesser/handle_life(var/mob/living/carbon/human/H) + if(!H.weakeyes) + H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs + var/light_amount = 0 + H.nutrition = 450 //i aint never get hongry + if(isturf(H.loc)) + var/turf/T = H.loc + light_amount = T.get_lumcount() * 10 + if(light_amount > LIGHT_DAM_THRESHOLD && !H.incorporeal_move) + H.take_overall_damage(0, LIGHT_DAMAGE_TAKEN/2) + else if (light_amount < LIGHT_HEAL_THRESHOLD) + H.heal_overall_damage(2,2) + H.adjustToxLoss(-5) + H.adjustBrainLoss(-25) + H.adjustCloneLoss(-1) + /datum/game_mode/proc/update_shadow_icons_added(datum/mind/shadow_mind) var/datum/atom_hud/antag/shadow_hud = huds[ANTAG_HUD_SHADOW] shadow_hud.join_hud(shadow_mind.current) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 2dfa31cc4a0..a1367fd622c 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -1,4 +1,16 @@ -/obj/effect/proc_holder/spell/targeted/glare +#define EMPOWERED_THRALL_LIMIT 5 + +/obj/effect/proc_holder/spell/proc/shadowling_check(var/mob/living/carbon/human/H) + if(!H || !istype(H)) return + if(H.get_species() == "Shadowling" && is_shadow(H)) return 1 + if(H.get_species() == "Lesser Shadowling" && is_thrall(H)) return 1 + if(!is_shadow_or_thrall(usr)) usr << "You can't wrap your head around how to do this." + else if(is_thrall(usr)) usr << "You aren't powerful enough to do this." + else if(is_shadow(usr)) usr << "Your telepathic ability is suppressed. Hatch or use Rapid Re-Hatch first." + return 0 + + +/obj/effect/proc_holder/spell/targeted/glare //Stuns and mutes a human target for 10 seconds name = "Glare" desc = "Stuns and mutes a target for a decent duration." panel = "Shadowling Abilities" @@ -9,16 +21,20 @@ /obj/effect/proc_holder/spell/targeted/glare/cast(list/targets) for(var/mob/living/carbon/human/target in targets) if(!ishuman(target)) + usr << "You may only glare at humans!" + charge_counter = charge_max + return + if(!shadowling_check(usr)) charge_counter = charge_max return if(target.stat) + usr << "[target] must be conscious!" charge_counter = charge_max return if(is_shadow_or_thrall(target)) usr << "You don't see why you would want to paralyze an ally." charge_counter = charge_max return - var/mob/living/carbon/human/M = target usr.visible_message("[usr]'s eyes flash a blinding red!") target.visible_message("[target] freezes in place, their eyes glazing over...") @@ -29,6 +45,7 @@ target.Stun(10) M.silent += 10 + /obj/effect/proc_holder/spell/targeted/lesser_glare name = "Lesser Glare" desc = "Stuns and mutes a target for a short duration." @@ -40,13 +57,15 @@ /obj/effect/proc_holder/spell/targeted/lesser_glare/cast(list/targets) for(var/mob/living/carbon/human/target in targets) if(!ishuman(target) || !target) + usr << "You nay only glare at humans!" charge_counter = charge_max return if(target.stat) + usr << "[target] must be conscious!" charge_counter = charge_max return if(is_shadow_or_thrall(target)) - usr << "You don't see why you would want to paralyze an ally." + usr << "You cannot glare at allies!" charge_counter = charge_max return var/mob/living/carbon/human/M = target @@ -56,14 +75,15 @@ target << "Your gaze is forcibly drawn into [usr]'s eyes, and you are mesmerized by the heavenly lights..." else target << "Red lights suddenly dance in your vision, and you are mesmerized by their heavenly beauty..." - target.Stun(3) //Roughly 30% as long as the normal one - M.silent += 3 + target.Stun(5) //Roughly 50% as long as the normal one + M.silent += 5 + /obj/effect/proc_holder/spell/aoe_turf/veil name = "Veil" desc = "Extinguishes most nearby light sources." panel = "Shadowling Abilities" - charge_max = 250 //Short cooldown because people can just turn the lights back on + charge_max = 150 //Short cooldown because people can just turn the lights back on clothes_req = 0 range = 5 var/blacklisted_lights = list(/obj/item/device/flashlight/flare, /obj/item/device/flashlight/slime) @@ -143,13 +163,16 @@ name = "Shadow Walk" desc = "Phases you into the space between worlds for a short time, allowing movement through walls and invisbility." panel = "Shadowling Abilities" - charge_max = 600 + charge_max = 300 //Used to be twice this, buffed clothes_req = 0 range = -1 include_user = 1 action_icon_state = "shadow_walk" /obj/effect/proc_holder/spell/targeted/shadow_walk/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return for(var/mob/living/user in targets) playsound(user.loc, 'sound/effects/bamf.ogg', 50, 1) user.visible_message("[user] vanishes in a puff of black mist!", "You enter the space between worlds as a passageway.") @@ -157,12 +180,19 @@ user.SetWeakened(0) user.incorporeal_move = 1 user.alpha = 0 + user.ExtinguishMob() + var/turf/T = get_turf(user) + user.forceMove(T) //to properly move the mob out of a potential container if(user.buckled) user.buckled.unbuckle_mob() + if(user.pulledby) + user.pulledby.stop_pulling() + user.stop_pulling() sleep(40) //4 seconds user.visible_message("[user] suddenly manifests!", "The pressure becomes too much and you vacate the interdimensional darkness.") user.incorporeal_move = 0 user.alpha = 255 + user.forceMove(user.loc) /obj/effect/proc_holder/spell/targeted/lesser_shadow_walk name = "Guise" @@ -176,15 +206,8 @@ /obj/effect/proc_holder/spell/targeted/lesser_shadow_walk/cast(list/targets) for(var/mob/living/user in targets) - var/lumcount = 0 - var/turf/T = get_turf(user) - lumcount = T.get_lumcount()*10 - if(lumcount > 5) - user << "It's too bright to do that!" - charge_counter = charge_max - return user.visible_message("[user] suddenly fades away!", "You veil yourself in darkness, making you harder to see.") - user.alpha = 20 + user.alpha = 10 sleep(40) user.visible_message("[user] appears from nowhere!", "Your shadowy guise slips away.") user.alpha = initial(user.alpha) @@ -198,7 +221,8 @@ range = -1 include_user = 1 clothes_req = 0 - var/datum/vision_override/vision_path = /datum/vision_override/nightvision/thermals + var/datum/vision_override/vision_path = /datum/vision_override/nightvision + action_icon_state = "darksight" /obj/effect/proc_holder/spell/targeted/shadow_vision/cast(list/targets) for(var/mob/living/user in targets) @@ -216,18 +240,20 @@ desc = "Thrall Darksight" desc = "Gives you night vision." panel = "Thrall Abilities" - vision_path = /datum/vision_override/nightvision /obj/effect/proc_holder/spell/aoe_turf/flashfreeze name = "Icy Veins" desc = "Instantly freezes the blood of nearby people, stunning them and causing burn damage." panel = "Shadowling Abilities" range = 5 - charge_max = 1200 + charge_max = 250 clothes_req = 0 action_icon_state = "icy_veins" /obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return usr << "You freeze the nearby air." playsound(usr.loc, 'sound/effects/ghost2.ogg', 50, 1) @@ -239,17 +265,16 @@ else M << "You feel a blast of paralyzingly cold air wrap around you and flow past, but you are unaffected!" continue - M << "You are hit by a blast of paralyzingly cold air and feel goosebumps break out across your body!" + M << "A wave of shockingly cold air engulfs you!" M.Stun(2) + M.apply_damage(10, BURN) if(M.bodytemperature) M.bodytemperature -= 200 //Extreme amount of initial cold if(M.reagents) M.reagents.add_reagent("frostoil", 15) //Half of a cryosting - -//Enthrall is the single most important spell -/obj/effect/proc_holder/spell/targeted/enthrall +/obj/effect/proc_holder/spell/targeted/enthrall //Turns a target into the shadowling's slave. This overrides all previous loyalties name = "Enthrall" desc = "Allows you to enslave a conscious, non-braindead, non-catatonic human to your will. This takes some time to cast." panel = "Shadowling Abilities" @@ -262,10 +287,12 @@ /obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets) var/mob/living/carbon/human/user = usr listclearnulls(ticker.mode.shadowling_thralls) - if(ticker.mode.shadowling_thralls.len >= 5 && (!istype(user.species, /datum/species/shadow/ling))) - user << "With your telepathic abilities suppressed, your human form will not allow you to enthrall any others. Hatch first." - charge_counter = charge_max + if(!(user.mind in ticker.mode.shadows)) return + if(user.get_species() != "Shadowling") + if(ticker.mode.shadowling_thralls.len >= 5) + charge_counter = charge_max + return for(var/mob/living/carbon/human/target in targets) if(!in_range(usr, target)) usr << "You need to be closer to enthrall [target]." @@ -291,6 +318,8 @@ usr << "You are already enthralling!" charge_counter = charge_max return + if(!target.client) + usr << "[target]'s mind is vacant of activity." enthralling = 1 usr << "This target is valid. You begin the enthralling." target << "[usr] stares at you. You feel your head begin to pulse." @@ -298,32 +327,32 @@ for(var/progress = 0, progress <= 3, progress++) switch(progress) if(1) - usr << "You begin allocating energy for the enthralling." - usr.visible_message("[usr]'s eyes begin to throb a piercing red.") + usr << "You place your hands to [target]'s head..." + usr.visible_message("[usr] places their hands onto the sides of [target]'s head!") if(2) - usr << "You begin the enthralling of [target]." - usr.visible_message("[usr] leans over [target], their eyes glowing a deep crimson, and stares into their face.") - target << "Your gaze is forcibly drawn into a blinding red light. You fall to the floor as conscious thought is wiped away." + usr << "You begin preparing [target]'s mind as a blank slate..." + usr.visible_message("[usr]'s palms flare a bright red against [target]'s temples!") + target << "A terrible red light floods your mind. You collapse as conscious thought is wiped away." target.Weaken(12) sleep(20) if(isloyal(target)) usr << "They are enslaved by Nanotrasen. You begin to shut down the nanobot implant - this will take some time." - usr.visible_message("[usr] halts for a moment, then begins passing its hand over [target]'s body.") + usr.visible_message("[usr] pauses, then dips their head in concentration!") target << "You feel your loyalties begin to weaken!" - sleep(150) //15 seconds - not spawn() so the enthralling takes longer + sleep(100) //10 seconds - not spawn() so the enthralling takes longer usr << "The nanobots composing the loyalty implant have been rendered inert. Now to continue." - usr.visible_message("[usr] halts thier hand and resumes staring into [target]'s face.") + usr.visible_message("[usr] relaxes again.") for(var/obj/item/weapon/implant/loyalty/L in target) if(L && L.implanted) qdel(L) - target << "Your unwavering loyalty to Nanotrasen falters, dims, dies." + target << "Your unwavering loyalty to Nanotrasen unexpectedly falters, dims, dies." if(3) - usr << "You begin rearranging [target]'s memories." - usr.visible_message("[usr]'s eyes flare brightly.") - target << "Your head cries out. The veil of reality begins to crumple and something evil bleeds through." //Ow the edge - if(!do_mob(usr, target, 100)) //around 30 seconds total for enthralling, 45 for someone with a loyalty implant - usr << "The enthralling has been interrupted - your target's mind returns to its previous state." - target << "A spike of pain drives into your head, wiping your memory. You aren't sure what's happened, but you feel a faint sense of revulsion." + usr << "You begin planting the tumor that will control the new thrall..." + usr.visible_message("A strange energy passes from [usr]'s hands into [target]'s head!") + target << "You feel your memories twisting, morphing. A sense of horror dominates your mind." + if(!do_mob(usr, target, 70)) //around 21 seconds total for enthralling, 31 for someone with a loyalty implant + usr << "The enthralling has been interrupted - your target's mind returns to its previous state." + target << "You wrest yourself away from [usr]'s hands and compose yourself" enthralling = 0 return @@ -335,7 +364,38 @@ ticker.mode.add_thrall(target.mind) target.mind.special_role = "shadowling thrall" -/obj/effect/proc_holder/spell/targeted/collective_mind +/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor //Resets a shadowling's species to normal, removes genetic defects, and re-equips their armor + name = "Rapid Re-Hatch" + desc = "Re-forms protective chitin that may be lost during cloning or similar processes." + panel = "Shadowling Abilities" + charge_max = 600 + range = -1 + include_user = 1 + clothes_req = 0 + action_icon_state = "regen_armor" + +/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor/cast(list/targets) + if(!is_shadow(usr)) + usr << "You must be a shadowling to do this!" + charge_counter = charge_max + return + for(var/mob/living/user in targets) + if(!istype(user) || !ishuman(user)) + return + var/mob/living/carbon/human/H = user + H.visible_message("[H]'s skin suddenly bubbles and shifts around their body!", \ + "You regenerate your protective armor and cleanse your form of defects.") + H.adjustCloneLoss(user.getCloneLoss()) + H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/shadowling(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/space/shadowling(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/shadowling(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(H), slot_glasses) + H.set_species("Shadowling") + +/obj/effect/proc_holder/spell/targeted/collective_mind //Lets a shadowling bring together their thralls' strength, granting new abilities and a headcount 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." panel = "Shadowling Abilities" @@ -350,6 +410,9 @@ action_icon_state = "collective_mind" /obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return for(var/mob/living/user in targets) var/thralls = 0 var/victory_threshold = 15 @@ -366,22 +429,22 @@ user << "Your concentration has been broken. The mental hooks you have sent out now retract into your mind." return - if(thralls >= 3 && !blind_smoke_acquired) + if(thralls >= 3 && !screech_acquired) + screech_acquired = 1 + user << "The power of your thralls has granted you the Sonic Screech ability. This ability will shatter nearby windows and deafen enemies, plus stunning silicon lifeforms." + user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech) + + if(thralls >= 5 && !blind_smoke_acquired) blind_smoke_acquired = 1 user << "The power of your thralls has granted you the Blinding Smoke ability. It will create a choking cloud that will blind any non-thralls who enter. \ " user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/blindness_smoke) - if(thralls >= 5 && !drainLifeAcquired) + if(thralls >= 7 && !drainLifeAcquired) drainLifeAcquired = 1 user << "The power of your thralls has granted you the Drain Life ability. You can now drain the health of nearby humans to heal yourself." user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/drainLife) - if(thralls >= 7 && !screech_acquired) - screech_acquired = 1 - user << "The power of your thralls has granted you the Sonic Screech ability. This ability will shatter nearby windows and deafen enemies, plus stunning silicon lifeforms." - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech) - if(thralls >= 9 && !reviveThrallAcquired) reviveThrallAcquired = 1 user << "The power of your thralls has granted you the Black Recuperation ability. This will, after a short time, bring a dead thrall completely back to life \ @@ -420,6 +483,9 @@ action_icon_state = "black_smoke" /obj/effect/proc_holder/spell/targeted/blindness_smoke/cast(list/targets) //Extremely hacky + if(!shadowling_check(usr)) + charge_counter = charge_max + return for(var/mob/living/user in targets) user.visible_message("[user] suddenly bends over and coughs out a cloud of black smoke, which begins to spread rapidly!") user << "You regurgitate a vast cloud of blinding smoke." @@ -471,6 +537,9 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) action_icon_state = "screech" /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return usr.audible_message("[usr] lets out a horrible scream!") playsound(usr.loc, 'sound/effects/screech.ogg', 100, 1) @@ -484,7 +553,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 << "A spike of pain drives into your head and scrambles your thoughts!" - M.Weaken(2) M.confused += 10 M.ear_damage += 3 else if(issilicon(target)) @@ -497,7 +565,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(80,100)) + W.hit(rand(80, 100)) @@ -513,6 +581,9 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) action_icon_state = "drain_life" /obj/effect/proc_holder/spell/aoe_turf/drainLife/cast(list/targets, var/mob/living/carbon/human/U = usr) + if(!shadowling_check(usr)) + charge_counter = charge_max + return targetsDrained = 0 nearbyTargets = list() for(var/turf/T in targets) @@ -541,46 +612,143 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) /obj/effect/proc_holder/spell/targeted/reviveThrall name = "Black Recuperation" - desc = "Brings a dead thrall back to life." + desc = "Revives or empowers a thrall." panel = "Shadowling Abilities" range = 1 - charge_max = 3000 + charge_max = 600 clothes_req = 0 include_user = 0 - var/list/thralls_in_world = list() action_icon_state = "revive_thrall" /obj/effect/proc_holder/spell/targeted/reviveThrall/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return for(var/mob/living/carbon/human/thrallToRevive in targets) - if(!is_thrall(thrallToRevive)) - usr << "[thrallToRevive] is not a thrall." + var/choice = alert(usr,"Empower a living thrall or revive a dead one?",,"Empower","Revive","Cancel") + switch(choice) + if("Empower") + if(!is_thrall(thrallToRevive)) + usr << "[thrallToRevive] is not a thrall." + charge_counter = charge_max + return + if(thrallToRevive.stat != CONSCIOUS) + usr << "[thrallToRevive] must be conscious to become empowered." + charge_counter = charge_max + return + var/empowered_thralls = 0 + for(var/datum/mind/M in ticker.mode.shadowling_thralls) + if(!ishuman(M.current)) + return + var/mob/living/carbon/human/H = M.current + if(H.get_species() == "Lesser Shadowling") + empowered_thralls++ + if(empowered_thralls >= EMPOWERED_THRALL_LIMIT) + usr << "You cannot spare this much energy. There are too many empowered thralls." + charge_counter = charge_max + return + usr.visible_message("[usr] places their hands over [thrallToRevive]'s face, red light shining from beneath.", \ + "You place your hands on [thrallToRevive]'s face and begin gathering energy...") + thrallToRevive << "[usr] places their hands over your face. You feel energy gathering. Stand still..." + if(!do_mob(usr, thrallToRevive, 80)) + usr << "Your concentration snaps. The flow of energy ebbs." + charge_counter = charge_max + return + usr << "You release a massive surge of power into [thrallToRevive]!" + usr.visible_message("Red lightning surges into [thrallToRevive]'s face!") + playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1) + playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1) + usr.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) + thrallToRevive.Weaken(5) + thrallToRevive.visible_message("[thrallToRevive] collapses, their skin and face distorting!", \ + "AAAAAAAAAAAAAAAAAAAGH-") + sleep(20) + thrallToRevive.visible_message("[thrallToRevive] slowly rises, no longer recognizable as human.", \ + "You feel new power flow into you. You have been gifted by your masters. You now closely resemble them. You are empowered in \ + darkness but wither slowly in light. In addition, Lesser Glare and Guise have been upgraded into their true forms.") + thrallToRevive.set_species("Lesser Shadowling") + thrallToRevive.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_glare) + thrallToRevive.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk) + thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/glare) + thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_walk) + if("Revive") + if(!is_thrall(thrallToRevive)) + usr << "[thrallToRevive] is not a thrall." + charge_counter = charge_max + return + if(thrallToRevive.stat != DEAD) + usr << "[thrallToRevive] is not dead." + charge_counter = charge_max + return + usr.visible_message("[usr] kneels over [thrallToRevive], placing their hands on \his chest.", \ + "You crouch over the body of your thrall and begin gathering energy...") + thrallToRevive.notify_ghost_cloning("Your masters are resuscitating you! Re-enter your corpse if you wish to be brought to life.", source = thrallToRevive) + if(!do_mob(usr, thrallToRevive, 30)) + usr << "Your concentration snaps. The flow of energy ebbs." + charge_counter = charge_max + return + usr << "You release a massive surge of power into [thrallToRevive]!" + usr.visible_message("Red lightning surges from [usr]'s hands into [thrallToRevive]'s chest!") + playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1) + playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1) + usr.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) + sleep(10) + if(thrallToRevive.revive(full_heal = 1)) + thrallToRevive.visible_message("[thrallToRevive] heaves in breath, dim red light shining in their eyes.", \ + "You have returned. One of your masters has brought you from the darkness beyond.") + thrallToRevive.Weaken(4) + thrallToRevive.emote("gasp") + playsound(thrallToRevive, "bodyfall", 50, 1) + else + charge_counter = charge_max + return + +/obj/effect/proc_holder/spell/targeted/shadowling_extend_shuttle + name = "Destroy Engines" + desc = "Extends the time of the emergency shuttle's arrival by fifteen minutes. This can only be used once." + panel = "Shadowling Abilities" + range = 1 + clothes_req = 0 + charge_max = 600 + action_icon_state = "extend_shuttle" + +/obj/effect/proc_holder/spell/targeted/shadowling_extend_shuttle/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return + for(var/mob/living/carbon/human/target in targets) + if(target.stat) charge_counter = charge_max return - if(thrallToRevive.stat != DEAD) - usr << "[thrallToRevive] is not dead." + if(!is_thrall(target)) + usr << "[target] must be a thrall." charge_counter = charge_max return - usr.visible_message("[usr] kneels over [thrallToRevive], placing their hands on \his chest.", \ - "You crouch over the body of your thrall and begin gathering energy...") - var/mob/dead/observer/ghost = thrallToRevive.get_ghost() - if(ghost) - ghost << "Your masters are resuscitating you! Return to your corpse if you wish to be brought to life. (Verbs -> Ghost -> Re-enter corpse)" - ghost << 'sound/effects/genetics.ogg' - if(!do_mob(usr, thrallToRevive, 30)) - usr << "Your concentration snaps. The flow of energy ebbs." - charge_counter= charge_max + if(shuttle_master.emergency.mode != SHUTTLE_CALL) + usr << "The shuttle must be inbound only to the station." + charge_counter = charge_max return - usr << "You release a massive surge of power into [thrallToRevive]!" - usr.visible_message("Red lightning surges from [usr]'s hands into [thrallToRevive]'s chest!") - playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1) - playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1) - sleep(10) - thrallToRevive.revive() - thrallToRevive.visible_message("[thrallToRevive] draws in a huge breath, blinding violet light shining from their eyes.", \ - "You have returned. One of your masters has brought you from the darkness beyond.") - thrallToRevive.Weaken(4) - thrallToRevive.emote("gasp") - playsound(thrallToRevive, "bodyfall", 50, 1) + var/mob/living/carbon/human/M = target + usr.visible_message("[usr]'s eyes flash a bright red!", \ + "You begin to draw [M]'s life force.") + M.visible_message("[M]'s face falls slack, their jaw slightly distending.", \ + "You are suddenly transported... far, far away...") + if(!do_after(usr, 50, target = M)) + M << "You are snapped back to reality, your haze dissipating!" + usr << "You have been interrupted. The draw has failed." + return + usr << "You project [M]'s life force toward the approaching shuttle, extending its arrival duration!" + M.visible_message("[M]'s eyes suddenly flare red. They proceed to collapse on the floor, not breathing.", \ + "...speeding by... ...pretty blue glow... ...touch it... ...no glow now... ...no light... ...nothing at all...") + M.death() + if(shuttle_master.emergency.mode == SHUTTLE_CALL) + var/more_minutes = 9000 + var/timer = shuttle_master.emergency.timeLeft() + timer += more_minutes + command_announcement.Announce("Major system failure aboard the emergency shuttle. This will extend its arrival time by approximately 15 minutes..", "System Failure", 'sound/misc/notice1.ogg') + shuttle_master.emergency.setTimer(timer) + usr.mind.spell_list.Remove(src) //Can only be used once! + qdel(src) // ASCENDANT ABILITIES BEYOND THIS POINT // @@ -600,15 +768,17 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_counter = charge_max return + playsound(usr.loc, 'sound/magic/Staff_Chaos.ogg', 100, 1) for(var/mob/living/boom in targets) - if(is_shadow_or_thrall(boom)) + if(is_shadow(boom)) //Used to not work on thralls. Now it does so you can PUNISH THEM LIKE THE WRATHFUL GOD YOU ARE. usr << "Making an ally explode seems unwise." charge_counter = charge_max return usr.visible_message("[usr]'s markings flare as they gesture at [boom]!", \ "You direct a lance of telekinetic energy at [boom].") - playsound(usr, 'sound/effects/supermatter.ogg', 100, 1) sleep(4) + if(iscarbon(boom)) + playsound(boom, 'sound/magic/Disintegrate.ogg', 100, 1) boom.visible_message("[boom] explodes!") boom.gib() @@ -701,7 +871,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) usr.visible_message("A massive ball of lightning appears in [usr]'s hands and flares out!", \ "You conjure a ball of lightning and release it.") - + playsound(usr.loc, 'sound/magic/lightningbolt.ogg', 100, 1) for(var/turf/T in targets) for(var/mob/living/carbon/human/target in T.contents) if(is_shadow_or_thrall(target)) diff --git a/code/game/gamemodes/shadowling/shadowling_items.dm b/code/game/gamemodes/shadowling/shadowling_items.dm index 6af78895077..500c3ee25c5 100644 --- a/code/game/gamemodes/shadowling/shadowling_items.dm +++ b/code/game/gamemodes/shadowling/shadowling_items.dm @@ -1,12 +1,13 @@ /obj/item/clothing/under/shadowling name = "blackened flesh" - desc = "Black, chitonous skin." + desc = "Black, chitinous skin." item_state = "golem" origin_tech = null icon_state = "golem" item_color = "golem" flags = ABSTRACT | NODROP has_sensor = 0 + displays_id = 0 unacidable = 1 @@ -19,11 +20,12 @@ cold_protection = FULL_BODY min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT - flags = ABSTRACT | NODROP | THICKMATERIAL slowdown = 0 unacidable = 1 heat_protection = null //You didn't expect a light-sensitive creature to have heat resistance, did you? max_heat_protection_temperature = null + armor = list(melee = 25, bullet = 0, laser = 0, energy = 0, bomb = 25, bio = 100, rad = 100) + flags = ABSTRACT | NODROP | THICKMATERIAL | STOPSPRESSUREDMAGE /obj/item/clothing/shoes/shadowling @@ -61,10 +63,13 @@ desc = "A helmet-like enclosure of the head." icon_state = "golem" item_state = null + cold_protection = HEAD + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + heat_protection = HEAD + max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT origin_tech = null unacidable = 1 - flags = ABSTRACT | NODROP - + flags = ABSTRACT | NODROP | STOPSPRESSUREDMAGE /obj/item/clothing/glasses/shadowling name = "crimson eyes" @@ -75,25 +80,5 @@ origin_tech = null unacidable = 1 flash_protect = -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." - density = 0 - anchored = 1 - icon = 'icons/effects/genetics.dmi' - icon_state = "shadow_portal" - -/obj/structure/shadow_vortex/New() - src.audible_message("\The [src] lets out a dismaying screech as dimensional barriers are torn apart!") - playsound(loc, 'sound/effects/eleczap.ogg', 100, 1) - sleep(100) - qdel(src) - -/obj/structure/shadow_vortex/Crossed(var/td) - ..() - if(ismob(td)) - td << "You enter the rift. Deafening chimes jingle in your ears. You are swallowed in darkness." - playsound(loc, 'sound/effects/EMPulse.ogg', 25, 1) - qdel(td) + vision_flags = SEE_MOBS + flags = ABSTRACT | NODROP \ No newline at end of file diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 0b33c2f2451..52c50e0c193 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -1,5 +1,5 @@ //In here: Hatch and Ascendance -var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "Noaey'gief", "Mii`mahza", "Amerziox", "Gyrg-mylin", "Kanet'pruunance") +var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "Noaey'gief", "Mii`mahza", "Amerziox", "Gyrg-mylin", "Kanet'pruunance", "Vigistaezian") //Unpronouncable 2: electric boogalo) /obj/effect/proc_holder/spell/targeted/shadowling_hatch name = "Hatch" desc = "Casts off your disguise." @@ -11,7 +11,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N action_icon_state = "hatch" /obj/effect/proc_holder/spell/targeted/shadowling_hatch/cast(list/targets) - if(usr.stat || !ishuman(usr) || !usr) + if(usr.stat || !ishuman(usr) || !usr || !is_shadow(usr || isinspace(usr))) return if(!isturf(usr.loc)) usr << "You can't hatch here!" @@ -39,10 +39,11 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N for(var/obj/structure/alien/resin/wall/shadowling/R in shadowturf) //extremely hacky qdel(R) new /obj/structure/alien/weeds/node(shadowturf) //Dim lighting in the chrysalis -- removes itself afterwards + var/temp_flags = H.status_flags + H.status_flags |= GODMODE //Can't die while hatching H.visible_message("A chrysalis forms around [H], sealing them inside.", \ "You create your chrysalis and begin to contort within.") - usr.Weaken(30) sleep(100) H.visible_message("The skin on [H]'s back begins to split apart. Black spines slowly emerge from the divide.", \ @@ -61,7 +62,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N sleep(10) playsound(H.loc, 'sound/weapons/slice.ogg', 25, 1) H << "You are free!" - + H.status_flags = temp_flags sleep(10) playsound(H.loc, 'sound/effects/ghost.ogg', 100, 1) var/newNameId = pick(possibleShadowlingNames) @@ -77,7 +78,6 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N for(var/obj/structure/alien/weeds/node/N in shadowturf) qdel(N) H.visible_message("The chrysalis explodes in a shower of purple flesh and fluid!") - H.underwear = "None" H.undershirt = "None" H.socks = "None" @@ -90,16 +90,21 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(usr), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(usr), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(usr), slot_glasses) - H.set_species("Shadowling") + H.set_species("Shadowling") //can't be a shadowling without being a shadowling + + H.mind.remove_spell(src) sleep(10) H << "Your powers are awoken. You may now live to your fullest extent. Remember your goal. Cooperate with your thralls and allies." - H.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/shadowling_hatch) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_vision) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/enthrall) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/glare) H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/veil) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_walk) H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/flashfreeze) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/collective_mind) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_regenarmor) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadowling_extend_shuttle) /obj/effect/proc_holder/spell/targeted/shadowling_ascend name = "Ascend" @@ -112,9 +117,10 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N action_icon_state = "ascend" /obj/effect/proc_holder/spell/targeted/shadowling_ascend/cast(list/targets) - if(usr.stat || !ishuman(usr) || !usr) + var/mob/living/carbon/human/H = usr + if(!shadowling_check(H)) return - for(var/mob/living/carbon/human/H in targets) + for(H in targets) var/hatch_or_no = alert(H,"It is time to ascend. Are you sure about this?",,"Yes","No") switch(hatch_or_no) if("No") @@ -151,7 +157,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N M << "An immense pressure slams you onto the ground!" world << "\"VYSHA NERADA YEKHEZET U'RUU!!\"" world << 'sound/hallucinations/veryfar_noise.ogg' - for(var/obj/machinery/power/apc/A in range(200, H)) + for(var/obj/machinery/power/apc/A in apcs) A.overload_lighting() var/mob/A = new /mob/living/simple_animal/ascendant_shadowling(H.loc) for(var/obj/effect/proc_holder/spell/S in H.mind.spell_list) @@ -168,7 +174,6 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N if(A.real_name) A.real_name = H.real_name H.invisibility = 60 //This is pretty bad, but is also necessary for the shuttle call to function properly - H.flags |= GODMODE H.loc = A sleep(50) if(!ticker.mode.shadowling_ascended) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2c0ae7ef779..16d826b55f5 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -257,6 +257,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return 1 +/mob/dead/observer/proc/notify_cloning(var/message, var/sound, var/atom/source) + if(message) + src << "[message]" + src << "(Click to re-enter)" + if(sound) + src << sound(sound) + /mob/dead/observer/proc/show_me_the_hud(hud_index) var/datum/atom_hud/H = huds[hud_index] H.add_hud_to(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f8152ee0f96..3451da45d3f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1364,6 +1364,11 @@ mob/proc/yank_out_object() return G break +/mob/proc/notify_ghost_cloning(var/message = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!", var/sound = 'sound/effects/genetics.ogg', var/atom/source = null) + var/mob/dead/observer/ghost = get_ghost() + if(ghost) + ghost.notify_cloning(message, sound, source) + return ghost /mob/proc/fakevomit(green=0) //for aesthetic vomits that need to be instant and do not stun. -Fox if(stat==DEAD) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 42c35dd5106..85d8ca95e86 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -219,7 +219,7 @@ /datum/surgery/remove_thrall/can_start(mob/user, mob/living/carbon/target) - return is_thrall(target)//would this be too meta? + return is_thrall(target) //would this be too meta? /datum/surgery/remove_thrall/synth/can_start(mob/user, mob/living/carbon/target) return is_thrall(target) && target.get_species() == "Machine" @@ -244,22 +244,27 @@ ..() /datum/surgery_step/internal/dethrall/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) + if(target.get_species() == "Lesser Shadowling") //Empowered thralls cannot be deconverted + target << "NOT LIKE THIS!" + user.visible_message("[target] suddenly slams upward and knocks down [user]!", \ + "[target] suddenly bolts up and slams you with tremendous force!") + user.resting = 0 //Remove all stuns + user.SetSleeping(0) + user.SetStunned(0) + user.SetWeakened(0) + user.SetParalysis(0) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.Weaken(6) + C.apply_damage(20, "brute", "chest") + else if(issilicon(user)) + var/mob/living/silicon/S = user + S.Weaken(8) + S.apply_damage(20, "brute") + playsound(S, 'sound/effects/bang.ogg', 50, 1) + return 0 user.visible_message("[user] shines light onto the tumor in [target]'s head!", "You cleanse the contamination from [target]'s brain!") - ticker.mode.remove_thrall(target.mind,0) + ticker.mode.remove_thrall(target.mind, 0) target.visible_message("A strange black mass falls from [target]'s head!") new /obj/item/organ/internal/shadowtumor(get_turf(target)) - return 1 - -/datum/surgery_step/internal/dethrall/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) - var/braincase = target.named_organ_parent("brain") - if(prob(50)) - user.visible_message("[user] slips and rips the tumor out from [target]'s [braincase]!", \ - "You fumble and tear out [target]'s tumor!") - target.adjustBrainLoss(110) // This is so you can't just defib'n go - ticker.mode.remove_thrall(target.mind,1) - - return 0 - else - user.visible_message("[user]'s hand slips and fumbles! Luckily, they didn't damage anything!") - return 0 diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 5e7b65eb543637305f3d73de502c942b4baed947..79144d6c4bb7da56ff3f27add934480a35ee9a6f 100644 GIT binary patch delta 17170 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 *&lY^ur=GwU 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 diff --git a/icons/mob/human_races/r_lshadowling.dmi b/icons/mob/human_races/r_lshadowling.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0e955e5bd977ceb870be8f9cd9803015a8d50c35 GIT binary patch literal 1772 zcmV*_H8nLNA|n3)0KmY&R>63$00001bW%=J06^y0W&i*Hzj{1c8yu(4A)oHhvVsa+fxj7!Bu;5x7w#Ek?U@nuE&<%ByNMRiLWlV~O zbPr3NeY-yDENH`6x3c)QuGYj+4Psz0s|Uki9kfw}^PxNas_oO?qxeBEI+#8#`|XGo zmw0iB7nfLZ1CmF^yKe4phEx?*zW&oUsRP6z-Zmlc000HINkl^WFu&k3rz2Vvh$f$wo3d)}>i|94n$O_u%}CbEpY@oe>XN@KP3n+Q;gZf`b%AP9mW z2!e1IsG=%%#MZWT6|s|j=N`bpeCx@9wf>up%iIgKZCgE2yQ-d{y*9Ru>Ay+xE!u4b zwsIxd8)IR>wf=%22*Mrkeqi=1+WkA)M`o|}SAW)E>%K=jum7U|bMlpRWto6= z{-Z(*E0!AC54I`b6dG4T2W$O@uVBH}ZijY;OB!R@BwXq5Mb~Um>8hX(*7^&AAP9mW z2!bF8f^d)AAigI%2p7E1ar@{3rahG8$=|vtU;T~3n6{bR1p*S>m5Rai=FeU5FG%AH zFdrLT>LLLyx&ZYt36kee+kFU#J_nNQivic>3DH!!a3qcSBK@bF?YkvHZE^mP0!PDa*wt(g%`AJom2-rs# z(0!~b(`-=y4%qFZZ&K-hhkgI7*$=+m-Kv(Z`x9?tUSALanl0zw>y2Muu%!Z0d+;=` zFWC$Y!qCmd)cR&fd;vAhU{u~+OcQ;pdDjqQL4Zaxi5?wSAYgtgV**rk0Y0?9i6DF} zvFi&$QN6c50ITIZ^##Git}h5hIct6O0q`bk`+0rA6$0Yc7laeLz95*`^#!3MrLnN0 z8ODPFJ@o<4krTwOtB~Z&HNY70Q3iUdS%-_b2-T$*bi4(z1pJhI|5?)QUCsnd z`vcrRn6&AJd0&$Kf!?-mcY2%zoE{zB5z!|{_6N9sIQ{we1IYfs`S%0T=_`AFKY;s( zqg)10pTxF!qsX97IGAHe;?1-J(u-!~v2VfBeDyypJl0_+2i?;Cao zGW1{qn13+ZJn;Db4ZhJ#0LJ&+KbRyt@c8}>I-LCr3@q8Wf4G3=g~#`}3|A$e11Ny` z2h%mL{QZ9oyOr8}DuDZklJ43U{{FwM>5VPTG6f)D4QToNBDP2du z-Bf@e2V?F^4Xfp#g%SVWf9`gx^ zosRhkC}3sYk%x0W0TndnBhb%zK0<8H`2--qmGo8bEFS^NF(Z(S`2u literal 0 HcmV?d00001 diff --git a/sound/magic/Staff_Chaos.ogg b/sound/magic/Staff_Chaos.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e8b1c0e6adfaeecc7179eefff1cbdcbbb9e5fc0e GIT binary patch literal 20499 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 nTSL)iuBuM6s1x6`GcwA<{Ystz9o}X9? Date: Thu, 24 Mar 2016 17:50:34 -0400 Subject: [PATCH 2/3] fixes --- .../shadowling/shadowling_abilities.dm | 11 +++++++++-- code/modules/surgery/other.dm | 4 ++-- icons/mob/actions.dmi | Bin 57233 -> 58443 bytes 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index a1367fd622c..7214e50d2d5 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -136,6 +136,9 @@ extinguishItem(F) /obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets) + if(!shadowling_check(usr)) + charge_counter = charge_max + return usr << "You silently disable all nearby lights." for(var/obj/effect/glowshroom/G in orange(2, usr)) //Why the fuck was this in the loop below? G.visible_message("\The [G] withers away!") @@ -449,7 +452,7 @@ reviveThrallAcquired = 1 user << "The power of your thralls has granted you the Black Recuperation ability. This will, after a short time, bring a dead thrall completely back to life \ with no bodily defects." - user.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/reviveThrall + user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/reviveThrall) if(thralls < victory_threshold) user << "You do not have the power to ascend. You require [victory_threshold] thralls, but only [thralls] living thralls are present." @@ -636,6 +639,10 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) usr << "[thrallToRevive] must be conscious to become empowered." charge_counter = charge_max return + if(thrallToRevive.get_species() == "Lesser Shadowling") + usr << "[thrallToRevive] is already empowered." + charge_counter = charge_max + return var/empowered_thralls = 0 for(var/datum/mind/M in ticker.mode.shadowling_thralls) if(!ishuman(M.current)) @@ -693,7 +700,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1) usr.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1) sleep(10) - if(thrallToRevive.revive(full_heal = 1)) + if(thrallToRevive.revive()) thrallToRevive.visible_message("[thrallToRevive] heaves in breath, dim red light shining in their eyes.", \ "You have returned. One of your masters has brought you from the darkness beyond.") thrallToRevive.Weaken(4) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 85d8ca95e86..73bf7944127 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -208,7 +208,7 @@ ////////////////////////////////////////////////////////////////// /datum/surgery/remove_thrall name = "cleanse contaminations"//RENAME MEH - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,/datum/surgery_step/open_encased/retract, /datum/surgery_step/dethrall,/datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize) + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,/datum/surgery_step/open_encased/retract, /datum/surgery_step/internal/dethrall, /datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize) possible_locs = list("head") /datum/surgery/remove_thrall/synth @@ -225,7 +225,7 @@ return is_thrall(target) && target.get_species() == "Machine" -/datum/surgery_step/dethrall +/datum/surgery_step/internal/dethrall name = "cleanse contamination" allowed_tools = list(/obj/item/device/flash = 100, /obj/item/device/flashlight/pen = 80, /obj/item/device/flashlight = 40) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 79144d6c4bb7da56ff3f27add934480a35ee9a6f..9b94e2a368e3df93c39c9788e3f7a835661ce979 100644 GIT binary patch delta 18427 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 delta 17207 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 Date: Sat, 26 Mar 2016 03:21:25 -0400 Subject: [PATCH 3/3] thralls --- code/game/gamemodes/shadowling/shadowling_abilities.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 7214e50d2d5..64710ac14de 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -75,8 +75,8 @@ target << "Your gaze is forcibly drawn into [usr]'s eyes, and you are mesmerized by the heavenly lights..." else target << "Red lights suddenly dance in your vision, and you are mesmerized by their heavenly beauty..." - target.Stun(5) //Roughly 50% as long as the normal one - M.silent += 5 + target.Stun(3) //Roughly 30% as long as the normal one + M.silent += 3 /obj/effect/proc_holder/spell/aoe_turf/veil