From 00035a51f0ed3ed26acbedb9d39de024c148e4c2 Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 12 Apr 2015 19:54:45 -0400 Subject: [PATCH] It compiles! - Makes shadowlings compile, require snowflaking of a few things to the human Life() proc due to how Bay species works. - Renames monkeyizing var to notransform, as that's effectively what it was used for, to prevent transformation. (/tg/ port) --- code/datums/mind.dm | 20 ++-- code/game/dna/dna_misc.dm | 8 +- code/game/dna/genes/monkey.dm | 8 +- .../gamemodes/changeling/powers/lesserform.dm | 2 +- code/game/gamemodes/shadowling/shadowling.dm | 97 ++++++++++--------- .../shadowling/shadowling_abilities.dm | 88 ++++++++--------- .../gamemodes/shadowling/shadowling_items.dm | 7 +- .../special_shadowling_abilities.dm | 32 +++--- code/game/machinery/cloning.dm | 2 +- code/modules/admin/player_panel.dm | 4 +- code/modules/client/preferences.dm | 3 +- code/modules/mob/death.dm | 6 +- code/modules/mob/living/carbon/alien/death.dm | 4 +- .../carbon/alien/humanoid/update_icons.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 6 +- code/modules/mob/living/carbon/human/human.dm | 2 + code/modules/mob/living/carbon/human/life.dm | 24 ++++- .../mob/living/carbon/human/update_icons.dm | 2 +- .../modules/mob/living/carbon/metroid/life.dm | 2 +- .../modules/mob/living/carbon/monkey/death.dm | 4 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/silicon/death.dm | 4 +- code/modules/mob/living/silicon/mommi/life.dm | 2 +- .../modules/mob/living/silicon/robot/death.dm | 4 +- code/modules/mob/living/silicon/robot/life.dm | 2 +- code/modules/mob/mob.dm | 2 +- code/modules/mob/mob_defines.dm | 2 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/mob/transform_procs.dm | 30 +++--- code/modules/projectiles/gun.dm | 6 +- code/modules/projectiles/projectile/change.dm | 4 +- code/modules/projectiles/projectile/magic.dm | 4 +- code/modules/reagents/Chemistry-Reagents.dm | 4 +- code/setup.dm | 8 +- 36 files changed, 215 insertions(+), 188 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d793bddb5d5..07741d08633 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -319,8 +319,8 @@ datum/mind text = "[text]: " if(src in ticker.mode.shadows) text += "SHADOWLING|thrall|human" - else if(src in ticker.mode.thralls) - text += "shadowling|THRALL|human" + else if(src in ticker.mode.shadowling_thralls) + text += "Shadowling|THRALL|human" else text += "shadowling|thrall|HUMAN" @@ -965,18 +965,18 @@ datum/mind else if(href_list["shadowling"]) switch(href_list["shadowling"]) if("clear") - src.spell_list = null + current.spell_list = null if(src in ticker.mode.shadows) ticker.mode.shadows -= src special_role = null current << "Your powers have been quenched! You are no longer a shadowling!" - src.spell_list = null + current.spell_list = null message_admins("[key_name_admin(usr)] has de-shadowling'ed [current].") log_admin("[key_name(usr)] has de-shadowling'ed [current].") current.verbs -= /mob/living/carbon/human/proc/shadowling_hatch current.verbs -= /mob/living/carbon/human/proc/shadowling_ascendance - else if(src in ticker.mode.thralls) - ticker.mode.thralls -= src + else if(src in ticker.mode.shadowling_thralls) + ticker.mode.shadowling_thralls -= src special_role = null current << "You have been brainwashed! You are no longer a thrall!" message_admins("[key_name_admin(usr)] has de-thrall'ed [current].") @@ -990,8 +990,8 @@ datum/mind current << "You notice a brightening around you. No, it isn't that. The shadows grow, darken, swirl. The darkness has a new welcome for you, and you realize with a \ start that you can't be human. No, you are a shadowling, a harbringer of the shadows! Your alien abilities have been unlocked from within, and you may both commune with your allies and use \ a chrysalis to reveal your true form. You are to ascend at all costs." - src.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind - src.spell_list += new /obj/effect/proc_holder/spell/targeted/enthrall + current.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind + current.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/enthrall current.verbs += /mob/living/carbon/human/proc/shadowling_hatch if("thrall") if(!ishuman(current)) @@ -1004,11 +1004,11 @@ datum/mind current << "You may use the Hivemind Commune ability to communicate with your fellow enlightened ones." message_admins("[key_name_admin(usr)] has thrall'ed [current].") log_admin("[key_name(usr)] has thrall'ed [current].") - src.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind + current.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind else if (href_list["monkey"]) var/mob/living/L = current - if (L.monkeyizing) + if (L.notransform) return switch(href_list["monkey"]) if("healthy") diff --git a/code/game/dna/dna_misc.dm b/code/game/dna/dna_misc.dm index bda19278266..bc2098d77a6 100644 --- a/code/game/dna/dna_misc.dm +++ b/code/game/dna/dna_misc.dm @@ -402,7 +402,7 @@ if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) // human > monkey var/mob/living/carbon/human/H = M - H.monkeyizing = 1 + H.notransform = 1 var/list/implants = list() //Try to preserve implants. for(var/obj/item/weapon/implant/W in H) implants += W @@ -413,7 +413,7 @@ if (W==H.w_uniform) // will be teared continue H.unEquip(W) - M.monkeyizing = 1 + M.notransform = 1 M.canmove = 0 M.icon = null M.invisibility = 101 @@ -478,7 +478,7 @@ if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) // monkey > human, var/mob/living/carbon/monkey/Mo = M - Mo.monkeyizing = 1 + Mo.notransform = 1 var/list/implants = list() //Still preserving implants for(var/obj/item/weapon/implant/W in Mo) implants += W @@ -486,7 +486,7 @@ if(!connected) for(var/obj/item/W in (Mo.contents-implants)) Mo.unEquip(W) - M.monkeyizing = 1 + M.notransform = 1 M.canmove = 0 M.icon = null M.invisibility = 101 diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index 03ca9880c2c..c10178b285a 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -12,7 +12,7 @@ // testing("Cannot monkey-ify [M], type is [M.type].") return var/mob/living/carbon/human/H = M - H.monkeyizing = 1 + H.notransform = 1 var/list/implants = list() //Try to preserve implants. for(var/obj/item/weapon/implant/W in H) implants += W @@ -23,7 +23,7 @@ if (W==H.w_uniform) // will be teared continue H.unEquip(W) - M.monkeyizing = 1 + M.notransform = 1 M.canmove = 0 M.icon = null M.invisibility = 101 @@ -86,7 +86,7 @@ testing("Cannot humanize [M], type is [M.type].") return var/mob/living/carbon/monkey/Mo = M - Mo.monkeyizing = 1 + Mo.notransform = 1 var/list/implants = list() //Still preserving implants for(var/obj/item/weapon/implant/W in Mo) implants += W @@ -94,7 +94,7 @@ if(!connected) for(var/obj/item/W in (Mo.contents-implants)) Mo.unEquip(W) - M.monkeyizing = 1 + M.notransform = 1 M.canmove = 0 M.icon = null M.invisibility = 101 diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index a769ee47bd0..09751412a30 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -23,7 +23,7 @@ for(var/obj/item/weapon/implant/W in C) implants += W - C.monkeyizing = 1 + C.notransform = 1 C.canmove = 0 C.icon = null C.overlays.Cut() diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index c14ad379d68..ccdfed9baec 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -41,7 +41,7 @@ Made by Xhuis /datum/game_mode var/list/datum/mind/shadows = list() - var/list/datum/mind/thralls = list() + var/list/datum/mind/shadowling_thralls = list() var/list/shadow_objectives = list() var/required_thralls = 15 //How many thralls are needed (hardcoded for now) var/shadowling_ascended = 0 //If at least one shadowling has ascended @@ -49,11 +49,11 @@ Made by Xhuis /proc/is_thrall(var/mob/living/M) - return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.thralls) + return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.shadowling_thralls) /proc/is_shadow_or_thrall(var/mob/living/M) - return istype(M) && M.mind && ticker && ticker.mode && ((M.mind in ticker.mode.thralls) || (M.mind in ticker.mode.shadows)) + return istype(M) && M.mind && ticker && ticker.mode && ((M.mind in ticker.mode.shadowling_thralls) || (M.mind in ticker.mode.shadows)) /proc/is_shadow(var/mob/living/M) @@ -63,7 +63,6 @@ Made by Xhuis /datum/game_mode/shadowling name = "shadowling" config_tag = "shadowling" - antag_flag = BE_SHADOWLING required_players = 30 required_enemies = 2 recommended_enemies = 2 @@ -78,20 +77,22 @@ Made by Xhuis if(config.protect_roles_from_antagonist) restricted_jobs += protected_jobs - if(config.protect_assistant_from_antagonist) - restricted_jobs += "Assistant" + var/list/datum/mind/possible_shadowlings = get_players_for_role(BE_SHADOWLING) - for(var/datum/mind/player in antag_candidates) + if(!possible_shadowlings.len) + return 0 + + for(var/datum/mind/player in possible_shadowlings) for(var/job in restricted_jobs) if(player.assigned_role == job) - antag_candidates -= player + possible_shadowlings -= player var/shadowlings = 2 //How many shadowlings there are; hardcoded to 2 while(shadowlings) - var/datum/mind/shadow = pick(antag_candidates) + var/datum/mind/shadow = pick(possible_shadowlings) shadows += shadow - antag_candidates -= shadow + possible_shadowlings -= shadow modePlayer += shadow shadow.special_role = "Shadowling" shadowlings-- @@ -130,17 +131,17 @@ 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.current.verbs += /mob/living/carbon/human/proc/shadowling_hatch - shadow_mind.spell_list += new /obj/effect/proc_holder/spell/targeted/enthrall - shadow_mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind + S.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/enthrall + S.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind if(shadow_mind.assigned_role == "Clown") S << "Your alien nature has allowed you to overcome your clownishness." - S.dna.remove_mutation(CLOWNMUT) + S.mutations.Remove(CLUMSY) /datum/game_mode/proc/add_thrall(datum/mind/new_thrall_mind) if (!istype(new_thrall_mind)) return 0 - if(!(new_thrall_mind in thralls)) - thralls += new_thrall_mind + if(!(new_thrall_mind in shadowling_thralls)) + shadowling_thralls += new_thrall_mind new_thrall_mind.current.attack_log += "\[[time_stamp()]\] Became a thrall" return 1 @@ -174,11 +175,11 @@ Made by Xhuis /datum/game_mode/shadowling/declare_completion() - if(check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) //Doesn't end instantly - this is hacky and I don't know of a better way ~X + if(check_shadow_victory() && emergency_shuttle.returned()) //Doesn't end instantly - this is hacky and I don't know of a better way ~X world << "The shadowlings have ascended and taken over the station!" else if(shadowling_dead && !check_shadow_victory()) //If the shadowlings have ascended, they can not lose the round world << "The shadowlings have been killed by the crew!" - else if(!check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) + else if(!check_shadow_victory() && emergency_shuttle.returned()) world << "The crew has escaped the station before the shadowlings could ascend!" ..() return 1 @@ -189,13 +190,32 @@ Made by Xhuis if(shadows.len) text += "
The shadowlings were:" for(var/datum/mind/shadow in shadows) - text += printplayer(shadow) - if(thralls.len) + text += "
[shadow.key] was [shadow.name] (" + if(shadow.current) + if(shadow.current.stat == DEAD) + text += "died" + else + text += "survived" + if(shadow.current.real_name != shadow.name) + text += " as [shadow.current.real_name]" + else + text += "body destroyed" + text += ")" + if(shadowling_thralls.len) text += "
The thralls were:" - for(var/datum/mind/thrall in thralls) - text += printplayer(thrall) + for(var/datum/mind/thrall in shadowling_thralls) + text += "
[thrall.key] was [thrall.name] (" + if(thrall.current) + if(thrall.current.stat == DEAD) + text += "died" + else + text += "survived" + if(thrall.current.real_name != thrall.name) + text += " as [thrall.current.real_name]" + else + text += "body destroyed" else - world << "Round-end code broke! Please report this and its circumstances on GitHub at https://github.com/tgstation/-tg-station/issues" + world << "Round-end code broke! Please report this and its circumstances on GitHub at https://github.com/ParadiseSS13/Paradise/issues" text += "
" world << text @@ -205,31 +225,12 @@ Made by Xhuis */ -/datum/species/shadow/ling +/datum/species/shadowling //Normal shadowpeople but with enhanced effects name = "Shadowling" - id = "shadowling" - say_mod = "chitters" - specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,NOGUNS) //Can't use guns due to muzzle flash - burnmod = 2 //2x burn damage lel - heatmod = 2 - -/datum/species/shadow/ling/spec_life(mob/living/carbon/human/H) - //H.shadowling_status = 1 //If they are affected more strongly by flashes and stuff - var/light_amount = 0 - H.nutrition = NUTRITION_LEVEL_WELL_FED //i aint never get hongry - if(isturf(H.loc)) //Copypasta - var/turf/T = H.loc - var/area/A = T.loc - 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... - H.take_overall_damage(0,6) - H << "The light burns you!" - 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) - H.SetWeakened(0) - H.SetStunned(0) + flags = NO_BREATHE | NO_BLOOD | RAD_IMMUNE | REQUIRE_DARK + burn_mod = 2 //2x burn damage + //heatmod = 2 + blood_color = "#000000" + flesh_color = "#000000" + darksight = 8 diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index baf3d70c4b2..7f1311f7cd8 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -1,11 +1,11 @@ -/obj/effect/proc_holder/spell/targeted/glare +/obj/effect/proc_holder/spell/wizard/targeted/glare name = "Glare" desc = "Stuns and mutes a target for a decent duration." panel = "Shadowling Abilities" charge_max = 300 clothes_req = 0 -/obj/effect/proc_holder/spell/targeted/glare/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/glare/cast(list/targets) for(var/mob/living/carbon/human/target in targets) if(!ishuman(target)) charge_counter = charge_max @@ -30,7 +30,7 @@ -/obj/effect/proc_holder/spell/aoe_turf/veil +/obj/effect/proc_holder/spell/wizard/aoe_turf/veil name = "Veil" desc = "Extinguishes all electronic lights in a decent radius." panel = "Shadowling Abilities" @@ -38,7 +38,7 @@ clothes_req = 0 range = 5 -/obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/aoe_turf/veil/cast(list/targets) usr << "You silently disable all nearby lights." var/list/blacklisted_lights = list(/obj/item/device/flashlight/flare, /obj/item/device/flashlight/slime) for(var/turf/T in targets) @@ -59,7 +59,7 @@ -/obj/effect/proc_holder/spell/targeted/shadow_walk +/obj/effect/proc_holder/spell/wizard/targeted/shadow_walk name = "Shadow Walk" desc = "Phases you into the space between worlds for a short time, allowing movement through walls and invisbility." panel = "Shadowling Abilities" @@ -68,7 +68,7 @@ range = -1 include_user = 1 -/obj/effect/proc_holder/spell/targeted/shadow_walk/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/shadow_walk/cast(list/targets) for(var/mob/living/user in targets) playsound(user.loc, 'sound/effects/bamf.ogg', 50, 1) user.visible_message("[user] vanishes into thin air!", "You enter the space between worlds as a passageway.") @@ -77,7 +77,7 @@ user.incorporeal_move = 1 user.alpha = 0 if(user.buckled) - user.buckled.unbuckle_mob() + user.buckled.unbuckle() sleep(40) //4 seconds user.visible_message("[user] appears out of nowhere!", "The pressure becomes too much and you vacate the interdimensional darkness.") user.incorporeal_move = 0 @@ -85,7 +85,7 @@ -/obj/effect/proc_holder/spell/aoe_turf/flashfreeze +/obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze name = "Flash Freeze" desc = "Instantly freezes the blood of nearby people, stunning them and causing burn damage." panel = "Shadowling Abilities" @@ -93,7 +93,7 @@ charge_max = 1200 clothes_req = 0 -/obj/effect/proc_holder/spell/aoe_turf/flashfreeze/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze/cast(list/targets) usr << "You freeze the nearby air." playsound(usr.loc, 'sound/effects/ghost2.ogg', 50, 1) @@ -115,7 +115,7 @@ //Enthrall is the single most important spell -/obj/effect/proc_holder/spell/targeted/enthrall +/obj/effect/proc_holder/spell/wizard/targeted/enthrall 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" @@ -124,7 +124,7 @@ range = 1 //Adjacent to user var/enthralling = 0 -/obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/enthrall/cast(list/targets) for(var/mob/living/carbon/human/target in targets) if(!in_range(usr, target)) usr << "You need to be closer to enthrall [target]." @@ -183,12 +183,11 @@ target.adjustOxyLoss(-200) //In case the shadowling was choking them out ticker.mode.add_thrall(target.mind) target.mind.special_role = "Thrall" - var/datum/mind/thrall_mind = target.mind - thrall_mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind //Lets thralls hive-chat + target.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind //Lets thralls hive-chat -/obj/effect/proc_holder/spell/targeted/shadowling_hivemind +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind name = "Hivemind Commune" desc = "Allows you to silently communicate with all other shadowlings and thralls." panel = "Shadowling Abilities" @@ -197,7 +196,7 @@ range = -1 include_user = 1 -/obj/effect/proc_holder/spell/targeted/shadowling_hivemind/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind/cast(list/targets) for(var/mob/living/user in targets) var/text = stripped_input(user, "What do you want to say to fellow thralls and shadowlings?.", "Hive Chat", "") if(!text) @@ -208,7 +207,7 @@ -/obj/effect/proc_holder/spell/targeted/collective_mind +/obj/effect/proc_holder/spell/wizard/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." panel = "Shadowling Abilities" @@ -221,7 +220,7 @@ var/drain_thrall_acquired var/thrall_swap_acquired -/obj/effect/proc_holder/spell/targeted/collective_mind/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/collective_mind/cast(list/targets) for(var/mob/living/user in targets) var/thralls = 0 var/victory_threshold = 15 @@ -242,23 +241,23 @@ 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.spell_list += new /obj/effect/proc_holder/spell/targeted/blindness_smoke + user.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke if(thralls >= 5 && !drain_thrall_acquired) drain_thrall_acquired = 1 user << "The power of your thralls has granted you the Drain Thrall ability. You can now drain nearby thralls to heal yourself." - user.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/drain_thralls + user.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/drain_thralls 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." - user.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech + user.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech if(thralls >= 10 && !thrall_swap_acquired) thrall_swap_acquired = 1 user << "The power of your thralls has granted you the Spatial Relocation ability. This will, allow you to instantly swap places with one of your thralls in \ addition to shattering nearby lights." - user.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/spatial_relocation + user.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/spatial_relocation 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." @@ -268,7 +267,7 @@ usr << "You may find Ascendance in the Shadowling Evolution tab." for(M in living_mob_list) if(is_shadow(M)) - M.mind.spell_list -= /obj/effect/proc_holder/spell/targeted/collective_mind + M.mind.current.spell_list -= /obj/effect/proc_holder/spell/wizard/targeted/collective_mind M.mind.current.verbs -= /mob/living/carbon/human/proc/shadowling_hatch //In case a shadowling hasn't hatched M.mind.current.verbs += /mob/living/carbon/human/proc/shadowling_ascendance if(M == usr) @@ -277,7 +276,7 @@ -/obj/effect/proc_holder/spell/targeted/blindness_smoke +/obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke name = "Blindness Smoke" desc = "Spews a cloud of smoke which will blind enemies." panel = "Shadowling Abilities" @@ -286,7 +285,7 @@ range = -1 include_user = 1 -/obj/effect/proc_holder/spell/targeted/blindness_smoke/cast(list/targets) //Extremely hacky +/obj/effect/proc_holder/spell/wizard/targeted/blindness_smoke/cast(list/targets) //Extremely hacky 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." @@ -329,7 +328,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech +/obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech name = "Sonic Screech" desc = "Deafens, stuns, and confuses nearby people. Also shatters windows." panel = "Shadowling Abilities" @@ -337,7 +336,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 300 clothes_req = 0 -/obj/effect/proc_holder/spell/aoe_turf/unearthly_screech/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/aoe_turf/unearthly_screech/cast(list/targets) usr.audible_message("[usr] lets out a horrible scream!") playsound(usr.loc, 'sound/effects/screech.ogg', 100, 1) @@ -353,7 +352,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) M << "A spike of pain drives into your head and scrambles your thoughts!" M.Weaken(2) M.confused += 10 - M.setEarDamage(M.ear_damage + 3) + M.ear_damage += 3 else if(issilicon(target)) var/mob/living/silicon/S = target S << "ERROR $!(@ ERROR )#^! SENSOR INTERFERENCE DETECTED" @@ -368,7 +367,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/aoe_turf/drain_thralls +/obj/effect/proc_holder/spell/wizard/aoe_turf/drain_thralls name = "Drain Thralls" desc = "Damages nearby thralls, draining their life and healing yourself." panel = "Shadowling Abilities" @@ -378,7 +377,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) var/thralls_drained = 0 var/list/nearby_thralls = list() -/obj/effect/proc_holder/spell/aoe_turf/drain_thralls/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/aoe_turf/drain_thralls/cast(list/targets) thralls_drained = 0 nearby_thralls = list() for(var/turf/T in targets) @@ -400,7 +399,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/targeted/spatial_relocation +/obj/effect/proc_holder/spell/wizard/targeted/spatial_relocation name = "Spatial Relocation" desc = "Swaps places with a thrall and breaks nearby lights." panel = "Shadowling Abilities" @@ -410,7 +409,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) include_user = 1 var/list/thralls_in_world = list() -/obj/effect/proc_holder/spell/targeted/spatial_relocation/cast(list/targets, distanceoverride) +/obj/effect/proc_holder/spell/wizard/targeted/spatial_relocation/cast(list/targets, distanceoverride) for(var/mob/living/carbon/human/M in world) if(is_thrall(M)) thralls_in_world += M @@ -433,7 +432,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) // ASCENDANT ABILITIES BEYOND THIS POINT // -/obj/effect/proc_holder/spell/targeted/annihilate +/obj/effect/proc_holder/spell/wizard/targeted/annihilate name = "Annihilate" desc = "Gibs a human after a short time." panel = "Ascendant" @@ -441,7 +440,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 300 clothes_req = 0 -/obj/effect/proc_holder/spell/targeted/annihilate/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/annihilate/cast(list/targets) var/mob/living/simple_animal/ascendant_shadowling/SHA = usr if(SHA.phasing) usr << "You are not in the same plane of existence. Unphase first." @@ -465,7 +464,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/targeted/hypnosis +/obj/effect/proc_holder/spell/wizard/targeted/hypnosis name = "Hypnosis" desc = "Instantly enthralls a human." panel = "Ascendant" @@ -473,7 +472,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 450 clothes_req = 0 -/obj/effect/proc_holder/spell/targeted/hypnosis/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/hypnosis/cast(list/targets) var/mob/living/simple_animal/ascendant_shadowling/SHA = usr if(SHA.phasing) charge_counter = charge_max @@ -506,12 +505,11 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) target << "You can communicate with the other enlightened ones by using the Hivemind Commune ability." ticker.mode.add_thrall(target.mind) target.mind.special_role = "Thrall" - var/datum/mind/thrall_mind = target.mind - thrall_mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind + target.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind -/obj/effect/proc_holder/spell/targeted/shadowling_phase_shift +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift name = "Phase Shift" desc = "Phases you into the space between worlds at will, allowing you to move through walls and become invisible." panel = "Ascendant" @@ -520,7 +518,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 15 clothes_req = 0 -/obj/effect/proc_holder/spell/targeted/shadowling_phase_shift/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift/cast(list/targets) var/mob/living/simple_animal/ascendant_shadowling/SHA = usr for(SHA in targets) SHA.phasing = !SHA.phasing @@ -537,7 +535,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/aoe_turf/glacial_blast +/obj/effect/proc_holder/spell/wizard/aoe_turf/glacial_blast name = "Glacial Blast" desc = "Extremely empowered version of Flash Freeze." panel = "Ascendant" @@ -545,7 +543,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 600 clothes_req = 0 -/obj/effect/proc_holder/spell/aoe_turf/glacial_blast/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/aoe_turf/glacial_blast/cast(list/targets) var/mob/living/simple_animal/ascendant_shadowling/SHA = usr if(SHA.phasing) usr << "You are not in the same plane of existence. Unphase first." @@ -570,7 +568,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/targeted/vortex +/obj/effect/proc_holder/spell/wizard/targeted/vortex name = "Vortex" desc = "Tears open a hole in reality. Anyone, INCLUDING YOU, walking through it will be trapped there for eternity." panel = "Ascendant" @@ -579,7 +577,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) charge_max = 1200 clothes_req = 0 -/obj/effect/proc_holder/spell/targeted/vortex/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/vortex/cast(list/targets) var/mob/living/simple_animal/ascendant_shadowling/SHA = usr if(SHA.phasing) usr << "You are not in the same plane of existence. Unphase first." @@ -593,7 +591,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) -/obj/effect/proc_holder/spell/targeted/shadowling_hivemind_ascendant +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind_ascendant name = "Ascendant Commune" desc = "Allows you to silently communicate with all other shadowlings and thralls." panel = "Ascendant" @@ -602,7 +600,7 @@ datum/reagent/shadowling_blindness_smoke/on_mob_life(var/mob/living/M as mob) range = -1 include_user = 1 -/obj/effect/proc_holder/spell/targeted/shadowling_hivemind_ascendant/cast(list/targets) +/obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind_ascendant/cast(list/targets) for(var/mob/living/user in targets) var/text = stripped_input(user, "What do you want to say to fellow thralls and shadowlings?.", "Hive Chat", "") if(!text) diff --git a/code/game/gamemodes/shadowling/shadowling_items.dm b/code/game/gamemodes/shadowling/shadowling_items.dm index 683d0a4bb81..e717bb8d6bb 100644 --- a/code/game/gamemodes/shadowling/shadowling_items.dm +++ b/code/game/gamemodes/shadowling/shadowling_items.dm @@ -16,7 +16,7 @@ item_state = "golem" body_parts_covered = FULL_BODY //Shadowlings are immune to space cold_protection = FULL_BODY - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT flags = ABSTRACT | NODROP | THICKMATERIAL slowdown = 0 @@ -74,8 +74,7 @@ origin_tech = null vision_flags = SEE_MOBS darkness_view = 3 - invis_view = 2 - flash_protect = 2 + invisa_view = 2 unacidable = 1 flags = ABSTRACT | NODROP @@ -89,7 +88,7 @@ /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/supermatter.ogg', 100, 1) + playsound(loc, 'sound/effects/eleczap.ogg', 100, 1) sleep(100) qdel(src) diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 472bee1cd61..b8c106149bc 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -66,7 +66,6 @@ var/mob/living/carbon/human/M = usr M.underwear = "Nude" M.undershirt = "Nude" - M.socks = "Nude" M.faction |= "faithless" usr.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(usr), slot_w_uniform) @@ -76,15 +75,15 @@ usr.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(usr), slot_gloves) usr.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(usr), slot_wear_mask) usr.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/shadowling(usr), slot_glasses) - hardset_dna(usr, null, null, null, null, /datum/species/shadow/ling) //can't be a shadowling without being a shadowling + set_species("Shadowling") sleep(10) usr << "Your powers are awoken. You may now live to your fullest extent. Remember your goal. Cooperate with your thralls and allies." - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/glare - usr.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/veil - 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.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/glare + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/veil + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadow_walk + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/flashfreeze + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/collective_mind @@ -141,14 +140,15 @@ for(var/obj/machinery/power/apc/A in world) A.overload_lighting() var/mob/A = new /mob/living/simple_animal/ascendant_shadowling(usr.loc) - usr.mind.spell_list = list() - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/annihilate - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/hypnosis - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_phase_shift - usr.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/glacial_blast - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/vortex - usr.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind_ascendant + usr.spell_list = list() + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/annihilate + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/hypnosis + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_phase_shift + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/aoe_turf/glacial_blast + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/vortex + usr.spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/shadowling_hivemind_ascendant usr.mind.transfer_to(A) + A.spell_list = usr.spell_list A.name = usr.real_name if(A.real_name) A.real_name = usr.real_name @@ -157,5 +157,7 @@ usr.notransform = 1 sleep(50) if(!ticker.mode.shadowling_ascended) - SSshuttle.emergency.request(null, 0.3) + if(emergency_shuttle && emergency_shuttle.can_call()) + emergency_shuttle.call_evac() + emergency_shuttle.launch_time = 0 // Cannot recall qdel(usr) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 43311ce8eb7..ac469958f03 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -442,7 +442,7 @@ src.occupant.loc = src.loc src.icon_state = "pod_0" src.eject_wait = 0 //If it's still set somehow. - domutcheck(src.occupant) //Waiting until they're out before possible monkeyizing. + domutcheck(src.occupant) //Waiting until they're out before possible notransform. src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free. src.occupant = null diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index a453aea9eb2..a3d862afce6 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -502,10 +502,10 @@ dat += check_role_table("Traitors", ticker.mode.traitors, src) if(ticker.mode.shadows.len) - dat += check_role_table("Shadowlings", ticker.mode.shadowlings, src) + dat += check_role_table("Shadowlings", ticker.mode.shadows, src) if(ticker.mode.thralls.len) - dat += check_role_table("Shadowling Thralls", ticker.thralls, src) + dat += check_role_table("Shadowling Thralls", ticker.mode.thralls, src) if(ticker.mode.vampires.len) dat += check_role_table("Vampires", ticker.mode.vampires, src) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1c3beb5d72f..cb59d0f3282 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -17,13 +17,14 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set "raider" = IS_MODE_COMPILED("heist"), // 1024 / 11 "vampire" = IS_MODE_COMPILED("vampire"), // 2048 / 12 "mutineer" = IS_MODE_COMPILED("mutiny"), // 4096 / 13 - "blob" = IS_MODE_COMPILED("blob") // 8192 / 14 + "blob" = IS_MODE_COMPILED("blob"), // 8192 / 14 "shadowling" = IS_MODE_COMPILED("shadowling") //16384 / 15 ) var/global/list/special_role_times = list( //minimum age (in days) for accounts to play these roles num2text(BE_PAI) = 0, num2text(BE_TRAITOR) = 7, num2text(BE_CHANGELING) = 14, + num2text(BE_SHADOWLING) = 14, num2text(BE_WIZARD) = 14, num2text(BE_REV) = 14, num2text(BE_VAMPIRE) = 14, diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index cb72116b04a..e6107b4cca2 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -3,7 +3,7 @@ /mob/proc/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -31,7 +31,7 @@ /mob/proc/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -54,7 +54,7 @@ /mob/proc/melt() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 1ae09f9f161..c72220790d1 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/alien/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -22,7 +22,7 @@ /mob/living/carbon/alien/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 6990eaa9223..9d49b633990 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -53,7 +53,7 @@ /mob/living/carbon/alien/humanoid/regenerate_icons() ..() - if (monkeyizing) return + if (notransform) return update_inv_head(0,0) update_inv_wear_suit(0,0) diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 897b03c8a14..24b900a7a2d 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -19,7 +19,7 @@ /mob/living/carbon/brain/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 5c5f877ef74..fbabf1b761b 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/human/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -37,7 +37,7 @@ /mob/living/carbon/human/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -57,7 +57,7 @@ /mob/living/carbon/human/melt() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 56d0f59048d..747ecbb37d9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1042,6 +1042,8 @@ number += 1 if(istype(src.glasses, /obj/item/clothing/glasses/hud/health_advanced)) // New blueshield / brig phys no flash medi hud number += 1 + if(istype(src.glasses, /obj/item/clothing/glasses/night/shadowling)) + number += 2 if(istype(src.glasses, /obj/item/clothing/glasses/welding)) var/obj/item/clothing/glasses/welding/W = src.glasses if(!W.up) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 94f4a93d38b..ff4ad8738b0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -41,7 +41,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc set invisibility = 0 //set background = 1 - if (monkeyizing) return + if (notransform) return if(!loc) return // Fixing a null error that occurs when the mob isn't found in the world -- TLE ..() @@ -254,7 +254,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if (radiation) if (radiation > 100) radiation = 100 - if(!(species.flags & RAD_ABSORB)) + if(!(species.flags & RAD_ABSORB) && !(species.flags & RAD_IMMUNE)) Weaken(10) if(!lying) src << "\red You feel weak." @@ -274,6 +274,8 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc adjustToxLoss(-(rads)) updatehealth() return + if(species.flags & RAD_IMMUNE) + return var/damage = 0 switch(radiation) @@ -807,6 +809,24 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //adjustToxLoss(-(light_amount)) adjustOxyLoss(-(light_amount)) //TODO: heal wounds, heal broken limbs. + if(species.flags & REQUIRE_DARK) + var/light_amount = 0 + nutrition = 450 //i aint never get hongry + if(isturf(src.loc)) //Copypasta + var/turf/T = loc + var/area/A = T.loc + 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... + take_overall_damage(0,6) + src << "The light burns you!" + src << 'sound/weapons/sear.ogg' + else if (light_amount < 2) //...extreme benefits while in the dark + heal_overall_damage(5,3) + adjustToxLoss(-3) + SetWeakened(0) + SetStunned(0) if(dna && dna.mutantrace == "shadow") var/light_amount = 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 7223899e84e..d037bed10ae 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -485,7 +485,7 @@ proc/get_damage_icon_part(damage_state, body_part) //For legacy support. /mob/living/carbon/human/regenerate_icons() ..() - if(monkeyizing) return + if(notransform) return update_mutations(0) update_mutantrace(0) update_inv_w_uniform(0,0) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 6ea67b70c6c..57013309cab 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -9,7 +9,7 @@ set invisibility = 0 //set background = 1 - if (src.monkeyizing) + if (src.notransform) return ..() diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index 8e982eb9356..0c3ef632cca 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,7 +1,7 @@ /mob/living/carbon/monkey/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -21,7 +21,7 @@ /mob/living/carbon/monkey/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 51162a425ff..7f7ac0d911d 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -12,7 +12,7 @@ /mob/living/carbon/monkey/Life() set invisibility = 0 //set background = 1 - if (monkeyizing) return + if (notransform) return if (update_muts) update_muts=0 domutcheck(src,null,MUTCHK_FORCED) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2901ae318aa..a1b4e4f37d9 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1,7 +1,7 @@ /mob/living/Life() ..() - if (monkeyizing) return + if (notransform) return if(!loc) return // Fixing a null error that occurs when the mob isn't found in the world -- TLE if(mind) if(mind in ticker.mode.implanted) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 45b0268437d..c8c7e41d94e 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,7 +1,7 @@ /mob/living/silicon/gib() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -22,7 +22,7 @@ /mob/living/silicon/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/silicon/mommi/life.dm b/code/modules/mob/living/silicon/mommi/life.dm index eb7aa1dd700..04ab3871af6 100644 --- a/code/modules/mob/living/silicon/mommi/life.dm +++ b/code/modules/mob/living/silicon/mommi/life.dm @@ -2,7 +2,7 @@ set invisibility = 0 set background = 1 - if (src.monkeyizing) + if (src.notransform) return diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index fef353eec6d..c73bf68f1ab 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/gib() //robots don't die when gibbed. instead they drop their MMI'd brain var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -23,7 +23,7 @@ /mob/living/silicon/robot/dust() death(1) var/atom/movable/overlay/animation = null - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 3810dba4e34..89391a1717c 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -2,7 +2,7 @@ set invisibility = 0 //set background = 1 - if (src.monkeyizing) + if (src.notransform) return src.blinded = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3af5be404dc..ac726058103 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1023,7 +1023,7 @@ var/list/slot_equipment_priority = list( \ if(world.time < client.move_delay) return 0 if(stat==2) return 0 if(anchored) return 0 - if(monkeyizing) return 0 + if(notransform) return 0 if(restrained()) return 0 return 1 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f26d26d2470..f43759f4279 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -57,7 +57,7 @@ var/disabilities = 0 //Carbon var/atom/movable/pulling = null var/next_move = null - var/monkeyizing = null //Carbon + var/notransform = null //Carbon var/other = 0.0 var/hand = null var/eye_blind = null //Carbon diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 784ae01d668..a50d948dc3b 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -190,7 +190,7 @@ if(isAI(mob)) return AIMove(n,direct,mob) - if(mob.monkeyizing) return//This is sota the goto stop mobs from moving var + if(mob.notransform) return//This is sota the goto stop mobs from moving var if(isliving(mob)) var/mob/living/L = mob diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 04a57404dca..64149efe61a 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -5,14 +5,14 @@ /* /mob/living/carbon/human/proc/monkeyize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) if (W==w_uniform) // will be torn continue unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 stunned = 1 icon = null @@ -62,7 +62,7 @@ return ..() /mob/living/carbon/human/AIize(move=1) // 'move' argument needs defining here too because BYOND is dumb - if (monkeyizing) + if (notransform) return for(var/t in organs) del(t) @@ -70,11 +70,11 @@ return ..(move) /mob/living/carbon/AIize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) unEquip(W) - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -178,12 +178,12 @@ //human -> robot /mob/living/carbon/human/proc/Robotize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -236,12 +236,12 @@ //human -> alien /mob/living/carbon/human/proc/Alienize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -267,12 +267,12 @@ return /mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -302,12 +302,12 @@ return /mob/living/carbon/human/proc/corgize() - if (monkeyizing) + if (notransform) return for(var/obj/item/W in src) unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 @@ -332,13 +332,13 @@ usr << "\red Sorry but this mob type is currently unavailable." return - if(monkeyizing) + if(notransform) return for(var/obj/item/W in src) unEquip(W) regenerate_icons() - monkeyizing = 1 + notransform = 1 canmove = 0 icon = null invisibility = 101 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 36e0ecaff12..40c9999e84e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -107,6 +107,8 @@ if(user.dna && user.dna.mutantrace == "adamantine") user << "\red Your metal fingers don't fit in the trigger guard!" return + if(user.dna && user.dna.species == "Shadowling") + user << "The muzzle flash would cause damage to your form!" add_fingerprint(user) @@ -128,7 +130,7 @@ if(!in_chamber) return - + if(heavy_weapon) if(user.get_inactive_hand()) recoil = 4 //one-handed kick @@ -154,7 +156,7 @@ user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ "You fire [src][reflex ? "by reflex":""]!", \ "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - + if(heavy_weapon) if(user.get_inactive_hand()) if(prob(15)) diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index a0b96353d4e..23f44bf19da 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -12,8 +12,8 @@ /obj/item/projectile/change/proc/wabbajack (mob/M as mob in living_mob_list) if(istype(M, /mob/living) && M.stat != DEAD) - if(M.monkeyizing) return - M.monkeyizing = 1 + if(M.notransform) return + M.notransform = 1 M.canmove = 0 M.icon = null M.overlays.Cut() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 28bdf2961e2..1066c294a13 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -127,8 +127,8 @@ proc/wabbajack(mob/living/M) if(istype(M)) if(istype(M, /mob/living) && M.stat != DEAD) - if(M.monkeyizing) return - M.monkeyizing = 1 + if(M.notransform) return + M.notransform = 1 M.canmove = 0 M.icon = null M.overlays.Cut() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 09d27ee57dc..13908b9db2d 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -376,8 +376,8 @@ datum if(!M) M = holder.my_atom if(istype(M, /mob/living/carbon) && M.stat != DEAD) M << "\red Your flesh rapidly mutates!" - if(M.monkeyizing) return - M.monkeyizing = 1 + if(M.notransform) return + M.notransform = 1 M.canmove = 0 M.icon = null M.overlays.Cut() diff --git a/code/setup.dm b/code/setup.dm index 6fad89ebc38..dd3f8c6c570 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -832,7 +832,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define IS_SLOW 4 #define RAD_ABSORB 8 #define NO_SCAN 16 -#define NO_PAIN 32 +#define NO_PAIN 32 #define REQUIRE_LIGHT 64 #define IS_WHITELISTED 128 #define HAS_LIPS 512 @@ -840,8 +840,10 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define IS_SYNTHETIC 2048 #define IS_PLANT 4096 #define CAN_BE_FAT 8192 -#define HAS_CHITTIN 16384 -#define NO_INTORGANS 32768 +#define NO_INTORGANS 16384 +#define RAD_IMMUNE 32768 +#define REQUIRE_DARK 65536 + //Species Blood Flags #define BLOOD_SLIME 1