Merge pull request #6709 from VOREStation/aro-mistake

Fix way too many vorestation edits
This commit is contained in:
Novacat
2020-03-05 19:03:58 -05:00
committed by GitHub
31 changed files with 87 additions and 228 deletions

View File

@@ -134,12 +134,6 @@
// A is a turf or is on a turf, or in something on a turf (pen in a box); but not something in something on a turf (pen in a box in a backpack) // A is a turf or is on a turf, or in something on a turf (pen in a box); but not something in something on a turf (pen in a box in a backpack)
sdepth = A.storage_depth_turf() sdepth = A.storage_depth_turf()
if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1)) if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1))
//VOREStation Edit begin: SHADEKIN
var/mob/SK = src
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(A.Adjacent(src) || (W && W.attack_can_reach(src, A, W.reach)) ) // see adjacent.dm if(A.Adjacent(src) || (W && W.attack_can_reach(src, A, W.reach)) ) // see adjacent.dm
if(W) if(W)
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
@@ -188,6 +182,9 @@
/mob/living/UnarmedAttack(var/atom/A, var/proximity_flag) /mob/living/UnarmedAttack(var/atom/A, var/proximity_flag)
if(is_incorporeal())
return 0
if(!ticker) if(!ticker)
to_chat(src, "You cannot attack people before the game has started.") to_chat(src, "You cannot attack people before the game has started.")
return 0 return 0

View File

@@ -138,12 +138,8 @@
return return
/obj/effect/ebeam/deadly/Crossed(atom/A) /obj/effect/ebeam/deadly/Crossed(atom/A)
//VOREStation Edit begin: SHADEKIN if(A.is_incorporeal())
var/mob/SK = A return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
..() ..()
A.ex_act(1) A.ex_act(1)
@@ -163,12 +159,8 @@
on_contact(A) on_contact(A)
/obj/effect/ebeam/reactive/Crossed(atom/A) /obj/effect/ebeam/reactive/Crossed(atom/A)
//VOREStation Edit begin: SHADEKIN if(A.is_incorporeal())
var/mob/SK = A return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
..() ..()
on_contact(A) on_contact(A)

View File

@@ -519,6 +519,9 @@
return TRUE return TRUE
return FALSE return FALSE
/atom/proc/is_incorporeal()
return FALSE
/atom/proc/drop_location() /atom/proc/drop_location()
var/atom/L = loc var/atom/L = loc
if(!L) if(!L)

View File

@@ -132,22 +132,6 @@
anchored = 1.0 anchored = 1.0
var/spawnable = null var/spawnable = null
/obj/effect/gateway/Bumped(mob/M as mob|obj)
spawn(0)
return
return
/obj/effect/gateway/Crossed(AM as mob|obj)
//VOREStation Edit begin: SHADEKIN
var/mob/SK = AM
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
spawn(0)
return
return
/obj/effect/gateway/active /obj/effect/gateway/active
light_range=5 light_range=5
light_color="#ff0000" light_color="#ff0000"
@@ -176,12 +160,8 @@
qdel(src) qdel(src)
/obj/effect/gateway/active/Crossed(var/atom/A) /obj/effect/gateway/active/Crossed(var/atom/A)
//VOREStation Edit begin: SHADEKIN if(A.is_incorporeal())
var/mob/SK = A return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(!istype(A, /mob/living)) if(!istype(A, /mob/living))
return return

View File

@@ -74,12 +74,8 @@
qdel(src) qdel(src)
/obj/effect/effect/foam/Crossed(var/atom/movable/AM) /obj/effect/effect/foam/Crossed(var/atom/movable/AM)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(metal) if(metal)
return return
if(istype(AM, /mob/living)) if(istype(AM, /mob/living))

View File

@@ -70,12 +70,8 @@ var/global/list/image/splatter_cache=list()
desc = initial(desc) desc = initial(desc)
/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) /obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp)
//VOREStation Edit begin: SHADEKIN if(perp.is_incorporeal())
var/mob/SK = perp return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if (!istype(perp)) if (!istype(perp))
return return
if(amount < 1) if(amount < 1)

View File

@@ -185,12 +185,8 @@ steam.start() -- spawns the effect
qdel(src) qdel(src)
/obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob ) /obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob )
//VOREStation Edit begin: SHADEKIN if(M.is_incorporeal())
var/mob/SK = M return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
..() ..()
if(istype(M)) if(istype(M))
affect(M) affect(M)

View File

@@ -35,13 +35,9 @@
explode() explode()
..() ..()
/obj/effect/mine/Crossed(AM as mob|obj) /obj/effect/mine/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
Bumped(AM) Bumped(AM)
/obj/effect/mine/Bumped(mob/M as mob|obj) /obj/effect/mine/Bumped(mob/M as mob|obj)

