mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user