mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-12 09:54:03 +00:00
*TABLEPASS was already totally obsolete. FPRINT was used, but it was on virtually everything anyway. Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense. If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only where it was intentional (holodeck items could use this for example).
180 lines
3.7 KiB
Plaintext
180 lines
3.7 KiB
Plaintext
/obj/item/device/assembly_holder
|
|
name = "Assembly"
|
|
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
|
icon_state = "holder"
|
|
item_state = "assembly"
|
|
flags = CONDUCT
|
|
throwforce = 5
|
|
w_class = 2.0
|
|
throw_speed = 3
|
|
throw_range = 10
|
|
|
|
var/secured = 0
|
|
var/obj/item/device/assembly/a_left = null
|
|
var/obj/item/device/assembly/a_right = null
|
|
|
|
proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
|
return
|
|
|
|
proc/process_activation(var/obj/item/device/D)
|
|
return
|
|
|
|
|
|
|
|
IsAssemblyHolder()
|
|
return 1
|
|
|
|
|
|
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
|
if((!D)||(!D2)) return 0
|
|
if((!isassembly(D))||(!isassembly(D2))) 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
|
|
a_left = D
|
|
a_right = D2
|
|
name = "[D.name]-[D2.name] assembly"
|
|
update_icon()
|
|
return 1
|
|
|
|
|
|
update_icon()
|
|
overlays.Cut()
|
|
if(a_left)
|
|
overlays += "[a_left.icon_state]_left"
|
|
for(var/O in a_left.attached_overlays)
|
|
overlays += "[O]_l"
|
|
if(a_right)
|
|
src.overlays += "[a_right.icon_state]_right"
|
|
for(var/O in a_right.attached_overlays)
|
|
overlays += "[O]_r"
|
|
if(master)
|
|
master.update_icon()
|
|
|
|
|
|
examine()
|
|
set src in view()
|
|
..()
|
|
if ((in_range(src, usr) || src.loc == usr))
|
|
if (src.secured)
|
|
usr << "\The [src] is ready!"
|
|
else
|
|
usr << "\The [src] can be attached!"
|
|
return
|
|
|
|
|
|
HasProximity(atom/movable/AM as mob|obj)
|
|
if(a_left)
|
|
a_left.HasProximity(AM)
|
|
if(a_right)
|
|
a_right.HasProximity(AM)
|
|
|
|
|
|
Crossed(atom/movable/AM as mob|obj)
|
|
if(a_left)
|
|
a_left.Crossed(AM)
|
|
if(a_right)
|
|
a_right.Crossed(AM)
|
|
|
|
on_found(mob/finder as mob)
|
|
if(a_left)
|
|
a_left.on_found(finder)
|
|
if(a_right)
|
|
a_right.on_found(finder)
|
|
|
|
|
|
hear_talk(mob/living/M as mob, msg)
|
|
if(a_left)
|
|
a_left.hear_talk(M, msg)
|
|
if(a_right)
|
|
a_right.hear_talk(M, msg)
|
|
|
|
Move()
|
|
..()
|
|
if(a_left && a_right)
|
|
a_left.holder_movement()
|
|
a_right.holder_movement()
|
|
return
|
|
|
|
|
|
attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
|
|
if(a_left && a_right)
|
|
a_left.holder_movement()
|
|
a_right.holder_movement()
|
|
..()
|
|
return
|
|
|
|
|
|
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(istype(W, /obj/item/weapon/screwdriver))
|
|
if(!a_left || !a_right)
|
|
user << "\red BUG:Assembly part missing, please report this!"
|
|
return
|
|
a_left.toggle_secure()
|
|
a_right.toggle_secure()
|
|
secured = !secured
|
|
if(secured)
|
|
user << "\blue \The [src] is ready!"
|
|
else
|
|
user << "\blue \The [src] can now be taken apart!"
|
|
update_icon()
|
|
return
|
|
else
|
|
..()
|
|
return
|
|
|
|
|
|
attack_self(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if(src.secured)
|
|
if(!a_left || !a_right)
|
|
user << "\red Assembly part missing!"
|
|
return
|
|
if(istype(a_left,a_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") a_left.attack_self(user)
|
|
if("Right") a_right.attack_self(user)
|
|
return
|
|
else
|
|
a_left.attack_self(user)
|
|
a_right.attack_self(user)
|
|
else
|
|
var/turf/T = get_turf(src)
|
|
if(!T) return 0
|
|
if(a_left)
|
|
a_left:holder = null
|
|
a_left.loc = T
|
|
if(a_right)
|
|
a_right:holder = null
|
|
a_right.loc = T
|
|
spawn(0)
|
|
del(src)
|
|
return
|
|
|
|
|
|
process_activation(var/obj/D, var/normal = 1, var/special = 1)
|
|
if(!D) return 0
|
|
if((normal) && (a_right) && (a_left))
|
|
if(a_right != D)
|
|
a_right.pulsed(0)
|
|
if(a_left != D)
|
|
a_left.pulsed(0)
|
|
if(master)
|
|
master.receive_signal()
|
|
return 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|