Merge branch 'master' of https://github.com/tgstation/-tg-station into mineral_economy

This commit is contained in:
Ergovisavi
2014-03-26 18:14:48 -07:00
648 changed files with 33156 additions and 31359 deletions
+68 -68
View File
@@ -1,68 +1,68 @@
//make incision
/datum/surgery_step/incise
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45)
time = 24
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to make an incision in [target]'s [parse_zone(target_zone)].</span>")
//clamp bleeders
/datum/surgery_step/clamp_bleeders
implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/wirecutters = 60, /obj/item/stack/cable_coil = 15)
time = 48
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].</span>")
//retract skin
/datum/surgery_step/retract_skin
implements = list(/obj/item/weapon/retractor = 100, /obj/item/weapon/screwdriver = 45, /obj/item/weapon/wirecutters = 35)
time = 32
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].</span>")
//close incision
/datum/surgery_step/close
implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20)
time = 32
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].</span>")
/datum/surgery_step/close/tool_check(mob/user, obj/item/tool)
if(istype(tool, /obj/item/weapon/cautery))
return 1
if(istype(tool, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = tool
if(WT.isOn()) return 1
else if(istype(tool, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = tool
if(L.lit) return 1
else if(istype(tool, /obj/item/weapon/match))
var/obj/item/weapon/match/M = tool
if(M.lit) return 1
return 0
//saw bone
/datum/surgery_step/saw
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/hatchet = 35, /obj/item/weapon/butch = 25)
time = 64
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>")
//make incision
/datum/surgery_step/incise
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/kitchenknife = 65, /obj/item/weapon/shard = 45)
time = 24
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to make an incision in [target]'s [parse_zone(target_zone)].</span>")
//clamp bleeders
/datum/surgery_step/clamp_bleeders
implements = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/wirecutters = 60, /obj/item/stack/cable_coil = 15)
time = 48
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].</span>")
//retract skin
/datum/surgery_step/retract_skin
implements = list(/obj/item/weapon/retractor = 100, /obj/item/weapon/screwdriver = 45, /obj/item/weapon/wirecutters = 35)
time = 32
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].</span>")
//close incision
/datum/surgery_step/close
implements = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20)
time = 32
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].</span>")
/datum/surgery_step/close/tool_check(mob/user, obj/item/tool)
if(istype(tool, /obj/item/weapon/cautery))
return 1
if(istype(tool, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = tool
if(WT.isOn()) return 1
else if(istype(tool, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = tool
if(L.lit) return 1
else if(istype(tool, /obj/item/weapon/match))
var/obj/item/weapon/match/M = tool
if(M.lit) return 1
return 0
//saw bone
/datum/surgery_step/saw
implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/hatchet = 35, /obj/item/weapon/butch = 25)
time = 64
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>")
+1 -1
View File
@@ -28,7 +28,7 @@
user.visible_message("<span class='notice'>[user] successfully removes [I] from [target]'s [target_zone]!</span>")
if(istype(I, /obj/item/weapon/implant/loyalty))
target << "<span class='notice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>"
del(I)
qdel(I)
else
user.visible_message("<span class='notice'>[user] can't find anything in [target]'s [target_zone].</span>")
return 1
+76 -76
View File
@@ -1,76 +1,76 @@
/////AUGMENTATION SURGERIES//////
//SURGERY STEPS
/datum/surgery_step/replace
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55)
time = 32
/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class ='notice'>[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!</span>")
/datum/surgery_step/add_limb
implements = list(/obj/item/robot_parts = 100)
time = 32
var/obj/item/organ/limb/L = null // L because "limb"
allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head")
/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ
if(L)
user.visible_message("<span class ='notice'>[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].</span>")
else
user.visible_message("<span class ='notice'>[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].</span>")
//ACTUAL SURGERIES
/datum/surgery/augmentation
name = "augmentation"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb)
species = list(/mob/living/carbon/human)
location = "anywhere" //Check attempt_initate_surgery() (in code/modules/surgery/helpers) to see what this does if you can't tell
has_multi_loc = 1 //Multi location stuff, See multiple_location_example.dm
//SURGERY STEP SUCCESSES
/datum/surgery_step/add_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(L)
if(ishuman(target))
var/mob/living/carbon/human/H = target
user.visible_message("<span class='notice'>[user] successfully augments [target]'s [parse_zone(user.zone_sel.selecting)]!</span>")
L.loc = get_turf(target)
H.organs -= L
switch(user.zone_sel.selecting) //for the surgery to progress this MUST still be the original "location" so it's safe to do this.
if("r_leg")
H.organs += new /obj/item/organ/limb/robot/r_leg(src)
if("l_leg")
H.organs += new /obj/item/organ/limb/robot/l_leg(src)
if("r_arm")
H.organs += new /obj/item/organ/limb/robot/r_arm(src)
if("l_arm")
H.organs += new /obj/item/organ/limb/robot/l_arm(src)
if("head")
H.organs += new /obj/item/organ/limb/robot/head(src)
if("chest")
var/datum/surgery_step/xenomorph_removal/xeno_removal = new
xeno_removal.remove_xeno(user, target) // remove an alien if there is one
H.organs += new /obj/item/organ/limb/robot/chest(src)
for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it
A.cure(1)
user.drop_item()
del(tool)
H.update_damage_overlays(0)
H.update_augments() //Gives them the Cyber limb overlay
add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]")
else
user.visible_message("<span class='notice'>[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!</span>")
return 1
/////AUGMENTATION SURGERIES//////
//SURGERY STEPS
/datum/surgery_step/replace
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55)
time = 32
/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class ='notice'>[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!</span>")
/datum/surgery_step/add_limb
implements = list(/obj/item/robot_parts = 100)
time = 32
var/obj/item/organ/limb/L = null // L because "limb"
allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head")
/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ
if(L)
user.visible_message("<span class ='notice'>[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].</span>")
else
user.visible_message("<span class ='notice'>[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].</span>")
//ACTUAL SURGERIES
/datum/surgery/augmentation
name = "augmentation"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/add_limb)
species = list(/mob/living/carbon/human)
location = "anywhere" //Check attempt_initate_surgery() (in code/modules/surgery/helpers) to see what this does if you can't tell
has_multi_loc = 1 //Multi location stuff, See multiple_location_example.dm
//SURGERY STEP SUCCESSES
/datum/surgery_step/add_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(L)
if(ishuman(target))
var/mob/living/carbon/human/H = target
user.visible_message("<span class='notice'>[user] successfully augments [target]'s [parse_zone(user.zone_sel.selecting)]!</span>")
L.loc = get_turf(target)
H.organs -= L
switch(user.zone_sel.selecting) //for the surgery to progress this MUST still be the original "location" so it's safe to do this.
if("r_leg")
H.organs += new /obj/item/organ/limb/robot/r_leg(src)
if("l_leg")
H.organs += new /obj/item/organ/limb/robot/l_leg(src)
if("r_arm")
H.organs += new /obj/item/organ/limb/robot/r_arm(src)
if("l_arm")
H.organs += new /obj/item/organ/limb/robot/l_arm(src)
if("head")
H.organs += new /obj/item/organ/limb/robot/head(src)
if("chest")
var/datum/surgery_step/xenomorph_removal/xeno_removal = new
xeno_removal.remove_xeno(user, target) // remove an alien if there is one
H.organs += new /obj/item/organ/limb/robot/chest(src)
for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it
A.cure(1)
user.drop_item()
qdel(tool)
H.update_damage_overlays(0)
H.update_augments() //Gives them the Cyber limb overlay
add_logs(user, target, "augmented", addition="by giving him new [parse_zone(user.zone_sel.selecting)] INTENT: [uppertext(user.a_intent)]")
else
user.visible_message("<span class='notice'>[user] [target] has no organic [parse_zone(user.zone_sel.selecting)] there!</span>")
return 1
@@ -1,54 +1,54 @@
/*
//CONTENTS//
Multiple location example surgery
//THE SURGERY//
it is very similar to a normal surgery.
Location = "anywhere" is the unique difference.
/datum/surgery/multiLocExample
name = "Multiple Location Surgery Example"
steps = list(/datum/surgery_step/multiLocExampleStep)
species = list(/mob/living/carbon)
location = "anywhere" //A Location "Anywhere" is handled in /code/modules/surgery/helpers attempt_initiate_surgery(), it is converted into a User.zone_sel.selecting.
has_multi_loc = 1 //Needed to handle Multilocation
//THE STEPS//
The block of "If's" is necessary, add or remove so you have just the areas you want, and set them to convert L(or your subsitute) to what you want it to be
EG: a zone on a mob (where user is targetting) to the limb thats actually there.
/datum/surgery_step/multiLocExampleStep
implements = list()
time = 9001
allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head", "etc")
// allowed_organs is a list of organs this operation works with, it is defined in the earliest instance of the surgery_step (Eg, datum/surgery_step/multiLocExampleStep)
// allowed_organs is handled in Handle_Multi_Loc() in surgery_step.dm
/datum/surgery_step/multiLocExampleStep/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ //new_organ is a variable in /datum/surgery_step, it is null by default, and is given a value in Handle_Multi_Loc()
//Although Handle_Multi_Loc() is /datum/surgery_step/SURGERYNAME/Handle_Multi_Loc() you do not need to rewrite it in the surgery
if(L)
user.visible_message("<span class ='notice'>Generic Statement.</span>")
else
user.visible_message("<span class ='notice'>Generic Statement 2.</span>")
/datum/surgery_step/multiLocExampleStep/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
You can use whatever you substituted "L" for here for useful things, swapping limbs for other limbs, etc.
if the surgery is intended to be MultiLoc but should only be performable once per limb, add this
"surgery.invalid_locations += user.zone_sel.selecting"
Just after you have swapped limbs around, see limb augmentation for an example of this
*/
//This file is commented out as to avoid:
// a snowflakey removal of it 100% of the time
// it's an example, it doesn't work perfectly due to just being the multiple locations section.
// It is also not set to compile, due to being Empty (according to the compiler)
//Enjoy making Multi-location operations! (if you understood my Rambling)
/*
//CONTENTS//
Multiple location example surgery
//THE SURGERY//
it is very similar to a normal surgery.
Location = "anywhere" is the unique difference.
/datum/surgery/multiLocExample
name = "Multiple Location Surgery Example"
steps = list(/datum/surgery_step/multiLocExampleStep)
species = list(/mob/living/carbon)
location = "anywhere" //A Location "Anywhere" is handled in /code/modules/surgery/helpers attempt_initiate_surgery(), it is converted into a User.zone_sel.selecting.
has_multi_loc = 1 //Needed to handle Multilocation
//THE STEPS//
The block of "If's" is necessary, add or remove so you have just the areas you want, and set them to convert L(or your subsitute) to what you want it to be
EG: a zone on a mob (where user is targetting) to the limb thats actually there.
/datum/surgery_step/multiLocExampleStep
implements = list()
time = 9001
allowed_organs = list("r_arm","l_arm","r_leg","l_leg","chest","head", "etc")
// allowed_organs is a list of organs this operation works with, it is defined in the earliest instance of the surgery_step (Eg, datum/surgery_step/multiLocExampleStep)
// allowed_organs is handled in Handle_Multi_Loc() in surgery_step.dm
/datum/surgery_step/multiLocExampleStep/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ //new_organ is a variable in /datum/surgery_step, it is null by default, and is given a value in Handle_Multi_Loc()
//Although Handle_Multi_Loc() is /datum/surgery_step/SURGERYNAME/Handle_Multi_Loc() you do not need to rewrite it in the surgery
if(L)
user.visible_message("<span class ='notice'>Generic Statement.</span>")
else
user.visible_message("<span class ='notice'>Generic Statement 2.</span>")
/datum/surgery_step/multiLocExampleStep/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
You can use whatever you substituted "L" for here for useful things, swapping limbs for other limbs, etc.
if the surgery is intended to be MultiLoc but should only be performable once per limb, add this
"surgery.invalid_locations += user.zone_sel.selecting"
Just after you have swapped limbs around, see limb augmentation for an example of this
*/
//This file is commented out as to avoid:
// a snowflakey removal of it 100% of the time
// it's an example, it doesn't work perfectly due to just being the multiple locations section.
// It is also not set to compile, due to being Empty (according to the compiler)
//Enjoy making Multi-location operations! (if you understood my Rambling)
//If you didn't understand this, Ask for RobRichards in Coderbus
+51 -51
View File
@@ -1,51 +1,51 @@
/////AUGMENTATION\\\\\
//See code/modules/surgery/organs/organ.dm for the parent "limb"
/obj/item/organ/limb/robot
name = "cyberlimb"
desc = "You should never be seeing this!"
status = ORGAN_ROBOTIC
/obj/item/organ/limb/robot/chest
name = "chest"
desc = "A Robotic chest"
icon_state = "chest"
max_damage = 200
body_part = CHEST
/obj/item/organ/limb/robot/head
name = "head"
desc = "A Robotic head"
icon_state = "head"
max_damage = 200
body_part = HEAD
/obj/item/organ/limb/robot/l_arm
name = "l_arm"
desc = "A Robotic arm"
icon_state = "l_arm"
max_damage = 75
body_part = ARM_LEFT
/obj/item/organ/limb/robot/l_leg
name = "l_leg"
desc = "A Robotic leg"
icon_state = "l_leg"
max_damage = 75
body_part = LEG_LEFT
/obj/item/organ/limb/robot/r_arm
name = "r_arm"
desc = "A Robotic arm"
icon_state = "r_arm"
max_damage = 75
body_part = ARM_RIGHT
/obj/item/organ/limb/robot/r_leg
name = "r_leg"
desc = "A Robotic leg"
icon_state = "r_leg"
max_damage = 75
body_part = LEG_RIGHT
/////AUGMENTATION\\\\\
//See code/modules/surgery/organs/organ.dm for the parent "limb"
/obj/item/organ/limb/robot
name = "cyberlimb"
desc = "You should never be seeing this!"
status = ORGAN_ROBOTIC
/obj/item/organ/limb/robot/chest
name = "chest"
desc = "A Robotic chest"
icon_state = "chest"
max_damage = 200
body_part = CHEST
/obj/item/organ/limb/robot/head
name = "head"
desc = "A Robotic head"
icon_state = "head"
max_damage = 200
body_part = HEAD
/obj/item/organ/limb/robot/l_arm
name = "l_arm"
desc = "A Robotic arm"
icon_state = "l_arm"
max_damage = 75
body_part = ARM_LEFT
/obj/item/organ/limb/robot/l_leg
name = "l_leg"
desc = "A Robotic leg"
icon_state = "l_leg"
max_damage = 75
body_part = LEG_LEFT
/obj/item/organ/limb/robot/r_arm
name = "r_arm"
desc = "A Robotic arm"
icon_state = "r_arm"
max_damage = 75
body_part = ARM_RIGHT
/obj/item/organ/limb/robot/r_leg
name = "r_leg"
desc = "A Robotic leg"
icon_state = "r_leg"
max_damage = 75
body_part = LEG_RIGHT