View File

@@ -20,13 +20,9 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
return return
return return
/obj/effect/portal/Crossed(AM as mob|obj) /obj/effect/portal/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(istype(AM,/mob) && !(istype(AM,/mob/living))) if(istype(AM,/mob) && !(istype(AM,/mob/living)))
return //do not send ghosts, zshadows, ai eyes, etc return //do not send ghosts, zshadows, ai eyes, etc
spawn(0) spawn(0)

View File

@@ -12,13 +12,9 @@
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A) /obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
return 0 return 0
/obj/effect/step_trigger/Crossed(H as mob|obj) /obj/effect/step_trigger/Crossed(atom/movable/H as mob|obj)
//VOREStation Edit begin: SHADEKIN if(H.is_incorporeal())
var/mob/SK = H return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
..() ..()
if(!H) if(!H)
return return

View File

@@ -1468,13 +1468,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
QDEL_NULL(src.pai) QDEL_NULL(src.pai)
return ..() return ..()
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. /obj/item/device/pda/clown/Crossed(atom/movable/AM as mob|obj) //Clown PDA is slippery.
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if (istype(AM, /mob/living)) if (istype(AM, /mob/living))
var/mob/living/M = AM var/mob/living/M = AM

View File

@@ -355,13 +355,9 @@
playsound(src, 'sound/effects/snap.ogg', 50, 1) playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src) qdel(src)
/obj/item/toy/snappop/Crossed(H as mob|obj) /obj/item/toy/snappop/Crossed(atom/movable/H as mob|obj)
//VOREStation Edit begin: SHADEKIN if(H.is_incorporeal())
var/mob/SK = H return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if((ishuman(H))) //i guess carp and shit shouldn't set them off if((ishuman(H))) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H var/mob/living/carbon/M = H
if(M.m_intent == "run") if(M.m_intent == "run")

View File

@@ -8,13 +8,9 @@
/* /*
* Banana Peals * Banana Peals
*/ */
/obj/item/weapon/bananapeel/Crossed(AM as mob|obj) /obj/item/weapon/bananapeel/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if (istype(AM, /mob/living)) if (istype(AM, /mob/living))
var/mob/living/M = AM var/mob/living/M = AM
M.slip("the [src.name]",4) M.slip("the [src.name]",4)
@@ -29,13 +25,9 @@
/obj/item/weapon/soap/proc/wet() /obj/item/weapon/soap/proc/wet()
reagents.add_reagent("cleaner", 5) reagents.add_reagent("cleaner", 5)
/obj/item/weapon/soap/Crossed(AM as mob|obj) /obj/item/weapon/soap/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if (istype(AM, /mob/living)) if (istype(AM, /mob/living))
var/mob/living/M = AM var/mob/living/M = AM
M.slip("the [src.name]",3) M.slip("the [src.name]",3)

View File

@@ -106,14 +106,10 @@
qdel(src) qdel(src)
return return
/obj/item/weapon/material/shard/Crossed(AM as mob|obj) /obj/item/weapon/material/shard/Crossed(atom/movable/AM as mob|obj)
..() ..()
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(isliving(AM)) if(isliving(AM))
var/mob/M = AM var/mob/M = AM

View File

@@ -107,13 +107,9 @@
deployed = 0 deployed = 0
can_buckle = initial(can_buckle) can_buckle = initial(can_buckle)
/obj/item/weapon/beartrap/Crossed(AM as mob|obj) /obj/item/weapon/beartrap/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(deployed && isliving(AM)) if(deployed && isliving(AM))
var/mob/living/L = AM var/mob/living/L = AM
if(L.m_intent == "run") if(L.m_intent == "run")

View File

@@ -87,14 +87,8 @@
return ..() return ..()
/obj/structure/catwalk/Crossed() /obj/structure/catwalk/Crossed()
//VOREStation Edit begin: SHADEKIN
var/mob/SK = usr
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
. = ..() . = ..()
if(isliving(usr)) if(isliving(usr) && !usr.is_incorporeal())
playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1)
/obj/structure/catwalk/CheckExit(atom/movable/O, turf/target) /obj/structure/catwalk/CheckExit(atom/movable/O, turf/target)

View File

@@ -104,12 +104,8 @@
/obj/item/device/assembly_holder/Crossed(atom/movable/AM as mob|obj) /obj/item/device/assembly_holder/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(a_left) if(a_left)
a_left.Crossed(AM) a_left.Crossed(AM)
if(a_right) if(a_right)

View File

@@ -242,12 +242,8 @@
return return
/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) /obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(istype(AM, /obj/effect/beam)) if(istype(AM, /obj/effect/beam))
return return
spawn(0) spawn(0)

