From d5447d9e954a937bc1a18c8baa2f76ad218aff44 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 10 Dec 2015 10:23:49 +1030 Subject: [PATCH 01/20] Fixes #10838 --- code/modules/materials/material_recipes.dm | 2 +- code/modules/materials/materials.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index a5a0608f06f..f146e421654 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -11,7 +11,7 @@ recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]") - if(integrity>=100) + if(integrity>=50) recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") recipes += new/datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 5247291f7c8..ffd1e6ffbc8 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -551,7 +551,7 @@ var/list/name_to_material name = "wood" stack_type = /obj/item/stack/material/wood icon_colour = "#824B28" - integrity = 25 + integrity = 50 icon_base = "solid" explosion_resistance = 2 shard_type = SHARD_SPLINTER From f1630108db7ebac8a3fa33cd88c982033b3df83a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 10 Dec 2015 10:32:35 +1030 Subject: [PATCH 02/20] Fixes #10915 --- code/game/objects/items/robot/robot_items.dm | 4 ++++ code/modules/mob/living/silicon/robot/life.dm | 8 ++++++-- code/modules/mob/living/silicon/robot/robot_modules.dm | 2 +- code/setup.dm | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index afe50bc2b76..3ccf1fb3a96 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -71,6 +71,10 @@ icon_state = "meson" icon = 'icons/obj/clothing/glasses.dmi' +/obj/item/borg/sight/material + name = "\proper material scanner vision" + sight_mode = BORGMATERIAL + /obj/item/borg/sight/hud name = "hud" var/obj/item/clothing/glasses/hud/hud = null diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index f13a09cf953..48f1fb7cc9e 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -145,13 +145,13 @@ /mob/living/silicon/robot/proc/handle_regular_hud_updates() - if (src.stat == 2 || XRAY in mutations || src.sight_mode & BORGXRAY) + if (src.stat == 2 || (XRAY in mutations) || (src.sight_mode & BORGXRAY)) src.sight |= SEE_TURFS src.sight |= SEE_MOBS src.sight |= SEE_OBJS src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_MINIMUM - else if (src.sight_mode & BORGMESON && src.sight_mode & BORGTHERM) + else if ((src.sight_mode & BORGMESON) && (src.sight_mode & BORGTHERM)) src.sight |= SEE_TURFS src.sight |= SEE_MOBS src.see_in_dark = 8 @@ -160,6 +160,10 @@ src.sight |= SEE_TURFS src.see_in_dark = 8 see_invisible = SEE_INVISIBLE_MINIMUM + else if (src.sight_mode & BORGMATERIAL) + src.sight |= SEE_OBJS + src.see_in_dark = 8 + see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGTHERM) src.sight |= SEE_MOBS src.see_in_dark = 8 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 560bf09cc13..df91ca551ff 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -572,7 +572,7 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/miner/New() ..() src.modules += new /obj/item/device/flash(src) - src.modules += new /obj/item/borg/sight/meson(src) + src.modules += new /obj/item/borg/sight/material(src) src.modules += new /obj/item/weapon/wrench(src) src.modules += new /obj/item/weapon/screwdriver(src) src.modules += new /obj/item/weapon/storage/bag/ore(src) diff --git a/code/setup.dm b/code/setup.dm index dbb8a00beba..f501e736690 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -494,6 +494,7 @@ #define BORGMESON 1 #define BORGTHERM 2 #define BORGXRAY 4 +#define BORGMATERIAL 8 // Some arbitrary defines to be used by self-pruning global lists. (see master_controller) #define PROCESS_KILL 26 // Used to trigger removal from a processing list. From 7a9d7bf0c9701e6ef23862ded7e3fac36a33134c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 10 Dec 2015 10:41:48 +1030 Subject: [PATCH 03/20] Fixes #10753 --- baystation12.dme | 1 - code/game/asteroid.dm | 162 -------------------------- code/modules/random_map/random_map.dm | 8 -- 3 files changed, 171 deletions(-) delete mode 100644 code/game/asteroid.dm diff --git a/baystation12.dme b/baystation12.dme index a79cce10948..b4eabf68c0d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -203,7 +203,6 @@ #include "code\defines\procs\records.dm" #include "code\defines\procs\sd_Alert.dm" #include "code\defines\procs\statistics.dm" -#include "code\game\asteroid.dm" #include "code\game\atoms.dm" #include "code\game\atoms_movable.dm" #include "code\game\periodic_news.dm" diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm deleted file mode 100644 index 8aa6b1cd64e..00000000000 --- a/code/game/asteroid.dm +++ /dev/null @@ -1,162 +0,0 @@ - -var/global/list/space_surprises = list( /obj/item/clothing/mask/facehugger =4, - /obj/item/weapon/pickaxe/silver =4, - /obj/item/weapon/pickaxe/drill =4, - /obj/item/weapon/pickaxe/jackhammer =4, - //mob/living/simple_animal/hostile/carp =3, - /obj/item/weapon/pickaxe/diamond =3, - /obj/item/weapon/pickaxe/diamonddrill =3, - /obj/item/weapon/pickaxe/gold =3, - /obj/item/weapon/pickaxe/plasmacutter =2, - /obj/structure/closet/syndicate/resources =2, - /obj/item/weapon/melee/energy/sword/pirate =1, - /obj/mecha/working/ripley/mining =1 - ) - -var/global/list/spawned_surprises = list() - -var/global/max_secret_rooms = 3 - -proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , var/clean = 0 , var/name) - var/list/room_turfs = list("walls"=list(),"floors"=list()) - - //world << "Room spawned at [start_loc.x],[start_loc.y],[start_loc.z]" - if(!wall) - wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin) - if(!floor) - floor = pick(/turf/simulated/floor,/turf/simulated/floor/engine) - - for(var/x = 0,x 100) - return 0 - - T=pick(turfs) - if(!T) - return 0 - - var/list/surroundings = list() - - surroundings += range(7, locate(T.x,T.y,T.z)) - surroundings += range(7, locate(T.x+size,T.y,T.z)) - surroundings += range(7, locate(T.x,T.y+size,T.z)) - surroundings += range(7, locate(T.x+size,T.y+size,T.z)) - - if(locate(/area/mine/explored) in surroundings) // +5s are for view range - valid = 0 - continue - - if(locate(/turf/space) in surroundings) - valid = 0 - continue - - if(locate(/area/asteroid/artifactroom) in surroundings) - valid = 0 - continue - - if(locate(/turf/simulated/floor/plating/airless/asteroid) in surroundings) - valid = 0 - continue - - if(!T) - return 0 - - room = spawn_room(T,size,size,,,1) - - if(room) - T = pick(room["floors"]) - if(T) - var/surprise = null - valid = 0 - while(!valid) - surprise = pickweight(space_surprises) - if(surprise in spawned_surprises) - if(prob(20)) - valid++ - else - continue - else - valid++ - - spawned_surprises.Add(surprise) - new surprise(T) - - return 1 - - diff --git a/code/modules/random_map/random_map.dm b/code/modules/random_map/random_map.dm index 81def6be14c..9de319a838e 100644 --- a/code/modules/random_map/random_map.dm +++ b/code/modules/random_map/random_map.dm @@ -162,12 +162,4 @@ var/global/list/random_maps = list() map[check_cell] = 3 ore_count-- - sleep(-1) - - // Place random asteroid rooms. - var/rooms_placed = 0 - for(var/i = 0, i < max_secret_rooms, i++) - if(make_mining_asteroid_secret()) - rooms_placed++ - admin_notice("Placed [rooms_placed] secrets.", R_DEBUG) return 1 \ No newline at end of file From e9cdc8a0f57a066c5fa588912ed1ebcc25327d45 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 10 Dec 2015 11:03:57 +1030 Subject: [PATCH 04/20] Fixes #9257 --- code/modules/mob/living/silicon/robot/robot_modules.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index df91ca551ff..42a35e89f66 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -322,6 +322,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/crowbar(src) src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) src.modules += new /obj/item/device/pipe_painter(src) + src.modules += new /obj/item/weapon/gripper/no_use/loader(src) var/datum/matter_synth/metal = new /datum/matter_synth/metal() var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel() @@ -675,6 +676,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/lightreplacer(src) src.modules += new /obj/item/weapon/gripper(src) src.modules += new /obj/item/weapon/soap(src) + src.modules += new /obj/item/weapon/gripper/no_use/loader(src) src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src) src.emag.name = "Plasma Cutter" From 0f2b17f7bbcd8cf8501f1548c102b88144728620 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Thu, 10 Dec 2015 13:01:06 +0000 Subject: [PATCH 05/20] fix #11631 --- code/modules/reagents/Chemistry-Machinery.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 726303273aa..354a6482691 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -27,6 +27,7 @@ var/pillsprite = "1" var/client/has_sprites = list() var/max_pill_count = 20 + flags = OPENCONTAINER /obj/machinery/chem_master/New() ..() From ac0e70612feba38c1a3c479700bde0d679fce4ae Mon Sep 17 00:00:00 2001 From: Atlantis Date: Fri, 11 Dec 2015 12:15:53 +0100 Subject: [PATCH 06/20] Fixes #11621 - Fixes #11621 by ensuring reference to analyzed object is nulled even if the analyzed object is not reliable enough - Adds feedback message that warns the user that analyzed item wasn't reliable enough. --- code/modules/mob/living/silicon/robot/robot_items.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 3e072d3d742..9346dbe5d4c 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -33,7 +33,9 @@ for(var/T in temp_tech) files.UpdateTech(T, temp_tech[T]) user << "\The [loaded_item] had level [temp_tech[T]] in [T]." - loaded_item = null + else + user << "\The [loaded_item] was not reliable enough to advance research." + loaded_item = null for(var/obj/I in contents) for(var/mob/M in I.contents) M.death() From 1b05724faf44d4e24396cf534212e3d5015422e5 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Fri, 11 Dec 2015 12:44:25 +0100 Subject: [PATCH 07/20] Map fixes: Engineering outpost, Construction site - Removes incorrectly set ID tags on some emitters at construction site, this fixes #11527 - Unanchors emitters intended for mining at engineering outpost (as intended) - Turns off "Construction computer core" APC and unlocks it in similar way as the other APC in construction site teleporter room, to prevent power alarms on 3h+ rounds (since the construction site doesn't have working power supply). It is unlocked so anyone can turn it on if it's needed. --- maps/exodus-4.dmm | 4 ++-- maps/exodus-5.dmm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index 668fdc33a87..bce4896cbbd 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -87,7 +87,7 @@ "bI" = (/obj/machinery/drone_fabricator/derelict,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "bJ" = (/turf/simulated/floor/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) "bK" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) -"bL" = (/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) +"bL" = (/obj/machinery/power/apc/high{dir = 1; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "north bump"; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "bM" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "bN" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access = list(30)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "bO" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access = list(16)},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) @@ -116,7 +116,7 @@ "cl" = (/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "cm" = (/obj/structure/cable/blue,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "cn" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/turf/simulated/floor/plating/airless,/area/space) -"co" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; id = "EngineEmitter"; state = 2},/turf/simulated/floor/plating/airless,/area/space) +"co" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; id = null; state = 2},/turf/simulated/floor/plating/airless,/area/space) "cs" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "cI" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/fore) "cJ" = (/obj/structure/lattice,/turf/space,/area/constructionsite/hallway/fore) diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 17b6e221430..49e21dc47db 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -1160,7 +1160,7 @@ "wp" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "wq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) "wr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/outpost/engineering/hallway) -"ws" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) +"ws" = (/obj/machinery/power/emitter{anchored = 0; dir = 4; state = 0},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "wt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "wu" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) "wv" = (/turf/simulated/floor,/area/outpost/engineering/atmospherics) From b13e445b40729684f12b21f511fc1ee3b63cf46a Mon Sep 17 00:00:00 2001 From: Atlantis Date: Fri, 11 Dec 2015 13:29:42 +0100 Subject: [PATCH 08/20] Fixes #11456 - Fixes #11456 by using wires.Interact() rather than current method. --- code/game/machinery/suit_storage_unit.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index d1e728e6767..e67a68d931f 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -819,15 +819,12 @@ dat += "
\[apply customisation routine\]


