diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 50b788a013c..3c95cad4301 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -702,36 +702,28 @@ note dizziness decrements automatically in the mob's Life() proc.
//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
//Robots and brains have their own version so don't worry about them
/mob/proc/update_canmove()
- var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH)
- var/bed = !(buckled && istype(buckled, /obj/structure/stool/bed/chair))
- if(ko || resting || stunned)
- canmove = 0
- drop_r_hand() //makes mobs drop items in hands when incapacitated
- drop_l_hand() //NODROP is handled in unEquip which is called by drop_l/r_hand()
- if(!lying)
- if(resting) //Presuming that you're resting on a bed, which would look goofy lying the wrong way
- lying = 90
- else
- lying = pick(90, 270) //180 looks like shit since BYOND inverts rather than turns in that case
- else if(stunned)
- canmove = 0
- else
- lying = 0
- canmove = 1
- if(buckled)
- lying = 90 * bed
- else
- if((ko || resting) && !lying)
- fall(ko)
- anchored = buckled
- canmove = !(ko || resting || stunned || buckled)
- density = !lying
- update_transform()
- lying_prev = lying
- if(update_icon) //forces a full overlay update
- update_icon = 0
- regenerate_icons()
- return canmove
+ var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH)
+ var/bed = !(buckled && istype(buckled, /obj/structure/stool/bed/chair))
+ if(ko || resting || stunned)
+ drop_r_hand()
+ drop_l_hand()
+ else
+ lying = 0
+ canmove = 1
+ if(buckled)
+ lying = 90 * bed
+ else
+ if((ko || resting) && !lying)
+ fall(ko)
+ anchored = buckled
+ canmove = !(ko || resting || stunned || buckled)
+ density = !lying
+ update_transform()
+ lying_prev = lying
+ if(update_icon) //forces a full overlay update
+ update_icon = 0
+ regenerate_icons()
+ return canmove
/mob/proc/fall(var/forced)
drop_l_hand()
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index ac66a1c7592..6622d549dc4 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null)
if (notransform)
return
@@ -372,514 +371,6 @@
. = new_slime
del(src)
-/mob/living/carbon/human/proc/Blobize()
- if (notransform)
- return
- var/obj/effect/blob/core/new_blob = new /obj/effect/blob/core (loc)
- new_blob.create_overmind(src.client , 1)
- gib(src)
-
-
-
-/mob/living/carbon/human/proc/corgize()
- if (notransform)
- return
- for(var/obj/item/W in src)
- unEquip(W)
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- for(var/t in organs) //this really should not be necessary
- del(t)
-
- var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
- new_corgi.a_intent = "harm"
- new_corgi.key = key
-
- new_corgi << "You are now a Corgi. Yap Yap!"
- . = new_corgi
- del(src)
-
-/mob/living/carbon/human/Animalize()
-
- var/list/mobtypes = typesof(/mob/living/simple_animal)
- var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
-
- if(!safe_animal(mobpath))
- usr << "\red Sorry but this mob type is currently unavailable."
- return
-
- if(notransform)
- return
- for(var/obj/item/W in src)
- unEquip(W)
-
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
-
- for(var/t in organs)
- del(t)
-
- var/mob/new_mob = new mobpath(src.loc)
-
- new_mob.key = key
- new_mob.a_intent = "harm"
-
-
- new_mob << "You suddenly feel more... animalistic."
- . = new_mob
- del(src)
-
-/mob/proc/Animalize()
-
- var/list/mobtypes = typesof(/mob/living/simple_animal)
- var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
-
- if(!safe_animal(mobpath))
- usr << "\red Sorry but this mob type is currently unavailable."
- return
-
- var/mob/new_mob = new mobpath(src.loc)
-
- new_mob.key = key
- new_mob.a_intent = "harm"
- new_mob << "You feel more... animalistic"
-
- . = new_mob
- del(src)
-
-/* Certain mob types have problems and should not be allowed to be controlled by players.
- *
- * This proc is here to force coders to manually place their mob in this list, hopefully tested.
- * This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them.
- */
-/mob/proc/safe_animal(var/MP)
-
-//Bad mobs! - Remember to add a comment explaining what's wrong with the mob
- if(!MP)
- return 0 //Sanity, this should never happen.
-
-// if(ispath(MP, /mob/living/simple_animal/space_worm)) //Goodbye Space Worms 2014
-// return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning.
-
- if(ispath(MP, /mob/living/simple_animal/construct/behemoth))
- return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/armoured))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/wraith))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
-
- if(ispath(MP, /mob/living/simple_animal/construct/builder))
- return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype
-
-//Good mobs!
- if(ispath(MP, /mob/living/simple_animal/cat))
- return 1
- if(ispath(MP, /mob/living/simple_animal/corgi))
- return 1
- if(ispath(MP, /mob/living/simple_animal/crab))
- return 1
- if(ispath(MP, /mob/living/simple_animal/hostile/carp))
- return 1
- if(ispath(MP, /mob/living/simple_animal/hostile/mushroom))
- return 1
- if(ispath(MP, /mob/living/simple_animal/shade))
- return 1
- if(ispath(MP, /mob/living/simple_animal/tomato))
- return 1
- if(ispath(MP, /mob/living/simple_animal/mouse))
- return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak)
- if(ispath(MP, /mob/living/simple_animal/hostile/bear))
- return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak)
- if(ispath(MP, /mob/living/simple_animal/parrot))
- return 1 //Parrots are no longer unfinished! -Nodrak
-
- //Not in here? Must be untested!
- return 0
-
-
-
-=======
-/mob/living/carbon/proc/monkeyize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null)
- if (notransform)
- return
- //Handle items on mob
-
- //first implants
- var/list/implants = list()
- if (tr_flags & TR_KEEPIMPLANTS)
- for(var/obj/item/weapon/implant/W in src)
- implants += W
-
- if(tr_flags & TR_KEEPITEMS)
- for(var/obj/item/W in (src.contents-implants))
- drop_from_inventory(W)
-
- //Make mob invisible and spawn animation
- regenerate_icons()
- notransform = 1
- canmove = 0
- stunned = 1
- icon = null
- invisibility = 101
- var/atom/movable/overlay/animation = new /atom/movable/overlay( loc )
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
- flick("h2monkey", animation)
- sleep(22)
- //animation = null
- var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( loc )
- del(animation)
-
-
-
- // hash the original name?
- if (tr_flags & TR_HASHNAME)
- O.name = "monkey ([copytext(md5(real_name), 2, 6)])"
- O.real_name = "monkey ([copytext(md5(real_name), 2, 6)])"
- if (newname) //if there's a name as an argument, always take that one over the current name
- O.name = newname
- O.real_name = newname
-
- //handle DNA and other attributes
- O.dna = dna
- dna = null
- if (!(tr_flags & TR_KEEPSE))
- O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(BAD_MUTATION_DIFFICULTY,BAD_MUTATION_DIFFICULTY))
- if(suiciding)
- O.suiciding = suiciding
- O.loc = loc
- O.a_intent = "harm"
-
- //keep viruses?
- if (tr_flags & TR_KEEPVIRUS)
- O.viruses = viruses
- viruses = list()
- for(var/datum/disease/D in O.viruses)
- D.affected_mob = O
-
- //keep damage?
- if (tr_flags & TR_KEEPDAMAGE)
- O.setToxLoss(getToxLoss())
- O.adjustBruteLoss(getBruteLoss())
- O.setOxyLoss(getOxyLoss())
- O.adjustFireLoss(getFireLoss())
-
- //re-add implants to new mob
- for(var/obj/item/weapon/implant/I in implants)
- I.loc = O
- I.implanted = O
-
- //transfer mind and delete old mob
- if(mind)
- mind.transfer_to(O)
- if (tr_flags & TR_DEFAULTMSG)
- O << "You are now a monkey."
- updateappearance(O)
- . = O
- if ( !(tr_flags & TR_KEEPSRC) ) //flag should be used if monkeyize() is called inside another proc of src so that one does not crash
- del(src)
- return
-
-
-
-////////////////////////// Humanize //////////////////////////////
-//Could probably be merged with monkeyize but other transformations got their own procs, too
-
-/mob/living/carbon/proc/humanize(tr_flags = (TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG), newname = null)
- if (notransform)
- return
- //Handle items on mob
-
- //first implants
- var/list/implants = list()
- if (tr_flags & TR_KEEPIMPLANTS)
- for(var/obj/item/weapon/implant/W in src)
- implants += W
-
- //now the rest
- if (tr_flags & TR_KEEPITEMS)
- for(var/obj/item/W in (src.contents-implants))
- unEquip(W)
- if (client)
- client.screen -= W
- if (W)
- W.loc = loc
- W.dropped(src)
- W.layer = initial(W.layer)
-
- // for(var/obj/item/W in src)
- // drop_from_inventory(W)
-
- //Make mob invisible and spawn animation
- regenerate_icons()
- notransform = 1
- canmove = 0
- stunned = 1
- icon = null
- invisibility = 101
- var/atom/movable/overlay/animation = new( loc )
- animation.icon_state = "blank"
- animation.icon = 'icons/mob/mob.dmi'
- animation.master = src
- flick("monkey2h", animation)
- sleep(22)
- var/mob/living/carbon/human/O = new( loc )
- for(var/obj/item/C in O.loc)
- O.equip_to_appropriate_slot(C)
- del(animation)
-
-
- O.gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE
- O.dna = dna
- dna = null
- if (newname) //if there's a name as an argument, always take that one over the current name
- O.real_name = newname
- else
- if ( !(cmptext ("monkey",copytext(O.dna.real_name,1,7)) ) )
- O.real_name = O.dna.real_name
- else
- O.real_name = random_name(O.gender)
- O.name = O.real_name
-
- if (!(tr_flags & TR_KEEPSE))
- O.dna.struc_enzymes = setblock(O.dna.struc_enzymes, RACEBLOCK, construct_block(1,BAD_MUTATION_DIFFICULTY))
-
- if(suiciding)
- O.suiciding = suiciding
-
- O.loc = loc
-
- //keep viruses?
- if (tr_flags & TR_KEEPVIRUS)
- O.viruses = viruses
- viruses = list()
- for(var/datum/disease/D in O.viruses)
- D.affected_mob = O
-
- //keep damage?
- if (tr_flags & TR_KEEPDAMAGE)
- O.setToxLoss(getToxLoss())
- O.adjustBruteLoss(getBruteLoss())
- O.setOxyLoss(getOxyLoss())
- O.adjustFireLoss(getFireLoss())
-
- //re-add implants to new mob
- for(var/obj/item/weapon/implant/I in implants)
- I.loc = O
- I.implanted = O
-
- if(mind)
- mind.transfer_to(O)
- O.a_intent = "help"
- if (tr_flags & TR_DEFAULTMSG)
- O << "You are now a human."
- updateappearance(O)
- . = O
- if ( !(tr_flags & TR_KEEPSRC) ) //don't delete src yet if it's needed to finish calling proc
- del(src)
- return
-
-/mob/new_player/AIize()
- spawning = 1
- return ..()
-
-/mob/living/carbon/human/AIize()
- if (notransform)
- return
- for(var/t in organs)
- del(t)
-
- return ..()
-
-/mob/living/carbon/AIize()
- if (notransform)
- return
- for(var/obj/item/W in src)
- drop_from_inventory(W)
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- return ..()
-
-/mob/proc/AIize()
- if(client)
- src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jams for AIs
- var/mob/living/silicon/ai/O = new (loc,,,1)//No MMI but safety is in effect.
- O.invisibility = 0
- O.aiRestorePowerRoutine = 0
-
- if(mind)
- mind.transfer_to(O)
- else
- O.key = key
-
- var/obj/loc_landmark
- for(var/obj/effect/landmark/start/sloc in landmarks_list)
- if (sloc.name != "AI")
- continue
- if (locate(/mob/living) in sloc.loc)
- continue
- loc_landmark = sloc
- if (!loc_landmark)
- for(var/obj/effect/landmark/tripai in landmarks_list)
- if (tripai.name == "tripai")
- if(locate(/mob/living) in tripai.loc)
- continue
- loc_landmark = tripai
- if (!loc_landmark)
- O << "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone."
- for(var/obj/effect/landmark/start/sloc in landmarks_list)
- if (sloc.name == "AI")
- loc_landmark = sloc
-
- O.loc = loc_landmark.loc
- for (var/obj/item/device/radio/intercom/comm in O.loc)
- comm.ai += O
-
- O << "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras)."
- O << "To look at other parts of the station, click on yourself to get a camera menu."
- O << "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc."
- O << "To use something, simply click on it."
- O << {"Use say ":b to speak to your cyborgs through binary."}
- if (!(ticker && ticker.mode && (O.mind in ticker.mode.malf_ai)))
- O.show_laws()
- O << "These laws may be changed by other players, or by you being the traitor."
-
- O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
- O.verbs += /mob/living/silicon/ai/proc/show_laws_verb
- O.verbs += /mob/living/silicon/ai/proc/ai_camera_track
- O.verbs += /mob/living/silicon/ai/proc/ai_alerts
- O.verbs += /mob/living/silicon/ai/proc/ai_camera_list
- O.verbs += /mob/living/silicon/ai/proc/ai_statuschange
- O.verbs += /mob/living/silicon/ai/proc/ai_roster
-
- O.job = "AI"
-
- O.rename_self("ai",1)
- . = O
- del(src)
- return
-
-
-//human -> robot
-/mob/living/carbon/human/proc/Robotize(var/delete_items = 0)
- if (notransform)
- return
- for(var/obj/item/W in src)
- if(delete_items)
- del(W)
- else
- drop_from_inventory(W)
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- for(var/t in organs)
- del(t)
-
- var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
-
- // cyborgs produced by Robotize get an automatic power cell
- O.cell = new(O)
- O.cell.maxcharge = 7500
- O.cell.charge = 7500
-
-
- O.gender = gender
- O.invisibility = 0
-
-
- if(mind) //TODO
- mind.transfer_to(O)
- if(mind.special_role)
- O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
- else
- O.key = key
-
- O.loc = loc
- O.job = "Cyborg"
-
- O.mmi = new /obj/item/device/mmi(O)
- O.mmi.transfer_identity(src)//Does not transfer key/client.
-
- . = O
- del(src)
-
-//human -> alien
-/mob/living/carbon/human/proc/Alienize()
- if (notransform)
- return
- for(var/obj/item/W in src)
- drop_from_inventory(W)
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- for(var/t in organs)
- del(t)
-
- var/alien_caste = pick("Hunter","Sentinel","Drone")
- var/mob/living/carbon/alien/humanoid/new_xeno
- switch(alien_caste)
- if("Hunter")
- new_xeno = new /mob/living/carbon/alien/humanoid/hunter(loc)
- if("Sentinel")
- new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(loc)
- if("Drone")
- new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc)
-
- new_xeno.a_intent = "harm"
- new_xeno.key = key
-
- new_xeno << "You are now an alien."
- . = new_xeno
- del(src)
-
-/mob/living/carbon/human/proc/slimeize(reproduce as num)
- if (notransform)
- return
- for(var/obj/item/W in src)
- drop_from_inventory(W)
- regenerate_icons()
- notransform = 1
- canmove = 0
- icon = null
- invisibility = 101
- for(var/t in organs)
- del(t)
-
- var/mob/living/carbon/slime/new_slime
- if(reproduce)
- var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring)
- var/list/babies = list()
- for(var/i=1,i<=number,i++)
- var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
- M.nutrition = round(nutrition/number)
- step_away(M,src)
- babies += M
- new_slime = pick(babies)
- else
- new_slime = new /mob/living/carbon/slime(loc)
- new_slime.a_intent = "harm"
- new_slime.key = key
-
- new_slime << "You are now a slime. Skreee!"
- . = new_slime
- del(src)
-
/mob/living/carbon/human/proc/Blobize()
if (notransform)
return
@@ -899,7 +390,7 @@
if (notransform)
return
for(var/obj/item/W in src)
- drop_from_inventory(W)
+ unEquip(W)
regenerate_icons()
notransform = 1
canmove = 0
@@ -928,7 +419,7 @@
if(notransform)
return
for(var/obj/item/W in src)
- drop_from_inventory(W)
+ unEquip(W)
regenerate_icons()
notransform = 1
@@ -1017,7 +508,3 @@
//Not in here? Must be untested!
return 0
-
-
-
->>>>>>> 2979aafa773a05dcfcdb90f16339eb97e156efd9