View File

@@ -82,13 +82,9 @@
..() ..()
/obj/item/device/assembly/mousetrap/Crossed(AM as mob|obj) /obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(armed) if(armed)
if(ishuman(AM)) if(ishuman(AM))
var/mob/living/carbon/H = AM var/mob/living/carbon/H = AM

View File

@@ -157,12 +157,8 @@
overlays |= plant_icon overlays |= plant_icon
/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M) /obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M)
//VOREStation Edit begin: SHADEKIN if(M.is_incorporeal())
var/mob/SK = M return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(seed && seed.get_trait(TRAIT_JUICY) == 2) if(seed && seed.get_trait(TRAIT_JUICY) == 2)
if(istype(M)) if(istype(M))

View File

@@ -20,12 +20,8 @@
manual_unbuckle(user) manual_unbuckle(user)
/obj/effect/plant/Crossed(atom/movable/O) /obj/effect/plant/Crossed(atom/movable/O)
//VOREStation Edit begin: SHADEKIN if(O.is_incorporeal())
var/mob/SK = O return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(isliving(O)) if(isliving(O))
trodden_on(O) trodden_on(O)

View File

@@ -243,12 +243,8 @@
// this handles mulebots and vehicles // this handles mulebots and vehicles
// and now mobs on fire // and now mobs on fire
/mob/living/carbon/human/Crossed(var/atom/movable/AM) /mob/living/carbon/human/Crossed(var/atom/movable/AM)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if(istype(AM, /mob/living/bot/mulebot)) if(istype(AM, /mob/living/bot/mulebot))
var/mob/living/bot/mulebot/MB = AM var/mob/living/bot/mulebot/MB = AM
MB.runOver(src) MB.runOver(src)

View File

@@ -224,10 +224,8 @@
// Handle footstep sounds // Handle footstep sounds
/mob/living/carbon/human/handle_footstep(var/turf/T) /mob/living/carbon/human/handle_footstep(var/turf/T)
//VOREStation Edit begin: SHADEKIN if(is_incorporeal())
if(shadekin_phasing_check())
return return
//VOREStation Edit end: SHADEKIN
if(!config.footstep_volume || !T.footstep_sounds || !T.footstep_sounds.len) if(!config.footstep_volume || !T.footstep_sounds || !T.footstep_sounds.len)
return return
// Future Upgrades - Multi species support // Future Upgrades - Multi species support

View File

@@ -618,10 +618,8 @@
//Stuff like the xenomorph's plasma regen happens here. //Stuff like the xenomorph's plasma regen happens here.
species.handle_environment_special(src) species.handle_environment_special(src)
//VOREStation Edit begin: SHADEKIN if(is_incorporeal())
if(shadekin_phasing_check())
return return
//VOREStation Edit end: SHADEKIN
//Moved pressure calculations here for use in skip-processing check. //Moved pressure calculations here for use in skip-processing check.
var/pressure = environment.return_pressure() var/pressure = environment.return_pressure()

View File

@@ -1,5 +1,10 @@
/datum/power/shadekin /datum/power/shadekin
/mob/living/carbon/human/is_incorporeal()
if(ability_flags & AB_PHASE_SHIFTED) //Shadekin
return TRUE
return ..()
///////////////////// /////////////////////
/// PHASE SHIFT /// /// PHASE SHIFT ///
///////////////////// /////////////////////
@@ -62,6 +67,7 @@
//Shifting in //Shifting in
if(ability_flags & AB_PHASE_SHIFTED) if(ability_flags & AB_PHASE_SHIFTED)
ability_flags &= ~AB_PHASE_SHIFTED ability_flags &= ~AB_PHASE_SHIFTED
mouse_opacity = 2
name = real_name name = real_name
for(var/belly in vore_organs) for(var/belly in vore_organs)
var/obj/belly/B = belly var/obj/belly/B = belly
@@ -108,6 +114,7 @@
//Shifting out //Shifting out
else else
ability_flags |= AB_PHASE_SHIFTED ability_flags |= AB_PHASE_SHIFTED
mouse_opacity = 0
custom_emote(1,"phases out!") custom_emote(1,"phases out!")
name = "Something" name = "Something"
@@ -130,47 +137,6 @@
density = FALSE density = FALSE
force_max_speed = TRUE force_max_speed = TRUE
/mob/living/carbon/human/UnarmedAttack()
if(shadekin_phasing_check())
return FALSE //Nope.
. = ..()
/mob/living/carbon/human/can_fall()
if(shadekin_phasing_check())
return FALSE //Nope!
return ..()
/mob/living/carbon/human/zMove(direction)
if(shadekin_phasing_check())
var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src)
if(destination)
forceMove(destination)
return TRUE //Yup.
return ..()
/mob/proc/shadekin_phasing_check()
var/mob/living/simple_mob/shadekin/s_SK = src
if(istype(s_SK))
if(s_SK.ability_flags & AB_PHASE_SHIFTED)
return TRUE
var/mob/living/carbon/human/h_SK = src
if(istype(h_SK))
if(h_SK.ability_flags & AB_PHASE_SHIFTED)
return TRUE
return FALSE
/*
/mob/living/carbon/human/MouseDrop_T(atom/dropping, mob/user)
if(ability_flags & AB_PHASE_SHIFTED)
return FALSE //Nope!
return ..()
*/
////////////////////////// //////////////////////////
/// REGENERATE OTHER /// /// REGENERATE OTHER ///
////////////////////////// //////////////////////////

