Merge remote-tracking branch 'upstream/master' into lungsss

# Conflicts:
#	code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
#	code/modules/mob/living/carbon/carbon_defines.dm
This commit is contained in:
Fox-McCloud
2017-11-18 18:49:47 -05:00
394 changed files with 15085 additions and 5344 deletions
+5 -5
View File
@@ -34,7 +34,7 @@
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/screwdriver = 90
)
can_infect = 1
blood_level = 1
@@ -70,7 +70,7 @@
allowed_tools = list(
/obj/item/weapon/bonesetter = 100, \
/obj/item/weapon/wrench = 75 \
/obj/item/weapon/wrench = 90 \
)
time = 32
@@ -109,7 +109,7 @@
allowed_tools = list(
/obj/item/weapon/bonesetter = 100, \
/obj/item/weapon/wrench = 75 \
/obj/item/weapon/wrench = 90 \
)
time = 32
@@ -144,7 +144,7 @@
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/screwdriver = 90
)
can_infect = 1
blood_level = 1
@@ -168,7 +168,7 @@
affected.status &= ~ORGAN_BROKEN
affected.status &= ~ORGAN_SPLINTED
affected.perma_injury = 0
target.handle_splints()
return 1
/datum/surgery_step/finish_bone/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+5 -5
View File
@@ -68,8 +68,8 @@
name = "make cavity space"
allowed_tools = list(
/obj/item/weapon/surgicaldrill = 100, \
/obj/item/weapon/pen = 75, \
/obj/item/stack/rods = 50
/obj/item/weapon/pen = 90, \
/obj/item/stack/rods = 60
)
time = 54
@@ -93,9 +93,9 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser = 100, \
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/weldingtool = 25
/obj/item/clothing/mask/cigarette = 90, \
/obj/item/weapon/lighter = 60, \
/obj/item/weapon/weldingtool = 30
)
time = 24
+4 -4
View File
@@ -25,7 +25,7 @@
allowed_tools = list(
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/melee/energy/sword/cyborg/saw = 100, \
/obj/item/weapon/hatchet = 75
/obj/item/weapon/hatchet = 90
)
time = 54
@@ -72,7 +72,7 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/crowbar = 75
/obj/item/weapon/crowbar = 90
)
time = 24
@@ -123,7 +123,7 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/crowbar = 75
/obj/item/weapon/crowbar = 90
)
time = 24
@@ -173,7 +173,7 @@
name = "mend bone"
allowed_tools = list(
/obj/item/weapon/bonegel = 100, \
/obj/item/weapon/screwdriver = 75
/obj/item/weapon/screwdriver = 90
)
time = 24
+9 -9
View File
@@ -29,8 +29,8 @@
name = "make incision"
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
)
time = 16
@@ -60,8 +60,8 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/hemostat = 100, \
/obj/item/stack/cable_coil = 75, \
/obj/item/device/assembly/mousetrap = 10 //I don't know. Don't ask me. But I'm leaving it because hilarity.
/obj/item/stack/cable_coil = 90, \
/obj/item/device/assembly/mousetrap = 12 //I don't know. Don't ask me. But I'm leaving it because hilarity.
)
time = 24
@@ -87,8 +87,8 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/crowbar = 55, \
/obj/item/weapon/kitchen/utensil/fork = 75)
/obj/item/weapon/crowbar = 65, \
/obj/item/weapon/kitchen/utensil/fork = 90)
time = 64
@@ -114,9 +114,9 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser = 100, \
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/weldingtool = 25
/obj/item/clothing/mask/cigarette = 90, \
/obj/item/weapon/lighter = 60, \
/obj/item/weapon/weldingtool = 30
)
time = 24
+15 -15
View File
@@ -22,13 +22,13 @@
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/scissors = 10, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
/obj/item/weapon/scissors = 12, \
/obj/item/weapon/twohanded/chainsaw = 1, \
/obj/item/weapon/claymore = 5, \
/obj/item/weapon/melee/energy/ = 5, \
/obj/item/weapon/pen/edagger = 5, \
/obj/item/weapon/claymore = 6, \
/obj/item/weapon/melee/energy/ = 6, \
/obj/item/weapon/pen/edagger = 6, \
)
time = 16
@@ -60,8 +60,8 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser = 100, \
/obj/item/weapon/hemostat = 100, \
/obj/item/stack/cable_coil = 75, \
/obj/item/device/assembly/mousetrap = 20
/obj/item/stack/cable_coil = 90, \
/obj/item/device/assembly/mousetrap = 25
)
time = 24
@@ -94,8 +94,8 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/crowbar = 75, \
/obj/item/weapon/kitchen/utensil/fork = 50
/obj/item/weapon/crowbar = 90, \
/obj/item/weapon/kitchen/utensil/fork = 60
)
time = 24
@@ -149,9 +149,9 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser = 100, \
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/weldingtool = 25
/obj/item/clothing/mask/cigarette = 90, \
/obj/item/weapon/lighter = 60, \
/obj/item/weapon/weldingtool = 30
)
time = 24
@@ -199,8 +199,8 @@
allowed_tools = list(
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/melee/energy/sword/cyborg/saw = 100, \
/obj/item/weapon/hatchet = 75, \
/obj/item/weapon/melee/arm_blade = 60
/obj/item/weapon/hatchet = 90, \
/obj/item/weapon/melee/arm_blade = 75
)
time = 100
+18 -1
View File
@@ -81,7 +81,24 @@
return 1
return 0
/proc/get_pain_modifier(mob/living/carbon/human/M) //returns modfier to make surgery harder if patient is conscious and feels pain
if(M.stat) //stat=0 if CONSCIOUS, 1=UNCONSCIOUS and 2=DEAD. Operating on dead people is easy, too. Just sleeping won't work, though.
return 1
if(NO_PAIN in M.species.species_traits)//if you don't feel pain, you can hold still
return 1
if(M.reagents.has_reagent("hydrocodone"))//really good pain killer
return 0.99
if(M.reagents.has_reagent("morphine"))//Just as effective as Hydrocodone, but has an addiction chance
return 0.99
if(M.drunk >= 80)//really damn drunk
return 0.95
if(M.drunk >= 40)//pretty drunk
return 0.9
if(M.reagents.has_reagent("sal_acid")) //it's better than nothing, as far as painkillers go.
return 0.85
if(M.drunk >= 15)//a little drunk
return 0.85
return 0.8 //20% failure chance
/proc/get_location_modifier(mob/M)
var/turf/T = get_turf(M)
+2 -2
View File
@@ -171,8 +171,8 @@
name = "connect limb"
allowed_tools = list(
/obj/item/weapon/hemostat = 100, \
/obj/item/stack/cable_coil = 75, \
/obj/item/device/assembly/mousetrap = 20
/obj/item/stack/cable_coil = 90, \
/obj/item/device/assembly/mousetrap = 25
)
can_infect = 1
+23 -1
View File
@@ -58,6 +58,8 @@
var/can_grasp
var/can_stand
var/splinted_count = 0 //Time when this organ was last splinted
/obj/item/organ/external/necrotize(update_sprite=TRUE)
if(status & (ORGAN_ROBOT|ORGAN_DEAD))
return
@@ -84,6 +86,7 @@
if(owner)
owner.bodyparts_by_name[limb_name] = null
owner.splinted_limbs -= src
QDEL_LIST(children)
@@ -196,6 +199,10 @@
if(status & ORGAN_BROKEN && prob(40) && brute)
owner.emote("scream") //getting hit on broken hand hurts
if(status & ORGAN_SPLINTED && prob((brute + burn)*4)) //taking damage to splinted limbs removes the splints
status &= ~ORGAN_SPLINTED
owner.visible_message("<span class='danger'>The splint on [owner]'s left arm unravels from their [name]!</span>","<span class='userdanger'>The splint on your [name] unravels!</span>")
owner.handle_splints()
if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn)
@@ -458,6 +465,18 @@ Note that amputating the affected organ does in fact remove the infection from t
tbrute = 3
return "[tbrute][tburn]"
/obj/item/organ/external/proc/update_splints()
if(!(status & ORGAN_SPLINTED))
owner.splinted_limbs -= src
return
if(owner.step_count >= splinted_count + SPLINT_LIFE)
status &= ~ORGAN_SPLINTED //oh no, we actually need surgery now!
owner.visible_message("<span class='danger'>[owner] screams in pain as their splint pops off their [name]!</span>","<span class='userdanger'>You scream in pain as your splint pops off your [name]!</span>")
owner.emote("scream")
owner.Stun(2)
owner.handle_splints()
/****************************************************
DISMEMBERMENT
****************************************************/
@@ -648,6 +667,9 @@ Note that amputating the affected organ does in fact remove the infection from t
var/is_robotic = status & ORGAN_ROBOT
var/mob/living/carbon/human/victim = owner
if(status & ORGAN_SPLINTED)
victim.splinted_limbs -= src
for(var/obj/item/I in embedded_objects)
embedded_objects -= I
I.forceMove(src)
@@ -754,4 +776,4 @@ Note that amputating the affected organ does in fact remove the infection from t
for(var/X in bodyparts)
var/obj/item/organ/external/L = X
for(var/obj/item/I in L.embedded_objects)
return 1
return 1
+1 -1
View File
@@ -148,7 +148,7 @@ var/global/list/limb_icon_cache = list()
overlays |= facial_s
if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
var/datum/sprite_accessory/hair_style = hair_styles_full_list[h_style]
if(hair_style && ((species.name in hair_style.species_allowed) || (src.species.bodyflags & ALL_RPARTS)))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(species.name == "Slime People") // I am el worstos
+17 -17
View File
@@ -68,17 +68,17 @@
/datum/surgery_step/internal/manipulate_organs
name = "manipulate organs"
allowed_tools = list(/obj/item/organ/internal = 100, /obj/item/weapon/reagent_containers/food/snacks/organ = 0)
var/implements_extract = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/kitchen/utensil/fork = 55)
var/implements_extract = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/kitchen/utensil/fork = 70)
var/implements_mend = list(/obj/item/stack/medical/bruise_pack = 20,/obj/item/stack/medical/bruise_pack/advanced = 100,/obj/item/stack/nanopaste = 100)
var/implements_clean = list(/obj/item/weapon/reagent_containers/dropper = 100,
/obj/item/weapon/reagent_containers/glass/bottle = 75,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 70,
/obj/item/weapon/reagent_containers/food/drinks/bottle = 65,
/obj/item/weapon/reagent_containers/glass/beaker = 60,
/obj/item/weapon/reagent_containers/spray = 50,
/obj/item/weapon/reagent_containers/glass/bucket = 40)
/obj/item/weapon/reagent_containers/glass/bottle = 90,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 85,
/obj/item/weapon/reagent_containers/food/drinks/bottle = 80,
/obj/item/weapon/reagent_containers/glass/beaker = 75,
/obj/item/weapon/reagent_containers/spray = 60,
/obj/item/weapon/reagent_containers/glass/bucket = 50)
//Finish is just so you can close up after you do other things.
var/implements_finsh = list(/obj/item/weapon/scalpel/laser/manager = 100,/obj/item/weapon/retractor = 100 ,/obj/item/weapon/crowbar = 75)
var/implements_finsh = list(/obj/item/weapon/scalpel/laser/manager = 100,/obj/item/weapon/retractor = 100 ,/obj/item/weapon/crowbar = 90)
var/current_type
var/obj/item/organ/internal/I = null
var/obj/item/organ/external/affected = null
@@ -436,7 +436,7 @@
allowed_tools = list(
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/melee/energy/sword/cyborg/saw = 100, \
/obj/item/weapon/hatchet = 75
/obj/item/weapon/hatchet = 90
)
time = 54
@@ -464,13 +464,13 @@
name = "cut carapace"
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/scissors = 10, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
/obj/item/weapon/scissors = 12, \
/obj/item/weapon/twohanded/chainsaw = 1, \
/obj/item/weapon/claymore = 5, \
/obj/item/weapon/melee/energy/ = 5, \
/obj/item/weapon/pen/edagger = 5, \
/obj/item/weapon/claymore = 6, \
/obj/item/weapon/melee/energy/ = 6, \
/obj/item/weapon/pen/edagger = 6, \
)
time = 16
@@ -499,8 +499,8 @@
allowed_tools = list(
/obj/item/weapon/scalpel/laser/manager = 100, \
/obj/item/weapon/retractor = 100, \
/obj/item/weapon/crowbar = 75, \
/obj/item/weapon/kitchen/utensil/fork = 50
/obj/item/weapon/crowbar = 90, \
/obj/item/weapon/kitchen/utensil/fork = 60
)
time = 24
+9 -9
View File
@@ -62,7 +62,7 @@
name = "mend internal bleeding"
allowed_tools = list(
/obj/item/weapon/FixOVein = 100, \
/obj/item/stack/cable_coil = 75
/obj/item/stack/cable_coil = 90
)
can_infect = 1
blood_level = 1
@@ -107,8 +107,8 @@
name = "remove dead tissue"
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
)
can_infect = 1
@@ -156,12 +156,12 @@
name = "treat necrosis"
allowed_tools = list(
/obj/item/weapon/reagent_containers/dropper = 100,
/obj/item/weapon/reagent_containers/glass/bottle = 75,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 70,
/obj/item/weapon/reagent_containers/food/drinks/bottle = 65,
/obj/item/weapon/reagent_containers/glass/beaker = 60,
/obj/item/weapon/reagent_containers/spray = 50,
/obj/item/weapon/reagent_containers/glass/bucket = 40
/obj/item/weapon/reagent_containers/glass/bottle = 90,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 85,
/obj/item/weapon/reagent_containers/food/drinks/bottle = 80,
/obj/item/weapon/reagent_containers/glass/beaker = 75,
/obj/item/weapon/reagent_containers/spray = 60,
/obj/item/weapon/reagent_containers/glass/bucket = 50
)
can_infect = 0
+5 -5
View File
@@ -18,8 +18,8 @@
/datum/surgery_step/slime/cut_flesh
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
)
time = 16
@@ -46,8 +46,8 @@
/datum/surgery_step/slime/cut_innards
allowed_tools = list(
/obj/item/weapon/scalpel = 100, \
/obj/item/weapon/kitchen/knife = 75, \
/obj/item/weapon/shard = 50, \
/obj/item/weapon/kitchen/knife = 90, \
/obj/item/weapon/shard = 60, \
)
time = 16
@@ -73,7 +73,7 @@
/datum/surgery_step/slime/saw_core
allowed_tools = list(
/obj/item/weapon/circular_saw = 100, \
/obj/item/weapon/hatchet = 75
/obj/item/weapon/hatchet = 90
)
time = 16
+6
View File
@@ -116,6 +116,12 @@
prob_chance = allowed_tools[implement_type]
prob_chance *= get_location_modifier(target)
if(!ispath(surgery.steps[surgery.status], /datum/surgery_step/robotics) && !ispath(surgery.steps[surgery.status], /datum/surgery_step/rigsuit))//Repairing robotic limbs doesn't hurt, and neither does cutting someone out of a rig
if(ishuman(target))
var/mob/living/carbon/human/H = target //typecast to human
prob_chance *= get_pain_modifier(H)//operating on conscious people is hard.
if(prob(prob_chance) || isrobot(user))
if(end_step(user, target, target_zone, tool, surgery))
advance = 1