mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
168 lines
5.2 KiB
Plaintext
168 lines
5.2 KiB
Plaintext
/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/attack_paw(mob/user as mob)
|
|
breaktape(/obj/item/weapon/wirecutters,user)
|
|
|
|
/obj/item/policetape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(user.a_intent == "help" && ((!is_sharp(W) && src.allowed(user)) ||(!is_cut(W) && !src.allowed(user))))
|
|
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
|