diff --git a/code/defines/area/Space Station 13 areas.dm b/code/defines/area/Space Station 13 areas.dm index 37418038f3..030f77aee5 100755 --- a/code/defines/area/Space Station 13 areas.dm +++ b/code/defines/area/Space Station 13 areas.dm @@ -481,6 +481,9 @@ proc/process_ghost_teleport_locs() //PRISON +/area/prison + name = "Brig Prison Wing" + icon_state = "brig" /area/prison/arrival_airlock name = "Prison Station Airlock" @@ -1032,7 +1035,7 @@ proc/process_ghost_teleport_locs() //Security /area/security/main - name = "Security" + name = "Security Office" icon_state = "security" /area/security/lobby diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm index 44c7c504d9..1778f1f2cf 100644 --- a/code/defines/obj/machinery.dm +++ b/code/defines/obj/machinery.dm @@ -258,10 +258,9 @@ /obj/machinery/driver_button name = "mass driver button" - desc = "FIRE AWAY!" icon = 'objects.dmi' icon_state = "launcherbtt" - desc = "A remote control switch for a Mass Driver." + desc = "A remote control switch for a mass driver." var/id = null var/active = 0 anchored = 1.0 @@ -271,7 +270,6 @@ /obj/machinery/ignition_switch name = "ignition switch" - desc = "It activates an igniter." icon = 'objects.dmi' icon_state = "launcherbtt" desc = "A remote control switch for a mounted igniter." @@ -282,6 +280,18 @@ idle_power_usage = 2 active_power_usage = 4 +/obj/machinery/flasher_button + name = "flasher button" + desc = "A remote control switch for a mounted flasher." + icon = 'objects.dmi' + icon_state = "launcherbtt" + var/id = null + var/active = 0 + anchored = 1.0 + use_power = 1 + idle_power_usage = 2 + active_power_usage = 4 + /obj/machinery/teleport name = "teleport" icon = 'stationobjs.dmi' diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 5719f6a6d7..7acf6677f3 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -1205,6 +1205,8 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove g_amt = 50 var/rigged = 0 // true if rigged to explode var/minor_fault = 0 //If not 100% reliable, it will build up faults. + var/construction_cost = list("metal"=750,"glass"=75) + var/construction_time=100 /obj/item/weapon/cell/crap name = "\improper NanoTrasen Brand Rechargable AA Battery" @@ -1222,23 +1224,29 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove /obj/item/weapon/cell/high name = "high-capacity power cell" origin_tech = "powerstorage=2" + icon_state = "hcell" maxcharge = 10000 g_amt = 60 /obj/item/weapon/cell/super name = "super-capacity power cell" origin_tech = "powerstorage=5" + icon_state = "scell" maxcharge = 20000 g_amt = 70 + construction_cost = list("metal"=750,"glass"=100) /obj/item/weapon/cell/hyper name = "hyper-capacity power cell" origin_tech = "powerstorage=6" + icon_state = "hpcell" maxcharge = 30000 g_amt = 80 + construction_cost = list("metal"=500,"glass"=150,"gold"=200,"silver"=200) /obj/item/weapon/cell/infinite name = "infinite-capacity power cell!" + icon_state = "icell" origin_tech = null maxcharge = 30000 g_amt = 80 @@ -1891,6 +1899,13 @@ eternal248: Found broken and buggy Z-levels 7-12, ended up leading to my discove icon = 'wizard.dmi' icon_state = "ectoplasm" +/obj/item/weapon/research//Makes testing much less of a pain -Sieve + name = "research" + icon = 'stock_parts.dmi' + icon_state = "capacitor" + desc = "A debug item for research." + origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8" + /obj/item/weapon/appendix name = "appendix" desc = "An appendix which looks perfectly healthy." diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 82ff91696c..d58fc53ff3 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -22,6 +22,7 @@ var/datum/roundinfo/roundinfo = new() var/Bible_icon_state // icon_state the chaplain has chosen for his bible var/Bible_item_state // item_state the chaplain has chosen for his bible var/Bible_name // name of the bible + var/Bible_deity_name var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 6f66f194b5..6f80d8ec9b 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -145,6 +145,7 @@ ticker.Bible_icon_state = B.icon_state ticker.Bible_item_state = B.item_state ticker.Bible_name = B.name + ticker.Bible_deity_name = B.deity_name // feedback_set_details("religion_deity","[new_deity]") // feedback_set_details("religion_book","[new_book_style]") return 1 \ No newline at end of file diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 22cb14661f..83ca41f581 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -171,6 +171,20 @@ src.health -= W.force src.add_fingerprint(user) healthcheck() + + if(istype(user, /mob/living/silicon/robot) && istype(W, /obj/item/weapon/tank/jetpack)) + var/datum/gas_mixture/thejetpack = W:air_contents + var/env_pressure = thejetpack.return_pressure() + var/pressure_delta = min(10*ONE_ATMOSPHERE - env_pressure, (air_contents.return_pressure() - env_pressure)/2) + //Can not have a pressure delta that would cause environment pressure > tank pressure + var/transfer_moles = 0 + if((air_contents.temperature > 0) && (pressure_delta > 0)) + transfer_moles = pressure_delta*thejetpack.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION)//Actually transfer the gas + var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) + thejetpack.merge(removed) + user << "You pulse-pressurize your jetpack from the tank." + return + ..() /obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index aa29cef3ab..2b87f3211c 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -112,4 +112,37 @@ else if (src.anchored) user.show_message(text("\red [src] is now secured.")) - src.overlays += "[base_state]-s" \ No newline at end of file + src.overlays += "[base_state]-s" + +/obj/machinery/flasher_button/attack_ai(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/flasher_button/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/flasher_button/attackby(obj/item/weapon/W, mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/flasher_button/attack_hand(mob/user as mob) + + if(stat & (NOPOWER|BROKEN)) + return + if(active) + return + + use_power(5) + + active = 1 + icon_state = "launcheract" + + for(var/obj/machinery/flasher/M in world) + if(M.id == src.id) + spawn() + M.flash() + + sleep(50) + + icon_state = "launcherbtt" + active = 0 + + return \ No newline at end of file diff --git a/code/game/magic/library.dm b/code/game/magic/library.dm index 50e8a9ba27..589b58a120 100644 --- a/code/game/magic/library.dm +++ b/code/game/magic/library.dm @@ -757,6 +757,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f B.icon_state = ticker.Bible_icon_state B.item_state = ticker.Bible_item_state B.name = ticker.Bible_name + B.deity_name = ticker.Bible_deity_name bibledelay = 60 spawn(0) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c6ac19dfb6..ce6e3c2f5e 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -94,13 +94,13 @@ /obj/item/mecha_parts/part/honker_right_leg ), "Exosuit Equipment"=list( - /obj/item/mecha_parts/chassis/firefighter, /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp, /obj/item/mecha_parts/mecha_equipment/tool/drill, /obj/item/mecha_parts/mecha_equipment/tool/extinguisher, /obj/item/mecha_parts/mecha_equipment/tool/cable_layer, /obj/item/mecha_parts/mecha_equipment/tool/sleeper, /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun, + /obj/item/mecha_parts/chassis/firefighter, ///obj/item/mecha_parts/mecha_equipment/repair_droid, /obj/item/mecha_parts/mecha_equipment/generator, ///obj/item/mecha_parts/mecha_equipment/jetpack, //TODO MECHA JETPACK SPRITE MISSING @@ -114,8 +114,9 @@ "Cyborg Upgrade Modules" = list( /obj/item/borg/upgrade/reset, /obj/item/borg/upgrade/restart, - /obj/item/borg/upgrade/vtec - ///obj/item/borg/upgrade/tasercooler + /obj/item/borg/upgrade/vtec, + /obj/item/borg/upgrade/tasercooler, + /obj/item/borg/upgrade/jetpack ///obj/item/borg/upgrade/flashproof @@ -316,7 +317,8 @@ return proc/check_resources(var/obj/item/mecha_parts/part) - if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts) || istype(part,/obj/item/borg/upgrade)) +// if(istype(part, /obj/item/robot_parts) || istype(part, /obj/item/mecha_parts) || istype(part,/obj/item/borg/upgrade)) + if(part.construction_time!=null && part.construction_cost!=null)//Much more efficient way to check the item, since it won't have those vars if it isn't meant to go through the mechfabs -Sieve for(var/resource in part.construction_cost) if(resource in src.resources) if(src.resources[resource] < get_resource_cost_w_coeff(part,resource)) @@ -429,12 +431,12 @@ proc/sync(silent=null) - if(queue.len) +/* if(queue.len) if(!silent) temp = "Error. Please clear processing queue before updating!" src.updateUsrDialog() - return - + return //This POS doesn't work, simplifying -Sieve +*/ if(!silent) temp = "Updating local R&D database..." src.updateUsrDialog() @@ -578,7 +580,9 @@ queue = list() return update_queue_on_page() if(href_list["sync"]) + queue = list() src.sync() + return update_queue_on_page() if(href_list["auto_sync"]) src.sync = !src.sync //pr_auto_sync.toggle() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 7d8520791c..939f7578c1 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -89,8 +89,8 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder) - const_holder.icon = 'ripley_construct.dmi' - const_holder.icon_state = "ripley_step_14" + const_holder.icon = 'mech_construction.dmi' + const_holder.icon_state = "ripley0" const_holder.density = 1 const_holder.overlays.len = 0 spawn() @@ -169,105 +169,107 @@ switch(index) if(14) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") - holder.icon_state = "ripley_step_13" + holder.icon_state = "ripley1" if(13) if(diff==FORWARD) user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") - holder.icon_state = "ripley_step_12" + holder.icon_state = "ripley2" else user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") - holder.icon_state = "ripley_step_14" + holder.icon_state = "ripley0" if(12) if(diff==FORWARD) user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") - holder.icon_state = "ripley_step_11" + holder.icon_state = "ripley3" else user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") - holder.icon_state = "ripley_step_13" + holder.icon_state = "ripley1" if(11) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") - holder.icon_state = "ripley_step_10" + holder.icon_state = "ripley4" else user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) coil.amount = 4 - holder.icon_state = "ripley_step_12" + holder.icon_state = "ripley2" if(10) if(diff==FORWARD) user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") del used_atom - holder.icon_state = "ripley_step_9" + holder.icon_state = "ripley5" else user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") - holder.icon_state = "ripley_step_11" + holder.icon_state = "ripley3" if(9) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") - holder.icon_state = "ripley_step_8" + holder.icon_state = "ripley6" else user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder)) - holder.icon_state = "ripley_step_10" + holder.icon_state = "ripley4" if(8) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") del used_atom - holder.icon_state = "ripley_step_7" + holder.icon_state = "ripley7" else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") - holder.icon_state = "ripley_step_9" + holder.icon_state = "ripley5" if(7) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") - holder.icon_state = "ripley_step_6" + holder.icon_state = "ripley8" else user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder)) - holder.icon_state = "ripley_step_8" + holder.icon_state = "ripley6" if(6) if(diff==FORWARD) user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") - holder.icon_state = "ripley_step_5" + holder.icon_state = "ripley9" else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") - holder.icon_state = "ripley_step_7" + holder.icon_state = "ripley7" if(5) if(diff==FORWARD) user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") - holder.icon_state = "ripley_step_4" + holder.icon_state = "ripley10" else user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) MS.amount = 5 - holder.icon_state = "ripley_step_6" + holder.icon_state = "ripley8" if(4) if(diff==FORWARD) user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") - holder.icon_state = "ripley_step_3" - flick("ripley_step_3active",holder) + holder.icon_state = "ripley11" else user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") - holder.icon_state = "ripley_step_5" + holder.icon_state = "ripley9" if(3) if(diff==FORWARD) user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].") + holder.icon_state = "ripley12" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") - holder.icon_state = "ripley_step_4" - flick("ripley_step_3active",holder) + holder.icon_state = "ripley10" if(2) if(diff==FORWARD) user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.") + holder.icon_state = "ripley13" else user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].") var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) MS.amount = 5 + holder.icon_state = "ripley11" if(1) if(diff==FORWARD) user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].") else user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + holder.icon_state = "ripley12" return 1 spawn_result() @@ -298,6 +300,8 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder) + const_holder.icon = 'mech_construction.dmi' + const_holder.icon_state = "gygax0" const_holder.density = 1 spawn() del src @@ -338,11 +342,11 @@ //8 list("key"=/obj/item/weapon/stock_parts/capacitor/adv, "backkey"=/obj/item/weapon/screwdriver, - "desc"="Advanced scanning module is secured"), + "desc"="Advanced scanner module is secured"), //9 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, - "desc"="Advanced scanning module is installed"), + "desc"="Advanced scanner module is installed"), //10 list("key"=/obj/item/weapon/stock_parts/scanning_module/adv, "backkey"=/obj/item/weapon/screwdriver, @@ -399,118 +403,155 @@ switch(index) if(20) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "gygax1" if(19) if(diff==FORWARD) user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "gygax2" else user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "gygax0" if(18) if(diff==FORWARD) user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "gygax3" else user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "gygax1" if(17) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "gygax4" else user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) coil.amount = 4 + holder.icon_state = "gygax2" if(16) if(diff==FORWARD) user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") del used_atom + holder.icon_state = "gygax5" else user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "gygax3" if(15) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "gygax6" else user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") new /obj/item/weapon/circuitboard/mecha/gygax/main(get_turf(holder)) + holder.icon_state = "gygax4" if(14) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") del used_atom + holder.icon_state = "gygax7" else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "gygax5" if(13) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "gygax8" else user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") new /obj/item/weapon/circuitboard/mecha/gygax/peripherals(get_turf(holder)) + holder.icon_state = "gygax6" if(12) if(diff==FORWARD) user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") del used_atom + holder.icon_state = "gygax9" else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "gygax7" if(11) if(diff==FORWARD) user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + holder.icon_state = "gygax10" else user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].") new /obj/item/weapon/circuitboard/mecha/gygax/targeting(get_turf(holder)) + holder.icon_state = "gygax8" if(10) if(diff==FORWARD) - user.visible_message("[user] installs advanced scanning module to [holder].", "You install advanced scanning module to [holder].") + user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].") del used_atom + holder.icon_state = "gygax11" else user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + holder.icon_state = "gygax9" if(9) if(diff==FORWARD) - user.visible_message("[user] secures the advanced scanning module.", "You secure the advanced scanning module.") + user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.") + holder.icon_state = "gygax12" else - user.visible_message("[user] removes the advanced scanning module from [holder].", "You remove the advanced scanning module from [holder].") + user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].") new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder)) + holder.icon_state = "gygax10" if(8) if(diff==FORWARD) user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].") del used_atom + holder.icon_state = "gygax13" else - user.visible_message("[user] unfastens the advanced scanning module.", "You unfasten the advanced scanning module.") + user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.") + holder.icon_state = "gygax11" if(7) if(diff==FORWARD) user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + holder.icon_state = "gygax14" else user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].") new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder)) + holder.icon_state = "gygax12" if(6) if(diff==FORWARD) user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "gygax15" else user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.") + holder.icon_state = "gygax13" if(5) if(diff==FORWARD) user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "gygax16" else user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) MS.amount = 5 + holder.icon_state = "gygax14" if(4) if(diff==FORWARD) user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "gygax17" else user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "gygax15" if(3) if(diff==FORWARD) user.visible_message("[user] installs Gygax Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].") - holder.overlays += used_atom.icon_state del used_atom + holder.icon_state = "gygax18" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "gygax16" if(2) if(diff==FORWARD) user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.") + holder.icon_state = "gygax19" else user.visible_message("[user] pries Gygax Armour Plates from [holder].", "You prie Gygax Armour Plates from [holder].") new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder)) + holder.icon_state = "gygax17" if(1) if(diff==FORWARD) user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].") else user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.") + holder.icon_state = "gygax18" return 1 spawn_result() @@ -539,6 +580,8 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder) + const_holder.icon = 'mech_construction.dmi' + const_holder.icon_state = "fireripley0" const_holder.density = 1 spawn() del src @@ -621,89 +664,117 @@ switch(index) if(15) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "fireripley1" if(14) if(diff==FORWARD) user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "fireripley2" else user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "fireripley0" if(13) if(diff==FORWARD) user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "fireripley3" else user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "fireripley1" if(12) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "fireripley4" else user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) coil.amount = 4 + holder.icon_state = "fireripley2" if(11) if(diff==FORWARD) user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") del used_atom + holder.icon_state = "fireripley5" else user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "fireripley3" if(10) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "fireripley6" else user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder)) + holder.icon_state = "fireripley4" if(9) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") del used_atom + holder.icon_state = "fireripley7" else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "fireripley5" if(8) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "fireripley8" else user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder)) + holder.icon_state = "fireripley6" if(7) if(diff==FORWARD) user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "fireripley9" else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "fireripley7" if(6) if(diff==FORWARD) user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "fireripley10" else user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) MS.amount = 5 + holder.icon_state = "fireripley8" if(5) if(diff==FORWARD) user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "fireripley11" else user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "fireripley9" if(4) if(diff==FORWARD) user.visible_message("[user] starts to install the external armor layer to [holder].", "You start to install the external armor layer to [holder].") + holder.icon_state = "fireripley12" else user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "fireripley10" if(3) if(diff==FORWARD) user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].") + holder.icon_state = "fireripley13" else user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].") var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) MS.amount = 5 + holder.icon_state = "fireripley11" if(2) if(diff==FORWARD) user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.") + holder.icon_state = "fireripley14" else user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].") var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) MS.amount = 5 + holder.icon_state = "fireripley12" if(1) if(diff==FORWARD) user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].") else user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + holder.icon_state = "fireripley13" return 1 spawn_result() @@ -810,92 +881,259 @@ spawn_result() var/obj/item/mecha_parts/chassis/const_holder = holder - const_holder.construct = new /datum/construction/mecha/durand(const_holder) + const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder) + const_holder.icon = 'mech_construction.dmi' + const_holder.icon_state = "durand0" const_holder.density = 1 spawn() del src return -/datum/construction/mecha/durand +/datum/construction/reversible/mecha/durand result = "/obj/mecha/combat/durand" - steps = list(list("key"=/obj/item/weapon/weldingtool),//1 - list("key"=/obj/item/weapon/wrench),//2 - list("key"=/obj/item/mecha_parts/part/durand_armour),//3 - list("key"=/obj/item/weapon/weldingtool),//4 - list("key"=/obj/item/weapon/wrench),//5 - list("key"=/obj/item/stack/sheet/metal),//6 - list("key"=/obj/item/weapon/screwdriver),//7 - list("key"=/obj/item/weapon/stock_parts/capacitor/adv),//8 - list("key"=/obj/item/weapon/screwdriver),//9 - list("key"=/obj/item/weapon/stock_parts/scanning_module/adv),//10 - list("key"=/obj/item/weapon/screwdriver),//11 - list("key"=/obj/item/weapon/circuitboard/mecha/durand/targeting),//12 - list("key"=/obj/item/weapon/screwdriver),//13 - list("key"=/obj/item/weapon/circuitboard/mecha/durand/peripherals),//14 - list("key"=/obj/item/weapon/screwdriver),//15 - list("key"=/obj/item/weapon/circuitboard/mecha/durand/main),//16 - list("key"=/obj/item/weapon/wirecutters),//17 - list("key"=/obj/item/weapon/cable_coil),//18 - list("key"=/obj/item/weapon/screwdriver),//19 - list("key"=/obj/item/weapon/wrench)//20 + steps = list( + //1 + list("key"=/obj/item/weapon/weldingtool, + "backkey"=/obj/item/weapon/wrench, + "desc"="External armor is wrenched."), + //2 + list("key"=/obj/item/weapon/wrench, + "backkey"=/obj/item/weapon/crowbar, + "desc"="External armor is installed."), + //3 + list("key"=/obj/item/mecha_parts/part/durand_armour, + "backkey"=/obj/item/weapon/weldingtool, + "desc"="Internal armor is welded."), + //4 + list("key"=/obj/item/weapon/weldingtool, + "backkey"=/obj/item/weapon/wrench, + "desc"="Internal armor is wrenched"), + //5 + list("key"=/obj/item/weapon/wrench, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Internal armor is installed"), + //6 + list("key"=/obj/item/stack/sheet/metal, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="Advanced capacitor is secured"), + //7 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Advanced capacitor is installed"), + //8 + list("key"=/obj/item/weapon/stock_parts/capacitor/adv, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="Advanced scanner module is secured"), + //9 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Advanced scanner module is installed"), + //10 + list("key"=/obj/item/weapon/stock_parts/scanning_module/adv, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="Targeting module is secured"), + //11 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Targeting module is installed"), + //12 + list("key"=/obj/item/weapon/circuitboard/mecha/durand/targeting, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="Peripherals control module is secured"), + //13 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Peripherals control module is installed"), + //14 + list("key"=/obj/item/weapon/circuitboard/mecha/durand/peripherals, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="Central control module is secured"), + //15 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/crowbar, + "desc"="Central control module is installed"), + //16 + list("key"=/obj/item/weapon/circuitboard/mecha/durand/main, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="The wiring is adjusted"), + //17 + list("key"=/obj/item/weapon/wirecutters, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="The wiring is added"), + //18 + list("key"=/obj/item/weapon/cable_coil, + "backkey"=/obj/item/weapon/screwdriver, + "desc"="The hydraulic systems are active."), + //19 + list("key"=/obj/item/weapon/screwdriver, + "backkey"=/obj/item/weapon/wrench, + "desc"="The hydraulic systems are connected."), + //20 + list("key"=/obj/item/weapon/wrench, + "desc"="The hydraulic systems are disconnected.") ) + action(atom/used_atom,mob/user as mob) return check_step(used_atom,user) - custom_action(step, atom/used_atom, mob/user) + custom_action(index, diff, atom/used_atom, mob/user) if(!..()) return 0 //TODO: better messages. - switch(step) + switch(index) if(20) user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.") + holder.icon_state = "durand1" if(19) - user.visible_message("[user] adjusts [holder] hydraulic systems.", "You adjust [holder] hydraulic systems.") + if(diff==FORWARD) + user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.") + holder.icon_state = "durand2" + else + user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.") + holder.icon_state = "durand0" if(18) - user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + if(diff==FORWARD) + user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].") + holder.icon_state = "durand3" + else + user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.") + holder.icon_state = "durand1" if(17) - user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + if(diff==FORWARD) + user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].") + holder.icon_state = "durand4" + else + user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].") + var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder)) + coil.amount = 4 + holder.icon_state = "durand2" if(16) - user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].") + del used_atom + holder.icon_state = "durand5" + else + user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].") + holder.icon_state = "durand3" if(15) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + if(diff==FORWARD) + user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + holder.icon_state = "durand6" + else + user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].") + new /obj/item/weapon/circuitboard/mecha/durand/main(get_turf(holder)) + holder.icon_state = "durand4" if(14) - user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].") + del used_atom + holder.icon_state = "durand7" + else + user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + holder.icon_state = "durand5" if(13) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + if(diff==FORWARD) + user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + holder.icon_state = "durand8" + else + user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].") + new /obj/item/weapon/circuitboard/mecha/durand/peripherals(get_turf(holder)) + holder.icon_state = "durand6" if(12) - user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].") + del used_atom + holder.icon_state = "durand9" + else + user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + holder.icon_state = "durand7" if(11) - user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + if(diff==FORWARD) + user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + holder.icon_state = "durand10" + else + user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].") + new /obj/item/weapon/circuitboard/mecha/durand/targeting(get_turf(holder)) + holder.icon_state = "durand8" if(10) - user.visible_message("[user] installs advanced scanning module to [holder].", "You install advanced scanning module to [holder].") - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs advanced scanner module to [holder].", "You install advanced scanner module to [holder].") + del used_atom + holder.icon_state = "durand11" + else + user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + holder.icon_state = "durand9" if(9) - user.visible_message("[user] secures the advanced scanning module.", "You secure the advanced scanning module.") + if(diff==FORWARD) + user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.") + holder.icon_state = "durand12" + else + user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].") + new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder)) + holder.icon_state = "durand10" if(8) - user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].") - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].") + del used_atom + holder.icon_state = "durand13" + else + user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.") + holder.icon_state = "durand11" if(7) - user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + if(diff==FORWARD) + user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.") + holder.icon_state = "durand14" + else + user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].") + new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder)) + holder.icon_state = "durand12" if(6) - user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + if(diff==FORWARD) + user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].") + holder.icon_state = "durand15" + else + user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.") + holder.icon_state = "durand13" if(5) - user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + if(diff==FORWARD) + user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.") + holder.icon_state = "durand16" + else + user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].") + var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder)) + MS.amount = 5 + holder.icon_state = "durand14" if(4) - user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + if(diff==FORWARD) + user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].") + holder.icon_state = "durand17" + else + user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + holder.icon_state = "durand15" if(3) - user.visible_message("[user] installs Durand Armour Plates to [holder].", "You install Durand Armour Plates to [holder].") - holder.overlays += used_atom.icon_state - del used_atom + if(diff==FORWARD) + user.visible_message("[user] installs Durand Armour Plates to [holder].", "You install Durand Armour Plates to [holder].") + del used_atom + holder.icon_state = "durand18" + else + user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].") + holder.icon_state = "durand16" if(2) - user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.") + if(diff==FORWARD) + user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.") + holder.icon_state = "durand19" + else + user.visible_message("[user] pries Durand Armour Plates from [holder].", "You prie Durand Armour Plates from [holder].") + new /obj/item/mecha_parts/part/durand_armour(get_turf(holder)) + holder.icon_state = "durand17" if(1) - user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].") + if(diff==FORWARD) + user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].") + else + user.visible_message("[user] unfastens Durand Armour Plates.", "You unfasten Durand Armour Plates.") + holder.icon_state = "durand18" return 1 spawn_result() diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm index 3485a6c940..9aee8fb1b7 100644 --- a/code/game/objects/devices/flash.dm +++ b/code/game/objects/devices/flash.dm @@ -192,3 +192,25 @@ for(var/mob/O in viewers(M, null)) O.show_message("[M] is blinded by the flash!") ..() + +/obj/item/device/flash/synthetic + name = "synthetic flash" + desc = "When a problem arises, SCIENCE is the solution." + icon_state = "sflash" + origin_tech = "magnets=2;combat=1" + var/construction_cost = list("metal"=750,"glass"=750) + var/construction_time=100 + +/obj/item/device/flash/synthetic/attack(mob/living/M as mob, mob/user as mob) + ..() + if(!broken) + broken = 1 + user << "\red The bulb has burnt out!" + icon_state = "flashburnt" + +/obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0) + ..() + if(!broken) + broken = 1 + user << "\red The bulb has burnt out!" + icon_state = "flashburnt" diff --git a/code/game/objects/tanks/jetpack.dm b/code/game/objects/tanks/jetpack.dm index a9f0542778..87552b9948 100644 --- a/code/game/objects/tanks/jetpack.dm +++ b/code/game/objects/tanks/jetpack.dm @@ -9,7 +9,7 @@ datum/effect/effect/system/ion_trail_follow/ion_trail on = 0.0 stabilization_on = 0 - + volume_rate = 500 //Needed for borg jetpack transfer New() ..() @@ -100,4 +100,12 @@ src.ion_trail = new /datum/effect/effect/system/ion_trail_follow() src.ion_trail.set_up(src) src.air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + + examine() + set src in usr + ..() + if(air_contents.carbon_dioxide < 10) + usr << text("\red The meter on the [src.name] indicates you are almost out of air!") + playsound(usr, 'alert.ogg', 50, 1) return \ No newline at end of file diff --git a/code/modules/clothing/gloves.dm b/code/modules/clothing/gloves.dm index 2d9b02cbee..7cbd343cfc 100644 --- a/code/modules/clothing/gloves.dm +++ b/code/modules/clothing/gloves.dm @@ -152,6 +152,21 @@ heat_transfer_coefficient = 0.01 color="yellow" +/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap + desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly." + name = "fake insulated gloves" + icon_state = "yellow" + item_state = "ygloves" + siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() + permeability_coefficient = 0.05 + protective_temperature = 800 + heat_transfer_coefficient = null + color="yellow" + + New() + siemens_coefficient = pick(0,0,0.25,0.25,0.5,0.5,1) + heat_transfer_coefficient = pick(0.01,0.1,0.25,0.25,0.5) + /obj/item/clothing/gloves/captain desc = "Regal blue gloves, with a nice gold trim. Swanky." name = "captain's gloves" diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 806a37dd8f..600a383165 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -224,6 +224,13 @@ proc/move_mining_shuttle() origin_tech = "materials=6;powerstorage=4;engineering=5" desc = "Yours is the drill that will pierce the heavens!" + borgdrill + name = "Cyborg Mining Drill" + icon_state = "diamonddrill" + item_state = "jackhammer" + digspeed = 15 + desc = "" + /*****************************Shovel********************************/ /obj/item/weapon/shovel diff --git a/code/modules/mining/satchel_ore_box.dm b/code/modules/mining/satchel_ore_box.dm index e905570fc8..581b97a684 100644 --- a/code/modules/mining/satchel_ore_box.dm +++ b/code/modules/mining/satchel_ore_box.dm @@ -34,6 +34,12 @@ if(0) usr << "The satchel now picks up one ore at a time." +/obj/item/weapon/satchel/borg + icon = 'mining.dmi' + icon_state = "satchel" + name = "Cyborg Mining Satchel" + mode = 1; //0 = pick one at a time, 1 = pick all on tile + capacity = 200; //the number of ore pieces it can carry. /**********************Ore box**************************/ diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index b75573cba1..fdf59c8e49 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -265,6 +265,11 @@ else stat(null, text("No Cell Inserted!")) + if(module) + internal = locate(/obj/item/weapon/tank/jetpack) in module.modules + if(internal) + stat("Internal Atmosphere Info", internal.name) + stat("Tank Pressure", internal.air_contents.return_pressure()) /mob/living/silicon/robot/restrained() return 0 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ea5a00afb5..53321d6748 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -8,6 +8,7 @@ var list/modules = list() obj/item/emag = null + obj/item/borg/upgrade/jetpack = null emp_act(severity) @@ -24,6 +25,8 @@ src.modules += new /obj/item/device/flash(src) src.emag = new /obj/item/toy/sword(src) src.emag.name = "Placeholder Emag Item" +// src.jetpack = new /obj/item/toy/sword(src) +// src.jetpack.name = "Placeholder Upgrade Item" return @@ -152,7 +155,7 @@ src.modules += new /obj/item/weapon/handcuffs/cyborg(src) src.modules += new /obj/item/weapon/melee/baton(src) src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) -// src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) + src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) return @@ -217,9 +220,10 @@ ..() src.modules += new /obj/item/borg/sight/meson(src) src.emag = new /obj/item/borg/stun(src) - src.modules += new /obj/item/weapon/satchel(src) - src.modules += new /obj/item/weapon/pickaxe/jackhammer(src) - src.modules += new /obj/item/weapon/shovel(src) + src.modules += new /obj/item/weapon/satchel/borg(src) + src.modules += new /obj/item/weapon/pickaxe/borgdrill(src) +// src.modules += new /obj/item/weapon/shovel(src) Uneeded due to buffed drill +// src.jetpack += new/obj/item/weapon/tank/jetpack/carbondioxide(src) return @@ -231,5 +235,4 @@ src.modules += new /obj/item/weapon/melee/energy/sword(src) src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src) src.modules += new /obj/item/weapon/card/emag(src) - src.modules += new /obj/item/weapon/tank/jetpack/oxygen(src) return diff --git a/code/modules/mob/living/silicon/robot/robot_upgrades.dm b/code/modules/mob/living/silicon/robot/robot_upgrades.dm index 60ffc30f5a..7c6db9c7f4 100644 --- a/code/modules/mob/living/silicon/robot/robot_upgrades.dm +++ b/code/modules/mob/living/silicon/robot/robot_upgrades.dm @@ -5,7 +5,7 @@ name = "A borg upgrade module." desc = "Protected by FRM." icon = 'module.dmi' - icon_state = "id_mod" + icon_state = "cyborg_upgrade" var/construction_time = 120 var/construction_cost = list("metal"=10000) var/locked = 0 @@ -19,6 +19,7 @@ /obj/item/borg/upgrade/reset/ name = "Borg module reset board" desc = "Used to reset a borg's module. Destroys any other upgrades applied to the borg." + icon_state = "cyborg_upgrade1" require_module = 1 /obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R) @@ -41,6 +42,7 @@ name = "Borg Flash-Supression" desc = "A highly advanced, complicated system for supressing incoming flashes directed at the borg's optical processing system." construction_cost = list("metal"=10000,"gold"=2000,"silver"=3000,"glass"=2000, "diamond"=5000) + icon_state = "cyborg_upgrade4" require_module = 1 @@ -57,6 +59,7 @@ name = "Borg emergancy restart module" desc = "Used to force a restart of a disabled-but-repaired borg, bringing it back online." construction_cost = list("metal"=60000 , "glass"=5000) + icon_state = "cyborg_upgrade1" /obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R) @@ -77,6 +80,7 @@ name = "Borg VTEC Module" desc = "Used to kick in a borgs VTEC systems, increasing their speed." construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 5000) + icon_state = "cyborg_upgrade2" require_module = 1 /obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R) @@ -91,6 +95,7 @@ name = "Borg Rapid Taser Cooling Module" desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate.." construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500) + icon_state = "cyborg_upgrade3" require_module = 1 @@ -117,4 +122,23 @@ else T.recharge_time = max(2 , T.recharge_time - 4) - return 1 \ No newline at end of file + return 1 + +/obj/item/borg/upgrade/jetpack/ + name = "Mining Borg Jetpack" + desc = "A carbon dioxide jetpack suitable for low-gravity mining operations" + construction_cost = list("metal"=10000,"plasma"=15000,"uranium" = 20000) + icon_state = "cyborg_upgrade3" + require_module = 1 + +/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R) + if(!istype(R.module, /obj/item/weapon/robot_module/miner)) + R << "Upgrade mounting error! No suitable hardpoint detected!" + usr << "There's no mounting point for the module!" + return 0 + else + R.module.modules += new/obj/item/weapon/tank/jetpack/carbondioxide + for(var/obj/item/weapon/tank/jetpack/carbondioxide in R.module.modules) + R.internals = src + R.icon_state="Miner+j" + return 1 diff --git a/code/modules/mob/simple_animal/crab.dm b/code/modules/mob/simple_animal/crab.dm index d5f6380bda..ed33507260 100644 --- a/code/modules/mob/simple_animal/crab.dm +++ b/code/modules/mob/simple_animal/crab.dm @@ -21,7 +21,7 @@ /mob/living/simple_animal/crab/Life() ..() //CRAB movement - if(!ckey) + if(!ckey && alive) if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) @@ -34,4 +34,36 @@ desc = "It's Coffee, the other pet!" response_help = "pets" response_disarm = "gently pushes aside" - response_harm = "stomps" \ No newline at end of file + response_harm = "stomps" + +//LOOK AT THIS - ..()?? +/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/wirecutters)) + user << "\red \b This kills the crab." + health -= 20 + Die() + if(istype(O, /obj/item/stack/medical)) + if(alive) + var/obj/item/stack/medical/MED = O + if(health < maxHealth) + if(MED.amount >= 1) + health = min(maxHealth, health + MED.heal_brute) + MED.amount -= 1 + if(MED.amount <= 0) + del(MED) + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\blue [user] applies the [MED] on [src]") + else + user << "\blue this [src] is dead, medical items won't bring it back to life." + else + if(O.force) + health -= O.force + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + else + usr << "\red This weapon is ineffective, it does no damage." + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red [user] gently taps [src] with the [O]. ") \ No newline at end of file diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 413171387e..5a469ee25e 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -10,6 +10,7 @@ var/obj/item/weapon/pen/haspen //The stored pen. var/obj/item/weapon/paper/toppaper //The topmost piece of paper. flags = FPRINT | TABLEPASS | ONBELT + pressure_resistance = 10 /obj/item/weapon/clipboard/New() update_icon() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index ae382a555c..7504bce6dd 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -8,6 +8,7 @@ throw_speed = 3 throw_range = 15 layer = 4 + pressure_resistance = 1 var info //What's actually written on the paper. diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 931ae4597b..6419d16a04 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -7,6 +7,7 @@ w_class = 3 throw_speed = 3 throw_range = 7 + pressure_resistance = 10 var amount = 30 //How much paper is in the bin. list/papers = new/list() //List of papers put in the bin for reference. diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 471c4389e6..54f845211c 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -10,6 +10,7 @@ throw_range = 15 m_amt = 10 var/colour = "black" //what colour the ink is! + pressure_resistance = 5 /obj/item/weapon/pen/blue desc = "It's a normal blue ink pen." diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 92d9afd326..18a5e9e2fe 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -11,6 +11,7 @@ throw_range = 15 m_amt = 60 var/color = "cargo" + pressure_resistance = 5 /obj/item/weapon/stamp/captain name = "captain's rubber stamp" diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index dff76971ef..3ad116b455 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -11,11 +11,14 @@ updateicon() /obj/item/weapon/cell/proc/updateicon() - - if(maxcharge <= 2500) + /*if(maxcharge < 10000) icon_state = "cell" + if(maxcharge >= 10000 && maxcharge < 20000) + icon_state = "hcell" + if(maxcharge >= 20000 && maxcharge < 30000) + icon_state = "scell" else - icon_state = "hpcell" + icon_state = "hpcell"*/ overlays = null @@ -63,9 +66,9 @@ if(maxcharge <= 2500) usr << "[desc]\nThe manufacturer's label states this cell has a power rating of [maxcharge], and that you should not swallow it.\nThe charge meter reads [round(src.percent() )]%." else - usr << "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]!!!\nThe charge meter reads [round(src.percent() )]%." + usr << "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]!\nThe charge meter reads [round(src.percent() )]%." if(crit_fail) - usr << "\red This power cell seems to be faulty" + usr << "\red This power cell seems to be faulty." /obj/item/weapon/cell/attack_self(mob/user as mob) src.add_fingerprint(user) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 1377d5934d..ccefe0cf57 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -21,42 +21,32 @@ field_generator power level display density = 1 use_power = 0 var - const/num_power_levels = 15 // Total number of power level icon has + const/num_power_levels = 6 // Total number of power level icon has Varedit_start = 0 Varpower = 0 active = 0 power = 20 // Current amount of power state = 0 warming_up = 0 - powerlevel = 0 // Current Power level in overlays list list/obj/machinery/containment_field/fields list/obj/machinery/field_generator/connected_gens clean_up = 0 update_icon() - if (!active) - //Set icon_state has not been set, set to "Field_Gen" - if (icon_state != "Field_Gen") - icon_state = "Field_Gen" - warming_up = 0 - else if (warming_up && icon_state != "Field_Gen +a[warming_up]") - icon_state = "Field_Gen +a[warming_up]" - + overlays = null + if(!active) + if(warming_up) + overlays += "+a[warming_up]" + if(fields.len) + overlays += "+on" // Power level indicator // Scale % power to % num_power_levels and truncate value var/level = round(num_power_levels * power / field_generator_max_power) // Clamp between 0 and num_power_levels for out of range power values level = between(0, level, num_power_levels) - - // Do nothing unless new level is diffrent the powerlevel - if (powerlevel!=level) - if (powerlevel) //Remove old powerlevel overlay from overlays - overlays -= "Field_Gen +p[powerlevel]" - powerlevel = level - // If new power level exists add it to overlays - if (powerlevel) - overlays += "Field_Gen +p[powerlevel]" + if(level) + overlays += "+p[level]" return diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 78ff328a41..ed1f0b3e19 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -37,6 +37,22 @@ CC|FC| PE|PE|PE +Icon Addemdum +Icon system is much more robust, and the icons are all variable based. +Each part has a reference string, powered, strength, and contruction values. +Using this the update_icon() proc is simplified a bit (using for absolutely was problematic with naming), +so the icon_state comes out be: +"[reference][strength]", with a switch controlling construction_states and ensuring that it doesn't +power on while being contructed, and all these variables are set by the computer through it's scan list +Essential order of the icons: +Standard - [reference] +Wrenched - [reference] +Wired - [reference]w +Closed - [reference]c +Powered - [reference]p[strength] +Strength being set by the computer and a null strength (Computer is powered off or inactive) returns a 'null', counting as empty +So, hopefully this is helpful if any more icons are to be added/changed/wondering what the hell is going on here + */ /obj/structure/particle_accelerator @@ -49,13 +65,59 @@ PE|PE|PE var obj/machinery/particle_accelerator/control_box/master = null construction_state = 0 + reference = null + powered = 0 + strength = null + desc_holder = null end_cap + name = "Alpha Particle Generation Array" + desc_holder = "This is where Alpha particles are generated from \[REDACTED\]" icon_state = "end_cap" + reference = "end_cap" + +/* update_icon() + switch(construction_state) + if(0) + icon_state="[reference]" + if(1) + icon_state="[reference]" + if(2) + icon_state="[reference]w" + if(3) + if(powered) + switch(strength) + if(0) + icon_state="[reference]p0" + if(1) + icon_state="[reference]p1" + if(2) + icon_state="[reference]p2" + else + icon_state="[reference]p" + else + icon_state="[reference]c" + return +*/ + + update_icon() + ..() + return verb/rotate() - set name = "Rotate" + set name = "Rotate Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 270) + return 1 + + verb/rotateccw() + set name = "Rotate Counter Clockwise" set category = "Object" set src in oview(1) @@ -65,18 +127,18 @@ PE|PE|PE src.dir = turn(src.dir, 90) return 1 - examine() - set src in oview(1) switch(src.construction_state) if(0) - src.desc = text("Part of a Particle Accelerator, looks like its not attached to the flooring") + src.desc = text("A [name], looks like it's not attached to the flooring") if(1) - src.desc = text("Part of a Particle Accelerator, looks like its missing some cables") + src.desc = text("A [name], it is missing some cables") if(2) - src.desc = text("Part of a Particle Accelerator, looks like its got an open panel") + src.desc = text("A [name], the panel is open") if(3) - src.desc = text("Part of a Particle Accelerator, looks like its all setup") + src.desc = text("The [name] is assembled") + if(powered) + src.desc = src.desc_holder ..() return @@ -117,6 +179,20 @@ PE|PE|PE del(src) return + update_icon() + switch(construction_state) + if(0) + icon_state="[reference]" + if(1) + icon_state="[reference]" + if(2) + icon_state="[reference]w" + if(3) + if(powered) + icon_state="[reference]p[strength]" + else + icon_state="[reference]c" + return proc update_state() @@ -160,6 +236,7 @@ PE|PE|PE src.anchored = 1 user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") +// icon_state = "[reference]" temp_state++ if(1) if(iswrench(O)) @@ -167,25 +244,30 @@ PE|PE|PE src.anchored = 0 user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") +// icon_state = "[reference]" temp_state-- else if(iscoil(O)) if(O:use(1,user)) user.visible_message("[user.name] adds wires to the [src.name].", \ "You add some wires.") +// icon_state = "[reference]w" temp_state++ if(2) if(iswirecutter(O))//TODO:Shock user if its on? user.visible_message("[user.name] removes some wires from the [src.name].", \ "You remove some wires.") +// icon_state = "[reference]" temp_state-- else if(isscrewdriver(O)) user.visible_message("[user.name] closes the [src.name]'s access panel.", \ "You close the access panel.") +// icon_state = "[reference]c" temp_state++ if(3) if(isscrewdriver(O)) user.visible_message("[user.name] opens the [src.name]'s access panel.", \ "You open the access panel.") +// icon_state = "[reference]w" temp_state-- if(temp_state == src.construction_state)//Nothing changed return 0 @@ -212,10 +294,25 @@ PE|PE|PE var construction_state = 0 active = 0 + reference = null + powered = null + strength = 0 + desc_holder = null verb/rotate() - set name = "Rotate" + set name = "Rotate Clockwise" + set category = "Object" + set src in oview(1) + + if (src.anchored || usr:stat) + usr << "It is fastened to the floor!" + return 0 + src.dir = turn(src.dir, 270) + return 1 + + verb/rotateccw() + set name = "Rotate Counter-Clockwise" set category = "Object" set src in oview(1) @@ -225,17 +322,21 @@ PE|PE|PE src.dir = turn(src.dir, 90) return 1 + update_icon() + return examine() switch(src.construction_state) if(0) - src.desc = text("Part of a Particle Accelerator, looks like its not attached to the flooring") + src.desc = text("A [name], looks like it's not attached to the flooring") if(1) - src.desc = text("Part of a Particle Accelerator, looks like its missing some cables") + src.desc = text("A [name], it is missing some cables") if(2) - src.desc = text("Part of a Particle Accelerator, looks like its got an open panel") + src.desc = text("A [name], the panel is open") if(3) - src.desc = text("Part of a Particle Accelerator, looks like its all setup") + src.desc = text("The [name] is assembled") + if(powered) + src.desc = src.desc_holder ..() return @@ -294,6 +395,7 @@ PE|PE|PE src.anchored = 1 user.visible_message("[user.name] secures the [src.name] to the floor.", \ "You secure the external bolts.") + //icon_state = "[reference]" temp_state++ if(1) if(iswrench(O)) @@ -301,25 +403,30 @@ PE|PE|PE src.anchored = 0 user.visible_message("[user.name] detaches the [src.name] from the floor.", \ "You remove the external bolts.") + //icon_state = "[reference]" temp_state-- else if(iscoil(O)) if(O:use(1)) user.visible_message("[user.name] adds wires to the [src.name].", \ "You add some wires.") + //icon_state = "[reference]w" temp_state++ if(2) if(iswirecutter(O))//TODO:Shock user if its on? user.visible_message("[user.name] removes some wires from the [src.name].", \ "You remove some wires.") + //icon_state = "[reference]" temp_state-- else if(isscrewdriver(O)) user.visible_message("[user.name] closes the [src.name]'s access panel.", \ "You close the access panel.") + //icon_state = "[reference]c" temp_state++ if(3) if(isscrewdriver(O)) user.visible_message("[user.name] opens the [src.name]'s access panel.", \ "You open the access panel.") + //icon_state = "[reference]w" temp_state-- if(temp_state == src.construction_state)//Nothing changed return 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm index 0d6c02acc8..ae084ed4aa 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm @@ -1,5 +1,10 @@ /obj/structure/particle_accelerator/fuel_chamber - name = "Particle Accelerator Fuel Control" - desc = "Part of a Particle Accelerator." + name = "EM Acceleration Chamber" + desc_holder = "This is where the Alpha particles are accelerated to radical speeds." icon = 'particle_accelerator.dmi' - icon_state = "fuel_chamber" \ No newline at end of file + icon_state = "fuel_chamber" + reference = "fuel_chamber" + + update_icon() + ..() + return \ No newline at end of file diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 84e456c668..eed1002026 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -1,8 +1,9 @@ /obj/machinery/particle_accelerator/control_box - name = "Particle Accelerator Control Box" - desc = "Part of a Particle Accelerator." + name = "Particle Accelerator Control Computer" + desc = "This controls the density of the particles." icon = 'particle_accelerator.dmi' icon_state = "control_box" + reference = "control_box" anchored = 0 density = 1 use_power = 0 @@ -13,7 +14,7 @@ var list/obj/structure/particle_accelerator/connected_parts assembled = 0 - strength = 0 + parts = null New() @@ -40,6 +41,28 @@ return + update_icon() + if(active) + icon_state = "[reference]p1" + else + if(use_power) + icon_state = "[reference]p" + else + icon_state = "[reference]c" + switch(construction_state) + if(0) + icon_state = "[reference]" + if(1) + icon_state = "[reference]" + if(2) + icon_state = "[reference]w" + if(3) + icon_state = "[reference]c" + return + + update_icon() + ..() + return Topic(href, href_list) ..() @@ -61,17 +84,30 @@ src.part_scan() if(href_list["strengthup"]) src.strength++ + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength++ + part.update_icon() if(src.strength > 2) src.strength = 2 - message_admins("[usr] increased particle accelerator power to [strength].") - log_admin("[usr] increased particle accelerator power to [strength].") + message_admins("[usr] increased particle accelerator power to [strength].") + log_admin("[usr] increased particle accelerator power to [strength].") + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength = 2 + part.update_icon() if(href_list["strengthdown"]) src.strength-- + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength-- + part.update_icon() if(src.strength < 0) src.strength = 0 - message_admins("[usr] decreased particle accelerator power to [strength].") - log_admin("[usr] decreased particle accelerator power to [strength].") + message_admins("[usr] decreased particle accelerator power to [strength].") + log_admin("[usr] decreased particle accelerator power to [strength].") + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength = 0 + part.update_icon() src.updateDialog() + src.update_icon() return @@ -80,7 +116,7 @@ if(stat & NOPOWER) active = 0 use_power = 0 - else if(!stat) + else if(!stat && construction_state == 3) use_power = 1 return @@ -150,8 +186,16 @@ src.active = !src.active if(src.active) src.use_power = 2 + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength = src.strength + part.powered = 1 + part.update_icon() else src.use_power = 1 + for(var/obj/structure/particle_accelerator/part in connected_parts) + part.strength = null + part.powered = 0 + part.update_icon() return 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index 6b4cc81b35..509a1ed0c1 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -1,6 +1,6 @@ /obj/structure/particle_accelerator/particle_emitter - name = "Particle Accelerator Emitter" - desc = "Part of a Particle Accelerator, might not want to stand near this end." + name = "EM Containment Grid" + desc_holder = "This launchs the Alpha particles, might not want to stand near this end." icon = 'particle_accelerator.dmi' icon_state = "none" var @@ -9,17 +9,19 @@ center icon_state = "emitter_center" + reference = "emitter_center" left icon_state = "emitter_left" + reference = "emitter_left" right icon_state = "emitter_right" - + reference = "emitter_right" update_icon() - return//Add overlays here - + ..() + return proc set_delay(var/delay) diff --git a/code/modules/power/singularity/particle_accelerator/particle_power.dm b/code/modules/power/singularity/particle_accelerator/particle_power.dm index 5be216bc4c..835ae54783 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_power.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_power.dm @@ -1,7 +1,10 @@ /obj/structure/particle_accelerator/power_box - name = "Particle Accelerator" - desc = "Part of a Particle Accelerator, this part seems to have a maintenance panel on it." + name = "Particle Focusing EM Lens" + desc_holder = "This uses electromagnetic waves to focus the Alpha-Particles." icon = 'particle_accelerator.dmi' icon_state = "power_box" - anchored = 0 - density = 1 + reference = "power_box" + + update_icon() + ..() + return diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index e182d1f9a3..67354a1ba8 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1091,7 +1091,7 @@ datum desc = "A basic power cell that holds 1000 units of energy" id = "basic_cell" req_tech = list("powerstorage" = 1) - build_type = PROTOLATHE | AUTOLATHE + build_type = PROTOLATHE | AUTOLATHE |MECHFAB materials = list("$metal" = 700, "$glass" = 50) build_path = "/obj/item/weapon/cell" @@ -1100,7 +1100,7 @@ datum desc = "A power cell that holds 10000 units of energy" id = "high_cell" req_tech = list("powerstorage" = 2) - build_type = PROTOLATHE | AUTOLATHE + build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 60) build_path = "/obj/item/weapon/cell/high" @@ -1110,7 +1110,7 @@ datum id = "super_cell" req_tech = list("powerstorage" = 3, "materials" = 2) reliability_base = 90 //Else these things just fail all the time, goddamn. - Erthilo - build_type = PROTOLATHE + build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) build_path = "/obj/item/weapon/cell/super" @@ -1120,7 +1120,7 @@ datum id = "hyper_cell" req_tech = list("powerstorage" = 5, "materials" = 4) reliability_base = 85 - build_type = PROTOLATHE + build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) build_path = "/obj/item/weapon/cell/hyper" @@ -1271,6 +1271,16 @@ datum reliability_base = 74 build_path = "/obj/item/device/mmi/radio_enabled" + synthetic_flash + name = "Synthetic Flash" + desc = "When a problem arises, SCIENCE is the solution." + id = "sflash" + req_tech = list("magnets" = 3, "combat" = 2) + build_type = MECHFAB + materials = list("$metal" = 750, "$glass" = 750) + reliability_base = 76 + build_path = "/obj/item/device/flash/synthetic" + ///////////////////////////////////////// /////////////////Weapons///////////////// ///////////////////////////////////////// diff --git a/icons/mecha/mech_construction.dmi b/icons/mecha/mech_construction.dmi new file mode 100644 index 0000000000..e7e9bb0294 Binary files /dev/null and b/icons/mecha/mech_construction.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 920dffd4cd..62dcabf51c 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index ebad33c1b6..642186a304 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/machines/field_generator.dmi b/icons/obj/machines/field_generator.dmi index 506656fee8..4f1d6cd6da 100644 Binary files a/icons/obj/machines/field_generator.dmi and b/icons/obj/machines/field_generator.dmi differ diff --git a/icons/obj/machines/particle_accelerator.dmi b/icons/obj/machines/particle_accelerator.dmi index 01cb1a230e..9513689f65 100644 Binary files a/icons/obj/machines/particle_accelerator.dmi and b/icons/obj/machines/particle_accelerator.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index 432ec929bf..087ceb08b7 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 3367e6ec45..c12b373b44 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