mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
/obj/machinery/coatrack/attack_hand(mob/user as mob)
|
||||
switch(alert("What do you want from the coat rack?",,"Coat","Hat"))
|
||||
if("Coat")
|
||||
if(coat)
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hand(coat)
|
||||
else
|
||||
coat.loc = get_turf(user)
|
||||
coat = null
|
||||
if(!hat)
|
||||
icon_state = "coatrack0"
|
||||
else
|
||||
icon_state = "coatrack1"
|
||||
return
|
||||
else
|
||||
user << "\blue There is no coat to take!"
|
||||
return
|
||||
if("Hat")
|
||||
if(hat)
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hand(hat)
|
||||
else
|
||||
hat.loc = get_turf(user)
|
||||
hat = null
|
||||
if(!coat)
|
||||
icon_state = "coatrack0"
|
||||
else
|
||||
icon_state = "coatrack2"
|
||||
return
|
||||
else
|
||||
user << "\blue There is no hat to take!"
|
||||
return
|
||||
user << "Something went wrong."
|
||||
return
|
||||
|
||||
/obj/machinery/coatrack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
var/obj/item/I = user.equipped()
|
||||
if ( istype(I,/obj/item/clothing/head/det_hat) && !hat)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
hat = I
|
||||
if(!coat)
|
||||
icon_state = "coatrack1"
|
||||
else
|
||||
icon_state = "coatrack3"
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if(M.client)
|
||||
M.show_message(text("\blue [user] puts his hat onto the rack."), 2)
|
||||
return
|
||||
if ( istype(I,/obj/item/clothing/suit/storage/det_suit) && !coat)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
coat = I
|
||||
if(!hat)
|
||||
icon_state = "coatrack2"
|
||||
else
|
||||
icon_state = "coatrack3"
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if(M.client)
|
||||
M.show_message(text("\blue [user] puts his coat onto the rack."), 2)
|
||||
return
|
||||
if ( istype(I,/obj/item/clothing/head/det_hat) && hat)
|
||||
user << "There's already a hat on the rack!"
|
||||
return ..()
|
||||
if ( istype(I,/obj/item/clothing/suit/storage/det_suit) && coat)
|
||||
user << "There's already a coat on the rack!"
|
||||
return ..()
|
||||
user << "The coatrack wants none of what you offer."
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/coatrack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if ( istype(mover,/obj/item/clothing/head/det_hat) && !hat)
|
||||
mover.loc = src
|
||||
hat = mover
|
||||
if(!coat)
|
||||
icon_state = "coatrack1"
|
||||
else
|
||||
icon_state = "coatrack3"
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if(M.client)
|
||||
M.show_message(text("\blue The hat lands perfectly atop its hanger!"), 2)
|
||||
return 0
|
||||
if ( istype(mover,/obj/item/clothing/suit/storage/det_suit) && !coat)
|
||||
mover.loc = src
|
||||
coat = mover
|
||||
if(!hat)
|
||||
icon_state = "coatrack2"
|
||||
else
|
||||
icon_state = "coatrack3"
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if(M.client)
|
||||
M.show_message(text("\blue The coat lands perfectly atop its hanger!"), 2)
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
@@ -0,0 +1,164 @@
|
||||
/obj/item/policetaperoll/attack_self(mob/user as mob)
|
||||
if(icon_state == "rollstart")
|
||||
tapestartx = src.loc.x
|
||||
tapestarty = src.loc.y
|
||||
tapestartz = src.loc.z
|
||||
usr << "\blue You place the first end of the police tape."
|
||||
icon_state = "rollstop"
|
||||
else
|
||||
tapeendx = src.loc.x
|
||||
tapeendy = src.loc.y
|
||||
tapeendz = src.loc.z
|
||||
var/tapetest = 0
|
||||
if(tapestartx == tapeendx && tapestarty > tapeendy && tapestartz == tapeendz)
|
||||
for(var/Y=tapestarty,Y>=tapeendy,Y--)
|
||||
var/turf/T = get_turf(locate(tapestartx,Y,tapestartz))
|
||||
if(T.density == 1)
|
||||
usr << "\blue You can't run police tape through a wall!"
|
||||
icon_state = "rollstart"
|
||||
return
|
||||
for(var/Y=tapestarty,Y>=tapeendy,Y--)
|
||||
var/turf/T = get_turf(locate(tapestartx,Y,tapestartz))
|
||||
for(var/obj/item/policetape/Ptest in T)
|
||||
if(Ptest.icon_state == "vertical")
|
||||
tapetest = 1
|
||||
if(tapetest != 1)
|
||||
var/obj/item/policetape/P = new/obj/item/policetape(tapestartx,Y,tapestartz)
|
||||
P.loc = locate(tapestartx,Y,tapestartz)
|
||||
P.icon_state = "vertical"
|
||||
usr << "\blue You finish placing the police tape." //Git Test
|
||||
|
||||
if(tapestartx == tapeendx && tapestarty < tapeendy && tapestartz == tapeendz)
|
||||
for(var/Y=tapestarty,Y<=tapeendy,Y++)
|
||||
var/turf/T = get_turf(locate(tapestartx,Y,tapestartz))
|
||||
if(T.density == 1)
|
||||
usr << "\blue You can't run police tape through a wall!"
|
||||
icon_state = "rollstart"
|
||||
return
|
||||
for(var/Y=tapestarty,Y<=tapeendy,Y++)
|
||||
var/turf/T = get_turf(locate(tapestartx,Y,tapestartz))
|
||||
for(var/obj/item/policetape/Ptest in T)
|
||||
if(Ptest.icon_state == "vertical")
|
||||
tapetest = 1
|
||||
if(tapetest != 1)
|
||||
var/obj/item/policetape/P = new/obj/item/policetape(tapestartx,Y,tapestartz)
|
||||
P.loc = locate(tapestartx,Y,tapestartz)
|
||||
P.icon_state = "vertical"
|
||||
usr << "\blue You finish placing the police tape."
|
||||
|
||||
if(tapestarty == tapeendy && tapestartx > tapeendx && tapestartz == tapeendz)
|
||||
for(var/X=tapestartx,X>=tapeendx,X--)
|
||||
var/turf/T = get_turf(locate(X,tapestarty,tapestartz))
|
||||
if(T.density == 1)
|
||||
usr << "\blue You can't run police tape through a wall!"
|
||||
icon_state = "rollstart"
|
||||
return
|
||||
for(var/X=tapestartx,X>=tapeendx,X--)
|
||||
var/turf/T = get_turf(locate(X,tapestarty,tapestartz))
|
||||
for(var/obj/item/policetape/Ptest in T)
|
||||
if(Ptest.icon_state == "horizontal")
|
||||
tapetest = 1
|
||||
if(tapetest != 1)
|
||||
var/obj/item/policetape/P = new/obj/item/policetape(X,tapestarty,tapestartz)
|
||||
P.loc = locate(X,tapestarty,tapestartz)
|
||||
P.icon_state = "horizontal"
|
||||
usr << "\blue You finish placing the police tape."
|
||||
|
||||
if(tapestarty == tapeendy && tapestartx < tapeendx && tapestartz == tapeendz)
|
||||
for(var/X=tapestartx,X<=tapeendx,X++)
|
||||
var/turf/T = get_turf(locate(X,tapestarty,tapestartz))
|
||||
if(T.density == 1)
|
||||
usr << "\blue You can't run police tape through a wall!"
|
||||
icon_state = "rollstart"
|
||||
return
|
||||
for(var/X=tapestartx,X<=tapeendx,X++)
|
||||
var/turf/T = get_turf(locate(X,tapestarty,tapestartz))
|
||||
for(var/obj/item/policetape/Ptest in T)
|
||||
if(Ptest.icon_state == "horizontal")
|
||||
tapetest = 1
|
||||
if(tapetest != 1)
|
||||
var/obj/item/policetape/P = new/obj/item/policetape(X,tapestarty,tapestartz)
|
||||
P.loc = locate(X,tapestarty,tapestartz)
|
||||
P.icon_state = "horizontal"
|
||||
usr << "\blue You finish placing the police tape."
|
||||
|
||||
if(tapestarty != tapeendy && tapestartx != tapeendx)
|
||||
usr << "\blue Police tape can only be laid horizontally or vertically."
|
||||
icon_state = "rollstart"
|
||||
|
||||
/obj/item/policetape/Bumped(M as mob)
|
||||
if(src.allowed(M))
|
||||
var/turf/T = get_turf(src)
|
||||
M:loc = T
|
||||
|
||||
/obj/item/policetape/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0)) return 1
|
||||
|
||||
if ((mover.flags & 2 || istype(mover, /obj/effect/meteor) || mover.throwing == 1) )
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/policetape/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
breaktape(W, user)
|
||||
|
||||
/obj/item/policetape/attack_hand(mob/user as mob)
|
||||
breaktape(null, user)
|
||||
|
||||
/obj/item/policetape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(!W || !is_cut(W))
|
||||
user << "You can't break the tape with that!"
|
||||
return
|
||||
user.show_viewers(text("\blue [] breaks the police tape!", user))
|
||||
var/OX = src.x
|
||||
var/OY = src.y
|
||||
if(src.icon_state == "horizontal")
|
||||
var/N = 0
|
||||
var/X = OX + 1
|
||||
var/turf/T = src.loc
|
||||
while(N != 1)
|
||||
N = 1
|
||||
T = locate(X,T.y,T.z)
|
||||
for (var/obj/item/policetape/P in T)
|
||||
N = 0
|
||||
if(P.icon_state == "horizontal")
|
||||
del(P)
|
||||
X += 1
|
||||
|
||||
X = OX - 1
|
||||
N = 0
|
||||
while(N != 1)
|
||||
N = 1
|
||||
T = locate(X,T.y,T.z)
|
||||
for (var/obj/item/policetape/P in T)
|
||||
N = 0
|
||||
if(P.icon_state == "horizontal")
|
||||
del(P)
|
||||
X -= 1
|
||||
|
||||
if(src.icon_state == "vertical")
|
||||
var/N = 0
|
||||
var/Y = OY + 1
|
||||
var/turf/T = src.loc
|
||||
while(N != 1)
|
||||
N = 1
|
||||
T = locate(T.x,Y,T.z)
|
||||
for (var/obj/item/policetape/P in T)
|
||||
N = 0
|
||||
if(P.icon_state == "vertical")
|
||||
del(P)
|
||||
Y += 1
|
||||
|
||||
Y = OY - 1
|
||||
N = 0
|
||||
while(N != 1)
|
||||
N = 1
|
||||
T = locate(T.x,Y,T.z)
|
||||
for (var/obj/item/policetape/P in T)
|
||||
N = 0
|
||||
if(P.icon_state == "vertical")
|
||||
del(P)
|
||||
Y -= 1
|
||||
|
||||
del(src)
|
||||
return
|
||||
@@ -135,7 +135,8 @@ obj/machinery/computer/forensic_scanning
|
||||
if(istype(I, /obj/item/weapon/evidencebag))
|
||||
scanning = I.contents[1]
|
||||
scanning.loc = src
|
||||
I.underlays -= scanning
|
||||
I.underlays = null
|
||||
I.icon_state = "evidenceobj"
|
||||
else
|
||||
scanning = I
|
||||
M.drop_item()
|
||||
|
||||
+22
-4
@@ -22,6 +22,28 @@
|
||||
|
||||
proc/initialize()
|
||||
|
||||
/obj/item/policetaperoll
|
||||
name = "police tape roll"
|
||||
desc = "A roll of police tape used to block off crime scenes from the public."
|
||||
icon = 'policetape.dmi'
|
||||
icon_state = "rollstart"
|
||||
flags = FPRINT
|
||||
var/tapestartx = 0
|
||||
var/tapestarty = 0
|
||||
var/tapestartz = 0
|
||||
var/tapeendx = 0
|
||||
var/tapeendy = 0
|
||||
var/tapeendz = 0
|
||||
|
||||
/obj/item/policetape
|
||||
name = "police tape"
|
||||
desc = "A length of police tape. Do not cross."
|
||||
icon = 'policetape.dmi'
|
||||
anchored = 1
|
||||
density = 1
|
||||
throwpass = 1
|
||||
req_access = list(access_security)
|
||||
|
||||
/obj/structure/signpost
|
||||
icon = 'stationobjs.dmi'
|
||||
icon_state = "signpost"
|
||||
@@ -436,10 +458,6 @@
|
||||
var/obj/structure/crematorium/connected = null
|
||||
anchored = 1.0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/structure/cable
|
||||
level = 1
|
||||
anchored =1
|
||||
|
||||
@@ -37,6 +37,23 @@
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/detective
|
||||
desc = "Made of well worn leather, these gloves are comfortable, useful, and stylish!"
|
||||
name = "The Detective's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/hos
|
||||
desc = "These gloves belong to the man in charge of the guns."
|
||||
name = "Head of Security's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/cyborg
|
||||
desc = "beep boop borp"
|
||||
@@ -145,7 +162,6 @@
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
siemens_coefficient = 0.30
|
||||
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/rainbow
|
||||
|
||||
@@ -451,3 +451,13 @@
|
||||
h_r = 245.0
|
||||
h_g = 245.0
|
||||
h_b = 245.0
|
||||
|
||||
/obj/machinery/coatrack
|
||||
name = "coatrack"
|
||||
desc = "A fancy stand for the Detective's coat and hat."
|
||||
icon_state = "coatrack0"
|
||||
icon = 'coatrack.dmi'
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
var/obj/item/clothing/suit/storage/det_suit/coat
|
||||
var/obj/item/clothing/head/det_hat/hat
|
||||
@@ -9,9 +9,10 @@
|
||||
|
||||
/proc/is_convertable_to_cult(datum/mind/mind)
|
||||
if(!istype(mind)) return 0
|
||||
for(var/obj/item/weapon/implant/loyalty/L in mind.current)
|
||||
//This makes security unconvertable. *comments out*
|
||||
/* for(var/obj/item/weapon/implant/loyalty/L in mind.current)
|
||||
if(L && L.implanted)
|
||||
return 0
|
||||
return 0 */
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
H.equip_if_possible(new /obj/item/device/pda/heads/hos(H), H.slot_belt)
|
||||
// H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit)
|
||||
//We're Bay12, not Goon. We don't need armor 24/7
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/hos(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
|
||||
H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack)
|
||||
@@ -71,8 +71,8 @@
|
||||
if(!H) return 0
|
||||
H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/box/evidence(H.back), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/det(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/storage/det_suit(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/detective(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/det_hat(H), H.slot_head)
|
||||
@@ -80,11 +80,11 @@
|
||||
CIG.light("")
|
||||
H.equip_if_possible(CIG, H.slot_wear_mask) */
|
||||
//Fuck that thing. --SkyMarshal
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(H.back), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/detective(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/box/evidence(H.back), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/fcardholder(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/storage/det_suit(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/drinks/dflask(H.back), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/zippo(H), H.slot_l_store)
|
||||
// H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(H), H.slot_h_store)
|
||||
// No... just no. --SkyMarshal
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
new /obj/item/clothing/under/jensen(src)
|
||||
new /obj/item/clothing/suit/armor/hos/jensen(src)
|
||||
new /obj/item/clothing/suit/armor/hos(src)
|
||||
new /obj/item/clothing/gloves/hos(src)
|
||||
new /obj/item/clothing/head/helmet/HoS/dermal(src)
|
||||
new /obj/item/device/radio/headset/heads/hos(src)
|
||||
new /obj/item/weapon/shield/riot(src)
|
||||
@@ -104,6 +105,7 @@
|
||||
new /obj/item/clothing/gloves/red(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/policetaperoll(src)
|
||||
new /obj/item/weapon/flashbang(src)
|
||||
new /obj/item/weapon/pepperspray(src)
|
||||
new /obj/item/device/flash(src)
|
||||
@@ -131,7 +133,7 @@
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/suit/det_suit/armor(src)
|
||||
new /obj/item/clothing/suit/storage/det_suit(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/gloves/detective(src)
|
||||
new /obj/item/clothing/head/det_hat(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
@@ -140,7 +142,9 @@
|
||||
new /obj/item/weapon/clipboard(src)
|
||||
new /obj/item/device/detective_scanner(src)
|
||||
new /obj/item/weapon/pepperspray/small(src)
|
||||
new /obj/item/policetaperoll(src)
|
||||
new /obj/item/weapon/storage/box/evidence(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/dflask(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
icon_on = "plight1"
|
||||
icon_off = "plight0"
|
||||
brightness_on = 3
|
||||
w_class = 1
|
||||
|
||||
|
||||
|
||||
@@ -90,7 +91,7 @@
|
||||
if(!ismob(M))
|
||||
return
|
||||
user << "\red You stab [M] with the pen."
|
||||
M << "\red You feel a tiny prick!"
|
||||
// M << "\red You feel a tiny prick!"
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stabbed with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to stab [M.name] ([M.ckey])</font>")
|
||||
..()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/device/taperecorder
|
||||
desc = "A device that can record up to a minute of dialogue and play it back. It automatically translates the content in playback."
|
||||
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
|
||||
name = "universal recorder"
|
||||
icon_state = "taperecorderidle"
|
||||
item_state = "analyzer"
|
||||
@@ -10,7 +10,9 @@
|
||||
var/recording = 0.0
|
||||
var/playing = 0.0
|
||||
var/timerecorded = 0.0
|
||||
var/playsleepseconds = 0.0
|
||||
var/list/storedinfo = new/list()
|
||||
var/list/timestamp = new/list()
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
throwforce = 2
|
||||
throw_speed = 4
|
||||
@@ -19,19 +21,20 @@
|
||||
/obj/item/device/taperecorder/hear_talk(mob/M as mob, msg)
|
||||
if (recording)
|
||||
var/ending = copytext(msg, length(msg))
|
||||
src.timestamp+= src.timerecorded
|
||||
if (M.stuttering)
|
||||
src.storedinfo += "[M.name] stammers, \"[msg]\""
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] [M.name] stammers, \"[msg]\""
|
||||
return
|
||||
if (M.getBrainLoss() >= 60)
|
||||
src.storedinfo += "[M.name] gibbers, \"[msg]\""
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] [M.name] gibbers, \"[msg]\""
|
||||
return
|
||||
if (ending == "?")
|
||||
src.storedinfo += "[M.name] asks, \"[msg]\""
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] [M.name] asks, \"[msg]\""
|
||||
return
|
||||
else if (ending == "!")
|
||||
src.storedinfo += "[M.name] exclaims, \"[msg]\""
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] [M.name] exclaims, \"[msg]\""
|
||||
return
|
||||
src.storedinfo += "[M.name] says, \"[msg]\""
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] [M.name] says, \"[msg]\""
|
||||
return
|
||||
|
||||
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -60,15 +63,18 @@
|
||||
set name = "Start Recording"
|
||||
set category = "Object"
|
||||
if(usr.stat)
|
||||
usr << "Not when you're incapicated."
|
||||
usr << "Not when you're incapacitated."
|
||||
return
|
||||
if(src.emagged == 1)
|
||||
usr << "\red The tape recorder makes a scratchy noise."
|
||||
return
|
||||
src.icon_state = "taperecorderrecording"
|
||||
if(src.timerecorded < 60 && src.playing == 0)
|
||||
if(src.timerecorded < 3600 && src.playing == 0)
|
||||
usr << "\blue Recording started."
|
||||
src.recording = 1
|
||||
for(src.timerecorded, src.timerecorded<60)
|
||||
src.timestamp+= src.timerecorded
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] Recording started."
|
||||
for(src.timerecorded, src.timerecorded<3600)
|
||||
if(src.recording == 0)
|
||||
break
|
||||
src.timerecorded++
|
||||
@@ -80,17 +86,25 @@
|
||||
usr << "\red Either your tape recorder's memory is full, or it is currently playing back its memory."
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/verb/stop_recording()
|
||||
set name = "Stop Recording"
|
||||
/obj/item/device/taperecorder/verb/stop()
|
||||
set name = "Stop"
|
||||
set category = "Object"
|
||||
|
||||
if(usr.stat)
|
||||
usr << "Not when you're incapicated."
|
||||
usr << "Not when you're incapacitated."
|
||||
return
|
||||
if (src.recording == 1 || src.playing == 1)
|
||||
if (src.recording == 1)
|
||||
src.recording = 0
|
||||
src.timestamp+= src.timerecorded
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] Recording stopped."
|
||||
usr << "\blue Recording stopped."
|
||||
src.icon_state = "taperecorderidle"
|
||||
return
|
||||
else if (src.playing == 1)
|
||||
src.playing = 0
|
||||
usr << "\blue Stopped."
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("<font color=Maroon><B>Tape Recorder</B>: Playback stopped.</font>",2)
|
||||
src.icon_state = "taperecorderidle"
|
||||
return
|
||||
else
|
||||
@@ -113,6 +127,7 @@
|
||||
return
|
||||
else
|
||||
src.storedinfo -= src.storedinfo
|
||||
src.timestamp -= src.timestamp
|
||||
src.timerecorded = 0
|
||||
usr << "\blue Memory cleared."
|
||||
return
|
||||
@@ -133,20 +148,32 @@
|
||||
return
|
||||
src.playing = 1
|
||||
src.icon_state = "taperecorderplaying"
|
||||
for(var/i=1,src.timerecorded<60,sleep(10 * (src.timerecorded/src.storedinfo.len)))
|
||||
usr << "\blue Playing started."
|
||||
for(var/i=1,src.timerecorded<3600,sleep(10 * (src.playsleepseconds) ))
|
||||
if (src.playing == 0)
|
||||
break
|
||||
if (src.storedinfo.len < i)
|
||||
break
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("\green <B>Tape Recorder</B>: \"[src.storedinfo[i]]\"",2)
|
||||
O.show_message("<font color=Maroon><B>Tape Recorder</B>: [src.storedinfo[i]]</font>",2)
|
||||
if (src.storedinfo.len < i+1)
|
||||
src.playsleepseconds = 1
|
||||
sleep(10)
|
||||
T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("<font color=Maroon><B>Tape Recorder</B>: End of recording.</font>",2)
|
||||
else
|
||||
src.playsleepseconds = src.timestamp[i+1] - src.timestamp[i]
|
||||
if (src.playsleepseconds > 19)
|
||||
sleep(10)
|
||||
T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("<font color=Maroon><B>Tape Recorder</B>: Skipping [src.playsleepseconds] seconds of silence</font>",2)
|
||||
src.playsleepseconds = 1
|
||||
i++
|
||||
src.icon_state = "taperecorderidle"
|
||||
src.playing = 0
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("Tape Recorder: End playback.",2)
|
||||
if (src.emagged == 1.0)
|
||||
for(var/mob/O in hearers(world.view-1, get_turf(src)))
|
||||
O.show_message("Tape Recorder: This tape recorder will self destruct in <B>5</B>",2)
|
||||
@@ -163,4 +190,67 @@
|
||||
for(var/mob/O in hearers(world.view-1, get_turf(src)))
|
||||
O.show_message("<B>1</B>",2)
|
||||
sleep(10)
|
||||
src.explode()
|
||||
src.explode()
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/verb/print_transcript()
|
||||
set name = "Print Transcript"
|
||||
set category = "Object"
|
||||
|
||||
if (src.recording == 1 || src.playing == 1)
|
||||
usr << "\red You can't print the transcript while playing or recording!"
|
||||
return
|
||||
usr << "\blue Transcript printed."
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
|
||||
var/t1 = "<B>Transcript:</B><BR><BR>"
|
||||
for(var/i=1,src.storedinfo.len >= i,i++)
|
||||
t1 += "[src.storedinfo[i]]<BR>"
|
||||
P.info = t1
|
||||
P.name = "paper- 'Transcript'"
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/attack_self(mob/user)
|
||||
if(src.recording == 0 && src.playing == 0)
|
||||
if(usr.stat)
|
||||
usr << "Not when you're incapacitated."
|
||||
return
|
||||
if(src.emagged == 1)
|
||||
usr << "\red The tape recorder makes a scratchy noise."
|
||||
return
|
||||
src.icon_state = "taperecorderrecording"
|
||||
if(src.timerecorded < 3600 && src.playing == 0)
|
||||
usr << "\blue Recording started."
|
||||
src.recording = 1
|
||||
src.timestamp+= src.timerecorded
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] Recording started."
|
||||
for(src.timerecorded, src.timerecorded<3600)
|
||||
if(src.recording == 0)
|
||||
break
|
||||
src.timerecorded++
|
||||
sleep(10)
|
||||
src.recording = 0
|
||||
src.icon_state = "taperecorderidle"
|
||||
return
|
||||
else
|
||||
usr << "\red Either your tape recorder's memory is full, or it is currently playing back its memory."
|
||||
else
|
||||
if(usr.stat)
|
||||
usr << "Not when you're incapacitated."
|
||||
return
|
||||
if (src.recording == 1)
|
||||
src.recording = 0
|
||||
src.timestamp+= src.timerecorded
|
||||
src.storedinfo += "\[[time2text(src.timerecorded*10,"mm:ss")]\] Recording stopped."
|
||||
usr << "\blue Recording stopped."
|
||||
src.icon_state = "taperecorderidle"
|
||||
return
|
||||
else if (src.playing == 1)
|
||||
src.playing = 0
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/O in hearers(world.view-1, T))
|
||||
O.show_message("<font color=Maroon><B>Tape Recorder</B>: Playback stopped.</font>",2)
|
||||
src.icon_state = "taperecorderidle"
|
||||
return
|
||||
else
|
||||
usr << "\red Stop what?"
|
||||
return
|
||||
@@ -466,3 +466,25 @@
|
||||
istype(W, /obj/item/weapon/reagent_containers/syringe) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" \
|
||||
)
|
||||
|
||||
/proc/is_cut(obj/item/W as obj)
|
||||
return ( \
|
||||
istype(W, /obj/item/weapon/wirecutters) || \
|
||||
istype(W, /obj/item/weapon/circular_saw) || \
|
||||
istype(W, /obj/item/weapon/melee/energy/sword) && W:active || \
|
||||
istype(W, /obj/item/weapon/melee/energy/blade) || \
|
||||
istype(W, /obj/item/weapon/shovel) || \
|
||||
istype(W, /obj/item/weapon/kitchenknife) || \
|
||||
istype(W, /obj/item/weapon/butch) || \
|
||||
istype(W, /obj/item/weapon/scalpel) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/knife) || \
|
||||
istype(W, /obj/item/weapon/shard) \
|
||||
)
|
||||
|
||||
/proc/is_burn(obj/item/W as obj)
|
||||
return ( \
|
||||
istype(W, /obj/item/weapon/weldingtool) && W:welding || \
|
||||
istype(W, /obj/item/weapon/zippo) && W:lit || \
|
||||
istype(W, /obj/item/weapon/match) && W:lit || \
|
||||
istype(W, /obj/item/clothing/mask/cigarette) && W:lit \
|
||||
)
|
||||
@@ -8,6 +8,7 @@
|
||||
desc = "An empty evidence bag."
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "evidenceobj"
|
||||
w_class = 1
|
||||
|
||||
/* buggy and stuff
|
||||
/obj/item/weapon/evidencebag/attackby(obj/item/weapon/O, mob/user as mob)
|
||||
@@ -23,14 +24,30 @@
|
||||
if(!(O && istype(O)) || O.anchored == 1)
|
||||
user << "You can't put that inside the [src]!"
|
||||
return ..()
|
||||
if(O in user)
|
||||
user << "You are wearing that."
|
||||
return
|
||||
if(src.contents.len > 0)
|
||||
user << "The [src] already has something inside it."
|
||||
return ..()
|
||||
if(istype(O.loc, /obj/item/weapon/storage))
|
||||
user << "This is broke as hell."
|
||||
return
|
||||
/* var/obj/item/weapon/storage/U = O.loc
|
||||
w_class = O.w_class
|
||||
for(var/i, i < U.contents.len, i++)
|
||||
if(O in U.contents[i])
|
||||
U.contents[i] = null
|
||||
O.loc = src
|
||||
continue*/
|
||||
user << "You put the [O] inside the [src]."
|
||||
O.loc = src
|
||||
icon_state = "evidence"
|
||||
src.underlays += O
|
||||
desc = "An evidence bag containing \a [O]. [O.desc]"
|
||||
O.loc = src
|
||||
w_class = O.w_class
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
|
||||
if (src.contents.len > 0)
|
||||
@@ -38,9 +55,13 @@
|
||||
user << "You take the [I] out of the [src]."
|
||||
I.loc = user.loc
|
||||
src.underlays -= I
|
||||
icon_state = "evidenceobj"
|
||||
w_class = 1
|
||||
src.icon_state = "evidenceobj"
|
||||
desc = "An empty evidence bag."
|
||||
else
|
||||
user << "The [src] is empty."
|
||||
user << "[src] is empty."
|
||||
src.icon_state = "evidenceobj"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/evidence
|
||||
name = "evidence bag box"
|
||||
@@ -51,7 +72,7 @@
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/evidencebag(src)
|
||||
new /obj/item/weapon/f_card(src)
|
||||
new /obj/item/weapon/f_card(src)
|
||||
..()
|
||||
return
|
||||
@@ -116,7 +116,6 @@
|
||||
"/obj/item/ammo_magazine",
|
||||
"/obj/item/weapon/reagent_containers/food/snacks/donut",
|
||||
"/obj/item/weapon/reagent_containers/food/snacks/jellydonut",
|
||||
|
||||
"/obj/item/device/radio",
|
||||
"/obj/item/device/detective_scanner",
|
||||
"/obj/item/device/pda",
|
||||
@@ -131,5 +130,6 @@
|
||||
"/obj/item/weapon/camera_test",
|
||||
"/obj/item/weapon/cigpacket",
|
||||
"/obj/item/weapon/zippo",
|
||||
"/obj/item/device/taperecorder"
|
||||
"/obj/item/device/taperecorder",
|
||||
"/obj/item/weapon/evidencebag"
|
||||
)
|
||||
@@ -96,11 +96,12 @@
|
||||
src.throw_impact(A)
|
||||
src.throwing = 0
|
||||
if(isobj(A))
|
||||
if(A.density) // **TODO: Better behaviour for windows
|
||||
// which are dense, but shouldn't always stop movement
|
||||
if(A.density && !A.throwpass) // **TODO: Better behaviour for windows
|
||||
// which are dense, but shouldn't always stop movement
|
||||
src.throw_impact(A)
|
||||
src.throwing = 0
|
||||
|
||||
/atom/var/throwpass = 0
|
||||
/atom/proc/throw_impact(atom/hit_atom)
|
||||
if(istype(hit_atom,/mob/living))
|
||||
var/mob/living/M = hit_atom
|
||||
|
||||
@@ -2823,6 +2823,12 @@
|
||||
icon_state = "flask"
|
||||
volume = 60
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dflask
|
||||
name = "Detective's Flask"
|
||||
desc = "A well used metal flask with the detective's name etched into it."
|
||||
icon_state = "dflask"
|
||||
volume = 60
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/britcup
|
||||
name = "cup"
|
||||
desc = "A cup with the british flag emblazoned on it."
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
item_state = "gearharness"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/armourrigvest
|
||||
name = "armour rig vest"
|
||||
@@ -70,6 +72,8 @@
|
||||
item_state = "armourrigvest"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
icon_state = "lamp1"
|
||||
base_state = "lamp"
|
||||
fitting = "bulb"
|
||||
brightness = 5
|
||||
brightness = 7
|
||||
desc = "A desk lamp"
|
||||
light_type = /obj/item/weapon/light/bulb
|
||||
var/switchon = 0 // independent switching for lamps - not controlled by area lightswitch
|
||||
|
||||
Reference in New Issue
Block a user