mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-28 11:11:52 +00:00
Created defines for disabilities and sdisabilities bitflags. Thos areas of code really need attention. Why are there so many blind variables/flags D= disability bitflags are located in setup.dm Handcuff overlays now update when beepsky/ed-209s cuff you. Resolves issue 628. Took a stab at tidying up handle_regular_hud_updates() for humans. If it's all working perfectly as it appears to be I'll start doing the same for other mobs. Whomever started 'fixing' this and then just abandoned it with redundant and heavily-broken code should be ashamed :[ It was/is in a real sorry state. Resolves issue 617. Shades can no longer be weakened (stunbatons etc). Fixed an issue with one of the antag deaf-sting/rune/whatever-it-was-I-forget causing nearsightedness rather than deafness :P git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3985 316c924e-a436-60f5-8080-3fe189b3f50e
580 lines
20 KiB
Plaintext
580 lines
20 KiB
Plaintext
/*
|
|
CONTAINS:
|
|
RETRACTOR
|
|
HEMOSTAT
|
|
CAUTERY
|
|
SURGICAL DRILL
|
|
SCALPEL
|
|
CIRCULAR SAW
|
|
|
|
*/
|
|
|
|
/////////////
|
|
//RETRACTOR//
|
|
/////////////
|
|
/obj/item/weapon/retractor/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M))
|
|
return
|
|
|
|
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(50))))
|
|
return ..()
|
|
|
|
if(user.zone_sel.selecting == "groin")
|
|
if(istype(M, /mob/living/carbon/human))
|
|
switch(M:appendix_op_stage)
|
|
if(2.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [user] retracts the flap in [M]'s abdomen cut open with [src].", 1)
|
|
M << "\red [user] begins to retract the flap in your abdomen with [src]!"
|
|
user << "\red You retract the flap in [M]'s abdomen with [src]!"
|
|
M:appendix_op_stage = 3.0
|
|
return
|
|
|
|
if (user.zone_sel.selecting == "eyes")
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N
|
|
user << "\red You cannot locate any eyes on this creature!"
|
|
return
|
|
|
|
switch(M.eye_op_stage)
|
|
if(1.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is having his eyes retracted by [user].", 1)
|
|
M << "\red [user] begins to seperate your eyes with [src]!"
|
|
user << "\red You seperate [M]'s eyes with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begins to have his eyes retracted.", \
|
|
"\red You begin to pry open your eyes with [src]!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(15))
|
|
M:UpdateDamageIcon()
|
|
M.updatehealth()
|
|
else
|
|
M.take_organ_damage(15)
|
|
|
|
M:eye_op_stage = 2.0
|
|
|
|
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
|
return ..()
|
|
|
|
return
|
|
|
|
////////////
|
|
//Hemostat//
|
|
////////////
|
|
|
|
/obj/item/weapon/hemostat/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M))
|
|
return
|
|
|
|
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50))))
|
|
return ..()
|
|
|
|
if(user.zone_sel.selecting == "groin")
|
|
if(istype(M, /mob/living/carbon/human))
|
|
switch(M:appendix_op_stage)
|
|
if(1.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [user] is beginning to clamp bleeders in [M]'s abdomen cut open with [src].", 1)
|
|
M << "\red [user] begins to clamp bleeders in your abdomen with [src]!"
|
|
user << "\red You clamp bleeders in [M]'s abdomen with [src]!"
|
|
M:appendix_op_stage = 2.0
|
|
if(4.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [user] is removing [M]'s appendix with [src].", 1)
|
|
M << "\red [user] begins to remove your appendix with [src]!"
|
|
user << "\red You remove [M]'s appendix with [src]!"
|
|
for(var/datum/disease/D in M.viruses)
|
|
if(istype(D, /datum/disease/appendicitis))
|
|
new /obj/item/weapon/reagent_containers/food/snacks/appendixinflamed(get_turf(M))
|
|
M:appendix_op_stage = 5.0
|
|
return
|
|
new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(M))
|
|
M:appendix_op_stage = 5.0
|
|
return
|
|
|
|
if (user.zone_sel.selecting == "eyes")
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N
|
|
user << "\red You cannot locate any eyes on this creature!"
|
|
return
|
|
|
|
switch(M.eye_op_stage)
|
|
if(2.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is having his eyes mended by [user].", 1)
|
|
M << "\red [user] begins to mend your eyes with [src]!"
|
|
user << "\red You mend [M]'s eyes with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begins to have his eyes mended.", \
|
|
"\red You begin to mend your eyes with [src]!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(15))
|
|
M:UpdateDamageIcon()
|
|
M.updatehealth()
|
|
else
|
|
M.take_organ_damage(15)
|
|
M:eye_op_stage = 3.0
|
|
|
|
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
|
return ..()
|
|
|
|
return
|
|
|
|
///////////
|
|
//Cautery//
|
|
///////////
|
|
|
|
/obj/item/weapon/cautery/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M))
|
|
return
|
|
|
|
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50))))
|
|
return ..()
|
|
|
|
if(user.zone_sel.selecting == "groin")
|
|
if(istype(M, /mob/living/carbon/human))
|
|
switch(M:appendix_op_stage)
|
|
if(5.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [user] is beginning to cauterize the incision in [M]'s abdomen with [src].", 1)
|
|
M << "\red [user] begins to cauterize the incision in your abdomen with [src]!"
|
|
user << "\red You cauterize the incision in [M]'s abdomen with [src]!"
|
|
M:appendix_op_stage = 6.0
|
|
for(var/datum/disease/appendicitis in M.viruses)
|
|
appendicitis.cure()
|
|
M.resistances += appendicitis
|
|
return
|
|
|
|
if (user.zone_sel.selecting == "eyes")
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N
|
|
user << "\red You cannot locate any eyes on this creature!"
|
|
return
|
|
|
|
switch(M.eye_op_stage)
|
|
if(3.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is having his eyes cauterized by [user].", 1)
|
|
M << "\red [user] begins to cauterize your eyes!"
|
|
user << "\red You cauterize [M]'s eyes with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begins to have his eyes cauterized.", \
|
|
"\red You begin to cauterize your eyes!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(15))
|
|
M:UpdateDamageIcon()
|
|
M.updatehealth()
|
|
else
|
|
M.take_organ_damage(15)
|
|
M.sdisabilities &= ~BLIND
|
|
M.eye_stat = 0
|
|
M:eye_op_stage = 0.0
|
|
|
|
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
|
return ..()
|
|
|
|
return
|
|
|
|
|
|
//obj/item/weapon/surgicaldrill
|
|
|
|
|
|
///////////
|
|
//SCALPEL//
|
|
///////////
|
|
/obj/item/weapon/scalpel/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M))
|
|
return ..()
|
|
|
|
//if(M.mutations & HUSK) return ..()
|
|
|
|
if((CLUMSY in user.mutations) && prob(50))
|
|
M = user
|
|
return eyestab(M,user)
|
|
|
|
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50))))
|
|
return ..()
|
|
|
|
src.add_fingerprint(user)
|
|
|
|
if(user.zone_sel.selecting == "groin")
|
|
if(istype(M, /mob/living/carbon/human))
|
|
switch(M:appendix_op_stage)
|
|
if(0.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is beginning to have his abdomen cut open with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut open your abdomen with [src]!"
|
|
user << "\red You cut [M]'s abdomen open with [src]!"
|
|
M:appendix_op_stage = 1.0
|
|
if(3.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is beginning to have his appendix seperated with [src] by [user].", 1)
|
|
M << "\red [user] begins to seperate your appendix with [src]!"
|
|
user << "\red You seperate [M]'s appendix with [src]!"
|
|
M:appendix_op_stage = 4.0
|
|
return
|
|
|
|
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/metroid))
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
switch(M:brain_op_stage)
|
|
if(0.0)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
if(M.stat == 2)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M.name] is beginning to have its flesh cut open with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut open your flesh with [src]!"
|
|
user << "\red You cut [M]'s flesh open with [src]!"
|
|
M:brain_op_stage = 1.0
|
|
|
|
return
|
|
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is beginning to have his head cut open with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut open your head with [src]!"
|
|
user << "\red You cut [M]'s head open with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begins to cut open his skull with [src]!", \
|
|
"\red You begin to cut open your head with [src]!" \
|
|
)
|
|
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(15))
|
|
M:UpdateDamageIcon()
|
|
else
|
|
M.take_organ_damage(15)
|
|
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
affecting.take_damage(7)
|
|
else
|
|
M.take_organ_damage(7)
|
|
|
|
M.updatehealth()
|
|
M:brain_op_stage = 1.0
|
|
|
|
if(1)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
if(M.stat == 2)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M.name] is having its silky inndards cut apart with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut apart your innards with [src]!"
|
|
user << "\red You cut [M]'s silky innards apart with [src]!"
|
|
M:brain_op_stage = 2.0
|
|
return
|
|
if(2.0)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
if(M.stat == 2)
|
|
var/mob/living/carbon/metroid/Metroid = M
|
|
if(Metroid.cores > 0)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
user << "\red You attempt to remove [M]'s core, but [src] is ineffective!"
|
|
return
|
|
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is having his connections to the brain delicately severed with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut open your head with [src]!"
|
|
user << "\red You cut [M]'s head open with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begin to delicately remove the connections to his brain with [src]!", \
|
|
"\red You begin to cut open your head with [src]!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You nick an artery!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(75))
|
|
M:UpdateDamageIcon()
|
|
else
|
|
M.take_organ_damage(75)
|
|
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
affecting.take_damage(7)
|
|
else
|
|
M.take_organ_damage(7)
|
|
|
|
M.updatehealth()
|
|
M:brain_op_stage = 3.0
|
|
else
|
|
..()
|
|
return
|
|
|
|
else if(user.zone_sel.selecting == "eyes")
|
|
user << "\blue So far so good."
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N
|
|
user << "\red You cannot locate any eyes on this creature!"
|
|
return
|
|
|
|
switch(M:eye_op_stage)
|
|
if(0.0)
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] is beginning to have his eyes incised with [src] by [user].", 1)
|
|
M << "\red [user] begins to cut open your eyes with [src]!"
|
|
user << "\red You make an incision around [M]'s eyes with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] begins to cut around his eyes with [src]!", \
|
|
"\red You begin to cut open your eyes with [src]!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(15))
|
|
M:UpdateDamageIcon()
|
|
else
|
|
M.take_organ_damage(15)
|
|
|
|
user << "\blue So far so good before."
|
|
M.updatehealth()
|
|
M:eye_op_stage = 1.0
|
|
user << "\blue So far so good after."
|
|
else
|
|
return ..()
|
|
/* wat
|
|
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
|
return ..()
|
|
*/
|
|
return
|
|
|
|
|
|
////////////////
|
|
//CIRCULAR SAW//
|
|
////////////////
|
|
/obj/item/weapon/circular_saw/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M))
|
|
return ..()
|
|
|
|
if((CLUMSY in user.mutations) && prob(50))
|
|
M = user
|
|
return eyestab(M,user)
|
|
|
|
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/structure/table/, M.loc) && M.lying && prob(50))))
|
|
return ..()
|
|
|
|
src.add_fingerprint(user)
|
|
|
|
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/metroid))
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && ( \
|
|
(H.head && H.head.flags & HEADCOVERSEYES) || \
|
|
(H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \
|
|
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
var/mob/living/carbon/monkey/Mo = M
|
|
if(istype(Mo) && ( \
|
|
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
|
))
|
|
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
|
return
|
|
|
|
switch(M:brain_op_stage)
|
|
if(1.0)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
return
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] has his skull sawed open with [src] by [user].", 1)
|
|
M << "\red [user] begins to saw open your head with [src]!"
|
|
user << "\red You saw [M]'s head open with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] saws open his skull with [src]!", \
|
|
"\red You begin to saw open your head with [src]!" \
|
|
)
|
|
if(M == user && prob(25))
|
|
user << "\red You mess up!"
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
if(affecting.take_damage(40))
|
|
M:UpdateDamageIcon()
|
|
M.updatehealth()
|
|
else
|
|
M.take_organ_damage(40)
|
|
|
|
if(istype(M, /mob/living/carbon/human))
|
|
var/datum/organ/external/affecting = M:get_organ("head")
|
|
affecting.take_damage(7)
|
|
else
|
|
M.take_organ_damage(7)
|
|
|
|
M.updatehealth()
|
|
M:brain_op_stage = 2.0
|
|
|
|
if(2.0)
|
|
if(istype(M, /mob/living/carbon/metroid))
|
|
if(M.stat == 2)
|
|
var/mob/living/carbon/metroid/Metroid = M
|
|
if(Metroid.cores > 0)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M.name] is having one of its cores sawed out with [src] by [user].", 1)
|
|
|
|
Metroid.cores--
|
|
M << "\red [user] begins to remove one of your cores with [src]! ([Metroid.cores] cores remaining)"
|
|
user << "\red You cut one of [M]'s cores out with [src]! ([Metroid.cores] cores remaining)"
|
|
|
|
new/obj/item/metroid_core(M.loc)
|
|
|
|
if(Metroid.cores <= 0)
|
|
M.icon_state = "baby metroid dead-nocore"
|
|
|
|
return
|
|
|
|
if(3.0)
|
|
if(M.changeling && M.changeling.changeling_fakedeath)
|
|
user << "\red The neural tissue regrows before your eyes as you cut it."
|
|
return
|
|
|
|
if(M != user)
|
|
for(var/mob/O in (viewers(M) - user - M))
|
|
O.show_message("\red [M] has his spine's connection to the brain severed with [src] by [user].", 1)
|
|
M << "\red [user] severs your brain's connection to the spine with [src]!"
|
|
user << "\red You sever [M]'s brain's connection to the spine with [src]!"
|
|
else
|
|
user.visible_message( \
|
|
"\red [user] severs his brain's connection to the spine with [src]!", \
|
|
"\red You sever your brain's connection to the spine with [src]!" \
|
|
)
|
|
|
|
user.attack_log += "\[[time_stamp()]\]<font color='red'> Debrained [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
|
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Debrained by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
|
|
|
log_attack("<font color='red'>[user.name] ([user.ckey]) debrained [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
|
|
|
|
|
var/obj/item/brain/B = new(M.loc)
|
|
B.transfer_identity(M)
|
|
|
|
M:brain_op_stage = 4.0
|
|
M.death()//You want them to die after the brain was transferred, so not to trigger client death() twice.
|
|
|
|
else
|
|
..()
|
|
return
|
|
|
|
else
|
|
return ..()
|
|
/*
|
|
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
|
|
return ..()
|
|
*/
|
|
return
|