Files
CHOMPStation2/code/modules/assembly/holder.dm
mport2004@gmail.com 6980602e24 General:
Flamethrower construction code cleaned up.
Signalers on doors should work fine now.
Changelog Updated.

Weapons:
Xbow radiation has been lowered from 100 to 20 and it has a 5% chance to do no rad damage

Admin:
Attempted to clean up the code a bit
Commands Removed/CommentedOut:
air_status,  radio_report,  toggletintedweldhelmets, modifytemperature, givetestverbs, restartcontroller, fix_next_move, Cell
Renamed: 
edit_memory - show_traitor_panel
un\stealthadmin - show/hide_verbs

Cargo:
Engineering crates cost 10 and contain: 1 mechanical toolbox, 1 electrical toolbox, 1 glove, 1 toolbelt, 1 vest, and 1 hard hat.
PowerCell crates cost 10 and contain: 1 electrical toolbox, 2 wire coils, 2 power cells, and 1 high power cell.
Water/Fuel tank crates cost 15 and contain: 1 water tank and 1 fuel tank.

Cyborg:
Fixed the open cover icons
To override a cyborg's laws you must emag it when the cover is open
Emags can now unlock the cover

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1995 316c924e-a436-60f5-8080-3fe189b3f50e
2011-08-09 06:21:57 +00:00

174 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"
item_state = "assembly"
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