View File

@@ -54,13 +54,9 @@
icon_rest = "mouse_[body_color]_sleep" icon_rest = "mouse_[body_color]_sleep"
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
/mob/living/simple_mob/animal/passive/mouse/Crossed(AM as mob|obj) /mob/living/simple_mob/animal/passive/mouse/Crossed(atom/movable/AM as mob|obj)
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
if( ishuman(AM) ) if( ishuman(AM) )
if(!stat) if(!stat)
var/mob/M = AM var/mob/M = AM

View File

@@ -19,6 +19,7 @@
//Shifting in //Shifting in
if(ability_flags & AB_PHASE_SHIFTED) if(ability_flags & AB_PHASE_SHIFTED)
ability_flags &= ~AB_PHASE_SHIFTED ability_flags &= ~AB_PHASE_SHIFTED
mouse_opacity = 2
name = real_name name = real_name
for(var/belly in vore_organs) for(var/belly in vore_organs)
var/obj/belly/B = belly var/obj/belly/B = belly
@@ -70,6 +71,7 @@
//Shifting out //Shifting out
else else
ability_flags |= AB_PHASE_SHIFTED ability_flags |= AB_PHASE_SHIFTED
mouse_opacity = 0
custom_emote(1,"phases out!") custom_emote(1,"phases out!")
real_name = name real_name = name
name = "Something" name = "Something"

View File

@@ -245,6 +245,11 @@
if((. = ..())) if((. = ..()))
handle_shade() handle_shade()
/mob/living/simple_mob/shadekin/is_incorporeal()
if(ability_flags & AB_PHASE_SHIFTED)
return TRUE
return FALSE
/mob/living/simple_mob/shadekin/handle_atmos() /mob/living/simple_mob/shadekin/handle_atmos()
if(ability_flags & AB_PHASE_SHIFTED) if(ability_flags & AB_PHASE_SHIFTED)
return return

View File

@@ -389,10 +389,8 @@
///Return 1 for movement 0 for none ///Return 1 for movement 0 for none
/mob/proc/Process_Spacemove(var/check_drift = 0) /mob/proc/Process_Spacemove(var/check_drift = 0)
//VOREStation Edit begin: SHADEKIN if(is_incorporeal())
if(shadekin_phasing_check())
return return
//VOREStation Edit end: SHADEKIN
if(!Check_Dense_Object()) //Nothing to push off of so end here if(!Check_Dense_Object()) //Nothing to push off of so end here
update_floating(0) update_floating(0)

View File

@@ -29,6 +29,10 @@
to_chat(src, "<span class='notice'>There is nothing of interest in this direction.</span>") to_chat(src, "<span class='notice'>There is nothing of interest in this direction.</span>")
return 0 return 0
if(is_incorporeal())
forceMove(destination)
return 1
if(!start.CanZPass(src, direction)) if(!start.CanZPass(src, direction))
to_chat(src, "<span class='warning'>\The [start] is in the way.</span>") to_chat(src, "<span class='warning'>\The [start] is in the way.</span>")
return 0 return 0
@@ -273,6 +277,8 @@
return FALSE return FALSE
/mob/living/can_fall() /mob/living/can_fall()
if(is_incorporeal())
return FALSE
if(hovering) if(hovering)
return FALSE return FALSE
return ..() return ..()

View File

@@ -219,12 +219,8 @@
Range() Range()
/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. /obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
//VOREStation Edit begin: SHADEKIN if(AM.is_incorporeal())
var/mob/SK = AM return
if(istype(SK))
if(SK.shadekin_phasing_check())
return
//VOREStation Edit end: SHADEKIN
..() ..()
if(isliving(AM) && !(pass_flags & PASSMOB)) if(isliving(AM) && !(pass_flags & PASSMOB))
var/mob/living/L = AM var/mob/living/L = AM