mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-25 17:42:26 +00:00
Old style bombs and suicide vests temporarily removed. Players can now be job banned from being a pAI. Added null checks to explosion() due to runtime errors. Changelog updated git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1980 316c924e-a436-60f5-8080-3fe189b3f50e
173 lines
4.2 KiB
Plaintext
173 lines
4.2 KiB
Plaintext
/obj/item/device/assembly_holder
|
|
name = "Assembly"
|
|
desc = "Holds various devices"//Fix this by adding dynamic desc
|
|
icon = 'new_assemblies.dmi'
|
|
icon_state = "holder"
|
|
flags = FPRINT | TABLEPASS| CONDUCT
|
|
item_state = "electronic"
|
|
m_amt = 100
|
|
throwforce = 5
|
|
w_class = 1.0
|
|
throw_speed = 3
|
|
throw_range = 10
|
|
|
|
var
|
|
secured = 0
|
|
obj/item/device/assembly_left = null
|
|
obj/item/device/assembly_right = null
|
|
//The "other" thing will go here
|
|
|
|
proc
|
|
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
|
Process_Activation(var/obj/item/device/D)
|
|
|
|
|
|
IsAssemblyHolder()
|
|
return 1
|
|
|
|
|
|
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
|
if((!D)||(!D2)) return 0
|
|
if((!D.IsAssembly())||(!D2.IsAssembly())) return 0
|
|
if((D:secured)||(D2:secured)) return 0
|
|
if(user)
|
|
user.remove_from_mob(D)
|
|
user.remove_from_mob(D2)
|
|
D:holder = src
|
|
D2:holder = src
|
|
D.loc = src
|
|
D2.loc = src
|
|
assembly_left = D
|
|
assembly_right = D2
|
|
src.name = "[D.name] [D2.name] assembly"
|
|
update_icon()
|
|
return 1
|
|
|
|
|
|
update_icon()
|
|
src.overlays = null
|
|
if(assembly_left)
|
|
src.overlays += assembly_left:small_icon_state_left
|
|
for(var/O in assembly_left:small_icon_state_overlays)
|
|
src.overlays += text("[]_l", O)
|
|
if(assembly_right)
|
|
src.overlays += assembly_right:small_icon_state_right
|
|
for(var/O in assembly_right:small_icon_state_overlays)
|
|
src.overlays += text("[]_r", O)
|
|
// if(other)
|
|
// other.update_icon()
|
|
|
|
|
|
examine()
|
|
set src in view()
|
|
..()
|
|
if ((in_range(src, usr) || src.loc == usr))
|
|
if (src.secured)
|
|
usr.show_message("The [src.name] is ready!")
|
|
else
|
|
usr.show_message("The [src.name] can be attached!")
|
|
return
|
|
|
|
|
|
HasProximity(atom/movable/AM as mob|obj)
|
|
if(!assembly_left || !assembly_right) return 0
|
|
assembly_left.HasProximity(AM)
|
|
assembly_right.HasProximity(AM)
|
|
|
|
|
|
Move()//I dont like this but it will do for now
|
|
var/t = src.dir
|
|
..()
|
|
if(istype(assembly_left,/obj/item/device/infra))
|
|
assembly_left.dir = t
|
|
del(assembly_left:first)
|
|
if(istype(assembly_right,/obj/item/device/infra))
|
|
assembly_right.dir = t
|
|
del(assembly_right:first)
|
|
return
|
|
|
|
|
|
attack_hand()//I dont like this one either
|
|
if(istype(assembly_left,/obj/item/device/infra))
|
|
del(assembly_left:first)
|
|
if(istype(assembly_right,/obj/item/device/infra))
|
|
del(assembly_right:first)
|
|
..()
|
|
return
|
|
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(isscrewdriver(W))
|
|
if(!assembly_left || !assembly_right)
|
|
user.show_message("\red Assembly part missing!")
|
|
return
|
|
if(src.secured)
|
|
src.secured = 0
|
|
assembly_left:Unsecure()
|
|
assembly_right:Unsecure()
|
|
user.show_message("\blue The [src.name] can now be taken apart!")
|
|
else
|
|
src.secured = 1
|
|
assembly_left:Secure()
|
|
assembly_right:Secure()
|
|
user.show_message("\blue The [src.name] is ready!")
|
|
update_icon()
|
|
return
|
|
else
|
|
..()
|
|
return
|
|
|
|
|
|
attack_self(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if(src.secured)
|
|
if(!assembly_left || !assembly_right)
|
|
user.show_message("\red Assembly part missing!")
|
|
return
|
|
if(istype(assembly_left,assembly_right.type))//If they are the same type it causes issues due to window code
|
|
switch(alert("Which side would you like to use?",,"Left","Right"))
|
|
if("Left")
|
|
assembly_left.attack_self(user)
|
|
if("Right")
|
|
assembly_right.attack_self(user)
|
|
return
|
|
else
|
|
assembly_left.attack_self(user)
|
|
assembly_right.attack_self(user)
|
|
else
|
|
var/turf/T = get_turf(src)
|
|
if(!T) return 0
|
|
if(assembly_left)
|
|
assembly_left:holder = null
|
|
assembly_left.loc = T
|
|
if(assembly_right)
|
|
assembly_right:holder = null
|
|
assembly_right.loc = T
|
|
spawn(0)
|
|
del(src)
|
|
return
|
|
|
|
|
|
Process_Activation(var/obj/item/device/D)
|
|
if(!D) return 0
|
|
if(assembly_left == D)
|
|
assembly_right:Activate()
|
|
//If anymore things can be on a holder this will have to be edited
|
|
else if(assembly_right == D)
|
|
assembly_left:Activate()
|
|
// else if(assemblyother == D)
|
|
// assembly_left.Activate()
|
|
// assembly_right.Activate()
|
|
return 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|