mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-26 01:52:29 +00:00
Fixes #3993
This commit is contained in:
@@ -194,7 +194,7 @@ BLIND // can't see anything
|
||||
name = "Space helmet"
|
||||
icon_state = "space"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
item_state = "space"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
@@ -212,7 +212,7 @@ BLIND // can't see anything
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 3
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | THICKMATERIAL
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/clothing/suit/armor
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags = FPRINT | TABLEPASS | THICKMATERIAL
|
||||
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO
|
||||
min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
|
||||
@@ -1291,3 +1291,22 @@
|
||||
W.update_icon()
|
||||
W.message = message
|
||||
W.add_fingerprint(src)
|
||||
|
||||
/mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone)
|
||||
. = 1
|
||||
|
||||
if(!user)
|
||||
target_zone = pick("chest","chest","chest","left leg","right leg","left arm", "right arm", "head")
|
||||
else if(!target_zone)
|
||||
target_zone = user.zone_sel.selecting
|
||||
|
||||
switch(target_zone)
|
||||
if("head")
|
||||
if(head && head.flags & THICKMATERIAL)
|
||||
. = 0
|
||||
else
|
||||
if(wear_suit && wear_suit.flags & THICKMATERIAL)
|
||||
. = 0
|
||||
if(!. && error_msg && user)
|
||||
// Might need re-wording.
|
||||
user << "<span class='alert'>There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into.</span>"
|
||||
@@ -52,7 +52,7 @@ emp_act
|
||||
return -1 // complete projectile permutation
|
||||
|
||||
if(check_shields(P.damage, "the [P.name]"))
|
||||
P.on_hit(src, 2)
|
||||
P.on_hit(src, 2, def_zone)
|
||||
return 2
|
||||
|
||||
//BEGIN BOOK'S TASER NERF.
|
||||
|
||||
@@ -211,6 +211,9 @@
|
||||
O.emp_act(severity)
|
||||
..()
|
||||
|
||||
/mob/living/proc/can_inject()
|
||||
return 1
|
||||
|
||||
/mob/living/proc/get_organ_target()
|
||||
var/mob/shooter = src
|
||||
var/t = shooter:zone_sel.selecting
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
return 2
|
||||
if(!P.nodamage)
|
||||
apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone, absorb, 0, P)
|
||||
P.on_hit(src, absorb)
|
||||
P.on_hit(src, absorb, def_zone)
|
||||
return absorb
|
||||
|
||||
/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = 5)//Standardization and logging -Sieve
|
||||
|
||||
@@ -201,3 +201,9 @@
|
||||
dat += "<br>"
|
||||
src << browse(dat, "window=airoster")
|
||||
onclose(src, "airoster")
|
||||
|
||||
//can't inject synths
|
||||
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
|
||||
if(error_msg)
|
||||
user << "<span class='alert'>The armoured plating is too tough.</span>"
|
||||
return 0
|
||||
|
||||
@@ -90,12 +90,17 @@
|
||||
origin_tech = "materials=2;syndicate=5"
|
||||
|
||||
|
||||
/obj/item/weapon/pen/paralysis/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/pen/paralysis/attack(mob/living/M as mob, mob/user as mob)
|
||||
|
||||
if(!(istype(M,/mob)))
|
||||
return
|
||||
|
||||
..()
|
||||
if(reagents.total_volume)
|
||||
if(M.reagents) reagents.trans_to(M, 50)
|
||||
|
||||
|
||||
if(M.can_inject(user,1))
|
||||
if(reagents.total_volume)
|
||||
if(M.reagents) reagents.trans_to(M, 50)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -62,14 +62,15 @@
|
||||
var/datum/reagents/R = reagent_list[reagent_list.len]
|
||||
R.add_reagent(reagent, 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M as mob, mob/user as mob)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
user << "\red The injector is empty."
|
||||
return
|
||||
if (!( istype(M, /mob) ))
|
||||
if (!(istype(M)))
|
||||
return
|
||||
if (R.total_volume)
|
||||
|
||||
if (R.total_volume && M.can_inject(user,1))
|
||||
user << "\blue You inject [M] with the injector."
|
||||
M << "\red You feel a tiny prick!"
|
||||
|
||||
|
||||
@@ -140,11 +140,23 @@
|
||||
return
|
||||
|
||||
if(ismob(target) && target != user)
|
||||
|
||||
var/time = 30 //Injecting through a hardsuit takes longer due to needing to find a port.
|
||||
|
||||
if(istype(target,/mob/living/carbon/human))
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space))
|
||||
time = 60
|
||||
if(H.wear_suit)
|
||||
if(istype(H.wear_suit,/obj/item/clothing/suit/space))
|
||||
time = 60
|
||||
else if(!H.can_inject(user, 1))
|
||||
return
|
||||
|
||||
else if(isliving(target))
|
||||
|
||||
var/mob/living/M = target
|
||||
if(!M.can_inject(user, 1))
|
||||
return
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
if(time == 30)
|
||||
|
||||
@@ -93,10 +93,18 @@
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>syringegun</b> ([R])"
|
||||
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a <b>syringegun</b> ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
|
||||
if(D.reagents)
|
||||
D.reagents.trans_to(M, 15)
|
||||
var/mob/living/T
|
||||
if(istype(M,/mob/living))
|
||||
T = M
|
||||
|
||||
M.visible_message("<span class='danger'>[M] is hit by the syringe!</span>")
|
||||
|
||||
if(T && istype(T) && T.can_inject())
|
||||
if(D.reagents)
|
||||
D.reagents.trans_to(M, 15)
|
||||
else
|
||||
M.visible_message("<span class='danger'>The syringe bounces off [M]!</span>")
|
||||
|
||||
del(D)
|
||||
break
|
||||
if(D)
|
||||
|
||||
Reference in New Issue
Block a user