Shitton of bugfixes related to bryteloss/fireloss.

Note for coders: in order to help with seaching of health-related bugs I have moved many procs from /mob/ under /mob/living/.
Also, done some clean up and rearranging.
Results:
-admin rejuvenating now works again;
-people screams if getting creamated while still alive;
-diseases actually loose your health;
-monkeys wearing masks receive protection from acids as humans did;
-and other minor fixes and improvements.
Bugfix for imbuing a talisman.
RD now spawns with only 2 pens instead of 3.
Audible emotions can be heard by people outside of locker/other container.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1446 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2011-04-15 07:41:19 +00:00
parent 2a1818cc93
commit b58e465bbe
73 changed files with 1266 additions and 1210 deletions
+1 -1
View File
@@ -239,7 +239,7 @@
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been leapt on by [lamarr ? src.name : "the alien"]!</B>", 1, "\red You hear someone fall", 2)
if (!lamarr)
target:bruteloss += 5
target:take_overall_damage(5)
if(prob(70))
target:paralysis = max(target:paralysis, 5)
src.loc = target.loc
+73 -4
View File
@@ -160,9 +160,9 @@
O.amount -= 1
/obj/item/proc/attack(mob/M as mob, mob/user as mob, def_zone)
/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
if (!M) // not sure if this is the right thing...
if (!istype(M)) // not sure if this is the right thing...
return
var/messagesource = M
@@ -319,18 +319,87 @@
else
switch(src.damtype)
if("brute")
M.bruteloss += power
M.take_organ_damage(power)
if (prob(33)) // Added blood for whacking non-humans too
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood_floor(M)
if("fire")
if (!(M.mutations & 2))
M.fireloss += power
M.take_organ_damage(0, power)
M << "Aargh it burns!"
M.updatehealth()
src.add_fingerprint(user)
return 1
/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
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) \
))
// you can't stab someone in the eyes wearing a mask!
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) \
))
// you can't stab someone in the eyes wearing a mask!
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
src.add_fingerprint(user)
//if((user.mutations & 16) && prob(50))
// M = user
/*
M << "\red You stab yourself in the eye."
M.sdisabilities |= 1
M.weakened += 4
M.bruteloss += 10
*/
if(M != user)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M] has been stabbed in the eye with [src] by [user].", 1)
M << "\red [user] stabs you in the eye with [src]!"
user << "\red You stab [M] in the eye with [src]!"
else
user.visible_message( \
"\red [user] has stabbed themself with [src]!", \
"\red You stab yourself in the eyes with [src]!" \
)
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(7)
else
M.take_organ_damage(7)
M.eye_blurry += rand(3,4)
M.eye_stat += rand(2,4)
if (M.eye_stat >= 10)
M.eye_blurry += 15+(0.1*M.eye_blurry)
M.disabilities |= 1
if(M.stat != 2)
M << "\red Your eyes start to bleed profusely!"
if(prob(50))
if(M.stat != 2)
M << "\red You drop what you're holding and clutch at your eyes!"
M.drop_item()
M.eye_blurry += 10
M.paralysis += 1
M.weakened += 4
if (prob(M.eye_stat - 10 + 1))
if(M.stat != 2)
M << "\red You go blind!"
M.sdisabilities |= 1
return
+49 -54
View File
@@ -36,17 +36,17 @@ TELEPORT GUN
var/mode = 1//I guess I'll leave this here in case another mode to the weapon is added./N
afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if ((user.mutations & 16) && prob(50))
usr << "\red The pulse rifle blows up in your face."
usr.fireloss += 20
usr.drop_item()
user << "\red The pulse rifle blows up in your face."
user.take_organ_damage(0,20)
user.drop_item()
del(src)
return
if (flag)
return
if ((!istype(user, /mob/living/carbon/human)) && ticker.mode != "monkey")
usr << "\red You don't have the dexterity to do this!"
user << "\red You don't have the dexterity to do this!"
return
src.add_fingerprint(user)
@@ -70,7 +70,7 @@ TELEPORT GUN
A.process()
return
/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/energy/pulse_rifle/attack(mob/M as mob, mob/living/user as mob)
..()
/*
src.add_fingerprint(user)
@@ -131,7 +131,7 @@ TELEPORT GUN
..()
return
obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/user as mob)
obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a357))
@@ -153,7 +153,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/revolver/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/revolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
@@ -192,7 +192,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return
return
/obj/item/weapon/gun/revolver/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/revolver/attack(mob/M as mob, mob/living/user as mob)
if ((user.a_intent == "hurt" && src.bullets > 0))
playsound(user, 'Gunshot.ogg', 100, 1)
for(var/mob/O in viewers(M, null))
@@ -220,7 +220,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
//0, not loaded. 1, beanbag, 2, 12gauge, 3, blank, 4, dart.
/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/user as mob)
/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/shell/beanbag))
if (index == src.shellsmax || shellsunlimited >= 1) //...than sorry.
@@ -274,7 +274,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return 1
/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/shotgun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
@@ -419,7 +419,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/user as mob)
/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a38))
@@ -441,7 +441,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/detectiverevolver/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
var/detective = ((istype(user:w_uniform, /obj/item/clothing/under/det) || !istype(user, /mob/living/carbon/human)) && istype(user:head, /obj/item/clothing/head/det_hat) && istype(user:wear_suit, /obj/item/clothing/suit/det_suit))
@@ -486,7 +486,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return
return
/obj/item/weapon/gun/detectiverevolver/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/detectiverevolver/attack(mob/M as mob, mob/living/user as mob)
src.add_fingerprint(user)
var/mob/living/carbon/human/H = user
var/detective
@@ -571,17 +571,17 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
spawn(50) charge()
/obj/item/weapon/gun/energy/laser_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
if ((usr.mutations & 16) && prob(50))
usr << "\red The laser gun blows up in your face."
usr.fireloss += 20
usr.drop_item()
/obj/item/weapon/gun/energy/laser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if ((user.mutations & 16) && prob(50))
user << "\red The laser gun blows up in your face."
user.take_organ_damage(0,20)
user.drop_item()
del(src)
return
if (flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
usr << "\red You don't have the dexterity to do this!"
user << "\red You don't have the dexterity to do this!"
return
src.add_fingerprint(user)
@@ -624,7 +624,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
A.process()
return
/obj/item/weapon/gun/energy/laser_gun/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/energy/laser_gun/attack(mob/M as mob, mob/living/user as mob)
..()
/*
src.add_fingerprint(user)
@@ -657,7 +657,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
ratio = round(ratio, 0.25) * 100
src.icon_state = text("taser[]", ratio)
/obj/item/weapon/gun/energy/taser_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/energy/taser_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if(flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
@@ -700,7 +700,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
A.process()
/obj/item/weapon/gun/energy/taser_gun/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/energy/taser_gun/attack(mob/M as mob, mob/living/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red The taser gun discharges in your hand."
usr.paralysis += 60
@@ -789,7 +789,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
if(charges < maximum_charges) charges++
spawn(50) charge()
/obj/item/weapon/gun/energy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/energy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if(flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
@@ -827,16 +827,11 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
A.process()
/obj/item/weapon/gun/energy/crossbow/attack(mob/M as mob, mob/user as mob)
..()
// TELEPORT GUN
// This whole thing is just a copy/paste job
/obj/item/weapon/gun/energy/teleport_gun/attack_self(mob/user as mob)
/obj/item/weapon/gun/energy/teleport_gun/attack_self(mob/living/user as mob)
var/list/L = list( )
for(var/obj/machinery/teleport/hub/R in world)
var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z))
@@ -860,7 +855,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
ratio = round(ratio, 0.25) * 100
src.icon_state = text("taser[]", ratio)
/obj/item/weapon/gun/energy/teleport_gun/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/energy/teleport_gun/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if(flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
@@ -899,7 +894,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
A.process()
/obj/item/weapon/gun/energy/teleport_gun/proc/point_blank_teleport(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/energy/teleport_gun/proc/point_blank_teleport(mob/M as mob, mob/living/user as mob)
if (src.target == null)
var/list/turfs = list( )
for(var/turf/T in orange(10))
@@ -921,7 +916,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
do_teleport(M, src.target, 2)
return
/obj/item/weapon/gun/energy/teleport_gun/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/gun/energy/teleport_gun/attack(mob/M as mob, mob/living/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red You shoot the teleport gun while holding it backwards."
point_blank_teleport(usr)
@@ -1040,7 +1035,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
else if (mode == 1)
overlays += "nucgun-kill"
attack_self(mob/user as mob)
attack_self(mob/living/user as mob)
if(mode == 1)
mode = 2
user << "\blue You set the gun to stun"
@@ -1055,17 +1050,17 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
ratio = round(ratio, 0.25) * 100
src.icon_state = text("energy[]", ratio)
afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
if ((usr.mutations & 16) && prob(50))
usr << "\red The energy gun blows up in your face."
usr.fireloss += 20
usr.drop_item()
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if ((user.mutations & 16) && prob(50))
user << "\red The energy gun blows up in your face."
user.take_organ_damage(0,20)
user.drop_item()
del(src)
return
if (flag)
return
if ((istype(user, /mob/living/carbon/monkey)) && ticker.mode != "monkey")
usr << "\red You don't have the dexterity to do this!"
user << "\red You don't have the dexterity to do this!"
return
src.add_fingerprint(user)
@@ -1112,7 +1107,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
spawn()
A.process()
attack_self(mob/user as mob)
attack_self(mob/living/user as mob)
if(mode == 1)
mode = 2
user << "\blue You set the gun to stun"
@@ -1125,7 +1120,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
overlays -= "energystun"
update_icon()
attack(mob/M as mob, mob/user as mob)
attack(mob/M as mob, mob/living/user as mob)
..()
/*
src.add_fingerprint(user)
@@ -1188,7 +1183,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/user as mob)
/obj/item/weapon/gun/c96/attackby(obj/item/weapon/ammo/a763m/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a763m))
@@ -1202,7 +1197,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/c96/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
@@ -1281,7 +1276,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/user as mob)
/obj/item/weapon/gun/p08/attackby(obj/item/weapon/ammo/a9x19p/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a9x19p))
@@ -1295,7 +1290,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/p08/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
@@ -1380,7 +1375,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/glock/attackby(obj/item/weapon/ammo/a45/A as obj, mob/user as mob)
/obj/item/weapon/gun/glock/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a45))
@@ -1393,7 +1388,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/glock/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/glock/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
@@ -1462,7 +1457,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/m1911/attackby(obj/item/weapon/ammo/a45/A as obj, mob/user as mob)
/obj/item/weapon/gun/m1911/attackby(obj/item/weapon/ammo/a45/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a45))
@@ -1475,7 +1470,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/m1911/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/m1911/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
@@ -1545,7 +1540,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/carbine/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/user as mob)
/obj/item/weapon/gun/carbine/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/assaultmag))
@@ -1559,7 +1554,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/carbine/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/carbine/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
@@ -1630,7 +1625,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
..()
return
/obj/item/weapon/gun/ak331/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/user as mob)
/obj/item/weapon/gun/ak331/attackby(obj/item/weapon/ammo/assaultmag/A as obj, mob/living/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/assaultmag))
@@ -1644,7 +1639,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return 1
return
/obj/item/weapon/gun/ak331/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
/obj/item/weapon/gun/ak331/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob, flag)
if (flag)
return
+16 -7
View File
@@ -72,7 +72,12 @@ Deathnettle
/obj/item/weapon/grown/nettle/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
user << "\red The nettle burns your bare hand!"
user.fireloss += force
if(istype(user, /mob/living/carbon/human))
var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
var/datum/organ/external/affecting = user.organs[organ]
affecting.take_damage(0,force)
else
user.take_organ_damage(0,force)
/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob)
if (force > 0)
@@ -86,22 +91,26 @@ Deathnettle
/obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
user.fireloss += force
if(istype(user, /mob/living/carbon/human))
var/organ = (user.hand ? "l_":"r_") + pick("hand","hand","arm")
var/datum/organ/external/affecting = user.organs[organ]
affecting.take_damage(0,force)
else
user.take_organ_damage(0,force)
if(prob(50))
user.paralysis += 5
user << "\red You are stunned by the Deathnettle when you try picking it up!"
/obj/item/weapon/grown/deathnettle/attack(mob/living/carbon/M as mob, mob/user as mob)
if(!..()) return
if(istype(M, /mob/living/carbon/human))
if(istype(M, /mob/living))
M << "\red You are stunned by the powerful acid of the Deathnettle!"
M.eye_blurry += 4
M.eye_blurry += force/7
if(prob(20))
M.paralysis += 5
M.weakened += 2
M.paralysis += force/6
M.weakened += force/15
M.drop_item()
/obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob)
if (force > 0)
force -= rand(1,(force/3)+1) // When you whack someone with it, leaves fall off
+26 -72
View File
@@ -19,8 +19,11 @@ KNIFE
// FORK
/obj/item/weapon/kitchen/utensil/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
if(!istype(M))
return ..()
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
return ..()
if (src.icon_state == "forkloaded") //This is a poor way of handling it, but a proper rewrite of the fork to allow for a more varied foodening can happen when I'm in the mood. --NEO
if(M == user)
@@ -33,70 +36,21 @@ KNIFE
M.reagents.add_reagent("nutriment", 1)
src.icon_state = "fork"
return
if((usr.mutations & 16) && prob(50))
M << "\red You stab yourself in the eye."
M.sdisabilities |= 1
M.weakened += 4
M.bruteloss += 10
src.add_fingerprint(user)
if(!(user.zone_sel.selecting == ("eyes" || "head")))
return ..()
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
user << "\blue 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 << "\blue You cannot locate any eyes on this creature!"
return
for(var/mob/O in viewers(M, null))
if(O == (user || M)) continue
if(M == user) O.show_message(text("\red [] has stabbed themself with []!", user, src), 1)
else O.show_message(text("\red [] has been stabbed in the eye with [] by [].", M, src, user), 1)
if(M != user)
M << "\red [user] stabs you in the eye with [src]!"
user << "\red You stab [M] in the eye with [src]!"
else
user << "\red You stab yourself in the eyes with [src]!"
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M.organs["head"]
affecting.take_damage(7)
else
M.bruteloss += 7
M.eye_blurry += rand(3,4)
M.eye_stat += rand(2,4)
if (M.eye_stat >= 10)
M << "\red Your eyes start to bleed profusely!"
M.eye_blurry += 15+(0.1*M.eye_blurry)
M.disabilities |= 1
if(M.stat == 2) return
if(prob(50))
M << "\red You drop what you're holding and clutch at your eyes!"
M.eye_blurry += 10
M.paralysis += 1
M.weakened += 4
M.drop_item()
if (prob(M.eye_stat - 10 + 1))
M << "\red You go blind!"
M.sdisabilities |= 1
return
if((user.mutations & 16) && prob(50))
M = user
return eyestab(M,user)
// ROLLING PIN
/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red The [src] slips out of your hand and hits your head."
usr.bruteloss += 10
usr.paralysis += 2
/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
return
if (M.stat < 2 && M.health < 50 && prob(90))
var/mob/H = M
@@ -126,20 +80,20 @@ KNIFE
// KNIFE
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red You accidentally cut yourself with the [src]."
usr.bruteloss += 20
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
user.take_organ_damage(20)
return
return ..()
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// TRAY -Agouri :3 ///////////////////////////////////////////////
/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if((usr.mutations & 16) && prob(50)) //What if he's a clown?
if((user.mutations & 16) && prob(50)) //What if he's a clown?
M << "\red You accidentally slam yourself with the [src]!"
M.weakened += 1
M.bruteloss += 2
user.take_organ_damage(2)
if(prob(50))
//playsound(M, 'trayhit1.wav', 50, 1)
return
@@ -160,9 +114,9 @@ KNIFE
if(prob(15))
M.weakened += 3
M.bruteloss += 3
M.take_organ_damage(3)
else
M.bruteloss +=5
M.take_organ_damage(5)
if(prob(50))
//playsound(M, 'trayhit1.wav', 50, 1)
for(var/mob/O in viewers(M, null))
@@ -201,10 +155,10 @@ KNIFE
O.show_message(text("\red <B>[] slams [] with the tray!</B>", user, M), 1)
if(prob(10))
M.stunned = rand(1,3)
M.bruteloss += 3
M.take_organ_damage(3)
return
else
M.bruteloss +=5
M.take_organ_damage(5)
return
else //No eye or head protection, tough luck!
@@ -225,10 +179,10 @@ KNIFE
O.show_message(text("\red <B>[] slams [] in the face with the tray!</B>", user, M), 1)
if(prob(30))
M.stunned = rand(2,4)
M.bruteloss +=4
M.take_organ_damage(4)
return
else
M.bruteloss +=8
M.take_organ_damage(8)
if(prob(30))
M.weakened+=2
return
+24 -57
View File
@@ -5,65 +5,33 @@ MEDICAL
*/
/obj/item/weapon/medical/examine()
set src in view(1)
if (src.amount <= 0)
del(src)
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
if (M.stat == 2)
var/t_him = "it"
if (M.gender == MALE)
t_him = "him"
else if (M.gender == FEMALE)
t_him = "her"
user << "\red \The [M] is dead, you cannot help [t_him]!"
return
..()
if (!istype(M))
user << "\red \The [src] cannot be applied to [M]!"
return 1
usr << "\icon[src] \blue There [src.amount == 1 ? "is" : "are"] [src.amount] [src.name]\s left on the stack!"
/obj/item/weapon/medical/attack_hand(mob/user as mob)
if (user.r_hand == src || user.l_hand == src)
src.add_fingerprint(user)
var/obj/item/weapon/medical/split = new src.type(user)
split.amount = 1
src.amount--
if (user.hand)
user.l_hand = split
else
user.r_hand = split
split.layer = 20
split.add_fingerprint(user)
if (src.amount < 1)
del(src)
return
else
..()
/obj/item/weapon/medical/attackby(obj/item/weapon/medical/W as obj, mob/user as mob)
..()
if (!istype(W, src.type))
return
if (W.amount == 5)
return
if (W.amount + src.amount > 5)
src.amount = (W.amount + src.amount) - 5
W.amount = 5
else
W.amount += src.amount
del(src)
/obj/item/weapon/medical/attack(mob/M as mob, mob/user as mob)
if (M.health < 0)
return
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
if ( ! (istype(user, /mob/living/carbon/human) || \
istype(user, /mob/living/silicon) || \
istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") )
user << "\red You don't have the dexterity to do this!"
return
return 1
if (user)
if (M != user)
for (var/mob/O in viewers(M, null))
O.show_message("\red [M] has been applied with [src] by [user]", 1)
user.visible_message( \
"\blue [M] has been applied with [src] by [user].", \
"\blue You apply \the [src] to [M]." \
)
else
var/t_himself = "itself"
if (user.gender == MALE)
@@ -71,8 +39,10 @@ MEDICAL
else if (user.gender == FEMALE)
t_himself = "herself"
for (var/mob/O in viewers(M, null))
O.show_message("\red [M] applied [src] on [t_himself]", 1)
user.visible_message( \
"\blue [M] applied [src] on [t_himself].", \
"\blue You apply \the [src] on yourself." \
)
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
@@ -101,7 +71,4 @@ MEDICAL
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
src.amount--
if (src.amount <= 0)
del(src)
use(1)
@@ -190,10 +190,10 @@ CLIPBOARDS
attack_self(usr)
return
/obj/item/weapon/paper/attack_self(mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << text("\red You cut yourself on the paper.")
usr.bruteloss += 3
/obj/item/weapon/paper/attack_self(mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << text("\red You cut yourself on the paper.")
user.take_organ_damage(3)
return
var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text
n_name = copytext(n_name, 1, 32)
@@ -203,7 +203,7 @@ CLIPBOARDS
return
/obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob)
var/dist
var/dist
if (istype(user) && user.current) //is AI
dist = get_dist(src, user.current)
else //cyborg or AI not seeing through a camera
+230 -151
View File
@@ -13,7 +13,7 @@ CIRCULAR SAW
//RETRACTOR//
/////////////
/obj/item/weapon/retractor/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
if(!istype(M))
return
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat) && prob(50))))
@@ -22,31 +22,46 @@ CIRCULAR SAW
if (user.zone_sel.selecting == "eyes")
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// Eye surgery cannot be performed unless the head is clear
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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(1.0)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begins to have his eyes retracted."), 1)
else
O.show_message(text("\red [M] is having his eyes retracted by [user]."), 1)
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 << "\red You begin to pry open your eyes with [src]!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 15
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(15)
M.updatehealth()
else
M.take_organ_damage(15)
M.updatehealth()
M:eye_op_stage = 2.0
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
@@ -59,7 +74,7 @@ CIRCULAR SAW
////////////
/obj/item/weapon/hemostat/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
if(!istype(M))
return
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50))))
@@ -68,31 +83,45 @@ CIRCULAR SAW
if (user.zone_sel.selecting == "eyes")
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// Eye surgery cannot be performed unless the head is clear
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begins to have his eyes mended."), 1)
else
O.show_message(text("\red [M] is having his eyes mended by [user]."), 1)
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 << "\red You begin to mend your eyes with [src]!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 15
M.updatehealth()
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(15)
M.updatehealth()
else
M.take_organ_damage(15)
M:eye_op_stage = 3.0
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
@@ -105,7 +134,7 @@ CIRCULAR SAW
///////////
/obj/item/weapon/cautery/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
if(!istype(M))
return
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50))))
@@ -114,32 +143,45 @@ CIRCULAR SAW
if (user.zone_sel.selecting == "eyes")
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// Eye surgery cannot be performed unless the head is clear
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begins to have his eyes cauterized."), 1)
else
O.show_message(text("\red [M] is having his eyes cauterized by [user]."), 1)
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 << "\red You begin to cauterize your eyes!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 15
M.updatehealth()
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(15)
M.updatehealth()
else
M.take_organ_damage(15)
M.sdisabilities &= ~1
M:eye_op_stage = 0.0
@@ -156,78 +198,89 @@ CIRCULAR SAW
//SCALPEL//
///////////
/obj/item/weapon/scalpel/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
if(!istype(M))
return ..()
if((usr.mutations & 16) && prob(50))
M << "\red You stab yourself in the eye."
M.sdisabilities |= 1
M.weakened += 4
M.bruteloss += 10
src.add_fingerprint(user)
if((user.mutations & 16) && prob(50))
M = user
return eyestab(M,user)
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50))))
return ..()
src.add_fingerprint(user)
if(user.zone_sel.selecting == "head")
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begins to cut open his skull with [src]!"), 1)
else
O.show_message(text("\red [M] is beginning to have his head cut open with [src] by [user]."), 1)
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 << "\red You begin to cut open your head with [src]!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 15
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(15)
else
M.take_organ_damage(15)
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M.organs["head"]
var/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(7)
else
M.bruteloss += 7
M.take_organ_damage(7)
M.updatehealth()
M:brain_op_stage = 1.0
if(2.0)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begin to delicately remove the connections to his brain with [src]!"), 1)
else
O.show_message(text("\red [M] is having his connections to the brain delicately severed with [src] by [user]."), 1)
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 << "\red You begin to delicately remove the connections to the brain with [src]!"
if(prob(25))
user << "\red You nick an artery!"
M.bruteloss += 75
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(75)
else
M.take_organ_damage(75)
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M.organs["head"]
var/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(7)
else
M.bruteloss += 7
M.take_organ_damage(7)
M.updatehealth()
M:brain_op_stage = 3.0
@@ -239,38 +292,55 @@ CIRCULAR SAW
user << "\blue So far so good."
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// Eye surgery cannot be performed unless the head is clear
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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(0.0)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] begins to cut around his eyes with [src]!"), 1)
else
O.show_message(text("\red [M] is beginning to have his eyes incised with [src] by [user]."), 1)
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 << "\red You begin to cut open your eyes with [src]!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 15
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(15)
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
return ..()
/* wat
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
return ..()
*/
return
@@ -278,82 +348,91 @@ CIRCULAR SAW
//CIRCULAR SAW//
////////////////
/obj/item/weapon/circular_saw/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
if(!istype(M))
return ..()
if((usr.mutations & 16) && prob(50))
M << "\red You cut out your eyes."
M.sdisabilities |= 1
M.weakened += 4
M.bruteloss += 10
src.add_fingerprint(user)
if((user.mutations & 16) && prob(50))
M = user
return eyestab(M,user)
if(!((locate(/obj/machinery/optable, M.loc) && M.resting) || (locate(/obj/table/, M.loc) && M.lying && prob(50))))
return ..()
src.add_fingerprint(user)
if(user.zone_sel.selecting == "head")
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
user << "\blue You're going to need to remove that mask/helmet/glasses first."
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)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] saws open his skull with [src]!"), 1)
else
O.show_message(text("\red [M] has his skull sawed open with [src] by [user]."), 1)
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 << "\red You begin to saw open your head with [src]!"
if(prob(25))
user << "\red You mess up!"
M.bruteloss += 40
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/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(40)
M.updatehealth()
else
M.take_organ_damage(40)
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M.organs["head"]
var/datum/organ/external/affecting = M:organs["head"]
affecting.take_damage(7)
else
M.bruteloss += 7
M.take_organ_damage(7)
M.updatehealth()
M:brain_op_stage = 2.0
if(3.0)
for(var/mob/O in viewers(M, null))
if(O == (user || M))
continue
if(M == user)
O.show_message(text("\red [user] severs his brain's connection to the spine with [src]!"), 1)
else
O.show_message(text("\red [M] has his spine's connection to the brain severed with [src] by [user]."), 1)
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 << "\red You sever your brain's connection to the spine with [src]!"
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]!" \
)
M:brain_op_stage = 4.0
M.death()
var/obj/item/brain/B = new /obj/item/brain(M.loc)
var/obj/item/brain/B = new (M.loc)
B.owner = M
else
..()
return
else
return ..()
/*
else if((!(user.zone_sel.selecting == "head")) || (!(user.zone_sel.selecting == "groin")) || (!(istype(M, /mob/living/carbon/human))))
return ..()
return
*/
return
@@ -16,11 +16,10 @@ STUN BATON
/obj/item/weapon/sword/New()
color = pick("red","blue","green","purple")
/obj/item/weapon/sword/attack_self(mob/user as mob)
/obj/item/weapon/sword/attack_self(mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red You accidentally cut yourself with [src]."
user.bruteloss += 5
user.fireloss +=5
user.take_organ_damage(5,5)
src.active = !( src.active )
if (src.active)
user << "\blue [src] is now active."
@@ -204,15 +203,15 @@ STUN BATON
if(2)
charges -= 5
/obj/item/weapon/classic_baton/attack(mob/M as mob, mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red You club yourself over the head."
usr.weakened = max(3 * force, usr.weakened)
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
/obj/item/weapon/classic_baton/attack(mob/M as mob, mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red You club yourself over the head."
user.weakened = max(3 * force, user.weakened)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.TakeDamage("head", 2 * force, 0)
else
usr.bruteloss += 2 * force
user.take_organ_damage(2*force)
return
src.add_fingerprint(user)
+7 -52
View File
@@ -23,59 +23,14 @@ WELDINGTOOOL
return
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
if((usr.mutations & 16) && prob(50))
M << "\red You stab yourself in the eye."
M.sdisabilities |= 1
M.weakened += 4
M.bruteloss += 10
src.add_fingerprint(user)
if(!(user.zone_sel.selecting == ("eyes" || "head")))
if(!istype(M))
return ..()
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
user << "\blue 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 << "\blue You cannot locate any eyes on this creature!"
return
for(var/mob/O in viewers(M, null))
if(O == (user || M)) continue
if(M == user) O.show_message(text("\red [] has stabbed themself with []!", user, src), 1)
else O.show_message(text("\red [] has been stabbed in the eye with [] by [].", M, src, user), 1)
if(M != user)
M << "\red [user] stabs you in the eye with [src]!"
user << "\red You stab [M] in the eye with [src]!"
else
user << "\red You stab yourself in the eyes with [src]!"
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M.organs["head"]
affecting.take_damage(7)
else
M.bruteloss += 7
M.eye_blurry += rand(3,4)
M.eye_stat += rand(2,4)
if (M.eye_stat >= 10)
M << "\red Your eyes start to bleed profusely!"
M.eye_blurry += 15+(0.1*M.eye_blurry)
M.disabilities |= 1
if(M.stat == 2) return
if(prob(50))
M << "\red You drop what you're holding and clutch at your eyes!"
M.eye_blurry += 10
M.paralysis += 1
M.weakened += 4
M.drop_item()
if (prob(M.eye_stat - 10 + 1))
M << "\red You go blind!"
M.sdisabilities |= 1
return
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
return ..()
if((user.mutations & 16) && prob(50))
M = user
return eyestab(M,user)
@@ -330,4 +285,4 @@ WELDINGTOOOL
max_fuel = 80
w_class = 3.0
m_amt = 70
g_amt = 120
g_amt = 120
+1 -1
View File
@@ -284,7 +284,7 @@
if(distance <= 1) //Am I close enough to attack it?
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been attacked by [src.name]!</B>", 1, "\red You hear someone fall.", 2)
target:bruteloss += strength
target.take_organ_damage(strength)
special_attack()
src.loc = target.loc
set_null()
+5 -5
View File
@@ -15,11 +15,11 @@
new /obj/item/weapon/paper(src)
new /obj/item/weapon/pen(src)
/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red The [src] slips out of your hand and hits your head."
usr.bruteloss += 10
usr.paralysis += 2
/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob)
if ((user.mutations & 16) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
return
var/t = user:zone_sel.selecting
+3 -2
View File
@@ -188,12 +188,13 @@
flick("e_chairs", src)
flick("e_chairos", src.overl)
for(var/mob/M in src.loc)
for(var/mob/living/M in src.loc)
M.burn_skin(85)
M << "\red <B>You feel a deep shock course through your body!</B>"
sleep(1)
M.burn_skin(85)
if(M.stunned < 600) M.stunned = 600
if(M.stunned < 600)
M.stunned = 600
for(var/mob/M in hearers(src, null))
M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
+9 -9
View File
@@ -20,24 +20,24 @@
H.UpdateDamage()
return
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob)
var/chaplain = 0
if(user.mind && (user.mind.assigned_role == "Chaplain"))
chaplain = 1
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
user << "\red You don't have the dexterity to do this!"
return
if(!chaplain)
usr << "\red The book sizzles in your hands."
usr.fireloss += 10
user << "\red The book sizzles in your hands."
user.take_organ_damage(0,10)
return
if ((usr.mutations & 16) && prob(50))
usr << "\red The [src] slips out of your hand and hits your head."
usr.bruteloss += 10
usr.paralysis += 20
if ((user.mutations & 16) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 20
return
// if(..() == BLOCKED)
+5 -5
View File
@@ -8,13 +8,13 @@
new /obj/item/weapon/paper(src)
new /obj/item/weapon/pen(src)
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/user as mob)
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob)
//..()
if ((usr.mutations & 16) && prob(50))
usr << "\red The [src] slips out of your hand and hits your head."
usr.bruteloss += 10
usr.paralysis += 2
if ((user.mutations & 16) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
return
if (M.stat < 2 && M.health < 50 && prob(90))
+7 -7
View File
@@ -2,8 +2,8 @@
/obj/item/weapon/storage/firstaid/fire/New()
..()
if (empty) return
new /obj/item/weapon/medical/ointment( src )
new /obj/item/weapon/medical/ointment( src )
new /obj/item/stack/medical/ointment( src )
new /obj/item/stack/medical/ointment( src )
new /obj/item/device/healthanalyzer( src )
new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src )
new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src )
@@ -27,11 +27,11 @@
..()
if (empty) return
new /obj/item/weapon/medical/bruise_pack(src)
new /obj/item/weapon/medical/bruise_pack(src)
new /obj/item/weapon/medical/bruise_pack(src)
new /obj/item/weapon/medical/ointment(src)
new /obj/item/weapon/medical/ointment(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/ointment(src)
new /obj/item/stack/medical/ointment(src)
new /obj/item/device/healthanalyzer(src)
new /obj/item/weapon/reagent_containers/syringe/inaprovaline( src )
return
+2 -3
View File
@@ -299,7 +299,7 @@
src.ion_trail.stop()
return
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/user as mob)
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
if (!( src.on ))
return 0
if ((num < 0.01 || src.air_contents.total_moles() < num))
@@ -314,8 +314,7 @@
if (user)
var/d = G.toxins / 2
d = min(abs(user.health + 100), d, 25)
user.fireloss += d
user.updatehealth()
user.take_organ_damage(0,d)
return (G.oxygen >= 0.0075 ? 0.5 : 0)
else
if (G.oxygen >= 0.0075)
+13 -6
View File
@@ -144,16 +144,16 @@
var/obj/item/weapon/ore/rock = new rock_type(hit_loc)
for(var/mob/living/M in hit_loc)
if(prob(rocks_hit_chance))
M.bruteloss += rand(rocks_min_dmg,rocks_max_dmg)
M.take_organ_damage(rand(rocks_min_dmg,rocks_max_dmg))
M << "A chunk of [lowertext(rock.name)] hits you in the head!"
if(target_type == "mob")
for(var/i=0,i<rocks_amt,i++)
var/mob/hit_loc = pick(targets)
var/mob/living/hit_loc = pick(targets)
var/rock_type = pick(rocks_type)
var/obj/item/weapon/ore/rock = new rock_type(hit_loc.loc)
if(prob(rocks_hit_chance))
hit_loc.bruteloss += rand(rocks_min_dmg,rocks_max_dmg)
hit_loc.take_organ_damage(rand(rocks_min_dmg,rocks_max_dmg))
hit_loc << "A chunk of [lowertext(rock.name)] hits you in the head!"
/obj/trap/single
@@ -186,11 +186,18 @@
return varieties
/obj/trap/single/rockfalls/activate(victim)
/obj/trap/single/rockfalls/activate(mob/living/victim)
var/rock_type = pick(rocks_type)
var/obj/item/weapon/ore/rock = new rock_type(victim:loc)
if(prob(rock_hit_chance))
victim:bruteloss += rand(rock_min_dmg,rock_max_dmg)
if (istype(victim) && prob(rock_hit_chance))
var/dmg = rand(rock_min_dmg,rock_max_dmg)
if(istype(victim, /mob/living/carbon/human))
var/mob/living/carbon/human/H = victim
var/datum/organ/external/affecting = H.organs["head"]
affecting.take_damage(dmg)
H.updatehealth()
else
victim.take_organ_damage(dmg)
victim << "A chunk of [lowertext(rock.name)] hits you in the head!"
/obj/trap/area