mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
@@ -1,3 +1,177 @@
|
||||
/var/global/list/construction_frame_wall
|
||||
/var/global/list/construction_frame_floor
|
||||
|
||||
/proc/populate_frame_types()
|
||||
//Create global frame type list if it hasn't been made already.
|
||||
construction_frame_wall = list()
|
||||
construction_frame_floor = list()
|
||||
for(var/R in typesof(/datum/frame/frame_types) - /datum/frame/frame_types)
|
||||
var/datum/frame/frame_types/type = new R
|
||||
if(type.frame_style == "wall")
|
||||
construction_frame_wall += type
|
||||
else
|
||||
construction_frame_floor += type
|
||||
|
||||
var/datum/frame/frame_types/cancel/cancel = new /datum/frame/frame_types/cancel
|
||||
construction_frame_wall += cancel
|
||||
construction_frame_floor += cancel
|
||||
|
||||
/datum/frame/frame_types
|
||||
var/name
|
||||
var/frame_size = 5
|
||||
var/frame_class
|
||||
var/circuit
|
||||
var/frame_style = "floor"
|
||||
var/x_offset
|
||||
var/y_offset
|
||||
|
||||
/datum/frame/frame_types/computer
|
||||
name = "Computer"
|
||||
frame_class = "computer"
|
||||
|
||||
/datum/frame/frame_types/machine
|
||||
name = "Machine"
|
||||
frame_class = "machine"
|
||||
|
||||
/datum/frame/frame_types/conveyor
|
||||
name = "Conveyor"
|
||||
frame_class = "machine"
|
||||
circuit = /obj/item/weapon/circuitboard/conveyor
|
||||
|
||||
/datum/frame/frame_types/photocopier
|
||||
name = "Photocopier"
|
||||
frame_class = "machine"
|
||||
|
||||
/datum/frame/frame_types/washing_machine
|
||||
name = "Washing Machine"
|
||||
frame_class = "machine"
|
||||
|
||||
/datum/frame/frame_types/medical_console
|
||||
name = "Medical Console"
|
||||
frame_class = "computer"
|
||||
|
||||
/datum/frame/frame_types/medical_pod
|
||||
name = "Medical Pod"
|
||||
frame_class = "machine"
|
||||
|
||||
/datum/frame/frame_types/dna_analyzer
|
||||
name = "DNA Analyzer"
|
||||
frame_class = "machine"
|
||||
|
||||
/datum/frame/frame_types/mass_driver
|
||||
name = "Mass Driver"
|
||||
frame_class = "machine"
|
||||
circuit = /obj/item/weapon/circuitboard/mass_driver
|
||||
|
||||
/datum/frame/frame_types/holopad
|
||||
name = "Holopad"
|
||||
frame_class = "computer"
|
||||
frame_size = 4
|
||||
|
||||
/datum/frame/frame_types/microwave
|
||||
name = "Microwave"
|
||||
frame_class = "machine"
|
||||
frame_size = 4
|
||||
|
||||
/datum/frame/frame_types/fax
|
||||
name = "Fax"
|
||||
frame_class = "machine"
|
||||
frame_size = 3
|
||||
|
||||
/datum/frame/frame_types/recharger
|
||||
name = "Recharger"
|
||||
frame_class = "machine"
|
||||
circuit = /obj/item/weapon/circuitboard/recharger
|
||||
frame_size = 3
|
||||
|
||||
/datum/frame/frame_types/grinder
|
||||
name = "Grinder"
|
||||
frame_class = "machine"
|
||||
circuit = /obj/item/weapon/circuitboard/grinder
|
||||
frame_size = 3
|
||||
|
||||
/datum/frame/frame_types/display
|
||||
name = "Display"
|
||||
frame_class = "display"
|
||||
frame_style = "wall"
|
||||
x_offset = 32
|
||||
y_offset = 32
|
||||
|
||||
/datum/frame/frame_types/supply_request_console
|
||||
name = "Supply Request Console"
|
||||
frame_class = "display"
|
||||
frame_style = "wall"
|
||||
x_offset = 32
|
||||
y_offset = 32
|
||||
|
||||
/datum/frame/frame_types/atm
|
||||
name = "ATM"
|
||||
frame_class = "display"
|
||||
frame_size = 3
|
||||
frame_style = "wall"
|
||||
x_offset = 32
|
||||
y_offset = 32
|
||||
|
||||
/datum/frame/frame_types/newscaster
|
||||
name = "Newscaster"
|
||||
frame_class = "display"
|
||||
frame_size = 3
|
||||
frame_style = "wall"
|
||||
x_offset = 28
|
||||
y_offset = 30
|
||||
|
||||
/datum/frame/frame_types/wall_charger
|
||||
name = "Wall Charger"
|
||||
frame_class = "machine"
|
||||
circuit = /obj/item/weapon/circuitboard/recharger/wrecharger
|
||||
frame_size = 3
|
||||
frame_style = "wall"
|
||||
x_offset = 32
|
||||
y_offset = 32
|
||||
|
||||
/datum/frame/frame_types/fire_alarm
|
||||
name = "Fire Alarm"
|
||||
frame_class = "alarm"
|
||||
frame_size = 2
|
||||
frame_style = "wall"
|
||||
x_offset = 24
|
||||
y_offset = 24
|
||||
|
||||
/datum/frame/frame_types/air_alarm
|
||||
name = "Air Alarm"
|
||||
frame_class = "alarm"
|
||||
frame_size = 2
|
||||
frame_style = "wall"
|
||||
x_offset = 24
|
||||
y_offset = 24
|
||||
|
||||
/datum/frame/frame_types/guest_pass_console
|
||||
name = "Guest Pass Console"
|
||||
frame_class = "display"
|
||||
frame_size = 2
|
||||
frame_style = "wall"
|
||||
x_offset = 30
|
||||
y_offset = 30
|
||||
|
||||
/datum/frame/frame_types/intercom
|
||||
name = "Intercom"
|
||||
frame_class = "alarm"
|
||||
frame_size = 2
|
||||
frame_style = "wall"
|
||||
x_offset = 28
|
||||
y_offset = 28
|
||||
|
||||
/datum/frame/frame_types/keycard_authenticator
|
||||
name = "Keycard Authenticator"
|
||||
frame_class = "alarm"
|
||||
frame_size = 1
|
||||
frame_style = "wall"
|
||||
x_offset = 24
|
||||
y_offset = 24
|
||||
|
||||
/datum/frame/frame_types/cancel //used to get out of input dialogue
|
||||
name = "Cancel"
|
||||
|
||||
/obj/structure/frame
|
||||
anchored = 0
|
||||
name = "frame"
|
||||
@@ -6,20 +180,16 @@
|
||||
var/state = 0
|
||||
var/obj/item/weapon/circuitboard/circuit = null
|
||||
var/need_circuit = 1
|
||||
var/frame_type = "machine"
|
||||
var/datum/frame/frame_types/frame_type = new /datum/frame/frame_types/machine
|
||||
|
||||
var/list/components = null
|
||||
var/list/req_components = null
|
||||
var/list/req_component_names = null
|
||||
|
||||
var/list/alarms = list("firealarm", "airalarm", "intercom", "keycard")
|
||||
var/list/machines = list(
|
||||
"machine", "photocopier", "fax", "microwave", "conveyor", "recharger", "wrecharger",
|
||||
"washing", "grinder", "teleporter_hub", "teleporter_station", "medpod", "dna_analyzer",
|
||||
"massdriver")
|
||||
var/list/computers = list("computer", "holopad", "console")
|
||||
var/list/displays = list("display", "guestpass", "newscaster", "atm", "request")
|
||||
var/list/no_circuit = list("wrecharger", "recharger", "grinder", "conveyor", "massdriver")
|
||||
/obj/structure/frame/computer //used for maps
|
||||
frame_type = new /datum/frame/frame_types/computer
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
/obj/structure/frame/proc/update_desc()
|
||||
var/D
|
||||
@@ -31,6 +201,12 @@
|
||||
D = "Requires [english_list(component_list)]."
|
||||
desc = D
|
||||
|
||||
/obj/structure/frame/update_icon()
|
||||
..()
|
||||
var/type = lowertext(frame_type.name)
|
||||
type = replacetext(type, " ", "_")
|
||||
icon_state = "[type]_[state]"
|
||||
|
||||
/obj/structure/frame/proc/check_components(mob/user as mob)
|
||||
components = list()
|
||||
req_components = circuit.req_components.Copy()
|
||||
@@ -41,175 +217,110 @@
|
||||
var/obj/ct = A
|
||||
req_component_names[A] = initial(ct.name)
|
||||
|
||||
/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/obj/item/frame/frame_type, mob/user as mob)
|
||||
/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/datum/frame/frame_types/type, mob/user as mob)
|
||||
..()
|
||||
if(building)
|
||||
src.frame_type = frame_type
|
||||
icon_state = "[frame_type]_0"
|
||||
frame_type = type
|
||||
state = 0
|
||||
|
||||
if(dir)
|
||||
src.set_dir(dir)
|
||||
set_dir(dir)
|
||||
|
||||
if(frame_type in alarms)
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
|
||||
state = 0
|
||||
if(frame_type == "airalarm" || frame_type == "firealarm" || frame_type == "keycard")
|
||||
if(dir)
|
||||
src.set_dir(dir)
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0
|
||||
if(frame_type.x_offset)
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -frame_type.x_offset : frame_type.x_offset)
|
||||
|
||||
if(frame_type == "intercom")
|
||||
if(dir)
|
||||
src.set_dir(dir)
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -28 : 28) : 0
|
||||
if(frame_type.y_offset)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -frame_type.y_offset : frame_type.y_offset) : 0
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(frame_type in displays)
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
|
||||
if(frame_type == "display" || frame_type == "atm" || frame_type == "request")
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0
|
||||
|
||||
if(frame_type == "newscaster")
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0
|
||||
|
||||
if(frame_type == "guestpass")
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
if(frame_type in no_circuit)
|
||||
if(frame_type.circuit)
|
||||
need_circuit = 0
|
||||
if(frame_type == "wrecharger")
|
||||
circuit = new /obj/item/weapon/circuitboard/recharger/wrecharger(src)
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
circuit = new frame_type.circuit(src)
|
||||
|
||||
state = 0
|
||||
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -26 : 32)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0
|
||||
|
||||
update_icon()
|
||||
return
|
||||
if(frame_type == "recharger")
|
||||
circuit = new /obj/item/weapon/circuitboard/recharger(src)
|
||||
if(frame_type == "grinder")
|
||||
circuit = new /obj/item/weapon/circuitboard/grinder(src)
|
||||
if(frame_type == "conveyor")
|
||||
circuit = new /obj/item/weapon/circuitboard/conveyor(src)
|
||||
if(frame_type == "massdriver")
|
||||
circuit = new /obj/item/weapon/circuitboard/mass_driver(src)
|
||||
|
||||
if(frame_type == "computer")
|
||||
if(frame_type.name == "Computer")
|
||||
density = 1
|
||||
if(frame_type in machines)
|
||||
|
||||
if(frame_type.frame_class == "machine")
|
||||
density = 1
|
||||
return
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/frame/attackby(obj/item/P as obj, mob/user as mob)
|
||||
if(istype(P, /obj/item/weapon/wrench))
|
||||
if(state == 0)
|
||||
if(state == 0 && !anchored)
|
||||
user << "<span class='notice'>You start to wrench the frame into place.</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
src.anchored = 1
|
||||
anchored = 1
|
||||
if(!need_circuit && circuit)
|
||||
src.state = 2
|
||||
state = 2
|
||||
check_components()
|
||||
update_desc()
|
||||
src.icon_state = "[frame_type]_2"
|
||||
user << "<span class='notice'>You wrench the frame into place and set the outer cover.</span>"
|
||||
else
|
||||
src.state = 1
|
||||
user << "<span class='notice'>You wrench the frame into place.</span>"
|
||||
return
|
||||
|
||||
if(state == 1)
|
||||
else if(state == 0 && anchored)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
user << "<span class='notice'>You unfasten the frame.</span>"
|
||||
src.anchored = 0
|
||||
src.state = 0
|
||||
return
|
||||
anchored = 0
|
||||
|
||||
if(istype(P, /obj/item/weapon/weldingtool))
|
||||
else if(istype(P, /obj/item/weapon/weldingtool))
|
||||
if(state == 0)
|
||||
var/obj/item/weapon/weldingtool/WT = P
|
||||
if(!WT.remove_fuel(0, user))
|
||||
if(WT.remove_fuel(0, user))
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(src && WT.isOn())
|
||||
user << "<span class='notice'>You deconstruct the frame.</span>"
|
||||
new /obj/item/stack/material/steel(src.loc, frame_type.frame_size)
|
||||
qdel(src)
|
||||
return
|
||||
else if(!WT.remove_fuel(0, user))
|
||||
user << "The welding tool must be on to complete this task."
|
||||
return
|
||||
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(!src || !WT.isOn()) return
|
||||
user << "<span class='notice'>You deconstruct the frame.</span>"
|
||||
if(frame_type == "holopad" || frame_type == "microwave")
|
||||
new /obj/item/stack/material/steel( src.loc, 4 )
|
||||
else if(frame_type == "fax" || frame_type == "newscaster" || frame_type == "recharger" || frame_type == "wrecharger" || frame_type == "grinder")
|
||||
new /obj/item/stack/material/steel( src.loc, 3 )
|
||||
else if(frame_type == "firealarm" || frame_type == "airalarm" || frame_type == "intercom" || frame_type == "guestpass")
|
||||
new /obj/item/stack/material/steel( src.loc, 2 )
|
||||
else if(frame_type == "keycard")
|
||||
new /obj/item/stack/material/steel( src.loc, 1 )
|
||||
else
|
||||
new /obj/item/stack/material/steel( src.loc, 5 )
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/weapon/circuitboard) && need_circuit && !circuit)
|
||||
if(state == 1)
|
||||
else if(istype(P, /obj/item/weapon/circuitboard) && need_circuit && !circuit)
|
||||
if(state == 0 && anchored)
|
||||
var/obj/item/weapon/circuitboard/B = P
|
||||
if(B.board_type == frame_type)
|
||||
var/datum/frame/frame_types/board_type = B.board_type
|
||||
if(board_type.name == frame_type.name)
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user << "<span class='notice'>You place the circuit board inside the frame.</span>"
|
||||
src.icon_state = "[frame_type]_1"
|
||||
src.circuit = P
|
||||
circuit = P
|
||||
user.drop_item()
|
||||
P.loc = src
|
||||
if(frame_type in machines) //because machines are assholes
|
||||
state = 1
|
||||
if(frame_type.frame_class == "machine")
|
||||
check_components()
|
||||
update_desc()
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>This frame does not accept circuit boards of this type!</span>"
|
||||
return
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/weapon/screwdriver))
|
||||
else if(istype(P, /obj/item/weapon/screwdriver))
|
||||
if(state == 1)
|
||||
if(need_circuit && circuit)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You screw the circuit board into place.</span>"
|
||||
src.state = 2
|
||||
src.icon_state = "[frame_type]_2"
|
||||
return
|
||||
state = 2
|
||||
|
||||
if(state == 2)
|
||||
else if(state == 2)
|
||||
if(need_circuit && circuit)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You unfasten the circuit board.</span>"
|
||||
src.state = 1
|
||||
src.icon_state = "[frame_type]_1"
|
||||
return
|
||||
state = 1
|
||||
|
||||
if(!need_circuit && circuit)
|
||||
else if(!need_circuit && circuit)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You unfasten the outer cover.</span>"
|
||||
src.state = 1
|
||||
src.icon_state = "[frame_type]_0"
|
||||
return
|
||||
state = 0
|
||||
|
||||
if(state == 3)
|
||||
if(frame_type in machines)
|
||||
else if(state == 3)
|
||||
if(frame_type.frame_class == "machine")
|
||||
var/component_check = 1
|
||||
for(var/R in req_components)
|
||||
if(req_components[R] > 0)
|
||||
@@ -217,7 +328,7 @@
|
||||
break
|
||||
if(component_check)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir)
|
||||
var/obj/machinery/new_machine = new circuit.build_path(src.loc, dir)
|
||||
// Handle machines that have allocated default parts in thier constructor.
|
||||
if(new_machine.component_parts)
|
||||
for(var/CP in new_machine.component_parts)
|
||||
@@ -226,9 +337,9 @@
|
||||
else
|
||||
new_machine.component_parts = list()
|
||||
|
||||
src.circuit.construct(new_machine)
|
||||
circuit.construct(new_machine)
|
||||
|
||||
for(var/obj/O in src.components)
|
||||
for(var/obj/O in components)
|
||||
if(circuit.contain_parts)
|
||||
O.loc = new_machine
|
||||
else
|
||||
@@ -240,173 +351,158 @@
|
||||
|
||||
new_machine.RefreshParts()
|
||||
|
||||
new_machine.pixel_x = src.pixel_x
|
||||
new_machine.pixel_y = src.pixel_y
|
||||
new_machine.pixel_x = pixel_x
|
||||
new_machine.pixel_y = pixel_y
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
if(frame_type in alarms)
|
||||
else if(frame_type.frame_class == "alarm")
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You fasten the cover.</span>"
|
||||
var/obj/machinery/B = new src.circuit.build_path ( src.loc )
|
||||
B.pixel_x = src.pixel_x
|
||||
B.pixel_y = src.pixel_y
|
||||
var/obj/machinery/B = new circuit.build_path(src.loc)
|
||||
B.pixel_x = pixel_x
|
||||
B.pixel_y = pixel_y
|
||||
B.set_dir(dir)
|
||||
src.circuit.construct(B)
|
||||
circuit.construct(B)
|
||||
circuit.loc = null
|
||||
B.circuit = circuit
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(state == 4)
|
||||
if(frame_type in computers)
|
||||
else if(state == 4)
|
||||
if(frame_type.frame_class == "computer")
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You connect the monitor.</span>"
|
||||
var/obj/machinery/B = new src.circuit.build_path ( src.loc )
|
||||
B.pixel_x = src.pixel_x
|
||||
B.pixel_y = src.pixel_y
|
||||
var/obj/machinery/B = new circuit.build_path(src.loc)
|
||||
B.pixel_x = pixel_x
|
||||
B.pixel_y = pixel_y
|
||||
B.set_dir(dir)
|
||||
src.circuit.construct(B)
|
||||
circuit.construct(B)
|
||||
circuit.loc = null
|
||||
B.circuit = circuit
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(frame_type in displays)
|
||||
else if(frame_type.frame_class == "display")
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You connect the monitor.</span>"
|
||||
var/obj/machinery/B = new src.circuit.build_path ( src.loc )
|
||||
B.pixel_x = src.pixel_x
|
||||
B.pixel_y = src.pixel_y
|
||||
var/obj/machinery/B = new circuit.build_path(src.loc)
|
||||
B.pixel_x = pixel_x
|
||||
B.pixel_y = pixel_y
|
||||
B.set_dir(dir)
|
||||
src.circuit.construct(B)
|
||||
circuit.construct(B)
|
||||
circuit.loc = null
|
||||
B.circuit = circuit
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/weapon/crowbar))
|
||||
else if(istype(P, /obj/item/weapon/crowbar))
|
||||
if(state == 1)
|
||||
if(need_circuit && circuit)
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the circuit board.</span>"
|
||||
src.state = 1
|
||||
src.icon_state = "[frame_type]_0"
|
||||
circuit.loc = src.loc
|
||||
src.circuit = null
|
||||
if(frame_type in machines) //becuase machines are assholes
|
||||
state = 0
|
||||
circuit.forceMove(src.loc)
|
||||
circuit = null
|
||||
if(frame_type.frame_class == "machine")
|
||||
req_components = null
|
||||
return
|
||||
|
||||
if(state == 3)
|
||||
if(frame_type in machines)
|
||||
else if(state == 3)
|
||||
if(frame_type.frame_class == "machine")
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
if(components.len == 0)
|
||||
user << "<span class='notice'>There are no components to remove.</span>"
|
||||
else
|
||||
user << "<span class='notice'>You remove the components.</span>"
|
||||
for(var/obj/item/weapon/W in components)
|
||||
W.forceMove(loc)
|
||||
W.forceMove(src.loc)
|
||||
check_components()
|
||||
update_desc()
|
||||
user << desc
|
||||
return
|
||||
|
||||
if(state == 4)
|
||||
if(frame_type in computers)
|
||||
else if(state == 4)
|
||||
if(frame_type.frame_class == "computer")
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the glass panel.</span>"
|
||||
src.state = 3
|
||||
src.icon_state = "[frame_type]_3"
|
||||
new /obj/item/stack/material/glass( src.loc, 2 )
|
||||
return
|
||||
state = 3
|
||||
new /obj/item/stack/material/glass(src.loc, 2)
|
||||
|
||||
if(frame_type in displays)
|
||||
else if(frame_type.frame_class == "display")
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the glass panel.</span>"
|
||||
src.state = 3
|
||||
src.icon_state = "[frame_type]_3"
|
||||
new /obj/item/stack/material/glass( src.loc, 2 )
|
||||
return
|
||||
state = 3
|
||||
new /obj/item/stack/material/glass(src.loc, 2)
|
||||
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
else if(istype(P, /obj/item/stack/cable_coil))
|
||||
if(state == 2)
|
||||
var/obj/item/stack/cable_coil/C = P
|
||||
if (C.get_amount() < 5)
|
||||
if(C.get_amount() < 5)
|
||||
user << "<span class='warning'>You need five coils of wire to add them to the frame.</span>"
|
||||
return
|
||||
user << "<span class='notice'>You start to add cables to the frame.</span>"
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 20) && state == 2)
|
||||
if (C.use(5))
|
||||
if(C.use(5))
|
||||
user << "<span class='notice'>You add cables to the frame.</span>"
|
||||
state = 3
|
||||
icon_state = "[frame_type]_3"
|
||||
if(frame_type in machines)
|
||||
if(frame_type.frame_class == "machine")
|
||||
user << desc
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/weapon/wirecutters))
|
||||
else if(istype(P, /obj/item/weapon/wirecutters))
|
||||
if(state == 3)
|
||||
if(frame_type in computers)
|
||||
if(frame_type.frame_class == "computer")
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the cables.</span>"
|
||||
src.state = 2
|
||||
src.icon_state = "[frame_type]_2"
|
||||
new /obj/item/stack/cable_coil( src.loc, 5 )
|
||||
return
|
||||
state = 2
|
||||
new /obj/item/stack/cable_coil(src.loc, 5)
|
||||
|
||||
if(frame_type in displays)
|
||||
else if(frame_type.frame_class == "display")
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the cables.</span>"
|
||||
src.state = 2
|
||||
src.icon_state = "[frame_type]_2"
|
||||
new /obj/item/stack/cable_coil( src.loc, 5 )
|
||||
return
|
||||
state = 2
|
||||
new /obj/item/stack/cable_coil(src.loc, 5)
|
||||
|
||||
if(frame_type in alarms)
|
||||
else if(frame_type.frame_class == "alarm")
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the cables.</span>"
|
||||
src.state = 2
|
||||
src.icon_state = "[frame_type]_2"
|
||||
new /obj/item/stack/cable_coil( src.loc, 5 )
|
||||
return
|
||||
state = 2
|
||||
new /obj/item/stack/cable_coil(src.loc, 5)
|
||||
|
||||
if(frame_type in machines)
|
||||
else if(frame_type.frame_class == "machine")
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the cables.</span>"
|
||||
src.state = 2
|
||||
src.icon_state = "[frame_type]_2"
|
||||
new /obj/item/stack/cable_coil( src.loc, 5 )
|
||||
return
|
||||
state = 2
|
||||
new /obj/item/stack/cable_coil(src.loc, 5)
|
||||
|
||||
if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass")
|
||||
else if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass")
|
||||
if(state == 3)
|
||||
if(frame_type in computers)
|
||||
if(frame_type.frame_class == "computer")
|
||||
var/obj/item/stack/G = P
|
||||
if (G.get_amount() < 2)
|
||||
if(G.get_amount() < 2)
|
||||
user << "<span class='warning'>You need two sheets of glass to put in the glass panel.</span>"
|
||||
return
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user << "<span class='notice'>You start to put in the glass panel.</span>"
|
||||
if(do_after(user, 20) && state == 3)
|
||||
if (G.use(2))
|
||||
if(G.use(2))
|
||||
user << "<span class='notice'>You put in the glass panel.</span>"
|
||||
src.state = 4
|
||||
src.icon_state = "[frame_type]_4"
|
||||
return
|
||||
state = 4
|
||||
|
||||
if(frame_type in displays)
|
||||
else if(frame_type.frame_class == "display")
|
||||
var/obj/item/stack/G = P
|
||||
if (G.get_amount() < 2)
|
||||
if(G.get_amount() < 2)
|
||||
user << "<span class='warning'>You need two sheets of glass to put in the glass panel.</span>"
|
||||
return
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user << "<span class='notice'>You start to put in the glass panel.</span>"
|
||||
if(do_after(user, 20) && state == 3)
|
||||
if (G.use(2))
|
||||
if(G.use(2))
|
||||
user << "<span class='notice'>You put in the glass panel.</span>"
|
||||
src.state = 4
|
||||
src.icon_state = "[frame_type]_4"
|
||||
return
|
||||
state = 4
|
||||
|
||||
if(istype(P, /obj/item))
|
||||
else if(istype(P, /obj/item))
|
||||
if(state == 3)
|
||||
if(frame_type in machines)
|
||||
if(frame_type.frame_class == "machine")
|
||||
for(var/I in req_components)
|
||||
if(istype(P, I) && (req_components[I] > 0))
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
@@ -423,10 +519,10 @@
|
||||
update_desc()
|
||||
break
|
||||
|
||||
if(istype(P, /obj/item/stack/material/glass/reinforced))
|
||||
else if(istype(P, /obj/item/stack/material/glass/reinforced))
|
||||
var/obj/item/stack/material/glass/reinforced/CP = P
|
||||
if(CP.get_amount() > 1)
|
||||
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
|
||||
var/camt = min(CP.amount, req_components[I]) // amount of glass to take, idealy amount required, but limited by amount provided
|
||||
var/obj/item/stack/material/glass/reinforced/CC = new /obj/item/stack/material/glass/reinforced(src)
|
||||
CC.amount = camt
|
||||
CC.update_icon()
|
||||
@@ -445,4 +541,6 @@
|
||||
user << desc
|
||||
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil) && !istype(P, /obj/item/stack/material))
|
||||
user << "<span class='warning'>You cannot add that component to the machine!</span>"
|
||||
return
|
||||
return
|
||||
|
||||
update_icon()
|
||||
Reference in New Issue
Block a user