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