Merge remote-tracking branch 'upstream/master' into repathing-sprite-accessories

This commit is contained in:
KasparoVy
2016-08-26 02:28:47 -04:00
112 changed files with 1584 additions and 1001 deletions
-1
View File
@@ -168,7 +168,6 @@
affected.status &= ~ORGAN_BROKEN
affected.status &= ~ORGAN_SPLINTED
affected.perma_injury = 0
surgery.can_cancel = 1
return 1
+5 -30
View File
@@ -13,7 +13,11 @@
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && !(affected.status & ORGAN_ROBOT) && affected.encased && affected.open >= 2
if(!affected)
return 0
if(affected.status & ORGAN_ROBOT)
return 0
return 1
/datum/surgery_step/open_encased/saw
@@ -26,12 +30,6 @@
time = 54
/datum/surgery_step/open_encased/saw/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected && affected.open == 2
/datum/surgery_step/open_encased/saw/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
@@ -52,8 +50,6 @@
user.visible_message("<span class='notice'> [user] has cut [target]'s [affected.encased] open with \the [tool].</span>", \
"<span class='notice'> You have cut [target]'s [affected.encased] open with \the [tool].</span>")
affected.open = 2.5
// crossin' the rubicon
surgery.can_cancel = 0
return 1
/datum/surgery_step/open_encased/saw/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
@@ -81,12 +77,6 @@
time = 24
/datum/surgery_step/open_encased/retract/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected && affected.open == 2.5
/datum/surgery_step/open_encased/retract/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
@@ -138,13 +128,6 @@
time = 24
/datum/surgery_step/open_encased/close/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected && affected.open == 3
/datum/surgery_step/open_encased/close/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
@@ -195,13 +178,6 @@
time = 24
/datum/surgery_step/open_encased/mend/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
return
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected && affected.open == 2.5
/datum/surgery_step/open_encased/mend/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(!hasorgans(target))
@@ -225,6 +201,5 @@
user.visible_message(msg, self_msg)
affected.open = 2
surgery.can_cancel = 1
return 1
-10
View File
@@ -7,8 +7,6 @@
can_infect = 1
/datum/surgery_step/generic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(target_zone == "eyes") //there are specific steps for eye surgery
return 0
if(!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -41,10 +39,6 @@
time = 16
/datum/surgery_step/generic/cut_open/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected.open == 0 && target_zone != "mouth"
/datum/surgery_step/generic/cut_open/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] starts the incision on [target]'s [affected.name] with \the [tool].", \
@@ -175,10 +169,6 @@
time = 24
/datum/surgery_step/generic/cauterize/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return ..() && affected.open && target_zone != "mouth"
/datum/surgery_step/generic/cauterize/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." , \
-1
View File
@@ -9,7 +9,6 @@
name = "Cavity Implant/Removal"
steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw,
/datum/surgery_step/open_encased/retract, /datum/surgery_step/cavity/make_space,/datum/surgery_step/cavity/place_item,/datum/surgery_step/cavity/close_space,/datum/surgery_step/open_encased/close,/datum/surgery_step/glue_bone, /datum/surgery_step/set_bone,/datum/surgery_step/finish_bone,/datum/surgery_step/generic/cauterize)
can_cancel = 0
possible_locs = list("chest","head")
@@ -69,13 +69,14 @@
if(parent && parent.children)
parent.children -= src
if(owner)
owner.organs_by_name[limb_name] = null
if(internal_organs)
for(var/obj/item/organ/internal/O in internal_organs)
internal_organs -= O
O.remove(owner,special = 1)
qdel(O)
if(owner)
owner.organs_by_name[limb_name] = null
if(children)
for(var/obj/item/organ/external/C in children)
@@ -411,8 +412,8 @@ This function completely restores a damaged organ to perfect condition.
last_dam = brute_dam + burn_dam
if(germ_level)
return 1
if(!wound_cleanup_timer)
wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), 1, wounds)
if(!wound_cleanup_timer && wounds.len)
wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), unique = 1, wounds)
if(update_icon())
owner.UpdateDamageIcon(1)
@@ -39,7 +39,7 @@
var/mob/living/carbon/human/H = M
parent = H.get_organ(check_zone(parent_organ))
if(!istype(parent))
log_to_dd("[src] attempted to insert into a [parent], but [parent] wasn't an organ! Area: [get_area(M)]")
log_debug("[src] attempted to insert into a [parent_organ], but [parent_organ] wasn't an organ! [atom_loc_line(M)]")
else
parent.internal_organs |= src
//M.internal_organs_by_name[src] |= src(H,1)
@@ -52,6 +52,8 @@
// Returns the removed object, which is usually just itself
// However, you MUST set the object's positiion yourself when you call this!
/obj/item/organ/internal/remove(mob/living/carbon/M, special = 0)
if(!owner)
log_debug("\'remove\' called on [src] without an owner! Mob: [M], [atom_loc_line(M)]")
owner = null
if(M)
M.internal_organs -= src
@@ -63,7 +65,7 @@
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/parent = H.get_organ(check_zone(parent_organ))
if(!istype(parent))
log_to_dd("[src] attempted to remove from a [parent], but [parent] didn't exist! Area: [get_area(M)], Mob: [M]")
log_debug("[src] attempted to remove from a [parent_organ], but [parent_organ] didn't exist! [atom_loc_line(M)]")
else
parent.internal_organs -= src
@@ -180,10 +180,6 @@
stored_mmi.forceMove(get_turf(src))
stored_mmi = null
..()
var/mob/living/holder_mob = loc
if(istype(holder_mob))
holder_mob.unEquip(src)
qdel(src)
/obj/item/organ/internal/brain/mmi_holder/proc/update_from_mmi()
+4 -1
View File
@@ -68,7 +68,10 @@
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open_enough_for_surgery()
if(affected)
return 1
return 0
+11 -9
View File
@@ -108,12 +108,15 @@
if(!hasorgans(target))
return 0
if(target_zone == "mouth" || target_zone == "eyes")
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 2 && (affected.status & ORGAN_DEAD)
if(!affected)
return 0
if(!(affected.status & ORGAN_DEAD))
return 0
return 1
/datum/surgery_step/fix_dead_tissue/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -164,11 +167,10 @@
if(!hasorgans(target))
return 0
if(target_zone == "mouth" || target_zone == "eyes")
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected.open == 3 && (affected.status & ORGAN_DEAD)
if(!(affected.status & ORGAN_DEAD))
return 0
return 1
/datum/surgery_step/fix_dead_tissue/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -181,7 +183,7 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(!istype(tool, /obj/item/weapon/reagent_containers))
return
return 0
var/obj/item/weapon/reagent_containers/container = tool
+10 -9
View File
@@ -83,7 +83,9 @@
/datum/surgery_step/robotics/external/unscrew_hatch/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 0 && target_zone != "mouth"
if(!affected)
return 0
return 1
/datum/surgery_step/robotics/external/unscrew_hatch/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -117,7 +119,9 @@
/datum/surgery_step/robotics/external/open_hatch/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open == 1
if(!affected)
return 0
return 1
/datum/surgery_step/robotics/external/open_hatch/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -151,7 +155,9 @@
/datum/surgery_step/robotics/external/close_hatch/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && affected.open
if(!affected)
return 0
return 1
/datum/surgery_step/robotics/external/close_hatch/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
@@ -200,9 +206,6 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(!affected)
return -1
if(affected.open != 2)
to_chat(user, "<span class='warning'>The [affected] needs to be open to be operated on!</span>")
return -1
if(implement_type in implements_heal_burn)
current_type = "burn"
@@ -335,7 +338,7 @@
var/obj/item/device/mmi/M = tool
if(!(affected && affected.open_enough_for_surgery()))
if(!affected)
return -1
if(!istype(M))
@@ -369,8 +372,6 @@
var/list/organs = target.get_organs_zone(target_zone)
if(!(affected && (affected.status & ORGAN_ROBOT)))
return -1
if(!affected.open_enough_for_surgery())
return -1
if(!organs.len)
to_chat(user, "<span class='notice'>There is no removeable organs in [target]'s [parse_zone(target_zone)]!</span>")
return -1