Merge pull request #1123 from Erthilo/master

Implant removal surgery, damp rag changes
This commit is contained in:
SkyMarshal
2012-05-21 13:03:28 -07:00
7 changed files with 120 additions and 22 deletions

View File

@@ -67,7 +67,7 @@
if ((O.client && !( O.blinded )))
O << "\red [src] has been scanned by [user] with the [W]"
else
if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) &&!(istype(W, /obj/item/weapon/chemsprayer)) &&!(istype(W, /obj/item/weapon/pepperspray)) && !(istype(W, /obj/item/weapon/plantbgone)) )
if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) &&!(istype(W, /obj/item/weapon/chemsprayer)) &&!(istype(W, /obj/item/weapon/pepperspray)) && !(istype(W, /obj/item/weapon/plantbgone)) && !(istype(W, /obj/item/weapon/reagent_containers/glass/rag)) )
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O << "\red <B>[src] has been hit by [user] with [W]</B>"

View File

@@ -1,5 +1,8 @@
/obj/item/weapon/implant
name = "implant"
desc = "An implant. Not usually seen outside a body."
icon = 'items.dmi'
icon_state = "implant"
var
implanted = null
mob/imp_in = null
@@ -16,15 +19,24 @@
trigger(emote, source as mob)
return
activate()
return
attackby(obj/item/weapon/I as obj, mob/user as mob)
..()
if (istype(I, /obj/item/weapon/implanter))
if (I:imp)
return
else
src.loc = I
I:imp = src
// del(src)
I:update()
return
implanted(source as mob)
return
get_data()
return "No information available"
@@ -34,8 +46,8 @@
/obj/item/weapon/implant/uplink
name = "uplink"
desc = "Summon things."
name = "uplink implant"
desc = "A micro-telecrystal implant which allows for instant transportation of equipment."
var
activation_emote = "chuckle"
obj/item/device/uplink/radio/uplink = null
@@ -63,8 +75,8 @@
/obj/item/weapon/implant/tracking
name = "tracking"
desc = "Track with this."
name = "tracking implant"
desc = "An implant which relays information to the appropriate tracking computer."
var
id = 1.0
@@ -89,8 +101,8 @@ Implant Specifics:<BR>"}
//Nuke Agent Explosive
/obj/item/weapon/implant/dexplosive
name = "explosive"
desc = "And boom goes the weasel."
name = "explosive implant"
desc = "A military grade micro bio-explosive. Highly dangerous."
var/activation_emote = "deathgasp"
var/coded = 0
@@ -140,8 +152,8 @@ Implant Specifics:<BR>"}
/obj/item/weapon/implant/chem
name = "chem"
desc = "Injects things."
name = "chemical implant"
desc = "A micro-injector that can be triggered remotely."
allow_reagents = 1
get_data()
@@ -190,8 +202,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/loyalty
name = "loyalty"
desc = "Makes you loyal or such."
name = "loyalty implant"
desc = "An implant which contains a small pod of nanobots which manipulate host mental functions to induce loyalty."
get_data()
var/dat = {"
@@ -220,8 +232,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
//BS12 Explosive
/obj/item/weapon/implant/explosive
name = "explosive"
desc = "And boom goes the weasel."
name = "explosive implant"
desc = "A military grade micro bio-explosive. Highly dangerous."
var/phrase = "supercalifragilisticexpialidocious"
@@ -263,8 +275,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
/obj/item/weapon/implant/death_alarm
name = "death alarm"
desc = "Danger Will Robinson!"
name = "death alarm implant"
desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
var/mobname = "Will Robinson"
get_data()
@@ -302,7 +314,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/compressed
name = "compressed matter implant"
desc = "*fwooomp*"
desc = "Based on compressed matter technology, can store a single item."
var/activation_emote = "sigh"
var/obj/item/scanned = null

View File

@@ -569,8 +569,48 @@ CIRCULAR SAW
return 0
if(!S.bleeding)
user << "\red [H] is not bleeding in \his [S.display_name]!"
return 0
if(S.implant)
if(H != user)
H.visible_message( \
"\red [user] is attempting to remove the implant in [H]'s [S.display_name] with \the [src].", \
"\red [user] attempts to remove the implant in your [S.display_name] with \the [src]!")
else
H.visible_message( \
"\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)
implant.loc = (get_turf(H))
implant.implanted = 0
S.implant = null
playsound(user, 'squelch1.ogg', 50, 1)
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!")
else
H.visible_message( \
"\red [user] fails to removes the implant!", \
"\red You fail to removes the implant!")
return 1
else
user << "\red [H] is not bleeding in \his [S.display_name]!"
return 0
if(H != user)
H.visible_message( \

View File

@@ -742,11 +742,30 @@ proc/blood_incompatible(donor,receiver)
return 0
/obj/item/weapon/rag
New() // So I don't have to grab maplock
spawn(1)
new/obj/item/weapon/reagent_containers/glass/rag(loc)
del src
/obj/item/weapon/reagent_containers/glass/rag
name = "damp rag"
desc = "For cleaning up messes, I suppose."
desc = "For cleaning up messes, you suppose."
w_class = 1
icon = 'toy.dmi'
icon_state = "rag"
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 5
can_be_placed_into = null
attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(ismob(target) && target.reagents && reagents.total_volume)
user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
src.reagents.reaction(target, TOUCH)
spawn(5) src.reagents.clear_reagents()
return
else
..()
afterattack(atom/A as obj|turf|area, mob/user as mob)
if(istype(A))
@@ -754,4 +773,11 @@ proc/blood_incompatible(donor,receiver)
if(do_after(user,30))
user.visible_message("[user] finishes wiping off the [A]!")
A.clean_blood()
return
return
examine()
if (!( usr ))
return
usr << "That's \a [src]."
usr << desc
return