mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
Merge remote-tracking branch 'upstream/master' into SPIN_ME_RIGHT_ROUND
This commit is contained in:
@@ -17,15 +17,16 @@
|
||||
name = "body bags"
|
||||
desc = "This box contains body bags."
|
||||
icon_state = "bodybags"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
|
||||
/obj/item/storage/box/bodybags/New()
|
||||
..()
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
new /obj/item/bodybag(src)
|
||||
|
||||
|
||||
/obj/structure/closet/body_bag
|
||||
@@ -40,47 +41,47 @@
|
||||
density = 0
|
||||
|
||||
|
||||
attackby(W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
if(!in_range(src, user) && src.loc != user)
|
||||
return
|
||||
t = sanitize(copytext(t,1,MAX_MESSAGE_LEN))
|
||||
if(t)
|
||||
src.name = "body bag - "
|
||||
src.name += t
|
||||
src.overlays += image(src.icon, "bodybag_label")
|
||||
else
|
||||
src.name = "body bag"
|
||||
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
|
||||
/obj/structure/closet/body_bag/attackby(W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
else if(istype(W, /obj/item/wirecutters))
|
||||
to_chat(user, "You cut the tag off the bodybag")
|
||||
if(!in_range(src, user) && src.loc != user)
|
||||
return
|
||||
t = sanitize(copytext(t,1,MAX_MESSAGE_LEN))
|
||||
if(t)
|
||||
src.name = "body bag - "
|
||||
src.name += t
|
||||
src.overlays += image(src.icon, "bodybag_label")
|
||||
else
|
||||
src.name = "body bag"
|
||||
src.overlays.Cut()
|
||||
return
|
||||
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
|
||||
return
|
||||
else if(istype(W, /obj/item/wirecutters))
|
||||
to_chat(user, "You cut the tag off the bodybag")
|
||||
src.name = "body bag"
|
||||
src.overlays.Cut()
|
||||
return
|
||||
|
||||
|
||||
close()
|
||||
if(..())
|
||||
density = 0
|
||||
return 1
|
||||
return 0
|
||||
/obj/structure/closet/body_bag/close()
|
||||
if(..())
|
||||
density = 0
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
if(!ishuman(usr)) return
|
||||
if(opened) return 0
|
||||
if(contents.len) return 0
|
||||
visible_message("[usr] folds up the [src.name]")
|
||||
new item_path(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
/obj/structure/closet/body_bag/MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
if(!ishuman(usr)) return
|
||||
if(opened) return 0
|
||||
if(contents.len) return 0
|
||||
visible_message("[usr] folds up the [src.name]")
|
||||
new item_path(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/body_bag/relaymove(mob/user as mob)
|
||||
if(user.stat)
|
||||
@@ -89,4 +90,4 @@
|
||||
// Make it possible to escape from bodybags in morgues and crematoriums
|
||||
if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium)))
|
||||
if(!open())
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
|
||||
@@ -46,9 +46,10 @@
|
||||
return
|
||||
|
||||
/obj/item/radio/beacon/bacon //Probably a better way of doing this, I'm lazy.
|
||||
proc/digest_delay()
|
||||
|
||||
/obj/item/radio/beacon/bacon/proc/digest_delay()
|
||||
spawn(600)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
// SINGULO BEACON SPAWNER
|
||||
/obj/item/radio/beacon/syndicate
|
||||
@@ -82,4 +83,4 @@
|
||||
new /obj/machinery/syndicatebomb( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -159,21 +159,21 @@
|
||||
var/b2y1 = 0
|
||||
var/b2y2 = 0
|
||||
|
||||
New(var/obj/item/target/Target, var/pixel_x = 0, var/pixel_y = 0)
|
||||
if(!Target) return
|
||||
/datum/bullethole/New(obj/item/target/Target, pixel_x = 0, pixel_y = 0)
|
||||
if(!Target) return
|
||||
|
||||
// Randomize the first box
|
||||
b1x1 = pixel_x - pick(1,1,1,1,2,2,3,3,4)
|
||||
b1x2 = pixel_x + pick(1,1,1,1,2,2,3,3,4)
|
||||
b1y = pixel_y
|
||||
if(prob(35))
|
||||
b1y += rand(-4,4)
|
||||
// Randomize the first box
|
||||
b1x1 = pixel_x - pick(1,1,1,1,2,2,3,3,4)
|
||||
b1x2 = pixel_x + pick(1,1,1,1,2,2,3,3,4)
|
||||
b1y = pixel_y
|
||||
if(prob(35))
|
||||
b1y += rand(-4,4)
|
||||
|
||||
// Randomize the second box
|
||||
b2x = pixel_x
|
||||
if(prob(35))
|
||||
b2x += rand(-4,4)
|
||||
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
|
||||
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
|
||||
// Randomize the second box
|
||||
b2x = pixel_x
|
||||
if(prob(35))
|
||||
b2x += rand(-4,4)
|
||||
b2y1 = pixel_y + pick(1,1,1,1,2,2,3,3,4)
|
||||
b2y2 = pixel_y - pick(1,1,1,1,2,2,3,3,4)
|
||||
|
||||
Target.bulletholes.Add(src)
|
||||
Target.bulletholes.Add(src)
|
||||
|
||||
@@ -10,53 +10,52 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("warned", "cautioned", "smashed")
|
||||
|
||||
proximity_sign
|
||||
var/timing = 0
|
||||
var/armed = 0
|
||||
var/timepassed = 0
|
||||
/obj/item/caution/proximity_sign
|
||||
var/timing = 0
|
||||
var/armed = 0
|
||||
var/timepassed = 0
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.mind.assigned_role != "Janitor")
|
||||
return
|
||||
if(armed)
|
||||
armed = 0
|
||||
to_chat(user, "<span class='notice'>You disarm \the [src].</span>")
|
||||
return
|
||||
timing = !timing
|
||||
if(timing)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
armed = 0
|
||||
timepassed = 0
|
||||
to_chat(H, "<span class='notice'>You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]</span>")
|
||||
/obj/item/caution/proximity_sign/attack_self(mob/user as mob)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.mind.assigned_role != "Janitor")
|
||||
return
|
||||
if(armed)
|
||||
armed = 0
|
||||
to_chat(user, "<span class='notice'>You disarm \the [src].</span>")
|
||||
return
|
||||
timing = !timing
|
||||
if(timing)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
armed = 0
|
||||
timepassed = 0
|
||||
to_chat(H, "<span class='notice'>You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]</span>")
|
||||
|
||||
process()
|
||||
if(!timing)
|
||||
processing_objects.Remove(src)
|
||||
timepassed++
|
||||
if(timepassed >= 15 && !armed)
|
||||
armed = 1
|
||||
timing = 0
|
||||
/obj/item/caution/proximity_sign/process()
|
||||
if(!timing)
|
||||
processing_objects.Remove(src)
|
||||
timepassed++
|
||||
if(timepassed >= 15 && !armed)
|
||||
armed = 1
|
||||
timing = 0
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
if(armed)
|
||||
if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain))
|
||||
var/mob/living/carbon/C = AM
|
||||
if(C.m_intent != MOVE_INTENT_WALK)
|
||||
src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"")
|
||||
explosion(src.loc,-1,0,2)
|
||||
if(ishuman(C))
|
||||
dead_legs(C)
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
proc/dead_legs(mob/living/carbon/human/H as mob)
|
||||
var/obj/item/organ/external/l = H.get_organ("l_leg")
|
||||
var/obj/item/organ/external/r = H.get_organ("r_leg")
|
||||
if(l)
|
||||
l.droplimb(0, DROPLIMB_SHARP)
|
||||
if(r)
|
||||
r.droplimb(0, DROPLIMB_SHARP)
|
||||
/obj/item/caution/proximity_sign/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(armed)
|
||||
if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain))
|
||||
var/mob/living/carbon/C = AM
|
||||
if(C.m_intent != MOVE_INTENT_WALK)
|
||||
src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"")
|
||||
explosion(src.loc,-1,0,2)
|
||||
if(ishuman(C))
|
||||
dead_legs(C)
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/caution/proximity_sign/proc/dead_legs(mob/living/carbon/human/H as mob)
|
||||
var/obj/item/organ/external/l = H.get_organ("l_leg")
|
||||
var/obj/item/organ/external/r = H.get_organ("r_leg")
|
||||
if(l)
|
||||
l.droplimb(0, DROPLIMB_SHARP)
|
||||
if(r)
|
||||
r.droplimb(0, DROPLIMB_SHARP)
|
||||
|
||||
@@ -159,9 +159,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/hulkmut/New()
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antihulk
|
||||
name = "DNA-Injector (Anti-Hulk)"
|
||||
@@ -169,9 +170,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antihulk/New()
|
||||
block = HULKBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/xraymut
|
||||
name = "DNA-Injector (Xray)"
|
||||
@@ -179,9 +181,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 8
|
||||
New()
|
||||
block = XRAYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/xraymut/New()
|
||||
block = XRAYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antixray
|
||||
name = "DNA-Injector (Anti-Xray)"
|
||||
@@ -189,10 +192,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 8
|
||||
New()
|
||||
block = XRAYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antixray/New()
|
||||
block = XRAYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/firemut
|
||||
name = "DNA-Injector (Fire)"
|
||||
@@ -200,9 +203,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 10
|
||||
New()
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/firemut/New()
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antifire
|
||||
name = "DNA-Injector (Anti-Fire)"
|
||||
@@ -210,9 +214,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 10
|
||||
New()
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antifire/New()
|
||||
block = FIREBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "DNA-Injector (Tele.)"
|
||||
@@ -220,9 +225,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 12
|
||||
New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut/New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut/darkbundle
|
||||
name = "DNA injector"
|
||||
@@ -235,9 +241,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 12
|
||||
New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitele/New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/nobreath
|
||||
name = "DNA-Injector (Breathless)"
|
||||
@@ -245,9 +252,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/nobreath/New()
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antinobreath
|
||||
name = "DNA-Injector (Anti-Breathless)"
|
||||
@@ -255,9 +263,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antinobreath/New()
|
||||
block = BREATHLESSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/remoteview
|
||||
name = "DNA-Injector (Remote View)"
|
||||
@@ -265,9 +274,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/remoteview/New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiremoteview
|
||||
name = "DNA-Injector (Anti-Remote View)"
|
||||
@@ -275,9 +285,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiremoteview/New()
|
||||
block = REMOTEVIEWBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/regenerate
|
||||
name = "DNA-Injector (Regeneration)"
|
||||
@@ -285,9 +296,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/regenerate/New()
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiregenerate
|
||||
name = "DNA-Injector (Anti-Regeneration)"
|
||||
@@ -295,9 +307,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiregenerate/New()
|
||||
block = REGENERATEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/runfast
|
||||
name = "DNA-Injector (Increase Run)"
|
||||
@@ -305,9 +318,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/runfast/New()
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antirunfast
|
||||
name = "DNA-Injector (Anti-Increase Run)"
|
||||
@@ -315,9 +329,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antirunfast/New()
|
||||
block = INCREASERUNBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/morph
|
||||
name = "DNA-Injector (Morph)"
|
||||
@@ -325,9 +340,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/morph/New()
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antimorph
|
||||
name = "DNA-Injector (Anti-Morph)"
|
||||
@@ -335,9 +351,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antimorph/New()
|
||||
block = MORPHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/noprints
|
||||
name = "DNA-Injector (No Prints)"
|
||||
@@ -345,9 +362,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/noprints/New()
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antinoprints
|
||||
name = "DNA-Injector (Anti-No Prints)"
|
||||
@@ -355,9 +373,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antinoprints/New()
|
||||
block = NOPRINTSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/insulation
|
||||
name = "DNA-Injector (Shock Immunity)"
|
||||
@@ -365,9 +384,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/insulation/New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiinsulation
|
||||
name = "DNA-Injector (Anti-Shock Immunity)"
|
||||
@@ -375,9 +395,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiinsulation/New()
|
||||
block = SHOCKIMMUNITYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/midgit
|
||||
name = "DNA-Injector (Small Size)"
|
||||
@@ -385,9 +406,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = SMALLSIZEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/midgit/New()
|
||||
block = SMALLSIZEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antimidgit
|
||||
name = "DNA-Injector (Anti-Small Size)"
|
||||
@@ -395,9 +417,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = SMALLSIZEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antimidgit/New()
|
||||
block = SMALLSIZEBLOCK
|
||||
..()
|
||||
|
||||
/////////////////////////////////////
|
||||
/obj/item/dnainjector/antiglasses
|
||||
@@ -406,9 +429,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 1
|
||||
New()
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiglasses/New()
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/glassesmut
|
||||
name = "DNA-Injector (Glasses)"
|
||||
@@ -416,9 +440,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 1
|
||||
New()
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/glassesmut/New()
|
||||
block = GLASSESBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/epimut
|
||||
name = "DNA-Injector (Epi.)"
|
||||
@@ -426,9 +451,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 3
|
||||
New()
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/epimut/New()
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiepi
|
||||
name = "DNA-Injector (Anti-Epi.)"
|
||||
@@ -436,9 +462,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 3
|
||||
New()
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiepi/New()
|
||||
block = EPILEPSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/anticough
|
||||
name = "DNA-Injector (Anti-Cough)"
|
||||
@@ -446,9 +473,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 5
|
||||
New()
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/anticough/New()
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/coughmut
|
||||
name = "DNA-Injector (Cough)"
|
||||
@@ -456,9 +484,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 5
|
||||
New()
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/coughmut/New()
|
||||
block = COUGHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/clumsymut
|
||||
name = "DNA-Injector (Clumsy)"
|
||||
@@ -466,9 +495,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 6
|
||||
New()
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/clumsymut/New()
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/anticlumsy
|
||||
name = "DNA-Injector (Anti-Clumy)"
|
||||
@@ -476,9 +506,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 6
|
||||
New()
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/anticlumsy/New()
|
||||
block = CLUMSYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitour
|
||||
name = "DNA-Injector (Anti-Tour.)"
|
||||
@@ -486,9 +517,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 7
|
||||
New()
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitour/New()
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/tourmut
|
||||
name = "DNA-Injector (Tour.)"
|
||||
@@ -496,9 +528,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 7
|
||||
New()
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/tourmut/New()
|
||||
block = TWITCHBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/stuttmut
|
||||
name = "DNA-Injector (Stutt.)"
|
||||
@@ -506,9 +539,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 9
|
||||
New()
|
||||
block = NERVOUSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/stuttmut/New()
|
||||
block = NERVOUSBLOCK
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/dnainjector/antistutt
|
||||
@@ -517,9 +551,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 9
|
||||
New()
|
||||
block = NERVOUSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antistutt/New()
|
||||
block = NERVOUSBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/blindmut
|
||||
name = "DNA-Injector (Blind)"
|
||||
@@ -527,9 +562,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 11
|
||||
New()
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/blindmut/New()
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiblind
|
||||
name = "DNA-Injector (Anti-Blind)"
|
||||
@@ -537,9 +573,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 11
|
||||
New()
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antiblind/New()
|
||||
block = BLINDBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "DNA-Injector (Tele.)"
|
||||
@@ -547,9 +584,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 12
|
||||
New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut/New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "DNA-Injector (Anti-Tele.)"
|
||||
@@ -557,9 +595,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 12
|
||||
New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitele/New()
|
||||
block = TELEBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/deafmut
|
||||
name = "DNA-Injector (Deaf)"
|
||||
@@ -567,9 +606,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 13
|
||||
New()
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/deafmut/New()
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antideaf
|
||||
name = "DNA-Injector (Anti-Deaf)"
|
||||
@@ -577,9 +617,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 13
|
||||
New()
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antideaf/New()
|
||||
block = DEAFBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/hallucination
|
||||
name = "DNA-Injector (Halluctination)"
|
||||
@@ -587,9 +628,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 2
|
||||
New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/hallucination/New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antihallucination
|
||||
name = "DNA-Injector (Anti-Hallucination)"
|
||||
@@ -597,9 +639,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 2
|
||||
New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antihallucination/New()
|
||||
block = HALLUCINATIONBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/h2m
|
||||
name = "DNA-Injector (Human > Monkey)"
|
||||
@@ -607,9 +650,10 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
//block = 14
|
||||
New()
|
||||
block = MONKEYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/h2m/New()
|
||||
block = MONKEYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/m2h
|
||||
name = "DNA-Injector (Monkey > Human)"
|
||||
@@ -617,6 +661,7 @@
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
//block = 14
|
||||
New()
|
||||
block = MONKEYBLOCK
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/m2h/New()
|
||||
block = MONKEYBLOCK
|
||||
..()
|
||||
|
||||
@@ -6,52 +6,52 @@
|
||||
icon_state = "lepopen"
|
||||
var/used = null
|
||||
|
||||
/obj/item/dnascrambler/update_icon()
|
||||
if(used)
|
||||
icon_state = "lepopen0"
|
||||
else
|
||||
icon_state = "lepopen"
|
||||
|
||||
/obj/item/dnascrambler/attack(mob/M as mob, mob/user as mob)
|
||||
if(!M || !user)
|
||||
return
|
||||
|
||||
if(!ishuman(M) || !ishuman(user))
|
||||
return
|
||||
|
||||
if(used)
|
||||
return
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(NO_DNA in H.dna.species.species_traits)
|
||||
to_chat(user, "<span class='warning'>You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.</span>")
|
||||
return
|
||||
|
||||
if(M == user)
|
||||
user.visible_message("<span class='danger'>[user] injects [user.p_them()]self with [src]!</span>")
|
||||
injected(user, user)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] is trying to inject [M] with [src]!</span>")
|
||||
if(do_mob(user,M,30))
|
||||
user.visible_message("<span class='danger'>[user] injects [M] with [src].</span>")
|
||||
injected(M, user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You failed to inject [M].</span>")
|
||||
|
||||
/obj/item/dnascrambler/proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user)
|
||||
if(istype(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
scramble(1, H, 100)
|
||||
H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species.
|
||||
H.sync_organ_dna(assimilate = 1)
|
||||
H.update_body(0)
|
||||
H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover.
|
||||
H.reset_markings() //...Or markings.
|
||||
H.dna.ResetUIFrom(H)
|
||||
target.update_icons()
|
||||
|
||||
add_attack_logs(user, target, "injected with [src]")
|
||||
used = 1
|
||||
update_icon()
|
||||
if(used)
|
||||
icon_state = "lepopen0"
|
||||
else
|
||||
icon_state = "lepopen"
|
||||
|
||||
attack(mob/M as mob, mob/user as mob)
|
||||
if(!M || !user)
|
||||
return
|
||||
|
||||
if(!ishuman(M) || !ishuman(user))
|
||||
return
|
||||
|
||||
if(used)
|
||||
return
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(NO_DNA in H.dna.species.species_traits)
|
||||
to_chat(user, "<span class='warning'>You failed to inject [M], as [M.p_they()] [M.p_have()] no DNA to scramble, nor flesh to inject.</span>")
|
||||
return
|
||||
|
||||
if(M == user)
|
||||
user.visible_message("<span class='danger'>[user] injects [user.p_them()]self with [src]!</span>")
|
||||
injected(user, user)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] is trying to inject [M] with [src]!</span>")
|
||||
if(do_mob(user,M,30))
|
||||
user.visible_message("<span class='danger'>[user] injects [M] with [src].</span>")
|
||||
injected(M, user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You failed to inject [M].</span>")
|
||||
|
||||
proc/injected(var/mob/living/carbon/human/target, var/mob/living/carbon/user)
|
||||
if(istype(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
scramble(1, H, 100)
|
||||
H.real_name = random_name(H.gender, H.dna.species.name) //Give them a name that makes sense for their species.
|
||||
H.sync_organ_dna(assimilate = 1)
|
||||
H.update_body(0)
|
||||
H.reset_hair() //No more winding up with hairstyles you're not supposed to have, and blowing your cover.
|
||||
H.reset_markings() //...Or markings.
|
||||
H.dna.ResetUIFrom(H)
|
||||
target.update_icons()
|
||||
|
||||
add_attack_logs(user, target, "injected with [src]")
|
||||
used = 1
|
||||
update_icon()
|
||||
name = "used " + name
|
||||
name = "used " + name
|
||||
|
||||
@@ -432,18 +432,18 @@
|
||||
desc = "Used for emergency sealing of air breaches."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/metalfoam/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("aluminum", 30)
|
||||
B2.reagents.add_reagent("fluorosurfactant", 10)
|
||||
B2.reagents.add_reagent("sacid", 10)
|
||||
B1.reagents.add_reagent("aluminum", 30)
|
||||
B2.reagents.add_reagent("fluorosurfactant", 10)
|
||||
B2.reagents.add_reagent("sacid", 10)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/incendiary
|
||||
@@ -451,19 +451,19 @@
|
||||
desc = "Used for clearing rooms of living things."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/incendiary/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("plasma", 25)
|
||||
B2.reagents.add_reagent("sacid", 25)
|
||||
B1.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("plasma", 25)
|
||||
B2.reagents.add_reagent("sacid", 25)
|
||||
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/antiweed
|
||||
@@ -471,20 +471,20 @@
|
||||
desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/antiweed/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("atrazine", 30)
|
||||
B1.reagents.add_reagent("potassium", 20)
|
||||
B2.reagents.add_reagent("phosphorus", 20)
|
||||
B2.reagents.add_reagent("sugar", 20)
|
||||
B2.reagents.add_reagent("atrazine", 10)
|
||||
B1.reagents.add_reagent("atrazine", 30)
|
||||
B1.reagents.add_reagent("potassium", 20)
|
||||
B2.reagents.add_reagent("phosphorus", 20)
|
||||
B2.reagents.add_reagent("sugar", 20)
|
||||
B2.reagents.add_reagent("atrazine", 10)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/cleaner
|
||||
@@ -492,18 +492,18 @@
|
||||
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/cleaner/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("fluorosurfactant", 40)
|
||||
B2.reagents.add_reagent("cleaner", 10)
|
||||
B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last
|
||||
B1.reagents.add_reagent("fluorosurfactant", 40)
|
||||
B2.reagents.add_reagent("cleaner", 10)
|
||||
B2.reagents.add_reagent("water", 40) //when you make pre-designed foam reactions that carry the reagents, always add water last
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/teargas
|
||||
@@ -511,19 +511,19 @@
|
||||
desc = "Used for nonlethal riot control. Contents under pressure. Do not directly inhale contents."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/teargas/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("condensedcapsaicin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
B1.reagents.add_reagent("condensedcapsaicin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/grenade/chem_grenade/facid
|
||||
name = "acid grenade"
|
||||
@@ -550,19 +550,19 @@
|
||||
desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/saringas/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("sarin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
B1.reagents.add_reagent("sarin", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
#undef EMPTY
|
||||
#undef WIRED
|
||||
|
||||
@@ -10,44 +10,34 @@
|
||||
var/path = 0
|
||||
var/affected_area = 2
|
||||
|
||||
prime()
|
||||
..()
|
||||
playsound(src.loc, 'sound/items/bikehorn.ogg', 25, -3)
|
||||
/*
|
||||
for(var/turf/simulated/floor/T in view(affected_area, src.loc))
|
||||
if(prob(75))
|
||||
banana(T)
|
||||
*/
|
||||
var/i = 0
|
||||
var/number = 0
|
||||
for(var/direction in alldirs)
|
||||
for(i = 0; i < 2; i++)
|
||||
number++
|
||||
var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
/* var/direction = pick(alldirs)
|
||||
var/spaces = pick(1;150, 2)
|
||||
var/a = 0
|
||||
for(a = 0; a < spaces; a++)
|
||||
step(peel,direction)*/
|
||||
var/a = 1
|
||||
if(number & 2)
|
||||
for(a = 1; a <= 2; a++)
|
||||
step(peel,direction)
|
||||
else
|
||||
/obj/item/grenade/clown_grenade/prime()
|
||||
..()
|
||||
playsound(src.loc, 'sound/items/bikehorn.ogg', 25, -3)
|
||||
/*
|
||||
for(var/turf/simulated/floor/T in view(affected_area, src.loc))
|
||||
if(prob(75))
|
||||
banana(T)
|
||||
*/
|
||||
var/i = 0
|
||||
var/number = 0
|
||||
for(var/direction in alldirs)
|
||||
for(i = 0; i < 2; i++)
|
||||
number++
|
||||
var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
/* var/direction = pick(alldirs)
|
||||
var/spaces = pick(1;150, 2)
|
||||
var/a = 0
|
||||
for(a = 0; a < spaces; a++)
|
||||
step(peel,direction)*/
|
||||
var/a = 1
|
||||
if(number & 2)
|
||||
for(a = 1; a <= 2; a++)
|
||||
step(peel,direction)
|
||||
new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
qdel(src)
|
||||
return
|
||||
/*
|
||||
proc/banana(turf/T as turf)
|
||||
if(!T || !istype(T))
|
||||
return
|
||||
if(locate(/obj/structure/grille) in T)
|
||||
return
|
||||
if(locate(/obj/structure/window) in T)
|
||||
return
|
||||
new /obj/item/grown/bananapeel/traitorpeel(T)
|
||||
*/
|
||||
else
|
||||
step(peel,direction)
|
||||
new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/grown/bananapeel/traitorpeel
|
||||
trip_stun = 0
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
desc = "From the makers of BLAM! brand foaming space cleaner, this bomb guarantees steady work for any janitor."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/list/muck = list("blood","carbon","flour","radium")
|
||||
var/filth = pick(muck - "radium") // not usually radioactive
|
||||
/obj/item/grenade/chem_grenade/dirt/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/list/muck = list("blood","carbon","flour","radium")
|
||||
var/filth = pick(muck - "radium") // not usually radioactive
|
||||
|
||||
B1.reagents.add_reagent(filth,25)
|
||||
if(prob(25))
|
||||
B1.reagents.add_reagent(pick(muck - filth,25)) // but sometimes...
|
||||
B1.reagents.add_reagent(filth,25)
|
||||
if(prob(25))
|
||||
B1.reagents.add_reagent(pick(muck - filth,25)) // but sometimes...
|
||||
|
||||
beakers += B1
|
||||
beakers += B1
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/meat
|
||||
@@ -22,18 +22,18 @@
|
||||
stage = 2
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/meat/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("blood",60)
|
||||
if(prob(5))
|
||||
B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess
|
||||
B2.reagents.add_reagent("cryoxadone",30)
|
||||
B1.reagents.add_reagent("blood",60)
|
||||
if(prob(5))
|
||||
B1.reagents.add_reagent("blood",1) // Quality control problems, causes a mess
|
||||
B2.reagents.add_reagent("cryoxadone",30)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/grenade/chem_grenade/holywater
|
||||
payload_name = "holy water"
|
||||
@@ -41,11 +41,11 @@
|
||||
stage = 2
|
||||
det_time = 30
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B = new(src)
|
||||
B.reagents.add_reagent("holywater",100)
|
||||
beakers += B
|
||||
/obj/item/grenade/chem_grenade/holywater/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B = new(src)
|
||||
B.reagents.add_reagent("holywater",100)
|
||||
beakers += B
|
||||
|
||||
/obj/item/grenade/chem_grenade/hellwater
|
||||
payload_name = "hell water"
|
||||
@@ -53,15 +53,15 @@
|
||||
stage = 2
|
||||
det_time = 30
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
B1.reagents.add_reagent("hell_water",80)
|
||||
B1.reagents.add_reagent("sugar",20)
|
||||
B2.reagents.add_reagent("hell_water", 60)
|
||||
B2.reagents.add_reagent("potassium", 20)
|
||||
B2.reagents.add_reagent("phosphorus", 20)
|
||||
/obj/item/grenade/chem_grenade/hellwater/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
B1.reagents.add_reagent("hell_water",80)
|
||||
B1.reagents.add_reagent("sugar",20)
|
||||
B2.reagents.add_reagent("hell_water", 60)
|
||||
B2.reagents.add_reagent("potassium", 20)
|
||||
B2.reagents.add_reagent("phosphorus", 20)
|
||||
|
||||
|
||||
/obj/item/grenade/chem_grenade/drugs
|
||||
@@ -69,40 +69,40 @@
|
||||
desc = "How does it work?"
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/drugs/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("space_drugs", 25)
|
||||
B1.reagents.add_reagent("lsd", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
B1.reagents.add_reagent("space_drugs", 25)
|
||||
B1.reagents.add_reagent("lsd", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/grenade/chem_grenade/ethanol
|
||||
payload_name = "ethanol"
|
||||
desc = "Ach, that hits the spot."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
/obj/item/grenade/chem_grenade/ethanol/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("ethanol", 75)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
B2.reagents.add_reagent("ethanol", 25)
|
||||
B1.reagents.add_reagent("ethanol", 75)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
B2.reagents.add_reagent("ethanol", 25)
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
// -------------------------------------
|
||||
// Grenades using new grenade assemblies
|
||||
@@ -208,107 +208,67 @@
|
||||
payload_name = "EMP"
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B1.reagents.add_reagent("uranium",50)
|
||||
B2.reagents.add_reagent("iron",50)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
/obj/item/grenade/chem_grenade/emp/New()
|
||||
..()
|
||||
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B1.reagents.add_reagent("uranium",50)
|
||||
B2.reagents.add_reagent("iron",50)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
// Assembly Variants
|
||||
/obj/item/grenade/chem_grenade/emp/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/signaler)
|
||||
/obj/item/grenade/chem_grenade/emp/remote/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/signaler)
|
||||
|
||||
/obj/item/grenade/chem_grenade/emp/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/prox_sensor)
|
||||
/obj/item/grenade/chem_grenade/emp/prox/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/prox_sensor)
|
||||
|
||||
/obj/item/grenade/chem_grenade/emp/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/mousetrap)
|
||||
|
||||
// --------------------------------------
|
||||
// Dangerous slime core grenades
|
||||
// --------------------------------------
|
||||
/*
|
||||
/obj/item/grenade/chem_grenade/large/bluespace
|
||||
payload_name = "bluespace slime"
|
||||
desc = "A standard grenade casing containing weaponized slime extract."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/slime_extract/bluespace/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/prox_sensor)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/mousetrap)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/bluespace/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/signaler)
|
||||
*/
|
||||
/obj/item/grenade/chem_grenade/emp/mine/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/mousetrap)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/monster
|
||||
payload_name = "gold slime"
|
||||
desc = "A standard grenade containing weaponized slime extract."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/slime_extract/gold/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
/obj/item/grenade/chem_grenade/large/monster/New()
|
||||
..()
|
||||
var/obj/item/slime_extract/gold/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/monster/prox
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/prox_sensor)
|
||||
/obj/item/grenade/chem_grenade/large/monster/prox/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/prox_sensor)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/monster/mine
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/mousetrap)
|
||||
/obj/item/grenade/chem_grenade/large/monster/mine/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/mousetrap)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/monster/remote
|
||||
New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/signaler)
|
||||
/obj/item/grenade/chem_grenade/large/monster/remote/New()
|
||||
..()
|
||||
CreateDefaultTrigger(/obj/item/assembly/signaler)
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/feast
|
||||
payload_name = "silver slime"
|
||||
desc = "A standard grenade containing weaponized slime extract."
|
||||
stage = 2
|
||||
|
||||
New()
|
||||
..()
|
||||
var/obj/item/slime_extract/silver/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
/obj/item/grenade/chem_grenade/large/feast/New()
|
||||
..()
|
||||
var/obj/item/slime_extract/silver/B1 = new(src)
|
||||
B1.Uses = rand(1,3)
|
||||
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
|
||||
B2.reagents.add_reagent("plasma",5 * B1.Uses)
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
// --------------------------------------
|
||||
// Syndie Kits
|
||||
@@ -316,25 +276,30 @@
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remotegrenade
|
||||
name = "Remote Grenade Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/explosion/remote(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remotegrenade/New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/explosion/remote(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remoteemp
|
||||
name = "Remote EMP Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/emp/remote(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remoteemp/New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/emp/remote(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remotelube
|
||||
name = "Remote Lube Kit"
|
||||
New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/lube(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
/obj/item/storage/box/syndie_kit/remotelube/New()
|
||||
..()
|
||||
new /obj/item/grenade/chem_grenade/lube(src)
|
||||
new /obj/item/multitool(src) // used to adjust the chemgrenade's signaller
|
||||
new /obj/item/assembly/signaler(src)
|
||||
return
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
slot_flags = SLOT_BELT
|
||||
var/datum/effect_system/smoke_spread/bad/smoke
|
||||
|
||||
New()
|
||||
..()
|
||||
src.smoke = new /datum/effect_system/smoke_spread/bad
|
||||
src.smoke.attach(src)
|
||||
/obj/item/grenade/smokebomb/New()
|
||||
..()
|
||||
src.smoke = new /datum/effect_system/smoke_spread/bad
|
||||
src.smoke.attach(src)
|
||||
|
||||
Destroy()
|
||||
QDEL_NULL(smoke)
|
||||
return ..()
|
||||
/obj/item/grenade/smokebomb/Destroy()
|
||||
QDEL_NULL(smoke)
|
||||
return ..()
|
||||
|
||||
prime()
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
src.smoke.set_up(10, 0, usr.loc)
|
||||
spawn(0)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
/obj/item/grenade/smokebomb/prime()
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
src.smoke.set_up(10, 0, usr.loc)
|
||||
spawn(0)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
sleep(10)
|
||||
src.smoke.start()
|
||||
|
||||
for(var/obj/structure/blob/B in view(8,src))
|
||||
var/damage = round(30/(get_dist(B,src)+1))
|
||||
B.health -= damage
|
||||
B.update_icon()
|
||||
sleep(80)
|
||||
qdel(src)
|
||||
return
|
||||
for(var/obj/structure/blob/B in view(8,src))
|
||||
var/damage = round(30/(get_dist(B,src)+1))
|
||||
B.health -= damage
|
||||
B.update_icon()
|
||||
sleep(80)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -24,8 +24,7 @@
|
||||
icon_on = "zippoon"
|
||||
icon_off = "zippo"
|
||||
|
||||
/obj/item/lighter/random
|
||||
New()
|
||||
/obj/item/lighter/random/New()
|
||||
var/color = pick("r","c","y","g")
|
||||
icon_on = "lighter-[color]-on"
|
||||
icon_off = "lighter-[color]"
|
||||
|
||||
@@ -89,25 +89,25 @@
|
||||
icon_state = "lightning"
|
||||
desc = "test lightning"
|
||||
|
||||
New()
|
||||
/obj/item/lightning/New()
|
||||
icon = midicon
|
||||
icon_state = "1"
|
||||
|
||||
afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
|
||||
var/angle = get_angle(A, user)
|
||||
// to_chat(world, angle)
|
||||
angle = round(angle) + 45
|
||||
if(angle > 180)
|
||||
angle -= 180
|
||||
else
|
||||
angle += 180
|
||||
/obj/item/lightning/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
|
||||
var/angle = get_angle(A, user)
|
||||
//to_chat(world, angle)
|
||||
angle = round(angle) + 45
|
||||
if(angle > 180)
|
||||
angle -= 180
|
||||
else
|
||||
angle += 180
|
||||
|
||||
if(!angle)
|
||||
angle = 1
|
||||
// to_chat(world, "adjusted [angle]")
|
||||
icon_state = "[angle]"
|
||||
// to_chat(world, "[angle] [(get_dist(user, A) - 1)]")
|
||||
user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15)
|
||||
if(!angle)
|
||||
angle = 1
|
||||
//to_chat(world, "adjusted [angle]")
|
||||
icon_state = "[angle]"
|
||||
//to_chat(world, "[angle] [(get_dist(user, A) - 1)]")
|
||||
user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15)
|
||||
|
||||
/obj/item/newton
|
||||
name = "newton cradle"
|
||||
|
||||
@@ -185,10 +185,9 @@
|
||||
desc = "An NT Deluxe satchel, with the finest quality leather and the company logo in a thin gold stitch"
|
||||
icon_state = "nt_deluxe"
|
||||
|
||||
/obj/item/storage/backpack/satchel/withwallet
|
||||
New()
|
||||
..()
|
||||
new /obj/item/storage/wallet/random( src )
|
||||
/obj/item/storage/backpack/satchel/withwallet/New()
|
||||
..()
|
||||
new /obj/item/storage/wallet/random(src)
|
||||
|
||||
/obj/item/storage/backpack/satchel_norm
|
||||
name = "satchel"
|
||||
|
||||
@@ -207,122 +207,122 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
allow_quick_empty = 1 // this function is superceded
|
||||
New()
|
||||
..()
|
||||
//verbs -= /obj/item/storage/verb/quick_empty
|
||||
//verbs += /obj/item/storage/bag/sheetsnatcher/quick_empty
|
||||
/obj/item/storage/bag/sheetsnatcher/New()
|
||||
..()
|
||||
//verbs -= /obj/item/storage/verb/quick_empty
|
||||
//verbs += /obj/item/storage/bag/sheetsnatcher/quick_empty
|
||||
|
||||
can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood))
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "The snatcher does not accept [W].")
|
||||
return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu
|
||||
var/current = 0
|
||||
for(var/obj/item/stack/sheet/S in contents)
|
||||
current += S.amount
|
||||
if(capacity == current)//If it's full, you're done
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='warning'>The snatcher is full.</span>")
|
||||
return 0
|
||||
return 1
|
||||
/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood))
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "The snatcher does not accept [W].")
|
||||
return 0 //I don't care, but the existing code rejects them for not being "sheets" *shrug* -Sayu
|
||||
var/current = 0
|
||||
for(var/obj/item/stack/sheet/S in contents)
|
||||
current += S.amount
|
||||
if(capacity == current)//If it's full, you're done
|
||||
if(!stop_messages)
|
||||
to_chat(usr, "<span class='warning'>The snatcher is full.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
// Modified handle_item_insertion. Would prefer not to, but...
|
||||
handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
/obj/item/storage/bag/sheetsnatcher/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
|
||||
var/amount
|
||||
var/inserted = 0
|
||||
var/current = 0
|
||||
for(var/obj/item/stack/sheet/S2 in contents)
|
||||
current += S2.amount
|
||||
if(capacity < current + S.amount)//If the stack will fill it up
|
||||
amount = capacity - current
|
||||
var/amount
|
||||
var/inserted = 0
|
||||
var/current = 0
|
||||
for(var/obj/item/stack/sheet/S2 in contents)
|
||||
current += S2.amount
|
||||
if(capacity < current + S.amount)//If the stack will fill it up
|
||||
amount = capacity - current
|
||||
else
|
||||
amount = S.amount
|
||||
|
||||
for(var/obj/item/stack/sheet/sheet in contents)
|
||||
if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects
|
||||
sheet.amount += amount // they should only be removed through procs in this file, which split them up.
|
||||
S.amount -= amount
|
||||
inserted = 1
|
||||
break
|
||||
|
||||
if(!inserted || !S.amount)
|
||||
usr.unEquip(S)
|
||||
usr.update_icons() //update our overlays
|
||||
if(usr.client && usr.s_active != src)
|
||||
usr.client.screen -= S
|
||||
S.dropped(usr)
|
||||
if(!S.amount)
|
||||
qdel(S)
|
||||
else
|
||||
amount = S.amount
|
||||
S.loc = src
|
||||
|
||||
for(var/obj/item/stack/sheet/sheet in contents)
|
||||
if(S.type == sheet.type) // we are violating the amount limitation because these are not sane objects
|
||||
sheet.amount += amount // they should only be removed through procs in this file, which split them up.
|
||||
S.amount -= amount
|
||||
inserted = 1
|
||||
break
|
||||
|
||||
if(!inserted || !S.amount)
|
||||
usr.unEquip(S)
|
||||
usr.update_icons() //update our overlays
|
||||
if(usr.client && usr.s_active != src)
|
||||
usr.client.screen -= S
|
||||
S.dropped(usr)
|
||||
if(!S.amount)
|
||||
qdel(S)
|
||||
else
|
||||
S.loc = src
|
||||
|
||||
orient2hud(usr)
|
||||
if(usr.s_active)
|
||||
usr.s_active.show_to(usr)
|
||||
update_icon()
|
||||
return 1
|
||||
orient2hud(usr)
|
||||
if(usr.s_active)
|
||||
usr.s_active.show_to(usr)
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
|
||||
// Sets up numbered display to show the stack size of each stored mineral
|
||||
// NOTE: numbered display is turned off currently because it's broken
|
||||
orient2hud(mob/user as mob)
|
||||
var/adjusted_contents = contents.len
|
||||
/obj/item/storage/bag/sheetsnatcher/orient2hud(mob/user as mob)
|
||||
var/adjusted_contents = contents.len
|
||||
|
||||
//Numbered contents display
|
||||
var/list/datum/numbered_display/numbered_contents
|
||||
if(display_contents_with_number)
|
||||
numbered_contents = list()
|
||||
adjusted_contents = 0
|
||||
for(var/obj/item/stack/sheet/I in contents)
|
||||
adjusted_contents++
|
||||
var/datum/numbered_display/D = new/datum/numbered_display(I)
|
||||
D.number = I.amount
|
||||
numbered_contents.Add( D )
|
||||
//Numbered contents display
|
||||
var/list/datum/numbered_display/numbered_contents
|
||||
if(display_contents_with_number)
|
||||
numbered_contents = list()
|
||||
adjusted_contents = 0
|
||||
for(var/obj/item/stack/sheet/I in contents)
|
||||
adjusted_contents++
|
||||
var/datum/numbered_display/D = new/datum/numbered_display(I)
|
||||
D.number = I.amount
|
||||
numbered_contents.Add( D )
|
||||
|
||||
var/row_num = 0
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if(adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
return
|
||||
var/row_num = 0
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if(adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
return
|
||||
|
||||
|
||||
// Modified quick_empty verb drops appropriate sized stacks
|
||||
quick_empty()
|
||||
var/location = get_turf(src)
|
||||
for(var/obj/item/stack/sheet/S in contents)
|
||||
while(S.amount)
|
||||
var/obj/item/stack/sheet/N = new S.type(location)
|
||||
var/stacksize = min(S.amount,N.max_amount)
|
||||
N.amount = stacksize
|
||||
S.amount -= stacksize
|
||||
if(!S.amount)
|
||||
qdel(S) // todo: there's probably something missing here
|
||||
orient2hud(usr)
|
||||
if(usr.s_active)
|
||||
usr.s_active.show_to(usr)
|
||||
update_icon()
|
||||
/obj/item/storage/bag/sheetsnatcher/quick_empty()
|
||||
var/location = get_turf(src)
|
||||
for(var/obj/item/stack/sheet/S in contents)
|
||||
while(S.amount)
|
||||
var/obj/item/stack/sheet/N = new S.type(location)
|
||||
var/stacksize = min(S.amount,N.max_amount)
|
||||
N.amount = stacksize
|
||||
S.amount -= stacksize
|
||||
if(!S.amount)
|
||||
qdel(S) // todo: there's probably something missing here
|
||||
orient2hud(usr)
|
||||
if(usr.s_active)
|
||||
usr.s_active.show_to(usr)
|
||||
update_icon()
|
||||
|
||||
// Instead of removing
|
||||
remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
/obj/item/storage/bag/sheetsnatcher/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(!istype(S)) return 0
|
||||
|
||||
//I would prefer to drop a new stack, but the item/attack_hand code
|
||||
// that calls this can't recieve a different object than you clicked on.
|
||||
//Therefore, make a new stack internally that has the remainder.
|
||||
// -Sayu
|
||||
//I would prefer to drop a new stack, but the item/attack_hand code
|
||||
// that calls this can't recieve a different object than you clicked on.
|
||||
//Therefore, make a new stack internally that has the remainder.
|
||||
// -Sayu
|
||||
|
||||
if(S.amount > S.max_amount)
|
||||
var/obj/item/stack/sheet/temp = new S.type(src)
|
||||
temp.amount = S.amount - S.max_amount
|
||||
S.amount = S.max_amount
|
||||
if(S.amount > S.max_amount)
|
||||
var/obj/item/stack/sheet/temp = new S.type(src)
|
||||
temp.amount = S.amount - S.max_amount
|
||||
S.amount = S.max_amount
|
||||
|
||||
return ..(S,new_location)
|
||||
return ..(S,new_location)
|
||||
|
||||
// -----------------------------
|
||||
// Sheet Snatcher (Cyborg)
|
||||
|
||||
@@ -631,21 +631,21 @@
|
||||
max_combined_w_class = 280
|
||||
can_hold = list()
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
/obj/item/storage/belt/bluespace/admin/New()
|
||||
..()
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/dnainjector/xraymut(src)
|
||||
new /obj/item/dnainjector/firemut(src)
|
||||
new /obj/item/dnainjector/telemut(src)
|
||||
new /obj/item/dnainjector/hulkmut(src)
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/dnainjector/xraymut(src)
|
||||
new /obj/item/dnainjector/firemut(src)
|
||||
new /obj/item/dnainjector/telemut(src)
|
||||
new /obj/item/dnainjector/hulkmut(src)
|
||||
// new /obj/item/spellbook(src) // for smoke effects, door openings, etc
|
||||
// new /obj/item/magic/spellbook(src)
|
||||
|
||||
@@ -660,15 +660,15 @@
|
||||
max_combined_w_class = 280
|
||||
can_hold = list()
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
/obj/item/storage/belt/bluespace/sandbox/New()
|
||||
..()
|
||||
new /obj/item/crowbar(src)
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/weldingtool/hugetank(src)
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/wrench(src)
|
||||
new /obj/item/multitool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
|
||||
new /obj/item/analyzer(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
new /obj/item/analyzer(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
|
||||
Reference in New Issue
Block a user