diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm index 5744fa5eda..9bd79e804b 100644 --- a/code/modules/vore/mouseray.dm +++ b/code/modules/vore/mouseray.dm @@ -93,18 +93,16 @@ if(!M.allow_spontaneous_tf && !tf_admin_pref_override) return if(M.tf_mob_holder) + new /obj/effect/effect/teleport_greyscale(M.loc) //CHOMPEdit Start var/mob/living/ourmob = M.tf_mob_holder if(ourmob.ai_holder) var/datum/ai_holder/our_AI = ourmob.ai_holder our_AI.set_stance(STANCE_IDLE) M.tf_mob_holder = null - var/ourmob_ckey //CHOMPEdit Start - if(ourmob.ckey) - ourmob_ckey = ourmob.ckey var/turf/get_dat_turf = get_turf(target) ourmob.loc = get_dat_turf ourmob.forceMove(get_dat_turf) - if(!ourmob.ckey) + if(!M.tf_form_ckey) ourmob.vore_selected = M.vore_selected M.vore_selected = null for(var/obj/belly/B as anything in M.vore_organs) @@ -113,6 +111,7 @@ B.owner = ourmob M.vore_organs -= B ourmob.vore_organs += B + ourmob.nutrition = M.nutrition ourmob.ckey = M.ckey ourmob.Life(1) @@ -123,8 +122,10 @@ M.drop_from_inventory(W) if(M.tf_form == ourmob) - if(ourmob_ckey) - M.ckey = ourmob_ckey + if(M.tf_form_ckey) + M.ckey = M.tf_form_ckey + else + M.mind = null ourmob.tf_form = M M.forceMove(ourmob) else @@ -134,9 +135,15 @@ if(M.stat == DEAD) //We can let it undo the TF, because the person will be dead, but otherwise things get weird. return var/mob/living/new_mob = spawn_mob(M) - new_mob.faction = M.faction if(new_mob && isliving(new_mob)) + new_mob.faction = M.faction //CHOMPEdit Start + if(istype(new_mob, /mob/living/simple_mob)) + var/mob/living/simple_mob/S = new_mob + if(!S.voremob_loaded) + S.voremob_loaded = TRUE + S.init_vore() + new /obj/effect/effect/teleport_greyscale(M.loc) //CHOMPEdit End for(var/obj/belly/B as anything in new_mob.vore_organs) new_mob.vore_organs -= B qdel(B) @@ -167,6 +174,7 @@ B.owner = new_mob M.vore_organs -= B new_mob.vore_organs += B + new_mob.nutrition = M.nutrition //CHOMPAdd new_mob.ckey = M.ckey if(M.ai_holder && new_mob.ai_holder) @@ -191,18 +199,16 @@ /mob/living/proc/revert_mob_tf() if(!tf_mob_holder) return + new /obj/effect/effect/teleport_greyscale(src.loc) //CHOMPEdit Start var/mob/living/ourmob = tf_mob_holder if(ourmob.ai_holder) var/datum/ai_holder/our_AI = ourmob.ai_holder our_AI.set_stance(STANCE_IDLE) tf_mob_holder = null - var/ourmob_ckey //CHOMPEdit Start - if(ourmob.ckey) - ourmob_ckey = ourmob.ckey var/turf/get_dat_turf = get_turf(src) ourmob.loc = get_dat_turf ourmob.forceMove(get_dat_turf) - if(!ourmob.ckey) + if(!tf_form_ckey) ourmob.vore_selected = vore_selected vore_selected = null for(var/obj/belly/B as anything in vore_organs) @@ -211,6 +217,7 @@ B.owner = ourmob vore_organs -= B ourmob.vore_organs += B + ourmob.nutrition = nutrition ourmob.ckey = ckey ourmob.Life(1) @@ -221,8 +228,10 @@ src.drop_from_inventory(W) if(tf_form == ourmob) - if(ourmob_ckey) - src.ckey = ourmob_ckey + if(tf_form_ckey) + src.ckey = tf_form_ckey + else + src.mind = null ourmob.tf_form = src src.forceMove(ourmob) else @@ -328,13 +337,10 @@ var/datum/ai_holder/our_AI = ourmob.ai_holder our_AI.set_stance(STANCE_IDLE) M.tf_mob_holder = null - var/ourmob_ckey //CHOMPEdit Start - if(ourmob.ckey) - ourmob_ckey = ourmob.ckey var/turf/get_dat_turf = get_turf(target) ourmob.loc = get_dat_turf ourmob.forceMove(get_dat_turf) - if(!ourmob.ckey) + if(!M.tf_form_ckey) //CHOMPEdit Start ourmob.vore_selected = M.vore_selected M.vore_selected = null for(var/obj/belly/B as anything in M.vore_organs) @@ -343,6 +349,7 @@ B.owner = ourmob M.vore_organs -= B ourmob.vore_organs += B + ourmob.nutrition = M.nutrition ourmob.ckey = M.ckey ourmob.Life(1) @@ -354,8 +361,10 @@ M.drop_from_inventory(W) if(M.tf_form == ourmob) - if(ourmob_ckey) - M.ckey = ourmob_ckey + if(M.tf_form_ckey) + M.ckey = M.tf_form_ckey + else + M.mind = null ourmob.tf_form = M M.forceMove(ourmob) else diff --git a/modular_chomp/code/modules/mob/living/living.dm b/modular_chomp/code/modules/mob/living/living.dm index 937350fa03..636a8cf9b7 100644 --- a/modular_chomp/code/modules/mob/living/living.dm +++ b/modular_chomp/code/modules/mob/living/living.dm @@ -13,6 +13,7 @@ var/virtual_reality_mob = FALSE // gross boolean for keeping VR mobs in VR var/datum/looping_sound/mob/on_fire/firesoundloop var/mob/living/tf_form // Shapeshifter shenanigans + var/tf_form_ckey // var/datum/looping_sound/mob/stunned/stunnedloop /* // Not sure if needed, screams aren't a carbon thing rn. var/scream_sound = null @@ -110,7 +111,6 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc. if(!ispath(new_form, /mob/living) && !ismob(new_form)) return var/mob/living/new_mob - var/new_mob_ckey if(shapeshifting && src.tf_form) new_mob = src.tf_form new_mob.verbs |= /mob/living/proc/shapeshift_form @@ -118,12 +118,18 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc. new_mob.forceMove(src.loc) visible_message("[src] twists and contorts, shapeshifting into a different form!") if(new_mob.ckey) - new_mob_ckey = new_mob.ckey + new_mob.tf_form_ckey = new_mob.ckey else new_mob = new new_form(get_turf(src)) - new_mob.faction = src.faction if(new_mob && isliving(new_mob)) + new_mob.faction = src.faction + if(istype(new_mob, /mob/living/simple_mob)) + var/mob/living/simple_mob/S = new_mob + if(!S.voremob_loaded) + S.voremob_loaded = TRUE + S.init_vore() + new /obj/effect/effect/teleport_greyscale(src.loc) if(!new_mob.ckey) for(var/obj/belly/B as anything in new_mob.vore_organs) new_mob.vore_organs -= B @@ -155,10 +161,11 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc. B.owner = new_mob src.vore_organs -= B new_mob.vore_organs += B + new_mob.nutrition = src.nutrition new_mob.ckey = src.ckey - if(new_mob_ckey) - src.ckey = new_mob_ckey + if(new_mob.tf_form_ckey) + src.ckey = new_mob.tf_form_ckey if(src.ai_holder && new_mob.ai_holder) var/datum/ai_holder/old_AI = src.ai_holder old_AI.set_stance(STANCE_SLEEP)