From c02979c1488d6415d3d739efc957d3cb65e8de2e Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Sat, 31 Dec 2011 12:28:26 -0500 Subject: [PATCH] Toggle-Deny-Shuttle, can build fire alarms, atmos alarms, intercoms, status displays, and light switches --- baystation12.dme | 1 + .../Tastyfish/wallmount_frame.dm | 215 ++++++++++++++++++ code/datums/shuttle_controller.dm | 5 +- .../game/machinery/computer/communications.dm | 4 + code/game/machinery/constructable_frame.dm | 2 +- code/game/objects/stacks/metal.dm | 3 +- code/modules/admin/admin_verbs.dm | 2 + code/modules/admin/verbs/custom_event.dm | 2 + code/modules/admin/verbs/randomverbs.dm | 16 ++ code/modules/research/designs.dm | 38 +++- icons/obj/stock_parts.dmi | Bin 8001 -> 10433 bytes 11 files changed, 284 insertions(+), 4 deletions(-) create mode 100644 code/WorkInProgress/Tastyfish/wallmount_frame.dm diff --git a/baystation12.dme b/baystation12.dme index c4f6822b82c..bcc2959d8f1 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -990,6 +990,7 @@ #include "code\WorkInProgress\Tastyfish\Eliza_Data.dm" #include "code\WorkInProgress\Tastyfish\paiLiza.dm" #include "code\WorkInProgress\Tastyfish\Parser.dm" +#include "code\WorkInProgress\Tastyfish\wallmount_frame.dm" #include "code\WorkInProgress\virus2\analyser.dm" #include "code\WorkInProgress\virus2\antibodies.dm" #include "code\WorkInProgress\virus2\base.dm" diff --git a/code/WorkInProgress/Tastyfish/wallmount_frame.dm b/code/WorkInProgress/Tastyfish/wallmount_frame.dm new file mode 100644 index 00000000000..d747a5c1ea4 --- /dev/null +++ b/code/WorkInProgress/Tastyfish/wallmount_frame.dm @@ -0,0 +1,215 @@ +// a frame for generic wall-mounted things, such as fire alarm, status display.. +// combination of apc_frame and machine_frame +/obj/machinery/constructable_frame/wallmount_frame + icon = 'stock_parts.dmi' + icon_state = "wm_0" + var/wall_offset = 24 + density = 0 + +/obj/machinery/constructable_frame/wallmount_frame/New() + spawn(1) + if (!istype(loc, /turf/simulated/floor)) + usr << "\red [name] cannot be placed on this spot." + new/obj/item/stack/sheet/metal(get_turf(src), 2) + del(src) + return + + var/turf/obj_ofs = get_step(locate(2,2,1), dir) + pixel_x = (obj_ofs.x - 2) * wall_offset + pixel_y = (obj_ofs.y - 2) * wall_offset + + var/turf/T = get_step(usr, dir) + if(!istype(T, /turf/simulated/wall)) + usr << "\red [name] must be placed on a wall." + new/obj/item/stack/sheet/metal(get_turf(src), 2) + del(src) + return + + dir = get_dir(T, loc) + +/obj/machinery/constructable_frame/wallmount_frame/attackby(obj/item/P as obj, mob/user as mob) + if(P.crit_fail) + user << "\red This part is faulty, you cannot add this to the machine!" + return + switch(state) + if(1) + if(istype(P, /obj/item/weapon/cable_coil)) + if(P:amount >= 5) + playsound(src.loc, 'Deconstruct.ogg', 50, 1) + user << "\blue You start to add cables to the frame." + if(do_after(user, 20)) + P:amount -= 5 + if(!P:amount) del(P) + user << "\blue You add cables to the frame." + state = 2 + icon_state = "wm_1" + if(istype(P, /obj/item/weapon/wrench)) + playsound(src.loc, 'Ratchet.ogg', 75, 1) + user << "\blue You dismantle the frame" + new /obj/item/stack/sheet/metal(src.loc, 2) + del(src) + if(2) + if(istype(P, /obj/item/weapon/circuitboard)) + var/obj/item/weapon/circuitboard/B = P + if(B.board_type == "wallmount") + playsound(src.loc, 'Deconstruct.ogg', 50, 1) + user << "\blue You add the circuit board to the frame." + circuit = P + user.drop_item() + P.loc = src + icon_state = "wm_2" + state = 3 + components = list() + req_components = circuit.req_components.Copy() + for(var/A in circuit.req_components) + req_components[A] = circuit.req_components[A] + if(circuit.frame_desc) desc = circuit.frame_desc + else + user << "\red This frame does not accept circuit boards of this type!" + if(istype(P, /obj/item/weapon/wirecutters)) + playsound(src.loc, 'wirecutter.ogg', 50, 1) + user << "\blue You remove the cables." + state = 1 + icon_state = "wm_0" + var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) + A.amount = 5 + + if(3) + if(istype(P, /obj/item/weapon/crowbar)) + playsound(src.loc, 'Crowbar.ogg', 50, 1) + state = 2 + circuit.loc = src.loc + circuit = null + if(components.len == 0) + user << "\blue You remove the circuit board." + else + user << "\blue You remove the circuit board and other components." + for(var/obj/item/weapon/W in components) + W.loc = src.loc + desc = initial(desc) + req_components = null + components = null + icon_state = "wm_1" + + if(istype(P, /obj/item/weapon/screwdriver)) + var/component_check = 1 + for(var/R in req_components) + if(req_components[R] > 0) + component_check = 0 + break + if(component_check) + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + var/obj/machinery/new_machine = new src.circuit.build_path(src.loc) + new_machine.dir = dir + if(istype(circuit, /obj/item/weapon/circuitboard/status_display)) + new_machine.pixel_x = pixel_x * 1.33 + new_machine.pixel_y = pixel_y * 1.33 + else + new_machine.pixel_x = pixel_x + new_machine.pixel_y = pixel_y + for(var/obj/O in new_machine.component_parts) + del(O) + new_machine.component_parts = list() + for(var/obj/O in src) + if(circuit.contain_parts) // things like disposal don't want their parts in them + O.loc = new_machine + else + O.loc = null + new_machine.component_parts += O + if(circuit.contain_parts) + circuit.loc = new_machine + else + circuit.loc = null + new_machine.RefreshParts() + del(src) + + if(istype(P, /obj/item/weapon)) + for(var/I in req_components) + if(istype(P, text2path(I)) && (req_components[I] > 0)) + if(istype(P, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/CP = P + if(CP.amount > 1) + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src) + CC.amount = 1 + components += CC + req_components[I]-- + break + user.drop_item() + P.loc = src + components += P + req_components[I]-- + break + if(P.loc != src && !istype(P, /obj/item/weapon/cable_coil)) + user << "\red You cannot add that component to the machine!" + +/obj/item/weapon/circuitboard/firealarm + name = "Circuit board (Fire Alarm)" + build_path = "/obj/machinery/firealarm" + board_type = "wallmount" + origin_tech = "engineering=2" + frame_desc = "Requires 1 Scanning Module, 1 Capacitor, and 2 pieces of cable." + contain_parts = 0 + req_components = list( + "/obj/item/weapon/stock_parts/scanning_module" = 1, + "/obj/item/weapon/stock_parts/capacitor" = 1, + "/obj/item/weapon/cable_coil" = 2) + +/obj/item/weapon/circuitboard/alarm + name = "Circuit board (Atmospheric Alarm)" + build_path = "/obj/machinery/alarm" + board_type = "wallmount" + origin_tech = "engineering=2;programming=2" + frame_desc = "Requires 1 Scanning Module, 1 Console Screen, and 2 pieces of cable." + contain_parts = 0 + req_components = list( + "/obj/item/weapon/stock_parts/scanning_module" = 1, + "/obj/item/weapon/stock_parts/console_screen" = 1, + "/obj/item/weapon/cable_coil" = 2) + +/* oh right, not a machine :( +/obj/item/weapon/circuitboard/intercom + name = "Circuit board (Intercom)" + build_path = "/obj/item/device/radio/intercom" + board_type = "wallmount" + origin_tech = "engineering=2" + frame_desc = "Requires 1 Console Screen, and 2 piece of cable." + contain_parts = 0 + req_components = list( + "/obj/item/weapon/stock_parts/console_screen" = 1, + "/obj/item/weapon/cable_coil" = 2) +*/ + +/* too complex to set up the dept for an RC in a way intuitive for the user +/obj/item/weapon/circuitboard/requests_console + name = "Circuit board (Requests Console)" + build_path = "/obj/machinery/requests_console" + board_type = "wallmount" + origin_tech = "engineering=2;programming=2" + frame_desc = "Requires 1 radio, 1 Console Screen, and 1 piece of cable." + contain_parts = 0 + req_components = list( + "/obj/item/device/radio" = 1, + "/obj/item/weapon/stock_parts/console_screen" = 1 + "/obj/item/weapon/cable_coil" = 1) +*/ + +/obj/item/weapon/circuitboard/status_display + name = "Circuit board (Status Display)" + build_path = "/obj/machinery/status_display" + board_type = "wallmount" + origin_tech = "engineering=2,programming=2" + frame_desc = "Requires 2 Console Screens, and 1 piece of cable." + contain_parts = 0 + req_components = list( + "/obj/item/weapon/stock_parts/console_screen" = 2, + "/obj/item/weapon/cable_coil" = 1) + +/obj/item/weapon/circuitboard/light_switch + name = "Circuit board (Light Switch)" + build_path = "/obj/machinery/light_switch" + board_type = "wallmount" + origin_tech = "engineering=2" + frame_desc = "Requires 2 pieces of cable." + contain_parts = 0 + req_components = list( + "/obj/item/weapon/cable_coil" = 2) diff --git a/code/datums/shuttle_controller.dm b/code/datums/shuttle_controller.dm index 2c3a703ce2c..8ea4c2d0ccc 100644 --- a/code/datums/shuttle_controller.dm +++ b/code/datums/shuttle_controller.dm @@ -18,12 +18,15 @@ datum/shuttle_controller timelimit //important when the shuttle gets called for more than shuttlearrivetime //timeleft = 360 //600 fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED" - + deny_shuttle = 0 //for admins not allowing it to be called. // call the shuttle // if not called before, set the endtime to T+600 seconds // otherwise if outgoing, switch to incoming proc/incall(coeff = 1) + if(deny_shuttle) + return + if(endtime) if(direction == -1) setdirection(1) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 2f01c34b02e..1e263863168 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -379,6 +379,10 @@ if ((!( ticker ) || emergency_shuttle.location)) return + if(emergency_shuttle.deny_shuttle) + user << "Centcom does not currently have a shuttle available in your sector. Please try again later." + return + if(sent_strike_team == 1) user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated." return diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index ab538ee70cf..75a2ed70f87 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -252,4 +252,4 @@ obj/item/weapon/circuitboard/rdserver "/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/cable_coil" = 1) m_amt = 50 - g_amt = 50 \ No newline at end of file + g_amt = 50 diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm index 9e2c0ff6c79..38c39b57bd7 100644 --- a/code/game/objects/stacks/metal.dm +++ b/code/game/objects/stacks/metal.dm @@ -73,14 +73,15 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, one_per_turf = 1), \ + new/datum/stack_recipe("wall machine frame", /obj/machinery/constructable_frame/wallmount_frame, 2, one_per_turf = 1), \ new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, one_per_turf = 1), \ null, \ new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \ new/datum/stack_recipe("tube light frame", /obj/structure/light_frame), \ new/datum/stack_recipe("small light frame", /obj/structure/light_frame/small), \ new/datum/stack_recipe("table lamp frame", /obj/structure/light_frame/lamp), \ - new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \ null, \ + new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20), \ ) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 67e10b1b7b7..62da2f4a0c5 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -209,6 +209,7 @@ verbs += /client/proc/cmd_admin_remove_plasma verbs += /client/proc/admin_call_shuttle verbs += /client/proc/admin_cancel_shuttle + verbs += /client/proc/admin_deny_shuttle verbs += /obj/admins/proc/show_traitor_panel verbs += /client/proc/cmd_admin_dress verbs += /client/proc/cmd_admin_christmas @@ -346,6 +347,7 @@ verbs -= /client/proc/cmd_admin_remove_plasma verbs -= /client/proc/admin_call_shuttle verbs -= /client/proc/admin_cancel_shuttle + verbs -= /client/proc/admin_deny_shuttle verbs -= /obj/admins/proc/show_traitor_panel verbs -= /client/proc/cmd_admin_dress verbs -= /client/proc/cmd_admin_christmas diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index bab86aba450..3021cc28281 100644 --- a/code/modules/admin/verbs/custom_event.dm +++ b/code/modules/admin/verbs/custom_event.dm @@ -11,9 +11,11 @@ if(!input || input == "") custom_event_msg = null log_admin("[usr.key] has cleared the custom event text.") + message_admins("[key_name_admin(usr)] has cleared the custom event text.") return log_admin("[usr.key] has changed the custom event text.") + message_admins("[key_name_admin(usr)] has changed the custom event text.") custom_event_msg = input diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index c08002d4a1e..a9f3ae41c38 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -789,6 +789,22 @@ Traitors and the like can also be revived with the previous role mostly intact. return +/client/proc/admin_deny_shuttle() + set category = "Admin" + set name = "Toggle Deny Shuttle" + + if (!ticker) + return + + if (!holder) + src << "Only administrators may use this command." + return + + emergency_shuttle.deny_shuttle = !emergency_shuttle.deny_shuttle + + log_admin("[key_name(src)] has [emergency_shuttle.deny_shuttle ? "denied" : "allowed"] the shuttle to be called.") + message_admins("[key_name_admin(usr)] has [emergency_shuttle.deny_shuttle ? "denied" : "allowed"] the shuttle to be called.") + /client/proc/cmd_admin_attack_log(mob/M as mob in world) set category = "Special Verbs" set name = "Attack Log" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 39d5fd07485..ac7bb491ffb 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -339,6 +339,42 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/mining" + firealarm + name = "Circuit Design (Fire Alarm)" + desc = "Allows for the construction of circuit boards used to build fire alarms." + id = "firealarm" + req_tech = list("engineering" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/firealarm" + + alarm + name = "Circuit Design (Atmospheric Alarm)" + desc = "Allows for the construction of circuit boards used to build atmos alarms." + id = "alarm" + req_tech = list("engineering" = 2, "programming" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/alarm" + + status_display + name = "Circuit Design (Status Display)" + desc = "Allows for the construction of circuit boards used to build status displays." + id = "status_display" + req_tech = list("engineering" = 2, "programming" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/status_display" + + light_switch + name = "Circuit Design (Light Switch)" + desc = "Allows for the construction of circuit boards used to build light switches." + id = "status_display" + req_tech = list("engineering" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/light_switch" + /////////////////////////////////// //////////AI Module Disks////////// /////////////////////////////////// @@ -1104,7 +1140,7 @@ datum req_tech = list("combat" = 4, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 1000, "$silver" = 1000) - build_path = "/obj/item/weapon/gun/energy/largecrossbow" + build_path = "/obj/item/weapon/gun/energy/crossbow/largecrossbow" temp_gun name = "Temperature Gun" diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index 6856b3da2376b0123473a68fb1fb7a31c81113e6..f6e44e36c338c37dd9ea078fe6a0645332edf24a 100644 GIT binary patch literal 10433 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 O1iVq!RH{_4`t)DF+wv3u literal 8001 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 YO7Bg`KmuRD{1XSLC}_%8%UXQ?f24Kt<^TWy