" if(panel_open) - dat += wires() + wires.Interact(user) user << browse(dat, "window=suit_cycler") onclose(user, "suit_cycler") return -/obj/machinery/suit_cycler/proc/wires() - return wires.GetInteractWindow() - /obj/machinery/suit_cycler/Topic(href, href_list) if(href_list["eject_suit"]) if(!suit) return From 02d1a875d1445c7b86dc850288c72221376d566d Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Fri, 11 Dec 2015 18:26:52 -0700 Subject: [PATCH 09/20] Fixes #7075 Disposal holders will now be emptied if they get expelled from a disposal pipe, instead of sitting there hoarding their contents. --- code/modules/recycling/disposal.dm | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 9dd8d1f9560..8658815f5fb 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -740,16 +740,19 @@ // expel the held objects into a turf // called when there is a break in the pipe - // - proc/expel(var/obj/structure/disposalholder/H, var/turf/T, var/direction) - - var/turf/target - - if(T.density) // dense ouput turf, so stop holder - H.active = 0 - H.loc = src + if(!istype(H)) return + + // Empty the holder if it is expelled into a dense turf. + // Leaving it intact and sitting in a wall is stupid. + if(T.density) + for(var/atom/movable/AM in H) + AM.loc = T + AM.pipe_eject(0) + qdel(H) + return + if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile var/turf/simulated/floor/F = T //F.health = 100 @@ -759,6 +762,7 @@ new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff F.icon_state = "Floor[F.burnt ? "1" : ""]" + var/turf/target if(direction) // direction is specified if(istype(T, /turf/space)) // if ended in space, then range is unlimited target = get_edge_target_turf(T, direction) From eae12b8f9c14e872c99e18a76c0bdde77ffd9de4 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Fri, 11 Dec 2015 19:52:18 -0700 Subject: [PATCH 10/20] Fixes #8568 --- code/modules/admin/verbs/randomverbs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0561e53791e..b5bbdb8b69f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -520,7 +520,8 @@ Traitors and the like can also be revived with the previous role mostly intact. if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) P.name = "'[command_name()] Update.'" - P.info = input + P.info = replacetext(input, "\n", "
") + P.update_space(P.info) P.update_icon() C.messagetitle.Add("[command_name()] Update") C.messagetext.Add(P.info) From a97da84b185538f9678885ff72454bfcc8b87364 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Fri, 11 Dec 2015 21:25:23 -0700 Subject: [PATCH 11/20] Fixes #11093 Also fixes a runtime error trying to disposal monkeys and the like. It was doing a type check too late. --- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/recycling/disposal.dm | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index df1db58a343..c90d06c008a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1379,7 +1379,7 @@ /mob/living/carbon/human/MouseDrop(var/atom/over_object) var/mob/living/carbon/human/H = over_object - if(holder_type && a_intent == "help" && H.a_intent == "help" && istype(H) && !issmall(H) && Adjacent(H)) + if(holder_type && a_intent == "help" && istype(H) && H == usr && H.a_intent == "help" && !issmall(H) && Adjacent(H)) get_scooped(H) return return ..() diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 8658815f5fb..a911a5572cf 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -145,9 +145,15 @@ // mouse drop another mob or self // /obj/machinery/disposal/MouseDrop_T(mob/target, mob/user) - if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai)) + if(user.stat || !user.canmove || !istype(target)) return - if(isanimal(user) && target != user) return //animals cannot put mobs other than themselves into disposal + if(target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1) + return + + //animals cannot put mobs other than themselves into disposal + if(isanimal(user) && target != user) + return + src.add_fingerprint(user) var/target_loc = target.loc var/msg From 37a93231d6c591f167cedc54d25b916026cf6115 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 12 Dec 2015 14:09:59 +0300 Subject: [PATCH 12/20] Fixes #8741 --- code/game/verbs/ooc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 82fef02e97c..0cb18bb153c 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -105,7 +105,7 @@ log_ooc("(LOCAL) [mob.name]/[key] : [msg]") var/mob/source = src.mob - var/list/heard = get_mobs_in_view(7, source) + var/list/heard = get_mobs_in_view(7, get_turf(source)) var/display_name = source.key if(holder && holder.fakekey) From 89407059213864f4dcb3c7ee7a2e88fad8356dba Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 12 Dec 2015 14:40:51 +0300 Subject: [PATCH 13/20] Fixes #9091 --- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/computer/security.dm | 2 +- code/game/machinery/computer3/computers/medical.dm | 2 +- code/game/machinery/computer3/computers/security.dm | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 65322b741da..2c44b6164c2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -457,7 +457,7 @@ var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ - src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]
[t1]") if (href_list["del_c"]) if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index f7327c2a887..92e03f01851 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -391,7 +391,7 @@ What a mess.*/ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]
[t1]") if ("Delete Record (ALL)") if (active1) diff --git a/code/game/machinery/computer3/computers/medical.dm b/code/game/machinery/computer3/computers/medical.dm index aec0b615f52..0533f7bc0ff 100644 --- a/code/game/machinery/computer3/computers/medical.dm +++ b/code/game/machinery/computer3/computers/medical.dm @@ -470,7 +470,7 @@ var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ - src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]
[t1]") if (href_list["del_c"]) if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) diff --git a/code/game/machinery/computer3/computers/security.dm b/code/game/machinery/computer3/computers/security.dm index f2de7648943..8a866586fd3 100644 --- a/code/game/machinery/computer3/computers/security.dm +++ b/code/game/machinery/computer3/computers/security.dm @@ -410,7 +410,7 @@ What a mess.*/ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]
[t1]") if ("Delete Record (ALL)") if (active1) From 6c3972f979288aaeb47ea79f269d3faf287706b6 Mon Sep 17 00:00:00 2001 From: Kearel Date: Sat, 12 Dec 2015 12:47:08 -0600 Subject: [PATCH 14/20] Fixes #10550 From what I could tell the bugs were caused by the HUD not being removed and spells not being properly removed from players. --- code/modules/spells/targeted/mind_transfer.dm | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/code/modules/spells/targeted/mind_transfer.dm b/code/modules/spells/targeted/mind_transfer.dm index a3668a53d1d..1f20e6afbf8 100644 --- a/code/modules/spells/targeted/mind_transfer.dm +++ b/code/modules/spells/targeted/mind_transfer.dm @@ -48,13 +48,15 @@ victim.verbs -= V var/mob/dead/observer/ghost = victim.ghostize(0) - ghost.spell_list = victim.spell_list//If they have spells, transfer them. Now we basically have a backup mob. + ghost.spell_list += victim.spell_list//If they have spells, transfer them. Now we basically have a backup mob. caster.mind.transfer_to(victim) - victim.spell_list = list() //clear those out - for(var/spell/S in caster.spell_list) - victim.add_spell(S) //Now they are inside the victim's body - this also generates the HUD - caster.spell_list = list() //clean that out as well + for(var/spell/S in victim.spell_list) //get rid of spells the new way + victim.remove_spell(S) //This will make it so that players will not get the HUD and all that spell bugginess that caused copies of spells and stuff of that nature. + + for(var/spell/S in caster.spell_list) + victim.add_spell(S) //Now they are inside the victim's body - this also generates the HUD + caster.remove_spell(S) //remove the spells from the caster if(victim.mind.special_verbs.len)//To add all the special verbs for the original caster. for(var/V in caster.mind.special_verbs)//Not too important but could come into play. @@ -62,9 +64,9 @@ ghost.mind.transfer_to(caster) caster.key = ghost.key //have to transfer the key since the mind was not active - for(var/spell/S in ghost.spell_list) - caster.add_spell(S) - ghost.spell_list = list() + for(var/spell/S in ghost.spell_list) + caster.add_spell(S) + ghost.spell_list = list() if(caster.mind.special_verbs.len)//If they had any special verbs, we add them here. for(var/V in caster.mind.special_verbs) @@ -76,4 +78,4 @@ //After a certain amount of time the victim gets a message about being in a different body. spawn(msg_wait) - caster << "You feel woozy and lightheaded. Your body doesn't seem like your own." + caster << "You feel woozy and lightheaded. Your body doesn't seem like your own." From d10118e3d047091fc39e0468ffb5b718e9134846 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 12 Dec 2015 12:03:15 -0700 Subject: [PATCH 15/20] Fixes #11346 Fixes #8123 Removes adminbus ability to call down the Icarus... because it's pretty broken. --- baystation12.dme | 1 - code/modules/admin/admin_verbs.dm | 3 - code/modules/admin/verbs/icarus.dm | 130 ------------------ .../projectiles/guns/energy/special.dm | 52 ------- .../modules/projectiles/projectile/special.dm | 13 -- 5 files changed, 199 deletions(-) delete mode 100644 code/modules/admin/verbs/icarus.dm diff --git a/baystation12.dme b/baystation12.dme index b4eabf68c0d..1c02e399cb1 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -835,7 +835,6 @@ #include "code\modules\admin\verbs\diagnostics.dm" #include "code\modules\admin\verbs\dice.dm" #include "code\modules\admin\verbs\getlogs.dm" -#include "code\modules\admin\verbs\icarus.dm" #include "code\modules\admin\verbs\mapping.dm" #include "code\modules\admin\verbs\massmodvar.dm" #include "code\modules\admin\verbs\modifyvariables.dm" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2c58b2dc828..064f10820d1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -125,9 +125,6 @@ var/list/admin_verbs_spawn = list( /datum/admins/proc/spawn_plant, /datum/admins/proc/spawn_atom, /*allows us to spawn instances*/ /client/proc/respawn_character, - /client/proc/FireLaser, - /client/proc/FireCannons, - /client/proc/ChangeIcarusPosition, /client/proc/virus2_editor, /client/proc/spawn_chemdisp_cartridge ) diff --git a/code/modules/admin/verbs/icarus.dm b/code/modules/admin/verbs/icarus.dm deleted file mode 100644 index fd296dacee6..00000000000 --- a/code/modules/admin/verbs/icarus.dm +++ /dev/null @@ -1,130 +0,0 @@ -/client/proc/FireLaser() - set name = "Fire the Icarus lasers" - set desc = "Fires a laser bolt at your position. You should only do this as a(n) (a)ghost" - set category = "Fun" - - var/turf/target = get_turf(src.mob) - log_and_message_admins("has fired the Icarus point defense laser at [target.x]-[target.y]-[target.z]") - if(!src.holder) - src << "Only administrators may use this command." - return - - Icarus_FireLaser(target) - - -/client/proc/FireCannons() - set name = "Fire the Icarus cannons" - set desc = "Fires an explosive missile at your position. You should only do this as a(n) (a)ghost." - set category = "Fun" - - var/turf/target = get_turf(src.mob) - log_and_message_admins("has fired the Icarus main gun projectile at [target.x]-[target.y]-[target.z]") - if(!src.holder) - src << "Only administrators may use this command." - return - - Icarus_FireCannon(target) - - -/client/proc/ChangeIcarusPosition() - set name = "Adjust Icarus Position" - set desc = "Lets you chose the position of the Icarus in regards to the map." - set category = "Fun" - - log_and_message_admins("is changing the Icarus position.") - if(!src.holder) - src << "Only administrators may use this command." - return - - Icarus_SetPosition(src) - -var/icarus_position = SOUTH - -proc/Icarus_FireLaser(var/turf/target) - // Find the world edge to fire from. - var/x = icarus_position & EAST ? world.maxx : icarus_position & WEST ? 1 : target.x - var/y = icarus_position & NORTH ? world.maxy : icarus_position & SOUTH ? 1 : target.y - var/x_off = x != target.x ? abs(target.x - x) : INFINITY - var/y_off = y != target.y ? abs(target.y - y) : INFINITY - // Get the minimum number of steps using the rise/run shit. - var/iterations = round(min(x_off, y_off)) - 14 // We cannot fire straight from the edge since teleport thing. - - // Now we can get the location of the start. - x = target.x + (icarus_position & EAST ? iterations : icarus_position & WEST ? -iterations : 0) - y = target.y + (icarus_position & NORTH ? iterations : icarus_position & SOUTH ? -iterations : 0) - - var/turf/start = locate(x, y, target.z) - - // should step down as: - // 1000, 500, 333, 250, 200, 167, 142, 125, 111, 100, 90 - var/damage = 1000 - for(var/i in 2 to 12) - var/obj/item/projectile/beam/in_chamber = new (start) - in_chamber.original = target - in_chamber.starting = start - in_chamber.silenced = 1 - in_chamber.yo = icarus_position & NORTH ? -1 : icarus_position & SOUTH ? 1 : 0 - in_chamber.xo = icarus_position & EAST ? -1 : icarus_position & WEST ? 1 : 0 - in_chamber.damage = damage - in_chamber.kill_count = 500 - in_chamber.process() - damage -= damage / i - sleep(-1) - - // Let everyone know what hit them. - var/obj/item/projectile/beam/in_chamber = new (start) - in_chamber.original = target - in_chamber.starting = start - in_chamber.silenced = 0 - in_chamber.yo = icarus_position & NORTH ? -1 : icarus_position & SOUTH ? 1 : 0 - in_chamber.xo = icarus_position & EAST ? -1 : icarus_position & WEST ? 1 : 0 - in_chamber.kill_count = 500 - in_chamber.damage = 0 - in_chamber.name = "point defense laser" - in_chamber.firer = "Icarus" // Never displayed, but we want this to display the hit message. - in_chamber.process() - -proc/Icarus_FireCannon(var/turf/target) - // Find the world edge to fire from. - var/x = icarus_position & EAST ? world.maxx : icarus_position & WEST ? 1 : target.x - var/y = icarus_position & NORTH ? world.maxy : icarus_position & SOUTH ? 1 : target.y - var/x_off = x != target.x ? abs(target.x - x) : INFINITY - var/y_off = y != target.y ? abs(target.y - y) : INFINITY - // Get the minimum number of steps using the rise/run shit. - var/iterations = round(min(x_off, y_off)) - 14 // We cannot fire straight from the edge since teleport thing. - - // Now we can get the location of the start. - x = target.x + (icarus_position & EAST ? iterations : icarus_position & WEST ? -iterations : 0) - y = target.y + (icarus_position & NORTH ? iterations : icarus_position & SOUTH ? -iterations : 0) - - var/turf/start = locate(x, y, target.z) - - // Now we find the corresponding turf on the other side of the level. - // Yeah, yeah. Overuse of the terinary operator. So sue me. - x = icarus_position & EAST ? 1 : icarus_position & WEST ? world.maxx : target.x - y = icarus_position & NORTH ? 1 : icarus_position & SOUTH ? world.maxy : target.y - x_off = x != target.x ? abs(target.x - x) : INFINITY - y_off = y != target.y ? abs(target.y - y) : INFINITY - iterations = round(min(x_off, y_off)) - x = target.x + (icarus_position & EAST ? -iterations : icarus_position & WEST ? iterations : 0) - y = target.y + (icarus_position & NORTH ? -iterations : icarus_position & SOUTH ? iterations : 0) - target = locate(x, y, target.z) - - // Finally fire the fucker. - var/obj/effect/meteor/small/projectile = new (start) - projectile.dest = target - projectile.name = "main gun projectile" // stealthy - projectile.hits = 6 - projectile.detonation_chance = 99 // it's a missile/cannon round thing! - - // Make sure it travels - spawn(0) - walk_towards(projectile, projectile.dest, 1) - -proc/Icarus_SetPosition(var/user) - var/global/list/directions = list("North" = 1, "North East" = 5, "East" = 4, "South East" = 6, "South" = 2, "South West" = 10, "West" = 8, "North West" = 9) - var/direction = input(user, "Where should the Icarus fire from?", "Icarus Comms") as null|anything in directions - if(!direction) - return - - icarus_position = directions[direction] diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d9ef1b95047..fce41f1d4bf 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -149,55 +149,3 @@ obj/item/weapon/gun/energy/staff/focus user << "The [src.name] will now strike only a single person." projectile_type = "/obj/item/projectile/forcebolt" */ - -/* Adminbus guns */ - -// Serves as a target spotter for the Icarus. -/obj/item/weapon/gun/energy/icarus - name = "rubber ducky" - desc = "It's a cute rubber duck. With an evil gleam in it's eye." - projectile_type = /obj/item/projectile/icarus/pointdefense - icon = 'icons/obj/watercloset.dmi' - item_icons = null - icon_state = "rubberducky" - item_state = "rubberducky" - charge_cost = 0 - silenced = 1 - -/obj/item/weapon/gun/energy/icarus/attack_self(mob/living/user as mob) - if(projectile_type == /obj/item/projectile/icarus/pointdefense) - projectile_type = /obj/item/projectile/icarus/guns - user << "You inform the Icarus to switch to the main guns." - else - projectile_type = /obj/item/projectile/icarus/pointdefense - user << "You inform the Icarus to switch to the point-defense lasers." - - . = ..() - -/obj/item/weapon/gun/energy/icarus/update_icon() - return - -/obj/item/weapon/gun/energy/icarus/verb/SetIcarusAngle() - set src in usr - set name = "Set Firing Angle" - set desc = "Sets the angle from which the icarus will fire." - set category = "Object" - - Icarus_SetPosition(usr) - - -/obj/item/weapon/gun/energy/variable - name = "abstract weapon" - desc = "It seems to shift and flow as you watch." - charge_cost = 0 - silenced = 1 - -/obj/item/weapon/gun/energy/variable/update_icon() - return - -/obj/item/weapon/gun/energy/variable/attack_self(mob/living/user as mob) - var/type = input(user,"What projectile type?","Projectile", null) as null|anything in typesof(/obj/item/projectile) - if(!type) - return ..() - projectile_type = type - . = ..() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 9ef0aea43c5..8a4ddc2d6be 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -137,16 +137,3 @@ var/mob/living/carbon/human/M = target M.adjustBrainLoss(20) M.hallucination += 20 - -/obj/item/projectile/icarus/pointdefense/process() - Icarus_FireLaser(get_turf(original)) - spawn - qdel(src) - - return - -/obj/item/projectile/icarus/guns/process() - Icarus_FireCannon(get_turf(original)) - spawn - qdel(src) - return From f9af885ee1e06f0a391c808bcf42c1feb9eaec84 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 12 Dec 2015 14:32:22 -0700 Subject: [PATCH 16/20] Admin created newscaster channels now function correctly. Fixes #8326 --- code/modules/admin/topic.dm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 45397fa097b..de178bc2980 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2411,13 +2411,8 @@ else var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") if(choice=="Confirm") - var/datum/feed_channel/newChannel = new /datum/feed_channel - newChannel.channel_name = src.admincaster_feed_channel.channel_name - newChannel.author = src.admincaster_signature - newChannel.locked = src.admincaster_feed_channel.locked - newChannel.is_admin_channel = 1 - feedback_inc("newscaster_channels",1) - news_network.network_channels += newChannel //Adding channel to the global network + news_network.CreateFeedChannel(admincaster_feed_channel.channel_name, admincaster_signature, admincaster_feed_channel.locked, 1) + feedback_inc("newscaster_channels",1) //Adding channel to the global network log_admin("[key_name_admin(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!") src.admincaster_screen=5 src.access_news_network() From ddf66a5f39ec1c8d59dda19dcd233e90cb62de2a Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sat, 12 Dec 2015 21:56:37 +0000 Subject: [PATCH 17/20] fix slime core injecting not working --- code/modules/mob/living/carbon/metroid/items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm index 6739cb4e2b9..1271bb7da33 100644 --- a/code/modules/mob/living/carbon/metroid/items.dm +++ b/code/modules/mob/living/carbon/metroid/items.dm @@ -11,6 +11,7 @@ origin_tech = "biotech=4" var/Uses = 1 // uses before it goes inert var/enhanced = 0 //has it been enhanced before? + flags = OPENCONTAINER attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/weapon/slimesteroid2)) From a5b0f86c194db2ee190a48845a4bc4cf6b563a54 Mon Sep 17 00:00:00 2001 From: Joseph Heinemeyer Date: Sat, 12 Dec 2015 15:24:13 -0700 Subject: [PATCH 18/20] s/"help"/I_HELP/g --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c90d06c008a..cabbc1474f3 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1379,7 +1379,7 @@ /mob/living/carbon/human/MouseDrop(var/atom/over_object) var/mob/living/carbon/human/H = over_object - if(holder_type && a_intent == "help" && istype(H) && H == usr && H.a_intent == "help" && !issmall(H) && Adjacent(H)) + if(holder_type && a_intent == I_HELP && istype(H) && H == usr && H.a_intent == I_HELP && !issmall(H) && Adjacent(H)) get_scooped(H) return return ..() From 415f78ee186a3338261a9f9044f6bc69ae0c3dea Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 12 Dec 2015 16:29:05 -0700 Subject: [PATCH 19/20] Chem grenades are no longer melted by acid. Fixes #10478 --- code/game/objects/items/weapons/grenades/chem_grenade.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index b559527ef7e..d010e70b0ff 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -6,6 +6,7 @@ w_class = 2.0 force = 2.0 det_time = null + unacidable = 1 var/stage = 0 var/state = 0 var/path = 0 From b31a5ba836fa154e1db73c7dab551801329cf347 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Sun, 13 Dec 2015 10:21:00 +0100 Subject: [PATCH 20/20] Compilation fixes. --- code/__defines/mobs.dm | 1 + code/game/verbs/ooc.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index ef268bf1e6b..d7db1726e30 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -25,6 +25,7 @@ #define BORGMESON 1 #define BORGTHERM 2 #define BORGXRAY 4 +#define BORGMATERIAL 8 #define HOSTILE_STANCE_IDLE 1 #define HOSTILE_STANCE_ALERT 2 diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 0cb0067eb5b..f2a2d74f117 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -108,7 +108,7 @@ log_ooc("(LOCAL) [mob.name]/[key] : [msg]") var/mob/source = mob.get_looc_source() - var/list/heard = get_mobs_in_view(7, get_turf(source)) + var/list/heard = get_mobs_or_objects_in_view(7, get_turf(source), 1, 0) var/display_name = key if(holder && holder.fakekey)