Fixes and Tweaks

This commit is contained in:
Fox-McCloud
2015-05-15 21:58:24 -04:00
parent 8b91320866
commit 8a5e3663df
9 changed files with 94 additions and 860 deletions
+16
View File
@@ -265,6 +265,14 @@ var/list/uplink_items = list()
excludefrom = list("nuclear emergency")
surplus = 50
/datum/uplink_item/dangerous/flamethrower
name = "Flamethrower"
desc = "A flamethrower, fueled by a portion of highly flammable biotoxins stolen previously from Nanotrasen stations. Make a statement by roasting the filth in their own greed. Use with caution."
item = /obj/item/weapon/flamethrower/full/tank
cost = 11
gamemodes = list("nuclear emergency")
surplus = 40
/datum/uplink_item/dangerous/sword
name = "Energy Sword"
desc = "The esword is an edged weapon with a blade of pure energy. The sword is small enough to be pocketed when inactive. Activating it produces a loud, distinctive noise."
@@ -587,6 +595,14 @@ var/list/uplink_items = list()
item = /obj/item/weapon/aiModule/syndicate
cost = 14
/datum/uplink_item/device_tools/magboots
name = "Blood-Red Magboots"
desc = "A pair of magnetic boots with a Syndicate paintjob that assist with freer movement in space or on-station during gravitational generator failures. \
These reverse-engineered knockoffs of Nanotrasen's 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety."
item = /obj/item/clothing/shoes/magboots/syndie
cost = 5
gamemodes = list("nuclear emergency")
/datum/uplink_item/device_tools/plastic_explosives
name = "Composition C-4"
desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls or connect a signaler to its wiring to make it remotely detonable. It has a modifiable timer with a minimum setting of 10 seconds."
+4 -2
View File
@@ -98,9 +98,11 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
if(H.backbag == 2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(H.backbag == 3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
H.equip_or_collect(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda)
+23 -15
View File
@@ -24,13 +24,12 @@
/obj/item/weapon/flamethrower/Destroy()
if(weldtool)
del(weldtool)
qdel(weldtool)
if(igniter)
del(igniter)
qdel(igniter)
if(ptank)
del(ptank)
qdel(ptank)
..()
return
/obj/item/weapon/flamethrower/process()
@@ -60,8 +59,8 @@
item_state = "flamethrower_0"
return
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, proximity)
if(!proximity) return
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag)
if(flag) return // too close
// Make sure our user is still holding us
if(user && user.get_active_hand() == src)
var/turf/target_turf = get_turf(target)
@@ -83,7 +82,7 @@
ptank.loc = T
ptank = null
new /obj/item/stack/rods(T)
del(src)
qdel(src)
return
if(isscrewdriver(W) && igniter && !lit)
@@ -163,7 +162,6 @@
usr.set_machine(src)
if(href_list["light"])
if(!ptank) return
if(ptank.air_contents.toxins < 1) return
if(!status) return
lit = !lit
if(lit)
@@ -184,22 +182,26 @@
update_icon()
return
/obj/item/weapon/flamethrower/CheckParts()
weldtool = locate(/obj/item/weapon/weldingtool) in contents
igniter = locate(/obj/item/device/assembly/igniter) in contents
update_icon()
//Called from turf.dm turf/dblclick
/obj/item/weapon/flamethrower/proc/flame_turf(turflist)
if(!lit || operating) return
operating = 1
var/turf/previousturf = get_turf(src)
for(var/turf/simulated/T in turflist)
if(!T.air)
break
if(!previousturf && length(turflist)>1)
previousturf = get_turf(src)
if(T == previousturf)
continue //so we don't burn the tile we be standin on
if(previousturf && LinkBlocked(previousturf, T))
if(!T.CanAtmosPass(previousturf))
break
ignite_turf(T)
sleep(1)
previousturf = null
previousturf = T
operating = 0
for(var/mob/M in viewers(1, loc))
if((M.client && M.machine == src))
@@ -222,10 +224,16 @@
/obj/item/weapon/flamethrower/full/New(var/loc)
..()
weldtool = new /obj/item/weapon/weldingtool(src)
if(!weldtool)
weldtool = new /obj/item/weapon/weldingtool(src)
weldtool.status = 0
igniter = new /obj/item/device/assembly/igniter(src)
if(!igniter)
igniter = new /obj/item/device/assembly/igniter(src)
igniter.secured = 0
status = 1
update_icon()
return
/obj/item/weapon/flamethrower/full/tank/New(var/loc)
..()
ptank = new /obj/item/weapon/tank/plasma/full(src)
update_icon()
@@ -1,827 +0,0 @@
/* Surgery Tools
* Contains:
* Retractor
* Hemostat
* Cautery
* Surgical Drill
* Scalpel
* Circular Saw
*/
/*
* Retractor
*/
/obj/item/weapon/retractor
name = "retractor"
desc = "Retracts stuff."
icon = 'icons/obj/surgery.dmi'
icon_state = "retractor"
m_amt = 6000
g_amt = 3000
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
/*HAHA, SUCK IT, 2000 LINES OF SPAGHETTI CODE!
NOW YOUR JOB IOS DONE BY ONLY 500 LINES OF SPAGHETTI CODE!
LOOK FOR SURGERY.DM*/
/*
/obj/item/weapon/retractor/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return
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/slime))//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/obj/item/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 == "chest")
switch(M:alien_op_stage)
if(3.0)
var/mob/living/carbon/human/H = M
if(!istype(H))
return ..()
if(H.wear_suit || H.w_uniform)
user << "\red You're going to need to remove that suit/jumpsuit first."
return
var/obj/item/alien_embryo/A = locate() in M.contents
if(!A)
return ..()
user.visible_message("\red [user] begins to pull something out of [M]'s chest.", "\red You begin to pull the alien organism out of [M]'s chest.")
spawn(20 + rand(0,50))
if(!A || A.loc != M)
return
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
var/obj/item/organ/external/affecting = M:get_organ("chest")
if(affecting.take_damage(30))
M:UpdateDamageIcon()
else
M.take_organ_damage(30)
if(A.stage > 3)
var/chance = 15 + max(0, A.stage - 3) * 10
if(prob(chance))
A.AttemptGrow(0)
M:alien_op_stage = 4.0
if(M)
user.visible_message("\red [user] pulls an alien organism out of [M]'s chest.", "\red You pull the alien organism out of [M]'s chest.")
A.loc = M.loc //alien embryo handles cleanup
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
name = "hemostat"
desc = "You think you have seen this before."
icon = 'icons/obj/surgery.dmi'
icon_state = "hemostat"
m_amt = 5000
g_amt = 2500
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "pinched")
/*
/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/appendix/inflamed(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/obj/item/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 == "chest")
if(M:alien_op_stage == 2.0 || M:alien_op_stage == 3.0)
var/mob/living/carbon/human/H = M
if(!istype(H))
return ..()
if(H.wear_suit || H.w_uniform)
user << "\red You're going to need to remove that suit/jumpsuit first."
return
user.visible_message("\red [user] begins to dig around in [M]'s chest.", "\red You begin to dig around in [M]'s chest.")
spawn(20 + (M:alien_op_stage == 3 ? 0 : rand(0,50)))
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
var/obj/item/organ/external/affecting = M:get_organ("chest")
if(affecting.take_damage(30))
M:UpdateDamageIcon()
else
M.take_organ_damage(30)
var/obj/item/alien_embryo/A = locate() in M.contents
if(A)
var/dat = "\blue You found an unknown alien organism in [M]'s chest!"
if(A.stage < 4)
dat += " It's small and weak, barely the size of a foetus."
if(A.stage > 3)
dat += " It's grown quite large, and writhes slightly as you look at it."
if(prob(10))
A.AttemptGrow()
user << dat
M:alien_op_stage = 3.0
else
user << "\blue You find nothing of interest."
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
name = "cautery"
desc = "This stops bleeding."
icon = 'icons/obj/surgery.dmi'
icon_state = "cautery"
m_amt = 2500
g_amt = 750
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
attack_verb = list("burnt")
/*
/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()
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/obj/item/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
*/
/*
* Surgical Drill
*/
/obj/item/weapon/surgicaldrill
name = "surgical drill"
desc = "You can drill using this item. You dig?"
icon = 'icons/obj/surgery.dmi'
icon_state = "drill"
hitsound = 'sound/weapons/circsawhit.ogg'
m_amt = 10000
g_amt = 6000
flags = CONDUCT
force = 15.0
w_class = 2.0
origin_tech = "materials=1;biotech=1"
attack_verb = list("drilled")
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is pressing the [src.name] to \his temple and activating it! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is pressing [src.name] to \his chest and activating it! It looks like \he's trying to commit suicide.</b>")
return (BRUTELOSS)
/*
* Scalpel
*/
/obj/item/weapon/scalpel
name = "scalpel"
desc = "Cut, cut, and once more cut."
icon = 'icons/obj/surgery.dmi'
icon_state = "scalpel"
flags = CONDUCT
force = 10.0
sharp = 1
edge = 1
w_class = 2.0
throwforce = 5.0
throw_speed = 3
throw_range = 5
m_amt = 4000
g_amt = 1000
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>")
return (BRUTELOSS)
/*
/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/slime))
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/slime))
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/obj/item/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/obj/item/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/slime))
if(M.stat == 2)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M.name] is having its silky innards 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/slime))
if(M.stat == 2)
var/mob/living/carbon/slime/slime = M
if(slime.cores > 0)
if(istype(M, /mob/living/carbon/slime))
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/obj/item/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/obj/item/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/slime))//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/obj/item/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 if(user.zone_sel.selecting == "chest")
switch(M:alien_op_stage)
if(0.0)
var/mob/living/carbon/human/H = M
if(!istype(H))
return ..()
if(H.wear_suit || H.w_uniform)
user << "\red You're going to need to remove that suit/jumpsuit first."
return
user.visible_message("\red [user] begins to slice open [M]'s chest.", "\red You begin to slice open [M]'s chest.")
spawn(rand(20,50))
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
var/obj/item/organ/external/affecting = M:get_organ("chest")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
M.take_organ_damage(15)
M:alien_op_stage = 1.0
user << "\blue So far so good."
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
name = "circular saw"
desc = "For heavy duty cutting."
icon = 'icons/obj/surgery.dmi'
icon_state = "saw3"
hitsound = 'sound/weapons/circsawhit.ogg'
flags = CONDUCT
force = 15.0
w_class = 2.0
throwforce = 9.0
throw_speed = 3
throw_range = 5
m_amt = 10000
g_amt = 6000
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "sawed", "cut")
sharp = 1
edge = 1
/*
/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/slime))
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/slime))
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/obj/item/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/obj/item/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/slime))
if(M.stat == 2)
var/mob/living/carbon/slime/slime = M
if(slime.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)
slime.cores--
M << "\red [user] begins to remove one of your cores with [src]! ([slime.cores] cores remaining)"
user << "\red You cut one of [M]'s cores out with [src]! ([slime.cores] cores remaining)"
new slime.coretype(M.loc)
if(slime.cores <= 0)
M.icon_state = "[slime.colour] baby slime dead-nocore"
return
if(3.0)
/*if(M.mind && M.mind.changeling)
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.put_in_hands(B)
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 if(user.zone_sel.selecting == "chest")
switch(M:alien_op_stage)
if(1.0)
var/mob/living/carbon/human/H = M
if(!istype(H))
return ..()
if(H.wear_suit || H.w_uniform)
user << "\red You're going to need to remove that suit/jumpsuit first."
return
user.visible_message("\red [user] begins to slice through the bone of [M]'s chest.", "\red You begin to slice through the bone of [M]'s chest.")
spawn(20 + rand(0,50))
if(M == user && prob(25))
user << "\red You mess up!"
if(istype(M, /mob/living/carbon/human))
var/obj/item/organ/external/affecting = M:get_organ("chest")
if(affecting.take_damage(15))
M:UpdateDamageIcon()
else
M.take_organ_damage(15)
M:alien_op_stage = 2.0
user << "\blue So far so good."
else
return ..()
/*
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
return ..()
*/
return
*/
//misc, formerly from code/defines/weapons.dm
/obj/item/weapon/bonegel
name = "bone gel"
icon = 'icons/obj/surgery.dmi'
icon_state = "bone-gel"
force = 0
w_class = 2.0
throwforce = 1.0
/obj/item/weapon/FixOVein
name = "FixOVein"
icon = 'icons/obj/surgery.dmi'
icon_state = "fixovein"
force = 0
throwforce = 1.0
origin_tech = "materials=1;biotech=3"
w_class = 2.0
var/usage_amount = 10
/obj/item/weapon/bonesetter
name = "bone setter"
icon = 'icons/obj/surgery.dmi'
icon_state = "bone setter"
force = 8.0
throwforce = 9.0
throw_speed = 3
throw_range = 5
w_class = 2.0
attack_verb = list("attacked", "hit", "bludgeoned")
@@ -95,7 +95,6 @@
/obj/item/weapon/tank/plasma/New()
..()
src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -110,6 +109,12 @@
F.ptank = src
user.unEquip(src)
src.loc = F
F.update_icon()
return
/obj/item/weapon/tank/plasma/full/New()
..()
src.air_contents.toxins = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/weapon/tank/plasma/plasmaman
@@ -29,7 +29,6 @@
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/clothing/suit/space/rig/syndi(src)
new /obj/item/weapon/tank/jetpack/oxygen/harness(src)
new /obj/item/clothing/shoes/magboots/syndie(src)
/obj/structure/closet/syndicate/nuclear
desc = "It's a storage unit for a Syndicate boarding party.."
+1 -1
View File
@@ -106,7 +106,7 @@ datum/reagent/charcoal
id = "charcoal"
description = "Activated charcoal helps to absorb toxins."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#000000"
datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
+44 -12
View File
@@ -3,10 +3,10 @@
desc = "Retracts stuff."
icon = 'icons/obj/surgery.dmi'
icon_state = "retractor"
m_amt = 10000
g_amt = 5000
m_amt = 6000
g_amt = 3000
flags = CONDUCT
w_class = 1.0
w_class = 2.0
origin_tech = "materials=1;biotech=1"
@@ -28,8 +28,8 @@
desc = "This stops bleeding."
icon = 'icons/obj/surgery.dmi'
icon_state = "cautery"
m_amt = 5000
g_amt = 2500
m_amt = 2500
g_amt = 750
flags = CONDUCT
w_class = 1.0
origin_tech = "materials=1;biotech=1"
@@ -42,8 +42,8 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "drill"
hitsound = 'sound/weapons/circsawhit.ogg'
m_amt = 15000
g_amt = 10000
m_amt = 10000
g_amt = 6000
flags = CONDUCT
force = 15.0
w_class = 3.0
@@ -63,12 +63,14 @@
icon_state = "scalpel"
flags = CONDUCT
force = 10.0
sharp = 1
edge = 1
w_class = 1.0
throwforce = 5.0
throw_speed = 3
throw_range = 5
m_amt = 10000
g_amt = 5000
m_amt = 4000
g_amt = 1000
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -84,7 +86,7 @@
name = "circular saw"
desc = "For heavy duty cutting."
icon = 'icons/obj/surgery.dmi'
icon_state = "saw"
icon_state = "saw3"
hitsound = 'sound/weapons/circsawhit.ogg'
flags = CONDUCT
force = 15.0
@@ -92,12 +94,42 @@
throwforce = 9.0
throw_speed = 3
throw_range = 5
m_amt = 20000
g_amt = 10000
m_amt = 10000
g_amt = 6000
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "sawed", "cut")
//misc, formerly from code/defines/weapons.dm
/obj/item/weapon/bonegel
name = "bone gel"
icon = 'icons/obj/surgery.dmi'
icon_state = "bone-gel"
force = 0
w_class = 2.0
throwforce = 1.0
/obj/item/weapon/FixOVein
name = "FixOVein"
icon = 'icons/obj/surgery.dmi'
icon_state = "fixovein"
force = 0
throwforce = 1.0
origin_tech = "materials=1;biotech=3"
w_class = 2.0
var/usage_amount = 10
/obj/item/weapon/bonesetter
name = "bone setter"
icon = 'icons/obj/surgery.dmi'
icon_state = "bone setter"
force = 8.0
throwforce = 9.0
throw_speed = 3
throw_range = 5
w_class = 2.0
attack_verb = list("attacked", "hit", "bludgeoned")
/obj/item/weapon/surgical_drapes
name = "surgical drapes"
desc = "Nanotrasen brand surgical drapes provide optimal safety and infection control."
-1
View File
@@ -710,7 +710,6 @@
#include "code\game\objects\items\weapons\staff.dm"
#include "code\game\objects\items\weapons\stock_parts.dm"
#include "code\game\objects\items\weapons\stunbaton.dm"
#include "code\game\objects\items\weapons\surgery_tools.dm"
#include "code\game\objects\items\weapons\swords_axes_etc.dm"
#include "code\game\objects\items\weapons\syndie_uplink.dm"
#include "code\game\objects\items\weapons\table_rack_parts.dm"