diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index eef7231eb2..b9ce4c7f5a 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -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)
sdepth = A.storage_depth_turf()
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(W)
// 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)
+ if(is_incorporeal())
+ return 0
+
if(!ticker)
to_chat(src, "You cannot attack people before the game has started.")
return 0
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index 88fe9dbf1c..a35abf8c37 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -138,12 +138,8 @@
return
/obj/effect/ebeam/deadly/Crossed(atom/A)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = A
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(A.is_incorporeal())
+ return
..()
A.ex_act(1)
@@ -163,12 +159,8 @@
on_contact(A)
/obj/effect/ebeam/reactive/Crossed(atom/A)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = A
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(A.is_incorporeal())
+ return
..()
on_contact(A)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 87035942c4..6b206c6d02 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -519,6 +519,9 @@
return TRUE
return FALSE
+/atom/proc/is_incorporeal()
+ return FALSE
+
/atom/proc/drop_location()
var/atom/L = loc
if(!L)
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 633b1f4d02..7ce4b2e86d 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -132,22 +132,6 @@
anchored = 1.0
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
light_range=5
light_color="#ff0000"
@@ -176,12 +160,8 @@
qdel(src)
/obj/effect/gateway/active/Crossed(var/atom/A)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = A
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(A.is_incorporeal())
+ return
if(!istype(A, /mob/living))
return
diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm
index e89355086f..f51dc9e4b1 100644
--- a/code/game/objects/effects/chem/foam.dm
+++ b/code/game/objects/effects/chem/foam.dm
@@ -74,12 +74,8 @@
qdel(src)
/obj/effect/effect/foam/Crossed(var/atom/movable/AM)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(AM.is_incorporeal())
+ return
if(metal)
return
if(istype(AM, /mob/living))
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index f9c70c9f16..1d740abb68 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -70,12 +70,8 @@ var/global/list/image/splatter_cache=list()
desc = initial(desc)
/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = perp
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(perp.is_incorporeal())
+ return
if (!istype(perp))
return
if(amount < 1)
diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm
index b7d45a9cb3..7d5275cbcd 100644
--- a/code/game/objects/effects/effect_system.dm
+++ b/code/game/objects/effects/effect_system.dm
@@ -185,12 +185,8 @@ steam.start() -- spawns the effect
qdel(src)
/obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob )
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = M
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(M.is_incorporeal())
+ return
..()
if(istype(M))
affect(M)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index fb4117ef44..2cca71b9de 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -35,13 +35,9 @@
explode()
..()
-/obj/effect/mine/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
+/obj/effect/mine/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
Bumped(AM)
/obj/effect/mine/Bumped(mob/M as mob|obj)
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index 1a9488a0a6..514385b774 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -20,13 +20,9 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
return
return
-/obj/effect/portal/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
+/obj/effect/portal/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if(istype(AM,/mob) && !(istype(AM,/mob/living)))
return //do not send ghosts, zshadows, ai eyes, etc
spawn(0)
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index 870656d92e..a3c3c242c2 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -12,13 +12,9 @@
/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A)
return 0
-/obj/effect/step_trigger/Crossed(H as mob|obj)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = H
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+/obj/effect/step_trigger/Crossed(atom/movable/H as mob|obj)
+ if(H.is_incorporeal())
+ return
..()
if(!H)
return
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 6a5fcc2a98..5149d6fa67 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -1468,13 +1468,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
QDEL_NULL(src.pai)
return ..()
-/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+/obj/item/device/pda/clown/Crossed(atom/movable/AM as mob|obj) //Clown PDA is slippery.
+ if(AM.is_incorporeal())
+ return
if (istype(AM, /mob/living))
var/mob/living/M = AM
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 850de74ba4..927d21c646 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -355,13 +355,9 @@
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
-/obj/item/toy/snappop/Crossed(H as mob|obj)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = H
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+/obj/item/toy/snappop/Crossed(atom/movable/H as mob|obj)
+ if(H.is_incorporeal())
+ return
if((ishuman(H))) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H
if(M.m_intent == "run")
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 890e557f50..1f53e64e77 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -8,13 +8,9 @@
/*
* Banana Peals
*/
-/obj/item/weapon/bananapeel/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
+/obj/item/weapon/bananapeel/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if (istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",4)
@@ -29,13 +25,9 @@
/obj/item/weapon/soap/proc/wet()
reagents.add_reagent("cleaner", 5)
-/obj/item/weapon/soap/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
+/obj/item/weapon/soap/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if (istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",3)
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index f98959ff2e..e2394537f3 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -106,14 +106,10 @@
qdel(src)
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
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(AM.is_incorporeal())
+ return
if(isliving(AM))
var/mob/M = AM
diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm
index ab71c0cec5..1f9397e705 100644
--- a/code/game/objects/items/weapons/traps.dm
+++ b/code/game/objects/items/weapons/traps.dm
@@ -107,13 +107,9 @@
deployed = 0
can_buckle = initial(can_buckle)
-/obj/item/weapon/beartrap/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
+/obj/item/weapon/beartrap/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if(deployed && isliving(AM))
var/mob/living/L = AM
if(L.m_intent == "run")
diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm
index 5c606422d7..26e040c7e9 100644
--- a/code/game/objects/structures/catwalk.dm
+++ b/code/game/objects/structures/catwalk.dm
@@ -87,14 +87,8 @@
return ..()
/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)
/obj/structure/catwalk/CheckExit(atom/movable/O, turf/target)
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 441367c80d..d815fea765 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -104,12 +104,8 @@
/obj/item/device/assembly_holder/Crossed(atom/movable/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
+ if(AM.is_incorporeal())
+ return
if(a_left)
a_left.Crossed(AM)
if(a_right)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 75985f7822..8da3fbc21b 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -242,12 +242,8 @@
return
/obj/effect/beam/i_beam/Crossed(atom/movable/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
+ if(AM.is_incorporeal())
+ return
if(istype(AM, /obj/effect/beam))
return
spawn(0)
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 0257b6cf87..be78782b29 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -82,13 +82,9 @@
..()
-/obj/item/device/assembly/mousetrap/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
+/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if(armed)
if(ishuman(AM))
var/mob/living/carbon/H = AM
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 0a25a1fae1..1692de2f65 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -157,12 +157,8 @@
overlays |= plant_icon
/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = M
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(M.is_incorporeal())
+ return
if(seed && seed.get_trait(TRAIT_JUICY) == 2)
if(istype(M))
diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm
index bab7131466..8c694c8b00 100644
--- a/code/modules/hydroponics/spreading/spreading_response.dm
+++ b/code/modules/hydroponics/spreading/spreading_response.dm
@@ -20,12 +20,8 @@
manual_unbuckle(user)
/obj/effect/plant/Crossed(atom/movable/O)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = O
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(O.is_incorporeal())
+ return
if(isliving(O))
trodden_on(O)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 6d9bc28f77..d1bd905d4d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -243,12 +243,8 @@
// this handles mulebots and vehicles
// and now mobs on fire
/mob/living/carbon/human/Crossed(var/atom/movable/AM)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(AM.is_incorporeal())
+ return
if(istype(AM, /mob/living/bot/mulebot))
var/mob/living/bot/mulebot/MB = AM
MB.runOver(src)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 9f57be114b..50caac91c0 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -224,10 +224,8 @@
// Handle footstep sounds
/mob/living/carbon/human/handle_footstep(var/turf/T)
- //VOREStation Edit begin: SHADEKIN
- if(shadekin_phasing_check())
+ if(is_incorporeal())
return
- //VOREStation Edit end: SHADEKIN
if(!config.footstep_volume || !T.footstep_sounds || !T.footstep_sounds.len)
return
// Future Upgrades - Multi species support
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 568e978f72..3a44c18bd3 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -618,10 +618,8 @@
//Stuff like the xenomorph's plasma regen happens here.
species.handle_environment_special(src)
- //VOREStation Edit begin: SHADEKIN
- if(shadekin_phasing_check())
+ if(is_incorporeal())
return
- //VOREStation Edit end: SHADEKIN
//Moved pressure calculations here for use in skip-processing check.
var/pressure = environment.return_pressure()
diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm
index 7d354db330..cc69297e6a 100644
--- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm
+++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm
@@ -1,5 +1,10 @@
/datum/power/shadekin
+/mob/living/carbon/human/is_incorporeal()
+ if(ability_flags & AB_PHASE_SHIFTED) //Shadekin
+ return TRUE
+ return ..()
+
/////////////////////
/// PHASE SHIFT ///
/////////////////////
@@ -62,6 +67,7 @@
//Shifting in
if(ability_flags & AB_PHASE_SHIFTED)
ability_flags &= ~AB_PHASE_SHIFTED
+ mouse_opacity = 2
name = real_name
for(var/belly in vore_organs)
var/obj/belly/B = belly
@@ -108,6 +114,7 @@
//Shifting out
else
ability_flags |= AB_PHASE_SHIFTED
+ mouse_opacity = 0
custom_emote(1,"phases out!")
name = "Something"
@@ -130,47 +137,6 @@
density = FALSE
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 ///
//////////////////////////
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
index dc37871aca..a5e58e2510 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
@@ -54,13 +54,9 @@
icon_rest = "mouse_[body_color]_sleep"
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)
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+/mob/living/simple_mob/animal/passive/mouse/Crossed(atom/movable/AM as mob|obj)
+ if(AM.is_incorporeal())
+ return
if( ishuman(AM) )
if(!stat)
var/mob/M = AM
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
index 21e0683b3c..491d0011d2 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
@@ -19,6 +19,7 @@
//Shifting in
if(ability_flags & AB_PHASE_SHIFTED)
ability_flags &= ~AB_PHASE_SHIFTED
+ mouse_opacity = 2
name = real_name
for(var/belly in vore_organs)
var/obj/belly/B = belly
@@ -70,6 +71,7 @@
//Shifting out
else
ability_flags |= AB_PHASE_SHIFTED
+ mouse_opacity = 0
custom_emote(1,"phases out!")
real_name = name
name = "Something"
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm
index f8025167b7..a494d00590 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm
@@ -245,6 +245,11 @@
if((. = ..()))
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()
if(ability_flags & AB_PHASE_SHIFTED)
return
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index fae3f2cb61..0e4a326cab 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -389,10 +389,8 @@
///Return 1 for movement 0 for none
/mob/proc/Process_Spacemove(var/check_drift = 0)
- //VOREStation Edit begin: SHADEKIN
- if(shadekin_phasing_check())
+ if(is_incorporeal())
return
- //VOREStation Edit end: SHADEKIN
if(!Check_Dense_Object()) //Nothing to push off of so end here
update_floating(0)
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index 59ef1182d0..4918a8a61c 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -29,6 +29,10 @@
to_chat(src, "There is nothing of interest in this direction.")
return 0
+ if(is_incorporeal())
+ forceMove(destination)
+ return 1
+
if(!start.CanZPass(src, direction))
to_chat(src, "\The [start] is in the way.")
return 0
@@ -273,6 +277,8 @@
return FALSE
/mob/living/can_fall()
+ if(is_incorporeal())
+ return FALSE
if(hovering)
return FALSE
return ..()
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index b3b70aa7af..679beb7125 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -219,12 +219,8 @@
Range()
/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
- //VOREStation Edit begin: SHADEKIN
- var/mob/SK = AM
- if(istype(SK))
- if(SK.shadekin_phasing_check())
- return
- //VOREStation Edit end: SHADEKIN
+ if(AM.is_incorporeal())
+ return
..()
if(isliving(AM) && !(pass_flags & PASSMOB))
var/mob/living/L = AM