Merge branch 'master' of github.com:Baystation12/Baystation12

This commit is contained in:
Erthilo
2012-06-24 01:53:10 +01:00
36 changed files with 604 additions and 1019 deletions
+2 -2
View File
@@ -119,8 +119,8 @@ MASS SPECTROMETER
var/mob/living/carbon/human/H = M
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
if(e.broken)
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
if(e.status & BROKEN)
user.show_message("\red Bone fractures detected. Advanced scanner required for location.", 1)
break
if(ishuman(M))
if(M:vessel)
+1 -1
View File
@@ -398,7 +398,7 @@
return
var/datum/organ/external/head = H.organs["head"]
if(head.destroyed)
if(head.status & DESTROYED)
user << "\blue Put it where? There's no head."
//since these people will be dead M != usr
+6 -6
View File
@@ -97,13 +97,13 @@
if (user.hand)
if(ishuman(user))
var/datum/organ/external/temp = user:organs["l_hand"]
if(temp.destroyed)
if(temp.status & DESTROYED)
user << "\blue Yo- wait a minute."
return
else
if(ishuman(user))
var/datum/organ/external/temp = user:organs["r_hand"]
if(temp.destroyed)
if(temp.status & DESTROYED)
user << "\blue Yo- wait a minute."
if (istype(src.loc, /obj/item/weapon/storage))
@@ -136,7 +136,7 @@
if (user.hand)
if(ishuman(user))
var/datum/organ/external/temp = user:organs["l_hand"]
if(!temp.destroyed)
if(!(temp.status & DESTROYED))
user.l_hand = src
else
user << "\blue You pick \the [src] up with your ha- wait a minute."
@@ -148,7 +148,7 @@
else
if(ishuman(user))
var/datum/organ/external/temp = user:organs["r_hand"]
if(!temp.destroyed)
if(!(temp.status & DESTROYED))
user.r_hand = src
else
user << "\blue You pick \the [src] up with your ha- wait a minute."
@@ -176,13 +176,13 @@
if (user.hand)
if(ismonkey(user))
var/datum/organ/external/temp = user:organs["l_hand"]
if(temp.destroyed)
if(temp.status & DESTROYED)
user << "\blue Yo- wait a minute."
return
else
if(ismonkey(user))
var/datum/organ/external/temp = user:organs["r_hand"]
if(temp.destroyed)
if(temp.status & DESTROYED)
user << "\blue Yo- wait a minute."
if (istype(src.loc, /obj/item/weapon/storage))
@@ -26,20 +26,22 @@
if (M != user)
user.visible_message("\red \The [user] tries to implant \the [M] with \the [src]!","\red You try to implant \the [M] with \the [src]!")
else
user.visible_message("\red \The [user] tries to implant [user.get_gender_form("itself")] with \the [src]!","\red You try to implant yourself with \the [src]!")
user.visible_message("\red \The [user] tries to implant [user.get_visible_gender() == MALE ? "himself" : user.get_visible_gender() == FEMALE ? "herself" : "themselves"] with \the [src]!","\red You try to implant yourself with \the [src]!")
if(!do_mob(user, M,60))
return
if(hasorgans(M))
var/datum/organ/external/target = M:get_organ(check_zone(user.zone_sel.selecting))
if(target.destroyed)
if(target.status & DESTROYED)
user << "What [target.display_name]?"
return
if(!target.implant)
target.implant = list()
target.implant += imp
imp.loc = target
if (M != user)
user.visible_message("\red \The [user] implants \the [M]'s [target.display_name] with \the [src]!","\red You implant \the [M]'s [target.display_name] with \the [src]!")
else
user.visible_message("\red \The [user] implants [user.get_gender_form("its")] own [target.display_name] with \the [src]!","\red You implant your [target.display_name] with \the [src]!")
user.visible_message("\red \The [user] implants [user.get_visible_gender() == MALE ? "his" : user.get_visible_gender() == FEMALE ? "her" : "their"] own [target.display_name] with \the [src]!","\red You implant your [target.display_name] with \the [src]!")
M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [src] ([imp]) by [user] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src] ([imp]) to implant [M] ([M.ckey])</font>")
log_admin("ATTACK: [user] ([user.ckey]) implanted [M] ([M.ckey]) with [src].")
+82 -130
View File
@@ -8,8 +8,22 @@ MEDICAL
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
if (M.stat == 2)
user << "\red \The [M] is dead, you cannot help [M.get_gender_form("it")]!"
var/t_him = "it"
if (M.gender == MALE)
t_him = "him"
else if (M.gender == FEMALE)
t_him = "her"
user << "\red \The [M] is dead, you cannot help [t_him]!"
return
if (M.health < 50)
var/t_him = "it"
if (M.gender == MALE)
t_him = "him"
else if (M.gender == FEMALE)
t_him = "her"
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
return
if (!istype(M))
user << "\red \The [src] cannot be applied to \the [M]!"
@@ -21,113 +35,64 @@ MEDICAL
user << "\red You don't have the dexterity to do this!"
return 1
var/stoppedblood = 0
if(hasorgans(M))
var/datum/organ/external/affecting = M:get_organ("chest")
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/datum/organ/external/affecting = H.get_organ("chest")
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/user2 = user
affecting = M:get_organ(check_zone(user2.zone_sel.selecting))
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
else
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
affecting = M:get_organ("head")
if(affecting.destroyed && !affecting.gauzed)
user.visible_message("\red \The [user] does [user.get_gender_form("its")] best to stem \the [M]'s bleeding from [M.get_gender_form("its")] stump.", "\red You do your best to stop the bleeding from \the [M]'s stump.", "\red You hear something like gauze being ripped.")
affecting.gauzed = 1
if(!istype(affecting, /datum/organ/external))
affecting = H.get_organ("head")
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
H.UpdateDamageIcon()
if (user)
if (M != user)
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
else
var/t_his = "its"
if (user.gender == MALE)
t_his = "his"
else if (user.gender == FEMALE)
t_his = "her"
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
"\red You bandage your [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
use(1)
return
else
user << "Nothing to patch up!"
if(affecting.robot)
user << "Medical equipment for a robot arm? Better get a welder..."
return
for(var/datum/organ/wound/W in affecting.wounds)
if(W.bleeding || !W.is_healing)
if(heal_brute && W.wound_type == 2)
continue
if(heal_burn && W.wound_type < 2)
continue
if(W.wound_size > 3 && (W.bleeding || !W.is_healing))
if(stoppedblood)
stoppedblood += 1
break
W.bleeding = 0
W.is_healing = 1
stoppedblood = 1
else if(W.wound_size <= 3)
if(stoppedblood)
stoppedblood += 1
break
W.stopbleeding()
stoppedblood = 1
if (user && stoppedblood)
if (M != user)
user.visible_message("\red \The [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] \the [M]'s cuts with \the [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] \the [M]'s [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
else
user.visible_message("\red \The [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.get_gender_form("its")] own cuts with \the [src].", "\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].", "\red You hear something like gauze being ripped.")
else if(user)
user << "\red Nothing to patch up!"
return
M.updatehealth()
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
use(1)
// if (M.health < 50 && !stoppedblood)
// var/t_him = "it"
// if (M.gender == MALE)
// t_him = "him"
// else if (M.gender == FEMALE)
// t_him = "her"
// user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
// return
// if (user)
// if (M != user)
// user.visible_message( \
// "\blue [M] has been applied with [src] by [user].", \
// "\blue You apply \the [src] to [M]." \
// )
// else
// var/t_himself = "itself"
// if (user.gender == MALE)
// t_himself = "himself"
// else if (user.gender == FEMALE)
// t_himself = "herself"
// user.visible_message( \
// "\blue [M] applied [src] on [t_himself].", \
// "\blue You apply \the [src] on yourself." \
// )
// if (istype(M, /mob/living/carbon/human))
// var/mob/living/carbon/human/H = M
// var/datum/organ/external/affecting = H.get_organ("chest")
// if(istype(user, /mob/living/carbon/human))
// var/mob/living/carbon/human/user2 = user
// affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
// else
// if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
// affecting = H.get_organ("head")
//
// if (affecting.heal_damage(src.heal_brute, src.heal_burn))
// H.UpdateDamageIcon()
// M.updatehealth()
use(1)
/obj/item/stack/medical/advanced/attack(mob/living/carbon/M as mob, mob/user as mob)
if (M.stat == 2)
user << "\red \The [M] is dead, you cannot help [M.get_gender_form("it")]!"
var/t_him = "it"
if (M.gender == MALE)
t_him = "him"
else if (M.gender == FEMALE)
t_him = "her"
user << "\red \The [M] is dead, you cannot help [t_him]!"
return
if (M.health < 0)
var/t_him = "it"
if (M.gender == MALE)
t_him = "him"
else if (M.gender == FEMALE)
t_him = "her"
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
return
if (!istype(M))
user << "\red \The [src] cannot be applied to \the [M]!"
user << "\red \The [src] cannot be applied to [M]!"
return 1
if ( ! (istype(user, /mob/living/carbon/human) || \
@@ -136,50 +101,37 @@ MEDICAL
user << "\red You don't have the dexterity to do this!"
return 1
var/stoppedblood = 0
if(hasorgans(M))
var/datum/organ/external/affecting = M:get_organ("chest")
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/datum/organ/external/affecting = H.get_organ("chest")
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/user2 = user
affecting = M:get_organ(check_zone(user2.zone_sel.selecting))
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
else
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
affecting = M:get_organ("head")
if(affecting.destroyed && !affecting.gauzed)
M.visible_message("\red \The [user] does their best to stem \the [M]'s bleeding from [M.get_gender_form("its")] stump.", "\red You do your best to stop the bleeding from \the [M]'s stump.", "\red You hear something like gauze being ripped.")
affecting.gauzed = 1
affecting = H.get_organ("head")
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
H.UpdateDamageIcon()
if (user)
if (M != user)
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
else
var/t_his = "its"
if (user.gender == MALE)
t_his = "his"
else if (user.gender == FEMALE)
t_his = "her"
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
"\red You bandage your [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
use(1)
return
if(affecting.robot)
user << "Medical equipment for a robot arm? Better get a welder..."
return
for(var/datum/organ/wound/W in affecting.wounds)
if(W.bleeding || !W.healing_state)
if(heal_brute && W.wound_type == 2)
continue
if(heal_burn && W.wound_type < 2)
continue
if(stoppedblood)
stoppedblood++
break
W.stopbleeding()
stoppedblood = 1
if (user && stoppedblood)
if (M != user)
user.visible_message("\red \The [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] \the [M]'s cuts with \the [src].",\
"\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] \the [M]'s [heal_burn? "burns" : "wounds"].",\
"\red You hear something like gauze being ripped.")
else
user.visible_message("\red \The [user] [heal_burn? "salves" : "bandages"] [stoppedblood - 1 ? "some of" : "the last of"] [user.get_gender_form("its")] own cuts with \the [src].",\
"\red You [heal_burn? "salve" : "bandage up"] [stoppedblood - 1 ? "some of" : "the last of"] your [heal_burn? "burns" : "wounds"].",\
"\red You hear something like gauze being ripped.")
else if(user)
user << "\red Nothing to patch up!"
return
M.updatehealth()
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
use(1)
use(1)
@@ -23,9 +23,9 @@
return ..()
var/mob/living/carbon/human/H = M
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
if(S.destroyed)
if(!S.attachable)
var/datum/organ/external/S = H.organs[limbloc]
if(S.status & DESTROYED)
if(!(S.status & ATTACHABLE))
user << "\red The wound is not ready for a replacement!"
return 0
if(M != user)
@@ -51,15 +51,10 @@
user << "\red You mess up!"
S.take_damage(15)
S.broken = 0
S.attachable = 0
S.destroyed = 0
S.robot = 1
var/datum/organ/external/T = H.organs["[limbloc]"]
T.attachable = 0
T.destroyed = 0
T.broken = 0
T.robot = 1
S.status &= ~BROKEN
S.status &= ~ATTACHABLE
S.status &= ~DESTROYED
S.status |= ROBOT
M.update_body()
M.updatehealth()
M.UpdateDamageIcon()
@@ -24,11 +24,11 @@ CIRCULAR SAW
if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (istype(M, /mob/living/carbon/human)))
var/mob/living/carbon/human/H = M
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
if(S.destroyed)
if(S.bleeding)
if(S.status & DESTROYED)
if(S.status & BLEEDING)
user << "\red There's too much blood here!"
return 0
if(!S.cutaway)
if(!(S.status & CUT_AWAY))
user << "\red The flesh hasn't been cleanly cut!"
return 0
if(M != user)
@@ -245,17 +245,17 @@ CIRCULAR SAW
if(!S || !istype(S))
return 0
if(S.destroyed)
if(S.status & DESTROYED)
return ..()
if(S.robot)
if(S.status & ROBOT)
user << "Medical equipment for a robot arm? How would that do any good..."
return
if(!S.open)
user << "\red There is skin in the way!"
return 0
if(S.bleeding)
if(S.status & BLEEDING)
user << "\red [H] is profusely bleeding in \his [S.display_name]!"
return 0
@@ -303,11 +303,11 @@ CIRCULAR SAW
if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (istype(M, /mob/living/carbon/human)))
var/mob/living/carbon/human/H = M
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
if(S.destroyed)
if(!S.bleeding)
if(S.status & DESTROYED)
if(!(S.status & BLEEDING))
user << "\red There is nothing bleeding here!"
return 0
if(!S.cutaway)
if(!(S.status & CUT_AWAY))
user << "\red The flesh hasn't been cleanly cut!"
return 0
if(M != user)
@@ -333,7 +333,7 @@ CIRCULAR SAW
user << "\red You mess up!"
S.take_damage(15)
S.bleeding = 0
S.status &= ~BLEEDING
M.updatehealth()
M.UpdateDamageIcon()
@@ -559,10 +559,10 @@ CIRCULAR SAW
if(!S || !istype(S))
return 0
if(S.destroyed)
if(S.status & DESTROYED)
return ..()
if(S.robot)
if(S.status & ROBOT)
user << "Medical equipment for a robot arm? How would that do any good?"
return
@@ -570,7 +570,7 @@ CIRCULAR SAW
user << "\red There is skin in the way!"
return 0
if(!S.bleeding)
if(!(S.status & BLEEDING))
if(S.implant)
if(H != user)
H.visible_message( \
@@ -581,17 +581,18 @@ CIRCULAR SAW
"\red [user] attempts to remove the implant in \his [S.display_name] with \the [src]!", \
"\red You attempt to remove the implant in your [S.display_name] with \the [src]!")
if(do_mob(user, H, 50))
if(prob(50))
if(H != user)
H.visible_message( \
"\red [user] successfully removes the implant in [H]'s [S.display_name] with \the [src]!", \
"\red [user] successfully removes the implant in your [S.display_name] with \the [src]!")
else
H.visible_message( \
"\red [user] successfully removes the implant in \his [S.display_name] with \the [src]!", \
"\red You successfully remove the implant in your [S.display_name] with \the [src]!")
for(var/obj/item/weapon/implant/implant in S.implant)
do
if(do_mob(user, H, 50))
if(prob(50))
if(H != user)
H.visible_message( \
"\red [user] successfully removes the implant in [H]'s [S.display_name] with \a [src]!", \
"\red [user] successfully removes the implant in your [S.display_name] with \the [src]!")
else
H.visible_message( \
"\red [user] successfully removes the implant in \his [S.display_name] with \a [src]!", \
"\red You successfully remove the implant in your [S.display_name] with \the [src]!")
var/obj/item/weapon/implant/implant = pick(S.implant)
implant.loc = (get_turf(H))
implant.implanted = 0
S.implant.Remove(implant)
@@ -599,15 +600,15 @@ CIRCULAR SAW
if(istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/uplink) || istype(implant, /obj/item/weapon/implant/dexplosive) || istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/compressed))
usr << "The implant disintegrates into nothing..."
del(implant)
else
if(H != user)
H.visible_message( \
"\red [user] fails to removes the implant!", \
"\red [user] fails to removes the implant!")
if(!S.implant.len)
del S.implant
else
H.visible_message( \
"\red [user] fails to removes the implant!", \
"\red You fail to removes the implant!")
"\red [user] fails to remove the implant!", \
"\red You fail to remove the implant!")
else
break
while (S.implant && S.implant.len)
return 1
else
@@ -637,7 +638,7 @@ CIRCULAR SAW
user << "\red You mess up!"
S.take_damage(15)
S.bleeding = 0
S.status &= ~BLEEDING
H.updatehealth()
H.UpdateDamageIcon()
@@ -813,7 +814,7 @@ CIRCULAR SAW
if(!S.open)
usr << "<b>You have to cut the limb open first!</b>"
return
if(S.robot)
if(S.status & ROBOT)
user << "Medical equipment for a robot arm? How would that do any good?"
return
for(var/mob/O in viewers(M))
@@ -837,11 +838,11 @@ CIRCULAR SAW
if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (istype(M, /mob/living/carbon/human)))
var/mob/living/carbon/human/H = M
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
if(S.destroyed)
if(S.bleeding)
if(S.status & DESTROYED)
if(S.status & BLEEDING)
user << "\red There's too much blood here!"
return 0
if(!S.cutaway)
if(!(S.status & CUT_AWAY))
user << "\red The flesh hasn't been cleanly cut!"
return 0
if(S.open != 3)
@@ -872,7 +873,7 @@ CIRCULAR SAW
S.open = 0
S.stage = 0
S.attachable = 1
S.status |= ATTACHABLE
M.updatehealth()
M.UpdateDamageIcon()
@@ -1028,10 +1029,10 @@ CIRCULAR SAW
if(!S || !istype(S))
return 0
if(S.destroyed)
if(S.status & DESTROYED)
user << "What [S.display_name]?"
if(S.robot)
if(S.status & ROBOT)
user << "Medical equipment for a robot arm? How would that do any good..."
return
if(!S.open)
@@ -1096,7 +1097,7 @@ CIRCULAR SAW
if(((user.zone_sel.selecting == "l_arm") || (user.zone_sel.selecting == "r_arm") || (user.zone_sel.selecting == "l_leg") || (user.zone_sel.selecting == "r_leg")) & (istype(M, /mob/living/carbon/human)))
var/mob/living/carbon/human/H = M
var/datum/organ/external/S = H.organs[user.zone_sel.selecting]
if(S.destroyed)
if(S.status & DESTROYED)
if(M != user)
M.visible_message( \
"\red [user] is beginning to cut away at the flesh where [H]'s [S.display_name] used to be with [src].", \
@@ -1116,8 +1117,7 @@ CIRCULAR SAW
"\red [user] finishes cutting where \his [S.display_name] used to be with [src]!", \
"\red You finish cutting where your [S.display_name] used to be with [src]!")
S.cutaway = 1
S.bleeding = 1
S.status |= BLEEDING|CUT_AWAY
M.updatehealth()
M.UpdateDamageIcon()
else
@@ -1190,7 +1190,7 @@ CIRCULAR SAW
if(istype(H) && H.organs["head"])
var/datum/organ/external/affecting = H.organs["head"]
if(affecting.destroyed)
if(affecting.status & DESTROYED)
return ..()
if(istype(H) && ( \
@@ -1242,7 +1242,7 @@ CIRCULAR SAW
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
affecting.open = 1
affecting.status |= OPEN
else
M.take_organ_damage(7)
@@ -1420,10 +1420,10 @@ CIRCULAR SAW
if(!S || !istype(S))
return 0
if(S.destroyed)
if(S.status & DESTROYED)
return ..()
if(S.robot)
if(S.status & ROBOT)
user << "Medical equipment for a robot arm? How would that do any good..."
return
@@ -1454,8 +1454,7 @@ CIRCULAR SAW
user << "\red You mess up!"
S.take_damage(15)
S.open = 1
S.bleeding = 1
S.status |= OPEN|BLEEDING
if(S.display_name == "chest")
H:embryo_op_stage = 1.0
if(S.display_name == "groin")
@@ -1467,14 +1466,13 @@ CIRCULAR SAW
var/msg
if(a == 1)
msg = "\red [user]'s move slices open [H]'s wound, causing massive bleeding"
S.brute_dam += 35
S.createwound(rand(1,3))
S.take_damage(35, 0, 1, "Malpractice")
else if(a == 2)
msg = "\red [user]'s move slices open [H]'s wound, and causes \him to accidentally stab himself"
S.brute_dam += 35
S.take_damage(35, 0, 1, "Malpractice")
var/datum/organ/external/userorgan = user:organs["chest"]
if(userorgan)
userorgan.brute_dam += 35
userorgan.take_damage(35, 0, 1, "Malpractice")
else
user.take_organ_damage(35)
else if(a == 3)
@@ -1524,7 +1522,7 @@ CIRCULAR SAW
if(!hasorgans(M))
return ..()
var/datum/organ/external/S = M:organs["head"]
if(S.destroyed)
if(S.status & DESTROYED)
return
for(var/mob/O in viewers(M, null))
O.show_message(text("\red [M] gets \his [S.display_name] sawed at with [src] by [user].... It looks like [user] is trying to cut it off!"), 1)
@@ -1534,7 +1532,7 @@ CIRCULAR SAW
return
for(var/mob/O in viewers(M, null))
O.show_message(text("\red [M] gets \his [S.display_name] sawed off with [src] by [user]."), 1)
S.destroyed = 1
S.status |= DESTROYED
S.droplimb()
M:update_body()
if(1.0)
@@ -1624,10 +1622,10 @@ CIRCULAR SAW
else if(user.zone_sel.selecting != "chest" && hasorgans(M))
var/mob/living/carbon/H = M
var/datum/organ/external/S = H:organs[user.zone_sel.selecting]
if(S.destroyed)
if(S.status & DESTROYED)
return
if(S.robot)
if(S.status & ROBOT)
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, M)
spark_system.attach(M)
@@ -1688,32 +1686,32 @@ CIRCULAR SAW
var/datum/organ/external/temp = M.organs[zone]
var/msg
if(temp.destroyed)
if(temp.status & DESTROYED)
return ..()
// quickly convert embryo removal to bone surgery
if(zone == "chest" && M.embryo_op_stage == 3)
M.embryo_op_stage = 0
temp.open = 2
temp.bleeding = 0
temp.status &= ~BLEEDING
// quickly convert appendectomy to bone surgery
if(zone == "groin" && M.appendix_op_stage == 3)
M.appendix_op_stage = 0
temp.open = 2
temp.bleeding = 0
temp.status &= ~BLEEDING
msg = get_message(1,M,user,temp)
for(var/mob/O in viewers(M,null))
O.show_message("\red [msg]",1)
if(do_mob(user,M,time))
if(temp.open == 2 && !temp.bleeding)
if(temp.wound in wound)
if(temp.open == 2 && !(temp.status & BLEEDING))
if(temp.broken_description in wound)
if(temp.stage in stage)
temp.stage += 1
if(IsFinalStage(temp.stage))
temp.broken = 0
temp.status &= ~BROKEN
temp.stage = 0
temp.perma_injury = 0
temp.brute_dam = temp.min_broken_damage -1
@@ -1811,16 +1809,16 @@ CIRCULAR SAW
var/mob/living/carbon/human/H = M
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
if(e.destroyed) // this is nanites, not space magic
if(e.status & DESTROYED) // this is nanites, not space magic
continue
e.brute_dam = 0.0
e.burn_dam = 0.0
e.bandaged = 0.0
e.status &= ~BANDAGED
e.max_damage = initial(e.max_damage)
e.bleeding = 0
e.status &= ~BLEEDING
e.open = 0
e.broken = 0
e.destroyed = 0
e.status &= ~BROKEN
e.status &= ~DESTROYED
e.perma_injury = 0
e.update_icon()
H.update_body()
@@ -28,7 +28,7 @@ TILES
/obj/item/weapon/wire/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(!S.robot || user.a_intent != "help")
if(!(S.status & ROBOT) || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(0,15,0,1)
+2 -2
View File
@@ -327,7 +327,7 @@ WELDINGTOOOL
/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob)
if(hasorgans(M))
var/datum/organ/external/S = M:organs[user.zone_sel.selecting]
if(!S.robot || user.a_intent != "help")
if(!(S.status & ROBOT) || user.a_intent != "help")
return ..()
if(S.brute_dam)
S.heal_damage(15,0,0,1)
@@ -404,4 +404,4 @@ WELDINGTOOOL
M.update_clothing()
return
else
..()
..()
+1 -1
View File
@@ -264,7 +264,7 @@ SHARDS
var/mob/living/carbon/human/H = M
if(!((H.shoes) || (H.wear_suit && H.wear_suit.body_parts_covered & FEET)))
var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot"))
if(affecting.robot)
if(affecting.status & ROBOT)
return
H.Weaken(3)
affecting.take_damage(5, 0)
+4 -4
View File
@@ -170,12 +170,12 @@ TABLE AND RACK OBJECT INTERATIONS
"\red You hear the nauseating crunch of bone and gristle on solid metal and the squeal of said metal deforming.")
dented++
else if(prob(50))
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.get_gender_form("its")] bone and cartilage making a loud crunch!",\
"\red You smash \the [H]'s head on \the [src], [H.get_gender_form("its")] bone and cartilage making a loud crunch!",\
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.get_visible_gender() == MALE ? "his" : H.get_visible_gender() == FEMALE ? "her" : "their"] bone and cartilage making a loud crunch!",\
"\red You smash \the [H]'s head on \the [src], [H.get_visible_gender() == MALE ? "his" : H.get_visible_gender() == FEMALE ? "her" : "their"] bone and cartilage making a loud crunch!",\
"\red You hear the nauseating crunch of bone and gristle on solid metal, the noise echoing through the room.")
else
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.get_gender_form("its")] nose smashed and face bloodied!",\
"\red You smash \the [H]'s head on \the [src], [H.get_gender_form("its")] nose smashed and face bloodied!",\
G.assailant.visible_message("\red [G.assailant] smashes \the [H]'s head on \the [src], [H.get_visible_gender() == MALE ? "his" : H.get_visible_gender() == FEMALE ? "her" : "their"] nose smashed and face bloodied!",\
"\red You smash \the [H]'s head on \the [src], [H.get_visible_gender() == MALE ? "his" : H.get_visible_gender() == FEMALE ? "her" : "their"] nose smashed and face bloodied!",\
"\red You hear the nauseating crunch of bone and gristle on solid metal and the gurgling gasp of someone who is trying to breathe through their own blood.")
else
affecting.take_damage(rand(5,10), 0)
+1 -1
View File
@@ -375,7 +375,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
var/obj/item/weapon/implant/uplink/U = src.loc
var/mob/living/A = U.imp_in
var/datum/organ/external/head = A:organs["head"]
head.destroyed = 1
head.status |= DESTROYED
spawn(2)
head.droplimb()
del(src.master)
+5 -3
View File
@@ -130,12 +130,14 @@
if("feet")
if(!H.shoes)
affecting = H.get_organ(pick("l_leg", "r_leg"))
if(!affecting.robot) H.Weaken(3)
if(!(affecting.status & ROBOT))
H.Weaken(3)
if("l_hand", "r_hand")
if(!H.gloves)
affecting = H.get_organ(type)
if(!affecting.robot) H.Stun(3)
if(affecting && !affecting.robot)
if(!(affecting.status & ROBOT))
H.Stun(3)
if(affecting && !(affecting.status & ROBOT))
affecting.take_damage(1, 0)
H.UpdateDamageIcon()
H.updatehealth()