From 8d58fc2e97cc90db8051008174c50fe3e97b7eeb Mon Sep 17 00:00:00 2001 From: Atlantiscze Date: Tue, 30 Sep 2014 08:56:28 +0200 Subject: [PATCH 01/19] Android Roundstart NameFix - Positronic Brains in Androids now have proper posibrain-like name, instead of using MMI-like name. - Example: (Tes Ter -> SINA-123) --- code/modules/mob/living/carbon/brain/posibrain.dm | 15 ++++++++------- code/modules/mob/transform_procs.dm | 7 ++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 6877ed4b854..18244527bc4 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -46,13 +46,14 @@ C.prefs.be_special ^= BE_PAI -/obj/item/device/mmi/posibrain/transfer_identity(var/mob/living/carbon/H) - name = "positronic brain ([H])" - brainmob.name = H.real_name - brainmob.real_name = H.real_name - brainmob.dna = H.dna - brainmob.timeofhostdeath = H.timeofdeath - brainmob.stat = 0 +/obj/item/device/mmi/posibrain/transfer_identity(var/mob/living/carbon/H, var/autoname = 1) + if(autoname) + name = "positronic brain ([H])" + brainmob.name = H.real_name + brainmob.real_name = H.real_name + brainmob.dna = H.dna + brainmob.timeofhostdeath = H.timeofdeath + brainmob.stat = 0 if(brainmob.mind) brainmob.mind.assigned_role = "Positronic Brain" if(H.mind) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 2307d00bcb7..d939289d35c 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -164,15 +164,20 @@ O.loc = loc O.job = "Cyborg" + var/transferred = 0 if(O.mind.assigned_role == "Cyborg") if(O.mind.role_alt_title == "Android") O.mmi = new /obj/item/device/mmi/posibrain(O) + O.mmi.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" + O.mmi.name = "positronic brain ([O.mmi.brainmob.name])" // Give posibrain random posibrain-y name. + if(O.mmi) O.mmi.transfer_identity(src,0) // Disabling autoname as we don't want posibrain with human names. + transferred = 1 else if(O.mind.role_alt_title == "Robot") O.mmi = null //Robots do not have removable brains. else O.mmi = new /obj/item/device/mmi(O) - if(O.mmi) O.mmi.transfer_identity(src) //Does not transfer key/client. + if((O.mmi) && (!transferred)) O.mmi.transfer_identity(src) callHook("borgify", list(O)) From ff9f79acfc994e29e4132c9b01772258240e4b65 Mon Sep 17 00:00:00 2001 From: Atlantiscze Date: Tue, 30 Sep 2014 09:15:21 +0200 Subject: [PATCH 02/19] Cleaner version of previous commit. --- .../mob/living/carbon/brain/posibrain.dm | 19 +++++++++++-------- code/modules/mob/transform_procs.dm | 8 ++------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 18244527bc4..b2deeae4672 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -46,14 +46,17 @@ C.prefs.be_special ^= BE_PAI -/obj/item/device/mmi/posibrain/transfer_identity(var/mob/living/carbon/H, var/autoname = 1) - if(autoname) - name = "positronic brain ([H])" - brainmob.name = H.real_name - brainmob.real_name = H.real_name - brainmob.dna = H.dna - brainmob.timeofhostdeath = H.timeofdeath - brainmob.stat = 0 +/obj/item/device/mmi/posibrain/transfer_identity(var/mob/living/carbon/H) + /* + Positronic brains should have posibrain-like name, instead of human-MMIlike names. -- ATL + + name = "positronic brain ([H])" + brainmob.name = H.real_name + brainmob.real_name = H.real_name + */ + brainmob.dna = H.dna + brainmob.timeofhostdeath = H.timeofdeath + brainmob.stat = 0 if(brainmob.mind) brainmob.mind.assigned_role = "Positronic Brain" if(H.mind) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d939289d35c..200d3e342b6 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -164,20 +164,16 @@ O.loc = loc O.job = "Cyborg" - var/transferred = 0 if(O.mind.assigned_role == "Cyborg") if(O.mind.role_alt_title == "Android") O.mmi = new /obj/item/device/mmi/posibrain(O) - O.mmi.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" - O.mmi.name = "positronic brain ([O.mmi.brainmob.name])" // Give posibrain random posibrain-y name. - if(O.mmi) O.mmi.transfer_identity(src,0) // Disabling autoname as we don't want posibrain with human names. - transferred = 1 else if(O.mind.role_alt_title == "Robot") O.mmi = null //Robots do not have removable brains. else O.mmi = new /obj/item/device/mmi(O) - if((O.mmi) && (!transferred)) O.mmi.transfer_identity(src) + if(O.mmi) + O.mmi.transfer_identity(src) callHook("borgify", list(O)) From 484082230ca65e34eebb2e3f691188db6a2109c8 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 11:31:59 +0100 Subject: [PATCH 03/19] fixes #6549 Signed-off-by: Mloc --- code/_onclick/hud/monkey.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 41e8e3bd2e4..7ca8216bf21 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -109,7 +109,7 @@ src.l_hand_hud_object = inv_box src.adding += inv_box - using = new /obj/screen() + using = new /obj/screen/inventory() using.name = "hand" using.dir = SOUTH using.icon = ui_style @@ -118,7 +118,7 @@ using.layer = 19 src.adding += using - using = new /obj/screen() + using = new /obj/screen/inventory() using.name = "hand" using.dir = SOUTH using.icon = ui_style From 8c2c16cd1e26a692230161da7b8253379bf3d980 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 19:25:37 +0100 Subject: [PATCH 04/19] fix #6555 Signed-off-by: Mloc --- code/game/machinery/recharger.dm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 3166774f96f..6cdedefe7f7 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -17,11 +17,11 @@ obj/machinery/recharger obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) if(istype(user,/mob/living/silicon)) return - + var/allowed = 0 for (var/allowed_type in allowed_devices) if (istype(G, allowed_type)) allowed = 1 - + if(allowed) if(charging) user << "\red \A [charging] is already charging here." @@ -54,6 +54,9 @@ obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) obj/machinery/recharger/attack_hand(mob/user as mob) + if(istype(user,/mob/living/silicon)) + return + add_fingerprint(user) if(charging) @@ -85,7 +88,7 @@ obj/machinery/recharger/process() icon_state = icon_state_charged update_use_power(1) return - + if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging if(B.bcell) @@ -100,7 +103,7 @@ obj/machinery/recharger/process() icon_state = icon_state_idle update_use_power(1) return - + if(istype(charging, /obj/item/device/laptop)) var/obj/item/device/laptop/L = charging if(!L.stored_computer.battery.fully_charged()) @@ -111,7 +114,7 @@ obj/machinery/recharger/process() icon_state = icon_state_charged update_use_power(1) return - + if(istype(charging, /obj/item/weapon/cell)) var/obj/item/weapon/cell/C = charging if(!C.fully_charged()) From 6a91020529d28e37e8078e10c8fe3aca81fce121 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 20:13:03 +0100 Subject: [PATCH 05/19] fixes #6540 Signed-off-by: Mloc --- .../objects/items/weapons/table_rack_parts.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 042efc84203..4701367e170 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -27,6 +27,10 @@ user << "\red You need at least four rods to do this." /obj/item/weapon/table_parts/attack_self(mob/user as mob) + if(locate(/obj/structure/table) in user.loc) + user << "There is already a table here." + return + new /obj/structure/table( user.loc ) user.drop_item() del(src) @@ -43,6 +47,10 @@ del(src) /obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob) + if(locate(/obj/structure/table/reinforced) in user.loc) + user << "There is already a table here." + return + new /obj/structure/table/reinforced( user.loc ) user.drop_item() del(src) @@ -57,6 +65,10 @@ del(src) /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) + if(locate(/obj/structure/table/woodentable) in user.loc) + user << "There is already a table here." + return + new /obj/structure/table/woodentable( user.loc ) user.drop_item() del(src) @@ -74,6 +86,10 @@ return /obj/item/weapon/rack_parts/attack_self(mob/user as mob) + if(locate(/obj/structure/rack) in user.loc) + user << "There is already a rack here." + return + var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) R.add_fingerprint(user) user.drop_item() From 277335f487a0a257740ae6ed83042dd802b1fa29 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 20:13:41 +0100 Subject: [PATCH 06/19] fixes #6541 Signed-off-by: Mloc --- code/game/dna/dna_modifier.dm | 1 + code/game/machinery/cloning.dm | 1 + code/game/machinery/computer/cloning.dm | 1 + 3 files changed, 3 insertions(+) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index d4450cbb786..29a64007837 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -17,6 +17,7 @@ var/ckey=null var/mind=null var/languages=null + var/list/flavor=null /datum/dna2/record/proc/GetData() var/list/ser=list("data" = null, "owner" = null, "label" = null, "type" = null, "ue" = 0) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ee06823cae1..5eccb846145 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -215,6 +215,7 @@ for(var/datum/language/L in R.languages) H.add_language(L.name) + H.flavor_texts = R.flavor.Copy() H.suiciding = 0 src.attempting = 0 return 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 9ce8ccb4fc6..dc6c37cfde1 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -362,6 +362,7 @@ R.name=R.dna.real_name R.types=DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE R.languages=subject.languages + R.flavor=subject.flavor_texts.Copy() //Add an implant if needed var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject) From 7a0b0c436906ef77efe28b8f90b15bae3c91558c Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 20:39:11 +0100 Subject: [PATCH 07/19] fixes #6115 Signed-off-by: Mloc --- code/game/objects/structures/girders.dm | 26 +++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 286c28f37ed..535d0d71ad9 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -25,8 +25,7 @@ if(do_after(user,40)) if(!src) return user << "\blue You dissasembled the girder!" - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + dismantle() else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "\blue Now securing the girder" @@ -40,13 +39,11 @@ if(do_after(user,30)) if(!src) return user << "\blue You slice apart the girder!" - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + dismantle() else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "\blue You drill through the girder!" - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + dismantle() else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) @@ -166,6 +163,23 @@ else ..() + proc/dismantle() + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) + + attack_hand(mob/user as mob) + if (HULK in user.mutations) + visible_message("[user] smashes [src] apart!") + dismantle() + return + return ..() + + attack_animal(mob/living/simple_animal/user) + if(user.wall_smash) + visible_message("[user] smashes [src] apart!") + dismantle() + return + return ..() blob_act() if(prob(40)) From 43546fe9f09135557213c938232eebb2284b3304 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 28 Sep 2014 16:43:32 +0100 Subject: [PATCH 08/19] fix stretched lighting Signed-off-by: Mloc-Argent --- code/__HELPERS/game.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 8c6befa38f8..4392129b2e3 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -56,7 +56,7 @@ var/dx = abs(Ax - Bx) //sides of right-angled triangle var/dy = abs(Ay - By) if(dx>=dy) return (k1*dx) + (k2*dy) //No sqrt or powers :) - else return (k1*dx) + (k2*dy) + else return (k2*dx) + (k1*dy) #undef k1 #undef k2 From 4160488ed18ce1b68c9c42938d523a6b49a1940e Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 28 Sep 2014 16:44:20 +0100 Subject: [PATCH 09/19] fix gas overlays persisting after rebuilds slight visual artifact when zones are rebuilt, overlays will be missing until the end of the current tick. otherwise works fine. Signed-off-by: Mloc-Argent --- code/ZAS/Turf.dm | 4 ++-- code/ZAS/Zone.dm | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/ZAS/Turf.dm b/code/ZAS/Turf.dm index e3a28fe3d47..9d031ce3d39 100644 --- a/code/ZAS/Turf.dm +++ b/code/ZAS/Turf.dm @@ -5,9 +5,9 @@ /turf/var/datum/gas_mixture/air /turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null) - if(graphic_add) + if(graphic_add && graphic_add.len) overlays += graphic_add - if(graphic_remove) + if(graphic_remove && graphic_remove.len) overlays -= graphic_remove /turf/proc/update_air_properties() diff --git a/code/ZAS/Zone.dm b/code/ZAS/Zone.dm index e794c36b02a..1f2cbee8d33 100644 --- a/code/ZAS/Zone.dm +++ b/code/ZAS/Zone.dm @@ -118,6 +118,7 @@ Class Procs: if(invalid) return //Short circuit for explosions where rebuild is called many times over. c_invalidate() for(var/turf/simulated/T in contents) + T.update_graphic(graphic_remove = air.graphic) //we need to remove the overlays so they're not doubled when the zone is rebuilt //T.dbg(invalid_zone) T.needs_air_update = 0 //Reset the marker so that it will be added to the list. air_master.mark_for_update(T) From 6fb1667b4449dbdae61a5169a179accd7757cb82 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 28 Sep 2014 16:59:55 +0100 Subject: [PATCH 10/19] fixes #4742 not a full fix, there's too many small cases where OPENCONTAINER isn't checked, but this is everything in the report Signed-off-by: Mloc-Argent --- code/game/objects/structures/watercloset.dm | 4 ++-- .../mob/living/simple_animal/friendly/farm_animals.dm | 8 ++++---- code/modules/reagents/Chemistry-Machinery.dm | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 5d6caee5e21..b743b97b567 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -362,8 +362,8 @@ user << "\red Someone's already washing here." return - if (istype(O, /obj/item/weapon/reagent_containers)) - var/obj/item/weapon/reagent_containers/RG = O + var/obj/item/weapon/reagent_containers/RG = O + if (istype(RG) && RG.is_open_container()) RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) user.visible_message("\blue [user] fills \the [RG] using \the [src].","\blue You fill \the [RG] using \the [src].") return diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 822d4e65fa6..3fa82adfcfa 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -72,9 +72,9 @@ say("Nom") /mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) + var/obj/item/weapon/reagent_containers/glass/G = O + if(stat == CONSCIOUS && istype(G) && G.is_open_container()) user.visible_message("[user] milks [src] using \the [O].") - var/obj/item/weapon/reagent_containers/glass/G = O var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) if(G.reagents.total_volume >= G.volume) user << "\red The [O] is full." @@ -112,9 +112,9 @@ ..() /mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) + var/obj/item/weapon/reagent_containers/glass/G = O + if(stat == CONSCIOUS && istype(G) && G.is_open_container()) user.visible_message("[user] milks [src] using \the [O].") - var/obj/item/weapon/reagent_containers/glass/G = O var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) if(G.reagents.total_volume >= G.volume) user << "\red The [O] is full." diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 5d1571a1996..3f91f205e0f 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -15,7 +15,7 @@ var/max_energy = 100 var/amount = 30 var/accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname. - var/beaker = null + var/atom/beaker = null var/recharged = 0 var/hackedcheck = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", @@ -132,7 +132,7 @@ amount = 100 if(href_list["dispense"]) - if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null) + if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null && beaker.is_open_container()) var/obj/item/weapon/reagent_containers/B = src.beaker var/datum/reagents/R = B.reagents var/space = R.maximum_volume - R.total_volume From 1bc57f43f60d8815d725efef9b8385365b6ccf9b Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 28 Sep 2014 17:59:26 +0100 Subject: [PATCH 11/19] optimize secbots a tiny bit Signed-off-by: Mloc-Argent --- code/game/machinery/bots/secbot.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 0269a3fe5ce..29b27e354cb 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -662,13 +662,13 @@ Auto Patrol: []"}, threatcount -= 2 if(src.check_records) - for (var/datum/data/record/E in data_core.general) - var/perpname = perp.name - if(perp.wear_id) - var/obj/item/weapon/card/id/id = perp.wear_id.GetID() - if(id) - perpname = id.registered_name + var/perpname = perp.name + if(perp.wear_id) + var/obj/item/weapon/card/id/id = perp.wear_id.GetID() + if(id) + perpname = id.registered_name + for (var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.security) if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*")) From 3a0289d4ec493f41137bc80694b21425bfa95c17 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 28 Sep 2014 18:42:15 +0100 Subject: [PATCH 12/19] fixes #6329 Signed-off-by: Mloc-Argent --- code/game/machinery/computer/cloning.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index dc6c37cfde1..70a0bb50094 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -349,6 +349,9 @@ if (NOCLONE in subject.mutations) scantemp = "Error: Mental interface failure." return + if (subject.species && subject.species.flags & NO_SCAN) + scantemp = "Error: Mental interface failure." + return if (!isnull(find_record(subject.ckey))) scantemp = "Subject already in database." return From 61394d3921ca61ce8272b034299abfbdf8123a17 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 22:18:25 +0100 Subject: [PATCH 13/19] fixes #6561 Signed-off-by: Mloc --- code/modules/reagents/Chemistry-Reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 7a3d8a95181..ec71df287a0 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3424,7 +3424,7 @@ datum ethanol/toxins_special name = "Toxins Special" - id = "toxinsspecial" + id = "phoronspecial" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 From f9fa7efe6e8088d9a8122c49a5af5529724e1cb3 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 30 Sep 2014 23:48:54 +0100 Subject: [PATCH 14/19] fixes #6550 computer circuits now use paths instead of strings Signed-off-by: Mloc --- .../game/machinery/computer/buildandrepair.dm | 118 +++++++++--------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 7a115b8810c..890c3574b2f 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -44,13 +44,13 @@ /obj/item/weapon/circuitboard/message_monitor name = "Circuit board (Message Monitor)" - build_path = "/obj/machinery/computer/message_monitor" + build_path = /obj/machinery/computer/message_monitor origin_tech = "programming=3" //TODO: Move these into computer/camera.dm /obj/item/weapon/circuitboard/security name = "Circuit board (Security Camera Monitor)" - build_path = "/obj/machinery/computer/security" + build_path = /obj/machinery/computer/security var/network = list("SS13") req_access = list(access_security) var/locked = 1 @@ -66,12 +66,12 @@ /obj/item/weapon/circuitboard/security/engineering name = "Circuit board (Engineering Camera Monitor)" - build_path = "/obj/machinery/computer/security/engineering" + build_path = /obj/machinery/computer/security/engineering network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms") req_access = list() /obj/item/weapon/circuitboard/security/mining name = "Circuit board (Mining Camera Monitor)" - build_path = "/obj/machinery/computer/security/mining" + build_path = /obj/machinery/computer/security/mining network = list("MINE") req_access = list() /obj/item/weapon/circuitboard/aicore @@ -80,67 +80,67 @@ board_type = "other" /obj/item/weapon/circuitboard/aiupload name = "Circuit board (AI Upload)" - build_path = "/obj/machinery/computer/aiupload" + build_path = /obj/machinery/computer/aiupload origin_tech = "programming=4" /obj/item/weapon/circuitboard/borgupload name = "Circuit board (Cyborg Upload)" - build_path = "/obj/machinery/computer/borgupload" + build_path = /obj/machinery/computer/borgupload origin_tech = "programming=4" /obj/item/weapon/circuitboard/med_data name = "Circuit board (Medical Records)" - build_path = "/obj/machinery/computer/med_data" + build_path = /obj/machinery/computer/med_data /obj/item/weapon/circuitboard/pandemic name = "Circuit board (PanD.E.M.I.C. 2200)" - build_path = "/obj/machinery/computer/pandemic" + build_path = /obj/machinery/computer/pandemic origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/scan_consolenew name = "Circuit board (DNA Machine)" - build_path = "/obj/machinery/computer/scan_consolenew" + build_path = /obj/machinery/computer/scan_consolenew origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/communications name = "Circuit board (Communications)" - build_path = "/obj/machinery/computer/communications" + build_path = /obj/machinery/computer/communications origin_tech = "programming=2;magnets=2" /obj/item/weapon/circuitboard/card name = "Circuit board (ID Computer)" - build_path = "/obj/machinery/computer/card" + build_path = /obj/machinery/computer/card /obj/item/weapon/circuitboard/card/centcom name = "Circuit board (CentCom ID Computer)" - build_path = "/obj/machinery/computer/card/centcom" + build_path = /obj/machinery/computer/card/centcom //obj/item/weapon/circuitboard/shield // name = "Circuit board (Shield Control)" // build_path = "/obj/machinery/computer/stationshield" /obj/item/weapon/circuitboard/teleporter name = "Circuit board (Teleporter)" - build_path = "/obj/machinery/computer/teleporter" + build_path = /obj/machinery/computer/teleporter origin_tech = "programming=2;bluespace=2" /obj/item/weapon/circuitboard/secure_data name = "Circuit board (Security Records)" - build_path = "/obj/machinery/computer/secure_data" + build_path = /obj/machinery/computer/secure_data /obj/item/weapon/circuitboard/skills name = "Circuit board (Employment Records)" - build_path = "/obj/machinery/computer/skills" + build_path = /obj/machinery/computer/skills /obj/item/weapon/circuitboard/stationalert name = "Circuit board (Station Alerts)" - build_path = "/obj/machinery/computer/station_alert" -/obj/item/weapon/circuitboard/atmospheresiphonswitch - name = "Circuit board (Atmosphere Siphon Control)" - build_path = "/obj/machinery/computer/atmosphere/siphonswitch" + build_path = /obj/machinery/computer/station_alert +///obj/item/weapon/circuitboard/atmospheresiphonswitch +// name = "Circuit board (Atmosphere Siphon Control)" +// build_path = /obj/machinery/computer/atmosphere/siphonswitch /obj/item/weapon/circuitboard/air_management name = "Circuit board (Atmospheric Monitor)" - build_path = "/obj/machinery/computer/general_air_control" + build_path = /obj/machinery/computer/general_air_control var/frequency = 1439 /obj/item/weapon/circuitboard/air_management/tank_control name = "Circuit board (Tank Control)" - build_path = "/obj/machinery/computer/general_air_control/large_tank_control" + build_path = /obj/machinery/computer/general_air_control/large_tank_control frequency = 1441 /obj/item/weapon/circuitboard/air_management/supermatter_core name = "Circuit board (Core Control)" - build_path = "/obj/machinery/computer/general_air_control/supermatter_core" + build_path = /obj/machinery/computer/general_air_control/supermatter_core frequency = 1438 /obj/item/weapon/circuitboard/air_management/injector_control name = "Circuit board (Injector Control)" - build_path = "/obj/machinery/computer/general_air_control/fuel_injection" + build_path = /obj/machinery/computer/general_air_control/fuel_injection /obj/item/weapon/circuitboard/air_management/construct(var/obj/machinery/computer/general_air_control/C) if (..(C)) @@ -152,73 +152,73 @@ /obj/item/weapon/circuitboard/atmos_alert name = "Circuit board (Atmospheric Alert)" - build_path = "/obj/machinery/computer/atmos_alert" + build_path = /obj/machinery/computer/atmos_alert /obj/item/weapon/circuitboard/pod name = "Circuit board (Massdriver control)" - build_path = "/obj/machinery/computer/pod" + build_path = /obj/machinery/computer/pod /obj/item/weapon/circuitboard/robotics name = "Circuit board (Robotics Control)" - build_path = "/obj/machinery/computer/robotics" + build_path = /obj/machinery/computer/robotics origin_tech = "programming=3" /obj/item/weapon/circuitboard/drone_control name = "Circuit board (Drone Control)" - build_path = "/obj/machinery/computer/drone_control" + build_path = /obj/machinery/computer/drone_control origin_tech = "programming=3" /obj/item/weapon/circuitboard/cloning name = "Circuit board (Cloning)" - build_path = "/obj/machinery/computer/cloning" + build_path = /obj/machinery/computer/cloning origin_tech = "programming=3;biotech=3" /obj/item/weapon/circuitboard/arcade name = "Circuit board (Arcade)" - build_path = "/obj/machinery/computer/arcade" + build_path = /obj/machinery/computer/arcade origin_tech = "programming=1" /obj/item/weapon/circuitboard/turbine_control name = "Circuit board (Turbine control)" - build_path = "/obj/machinery/computer/turbine_computer" + build_path = /obj/machinery/computer/turbine_computer /obj/item/weapon/circuitboard/solar_control name = "Circuit board (Solar Control)" - build_path = "/obj/machinery/power/solar_control" + build_path = /obj/machinery/power/solar_control origin_tech = "programming=2;powerstorage=2" /obj/item/weapon/circuitboard/powermonitor name = "Circuit board (Power Monitor)" - build_path = "/obj/machinery/power/monitor" + build_path = /obj/machinery/power/monitor /obj/item/weapon/circuitboard/olddoor name = "Circuit board (DoorMex)" - build_path = "/obj/machinery/computer/pod/old" + build_path = /obj/machinery/computer/pod/old /obj/item/weapon/circuitboard/syndicatedoor name = "Circuit board (ProComp Executive)" - build_path = "/obj/machinery/computer/pod/old/syndicate" + build_path = /obj/machinery/computer/pod/old/syndicate /obj/item/weapon/circuitboard/swfdoor name = "Circuit board (Magix)" - build_path = "/obj/machinery/computer/pod/old/swf" + build_path = /obj/machinery/computer/pod/old/swf /obj/item/weapon/circuitboard/prisoner name = "Circuit board (Prisoner Management)" - build_path = "/obj/machinery/computer/prisoner" + build_path = /obj/machinery/computer/prisoner /obj/item/weapon/circuitboard/rdconsole name = "Circuit Board (RD Console)" - build_path = "/obj/machinery/computer/rdconsole/core" + build_path = /obj/machinery/computer/rdconsole/core /obj/item/weapon/circuitboard/mecha_control name = "Circuit Board (Exosuit Control Console)" - build_path = "/obj/machinery/computer/mecha" + build_path = /obj/machinery/computer/mecha /obj/item/weapon/circuitboard/rdservercontrol name = "Circuit Board (R&D Server Control)" - build_path = "/obj/machinery/computer/rdservercontrol" + build_path = /obj/machinery/computer/rdservercontrol /obj/item/weapon/circuitboard/crew name = "Circuit board (Crew monitoring computer)" - build_path = "/obj/machinery/computer/crew" + build_path = /obj/machinery/computer/crew origin_tech = "programming=3;biotech=2;magnets=2" /obj/item/weapon/circuitboard/mech_bay_power_console name = "Circuit board (Mech Bay Power Control Console)" - build_path = "/obj/machinery/computer/mech_bay_power_console" + build_path = /obj/machinery/computer/mech_bay_power_console origin_tech = "programming=2;powerstorage=3" /obj/item/weapon/circuitboard/ordercomp name = "Circuit board (Supply ordering console)" - build_path = "/obj/machinery/computer/ordercomp" + build_path = /obj/machinery/computer/ordercomp origin_tech = "programming=2" /obj/item/weapon/circuitboard/supplycomp name = "Circuit board (Supply shuttle console)" - build_path = "/obj/machinery/computer/supplycomp" + build_path = /obj/machinery/computer/supplycomp origin_tech = "programming=3" var/contraband_enabled = 0 @@ -232,54 +232,54 @@ /obj/item/weapon/circuitboard/operating name = "Circuit board (Operating Computer)" - build_path = "/obj/machinery/computer/operating" + build_path = /obj/machinery/computer/operating origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/comm_monitor name = "Circuit board (Telecommunications Monitor)" - build_path = "/obj/machinery/computer/telecomms/monitor" + build_path = /obj/machinery/computer/telecomms/monitor origin_tech = "programming=3" /obj/item/weapon/circuitboard/comm_server name = "Circuit board (Telecommunications Server Monitor)" - build_path = "/obj/machinery/computer/telecomms/server" + build_path = /obj/machinery/computer/telecomms/server origin_tech = "programming=3" /obj/item/weapon/circuitboard/comm_traffic name = "Circuitboard (Telecommunications Traffic Control)" - build_path = "/obj/machinery/computer/telecomms/traffic" + build_path = /obj/machinery/computer/telecomms/traffic origin_tech = "programming=3" /obj/item/weapon/circuitboard/curefab name = "Circuit board (Cure fab)" - build_path = "/obj/machinery/computer/curer" + build_path = /obj/machinery/computer/curer /obj/item/weapon/circuitboard/splicer name = "Circuit board (Disease Splicer)" - build_path = "/obj/machinery/computer/diseasesplicer" + build_path = /obj/machinery/computer/diseasesplicer /obj/item/weapon/circuitboard/mining_shuttle name = "Circuit board (Mining Shuttle)" - build_path = "/obj/machinery/computer/shuttle_control/mining" + build_path = /obj/machinery/computer/shuttle_control/mining origin_tech = "programming=2" /obj/item/weapon/circuitboard/engineering_shuttle name = "Circuit board (Engineering Shuttle)" - build_path = "/obj/machinery/computer/shuttle_control/engineering" + build_path = /obj/machinery/computer/shuttle_control/engineering origin_tech = "programming=2" /obj/item/weapon/circuitboard/research_shuttle name = "Circuit board (Research Shuttle)" - build_path = "/obj/machinery/computer/shuttle_control/research" + build_path = /obj/machinery/computer/shuttle_control/research origin_tech = "programming=2" /obj/item/weapon/circuitboard/HolodeckControl // Not going to let people get this, but it's just here for future name = "Circuit board (Holodeck Control)" - build_path = "/obj/machinery/computer/HolodeckControl" + build_path = /obj/machinery/computer/HolodeckControl origin_tech = "programming=4" /obj/item/weapon/circuitboard/aifixer name = "Circuit board (AI Integrity Restorer)" - build_path = "/obj/machinery/computer/aifixer" + build_path = /obj/machinery/computer/aifixer origin_tech = "programming=3;biotech=2" /obj/item/weapon/circuitboard/area_atmos name = "Circuit board (Area Air Control)" - build_path = "/obj/machinery/computer/area_atmos" + build_path = /obj/machinery/computer/area_atmos origin_tech = "programming=2" /obj/item/weapon/circuitboard/prison_shuttle name = "Circuit board (Prison Shuttle)" - build_path = "/obj/machinery/computer/prison_shuttle" + build_path = /obj/machinery/computer/prison_shuttle origin_tech = "programming=2" @@ -342,13 +342,13 @@ /obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(istype(I,/obj/item/weapon/screwdriver)) user.visible_message("\blue \the [user] adjusts the jumper on the [src]'s access protocol pins.", "\blue You adjust the jumper on the access protocol pins.") - if(src.build_path == "/obj/machinery/computer/rdconsole/core") + if(src.build_path == /obj/machinery/computer/rdconsole/core) src.name = "Circuit Board (RD Console - Robotics)" - src.build_path = "/obj/machinery/computer/rdconsole/robotics" + src.build_path = /obj/machinery/computer/rdconsole/robotics user << "\blue Access protocols set to robotics." else src.name = "Circuit Board (RD Console)" - src.build_path = "/obj/machinery/computer/rdconsole/core" + src.build_path = /obj/machinery/computer/rdconsole/core user << "\blue Access protocols set to default." return From d81670edfb42483334a60890d8b09eed7fed268f Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 1 Oct 2014 00:48:16 -0400 Subject: [PATCH 15/19] Fixes supply shuttle state when returning When returning to centcom, the supply shuttle's state was not being set to INTRANSIT. --- code/modules/shuttles/shuttle_supply.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index a33f067c8ec..82f921ff90f 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -9,7 +9,7 @@ var/max_late_time = 300 /datum/shuttle/ferry/supply/short_jump(var/area/origin,var/area/destination) - if(moving_status != SHUTTLE_IDLE) + if(moving_status != SHUTTLE_IDLE) return if(isnull(location)) @@ -20,9 +20,6 @@ if(!origin) origin = get_location_area(location) - if (!at_station()) //at centcom - supply_controller.buy() - //it would be cool to play a sound here moving_status = SHUTTLE_WARMUP spawn(warmup_time*10) @@ -34,11 +31,15 @@ moving_status = SHUTTLE_IDLE return + if (!at_station()) //at centcom + supply_controller.buy() + //We pretend it's a long_jump by making the shuttle stay at centcom for the "in-transit" period. var/area/away_area = get_location_area(away_location) - if (origin == away_area) - moving_status = SHUTTLE_INTRANSIT //pretend - else + moving_status = SHUTTLE_INTRANSIT + + //If we are at the away_area then we are just pretending to move, otherwise actually do the move + if (origin != away_area) move(origin, away_area) //wait ETA here. From bb2953b28378e2ba50f79de5ad093118105954dc Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 1 Oct 2014 08:50:28 +0100 Subject: [PATCH 16/19] re-port trange() from tg was lost in the multiz update Signed-off-by: Mloc --- code/__HELPERS/game.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 8c6befa38f8..5b828f8c9bb 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -90,6 +90,14 @@ //turfs += centerturf return atoms +/proc/trange(rad = 0, turf/centre = null) //alternative to range (ONLY processes turfs and thus less intensive) + if(!centre) + return + + var/turf/x1y1 = locate(((centre.x-rad)<1 ? 1 : centre.x-rad),((centre.y-rad)<1 ? 1 : centre.y-rad),centre.z) + var/turf/x2y2 = locate(((centre.x+rad)>world.maxx ? world.maxx : centre.x+rad),((centre.y+rad)>world.maxy ? world.maxy : centre.y+rad),centre.z) + return block(x1y1,x2y2) + /proc/get_dist_euclidian(atom/Loc1 as turf|mob|obj,atom/Loc2 as turf|mob|obj) var/dx = Loc1.x - Loc2.x var/dy = Loc1.y - Loc2.y From 39781326cc9e40e6b71db54abbc5919a962087cd Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 1 Oct 2014 09:54:39 +0100 Subject: [PATCH 17/19] fix for artifact teleportation effect will no longer teleport you inside random objects. Signed-off-by: Mloc --- .../artifact/effects/unknown_effect_teleport.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm index 254be3f3d09..8eca5f355d2 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_teleport.dm @@ -13,10 +13,11 @@ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() sparks.set_up(3, 0, get_turf(user)) sparks.start() - // - user.loc = pick(orange(get_turf(holder), 50)) + + user.Move(pick(trange(50, get_turf(holder)))) + sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(user)) + sparks.set_up(3, 0, user.loc) sparks.start() /datum/artifact_effect/teleport/DoEffectAura() From d43dbaa7b5b9acfeea3c9f60dbab112ab4e36266 Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 1 Oct 2014 10:13:15 +0100 Subject: [PATCH 18/19] resolves #6260 chance was being checked twice, for some reason. Signed-off-by: Mloc --- code/modules/virus2/items_devices.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 8736486734d..b8604b67f86 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -58,12 +58,11 @@ return ..() if(prob(50)) - user << "\The [src] shatters!" + user << "\The [src] shatters!" if(virus2.infectionchance > 0) for(var/mob/living/carbon/target in view(1, get_turf(src))) if(airborne_can_reach(get_turf(src), get_turf(target))) - if(get_infection_chance(target)) - infect_virus2(target,src.virus2) + infect_virus2(target, src.virus2) del src /obj/item/weapon/virusdish/examine() From ee4eafa660af3bf1fb192d48465959c46a342a03 Mon Sep 17 00:00:00 2001 From: Mloc Date: Wed, 1 Oct 2014 10:17:55 +0100 Subject: [PATCH 19/19] fixes #6090 Signed-off-by: Mloc --- code/ZAS/Airflow.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 67ace07fe2a..5d63512c144 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -103,7 +103,7 @@ obj/item/check_airflow_movable(n) density = 1 od = 1 while(airflow_speed > 0) - if(airflow_speed <= 0) return + if(airflow_speed <= 0) break airflow_speed = min(airflow_speed,15) airflow_speed -= vsc.airflow_speed_decay if(airflow_speed > 7) @@ -120,9 +120,9 @@ obj/item/check_airflow_movable(n) if ((!( src.airflow_dest ) || src.loc == src.airflow_dest)) src.airflow_dest = locate(min(max(src.x + xo, 1), world.maxx), min(max(src.y + yo, 1), world.maxy), src.z) if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy)) - return + break if(!istype(loc, /turf)) - return + break step_towards(src, src.airflow_dest) if(ismob(src) && src:client) src:client:move_delay = world.time + vsc.airflow_mob_slowdown