From 068976c9714c04a168f8987bf4df7fe3bc28662f Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Tue, 31 Oct 2017 16:37:09 +0800 Subject: [PATCH 01/32] Rebalances citprojectiles somewhat Magjectiles have had their speed and range nerfed by about 50%, non lethal 9mms have lower speed and drastically lower range. --- code/citadel/cit_guns.dm | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 8a90e75a6b..0d88ab6407 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -213,6 +213,8 @@ damage = 15 armour_penetration = 10 light_range = 2 + speed = 1.2 + range = 25 light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/nlmags //non-lethal boolets @@ -220,9 +222,11 @@ icon_state = "magjectile-nl" damage = 1 knockdown = 0 - stamina = 25 + stamina = 30 armour_penetration = -10 light_range = 2 + speed = 1.2 + range = 25 light_color = LIGHT_COLOR_BLUE @@ -378,19 +382,23 @@ /obj/item/projectile/bullet/magrifle icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large" - damage = 25 + damage = 20 armour_penetration = 25 light_range = 3 + speed = 1.2 + range = 35 light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/nlmagrifle //non-lethal boolets icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "magjectile-large-nl" - damage = 2 + damage = 1 knockdown = 0 - stamina = 30 + stamina = 35 armour_penetration = -10 light_range = 3 + speed = 1.0 + range = 35 light_color = LIGHT_COLOR_BLUE ///ammo casings/// @@ -1070,12 +1078,16 @@ obj/item/projectile/bullet/c10mm/soporific name = "9mm frangible bullet" damage = 15 stamina = 0 + speed = 1.0 + range = 20 armour_penetration = -25 /obj/item/projectile/bullet/c9mm/rubber name = "9mm rubber bullet" - damage = 2 - stamina = 25 + damage = 5 + stamina = 30 + speed = 1.2 + range = 14 knockdown = 0 /obj/item/ammo_casing/c9mm/frangible From beb27926b29807d23fe285db4b2d963d4b087e4b Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Tue, 31 Oct 2017 18:00:45 +0800 Subject: [PATCH 02/32] Fixes Cit's Toys a little Mk.37F no longer needs a permit, Non euplastic blade no longer can turn into dual toyswords --- code/citadel/cit_guns.dm | 3 ++- code/citadel/cit_weapons.dm | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 8a90e75a6b..f5d26eb49f 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -494,7 +494,7 @@ name = "foamag rifle" desc = "A foam launching magnetic rifle. Ages 8 and up." icon_state = "foamagrifle" - needs_permit = 0 + needs_permit = FALSE mag_type = /obj/item/ammo_box/magazine/toy/foamag casing_ejector = FALSE origin_tech = "combat=2;engineering=2;magnets=2" @@ -1158,6 +1158,7 @@ obj/item/projectile/bullet/c10mm/soporific desc = "A licensed foam-firing reproduction of a handgun with a toggle-locking mechanism manufactured by CX Armories. This model is coated with a special polychromic material. Uses standard foam pistol magazines." icon_state = "p37_foam" spawnwithmagazine = TRUE + needs_permit = FALSE mag_type = /obj/item/ammo_box/magazine/toy/pistol can_suppress = FALSE actions_types = list(/datum/action/item_action/pick_color) diff --git a/code/citadel/cit_weapons.dm b/code/citadel/cit_weapons.dm index 466a41e427..7526f3f6b6 100644 --- a/code/citadel/cit_weapons.dm +++ b/code/citadel/cit_weapons.dm @@ -72,6 +72,9 @@ blade_inhand.color = light_color . += blade_inhand +/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params) + return //NO MORE MAKING DUAL ESWORDS + /*///autolathe memes/// I really need to stop doing this and find a proper way of adding in my toys /datum/design/toyneb From e0a153c4c710820ac0e271ce549f61cda3cf9d79 Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Tue, 31 Oct 2017 19:47:20 +0800 Subject: [PATCH 03/32] 9mm frangibles now requires hacked lathes, costs slightly less They are by all means, lethal, even if they absolutely pale in comparison to regular bullets. They'll cost ever so slightly less materials to build. --- code/citadel/cit_guns.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 0d88ab6407..bceeb820e2 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -1132,9 +1132,9 @@ obj/item/projectile/bullet/c10mm/soporific name = "Box of 9mm Frangible Bullets" id = "9mm_frag" build_type = AUTOLATHE - materials = list(MAT_METAL = 30000) + materials = list(MAT_METAL = 25000) build_path = /obj/item/ammo_box/c9mm/frangible - category = list("initial", "Security") + category = list("hacked", "Security") /datum/design/c9mmrubber name = "Box of 9mm Rubber Bullets" From 8a7f8c9bc6c0a69e1d201b620c1458ef151a98aa Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Tue, 31 Oct 2017 07:07:57 -0700 Subject: [PATCH 05/32] Fixes admin buildmode stripping people naked yet again, adds GetAllContentsIgnoring (#31769) * Add GetAllContentsIgnoring which accepts an ignore typecache to ignore * Update turf.dm * fixes * Update unsorted.dm * Update turf.dm --- code/__HELPERS/unsorted.dm | 13 +++++++++++++ code/game/turfs/turf.dm | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c9b392ed76..6b3c03b180 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -518,6 +518,19 @@ Turf and target are separate in case you want to teleport some distance from a t assembled += A return assembled +/atom/proc/GetAllContentsIgnoring(list/ignore_typecache) + if(!ignore_typecache) + return GetAllContents() + var/list/processing = list(src) + var/list/assembled = list() + while(processing.len) + var/atom/A = processing[1] + processing.Cut(1,2) + if(!ignore_typecache[A.type]) + processing += A.contents + assembled += A + return assembled + //Step-towards method of determining whether one atom can see another. Similar to viewers() /proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. var/turf/current = get_turf(source) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 40c026a7cb..815ee91520 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -440,7 +440,7 @@ /turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, forceop = FALSE) // Remove all atoms except observers, landmarks, docking ports var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object)) - var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(), ignored_atoms | ignore_typecache) + var/list/allowed_contents = typecache_filter_list_reverse(GetAllContentsIgnoring(ignore_typecache), ignored_atoms) allowed_contents -= src for(var/i in 1 to allowed_contents.len) var/thing = allowed_contents[i] From d836803b5314735e490eabafe6b7f7d8521cf8f3 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Tue, 31 Oct 2017 07:13:19 -0700 Subject: [PATCH 07/32] Makes varediting pneumatic cannon easier and makes the code less snowflake-y (#31752) * Update pneumaticCannon.dm * Update pneumaticCannon.dm * Update pneumaticCannon.dm * Update pneumaticCannon.dm * Update pneumaticCannon.dm * Update pneumaticCannon.dm --- code/game/objects/items/pneumaticCannon.dm | 55 +++++++++++++--------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 9a5928665c..3aba3d05f2 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -26,8 +26,31 @@ var/fire_mode = PCANNON_FIREALL var/automatic = FALSE var/clumsyCheck = TRUE + var/list/allowed_typecache //Leave as null to allow all. + var/charge_amount = 1 + var/charge_ticks = 1 + var/charge_tick = 0 + var/charge_type + var/selfcharge = FALSE trigger_guard = TRIGGER_GUARD_NORMAL + +/obj/item/pneumatic_cannon/Initialize() + . = ..() + if(selfcharge) + init_charge() + +/obj/item/pneumatic_cannon/proc/init_charge() //wrapper so it can be vv'd easier + START_PROCESSING(SSobj, src) + +/obj/item/pneumatic_cannon/process() + if(++charge_tick >= charge_ticks && charge_type) + fill_with_type(charge_type, charge_amount) + +/obj/item/pneumatic_cannon/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + /obj/item/pneumatic_cannon/CanItemAutoclick() return automatic @@ -75,6 +98,10 @@ load_item(IW, user) /obj/item/pneumatic_cannon/proc/can_load_item(obj/item/I, mob/user) + if(allowed_typecache && is_type_in_typecache(I, allowed_typecache)) + if(user) + to_chat(user, "[I] won't fit into [src]!") + return if((loadedWeightClass + I.w_class) > maxWeightClass) //Only make messages if there's a user if(user) to_chat(user, "\The [I] won't fit into \the [src]!") @@ -233,28 +260,14 @@ throw_amount = 1 maxWeightClass = 150 //50 pies. :^) clumsyCheck = FALSE + var/static/list/pie_typecache = typecacheof(/obj/item/reagent_containers/food/snacks/pie) -/obj/item/pneumatic_cannon/pie/can_load_item(obj/item/I, mob/user) - if(istype(I, /obj/item/reagent_containers/food/snacks/pie)) - return ..() - to_chat(user, "[src] only accepts pies!") - return FALSE - +/obj/item/pneumatic_cannon/pie/Initialize() + . = ..() + allowed_typecache = pie_typecache + /obj/item/pneumatic_cannon/pie/selfcharge automatic = TRUE - var/charge_amount = 1 - var/charge_ticks = 1 - var/charge_tick = 0 + selfcharge = TRUE + charge_type = /obj/item/reagent_containers/food/snacks/pie/cream maxWeightClass = 60 //20 pies. - -/obj/item/pneumatic_cannon/pie/selfcharge/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/pneumatic_cannon/pie/selfcharge/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/pneumatic_cannon/pie/selfcharge/process() - if(++charge_tick >= charge_ticks) - fill_with_type(/obj/item/reagent_containers/food/snacks/pie/cream, charge_amount) From 16c2f8f4c7f174baa75c4411a5227ff8bb7b061a Mon Sep 17 00:00:00 2001 From: Mercenaryblue Date: Sun, 29 Oct 2017 19:45:54 -0400 Subject: [PATCH 09/32] Honkbots Tablecrafting You can now tablecraft Honkbots. --- code/modules/crafting/recipes.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 65a78d0ef0..191c2b442b 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -179,6 +179,16 @@ time = 40 category = CAT_ROBOT +/datum/crafting_recipe/honkbot + name = "Honkbot" + result = /mob/living/simple_animal/bot/honkbot + reqs = list(/obj/item/storage/box/clown = 1, + /obj/item/bodypart/r_arm/robot = 1, + /obj/item/device/assembly/prox_sensor = 1, + /obj/item/bikehorn/ = 1) + time = 40 + category = CAT_ROBOT + /datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but name = "Pneumatic Cannon" result = /obj/item/pneumatic_cannon/ghetto From 5118e6efe9c50c5574c26bc161c1599a63d57ad1 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Tue, 31 Oct 2017 16:09:10 -0400 Subject: [PATCH 11/32] Makes isbanned have an arg for only checking real bans (#32248) * makes isbanned have an arg for only checking real bans * makes it return false if invalid data is passed in on a real bans check --- code/modules/admin/IsBanned.dm | 8 +++++--- code/modules/goonchat/browserOutput.dm | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 10a3774ae1..af3d1c5375 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -6,8 +6,10 @@ #define STICKYBAN_MAX_EXISTING_USER_MATCHES 5 //ie, users who were connected before the ban triggered #define STICKYBAN_MAX_ADMIN_MATCHES 2 -/world/IsBanned(key,address,computer_id) +/world/IsBanned(key,address,computer_id,real_bans_only=FALSE) if (!key || !address || !computer_id) + if(real_bans_only) + return FALSE log_access("Failed Login (invalid data): [key] [address]-[computer_id]") return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided invalid or blank information to the server on connection (byond username, IP, and Computer ID.) Provided information for reference: Username:'[key]' IP:'[address]' Computer ID:'[computer_id]'. (If you continue to get this error, please restart byond or contact byond support.)") @@ -31,7 +33,7 @@ return list("reason"="whitelist", "desc" = "\nReason: You are not on the white list for this server") //Guest Checking - if(IsGuestKey(key)) + if(!real_bans_only && IsGuestKey(key)) if (CONFIG_GET(flag/guest_ban)) log_access("Failed Login: [key] - Guests not allowed") return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.") @@ -41,7 +43,7 @@ //Population Cap Checking var/extreme_popcap = CONFIG_GET(number/extreme_popcap) - if(extreme_popcap && living_player_count() >= extreme_popcap && !admin) + if(!real_bans_only && extreme_popcap && living_player_count() >= extreme_popcap && !admin) log_access("Failed Login: [key] - Population cap reached") return list("reason"="popcap", "desc"= "\nReason: [CONFIG_GET(string/extreme_popcap_message)]") diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 408da4c401..602cef5f5e 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -158,7 +158,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic var/list/row = src.connectionHistory[i] if (!row || row.len < 3 || (!row["ckey"] || !row["compid"] || !row["ip"])) //Passed malformed history object return - if (world.IsBanned(row["ckey"], row["compid"], row["ip"])) + if (world.IsBanned(row["ckey"], row["compid"], row["ip"], real_bans_only=TRUE)) found = row break From 0e037767cda41dafb02b4c347f698dc2f4004d8b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 31 Oct 2017 16:10:52 -0400 Subject: [PATCH 13/32] Minor optimization for _GetInverseTypeList (#32155) * Minor optimization for _GetInverseTypeList * We also need to make sure the root component is never instantiated to avoid stack overflows --- code/datums/components/_component.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4e187a6a08..91a6436d04 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -6,6 +6,10 @@ var/datum/parent /datum/component/New(datum/P, ...) + if(type == /datum/component) + qdel(src) + CRASH("[type] instantiated!") + parent = P var/list/arguments = args.Copy() arguments.Cut(1, 2) @@ -91,8 +95,7 @@ /datum/component/proc/_RemoveFromParent() var/datum/P = parent var/list/dc = P.datum_components - var/our_type = type - for(var/I in _GetInverseTypeList(our_type)) + for(var/I in _GetInverseTypeList()) var/list/components_of_type = dc[I] if(islist(components_of_type)) // var/list/subtracted = components_of_type - src @@ -133,8 +136,11 @@ set waitfor = FALSE return -/datum/component/proc/_GetInverseTypeList(current_type) - . = list(current_type) +/datum/component/proc/_GetInverseTypeList(our_type = type) + //we can do this one simple trick + var/current_type = parent_type + . = list(our_type, current_type) + //and since most components are root level + 1, this won't even have to run while (current_type != /datum/component) current_type = type2parent(current_type) . += current_type From 55653fa1eec0503fb2d69dbface69456fa73c323 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 31 Oct 2017 16:11:32 -0400 Subject: [PATCH 15/32] Replace most islist calls in components with length() (#32158) islist was used to check if a thing was A. A list of things B. 1 thing length was profiled to be faster --- code/datums/components/_component.dm | 12 ++++++------ code/datums/datum.dm | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4e187a6a08..98aabd528e 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -56,7 +56,7 @@ var/test = dc[I] if(test) //already another component of this type here var/list/components_of_type - if(!islist(test)) + if(!length(test)) components_of_type = list(test) dc[I] = components_of_type else @@ -94,7 +94,7 @@ var/our_type = type for(var/I in _GetInverseTypeList(our_type)) var/list/components_of_type = dc[I] - if(islist(components_of_type)) // + if(length(components_of_type)) // var/list/subtracted = components_of_type - src if(subtracted.len == 1) //only 1 guy left dc[I] = subtracted[1] //make him special @@ -146,7 +146,7 @@ var/list/arguments = args.Copy() arguments.Cut(1, 2) var/target = comps[/datum/component] - if(!islist(target)) + if(!length(target)) var/datum/component/C = target if(!C.enabled) return FALSE @@ -182,7 +182,7 @@ if(!dc) return null . = dc[c_type] - if(islist(.)) + if(length(.)) return .[1] /datum/proc/GetExactComponent(c_type) @@ -191,7 +191,7 @@ return null var/datum/component/C = dc[c_type] if(C) - if(islist(C)) + if(length(C)) C = C[1] if(C.type == c_type) return C @@ -202,7 +202,7 @@ if(!dc) return null . = dc[c_type] - if(!islist(.)) + if(!length(.)) return list(.) /datum/proc/AddComponent(new_type, ...) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index f7b15035d1..00dd796f47 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -24,7 +24,7 @@ var/list/dc = datum_components if(dc) var/all_components = dc[/datum/component] - if(islist(all_components)) + if(length(all_components)) for(var/I in all_components) var/datum/component/C = I C._RemoveFromParent() From 771cce48ad543e769121310429fcf30f7d338817 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 1 Nov 2017 09:13:41 +1300 Subject: [PATCH 17/32] Merge pull request #32182 from AutomaticFrenzy/patch/raven Fix improper diagonal corners on the Raven shuttle --- _maps/shuttles/emergency_raven.dmm | 676 +++++------------------------ 1 file changed, 107 insertions(+), 569 deletions(-) diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index 2b21ec0c97..7f427f3b9a 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -1,24 +1,21 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/open/space, /obj/machinery/porta_turret/centcom_shuttle{ dir = 9 }, -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, +/turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) "ab" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) "ac" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters{ id = "shuttleshutters"; name = "blast shutters" }, +/obj/structure/grille, +/obj/structure/window/plastitanium, /turf/open/floor/plating, /area/shuttle/escape) "ad" = ( @@ -277,20 +274,20 @@ /area/shuttle/escape) "aT" = ( /obj/structure/table/reinforced, -/obj/item/storage/firstaid/toxin, /obj/item/storage/firstaid/o2{ pixel_x = 4; pixel_y = 4 }, +/obj/item/storage/firstaid/toxin, /turf/open/floor/plasteel/black, /area/shuttle/escape) "aU" = ( /obj/structure/table/reinforced, -/obj/item/storage/firstaid/fire, /obj/item/storage/firstaid/brute{ pixel_x = 3; pixel_y = 4 }, +/obj/item/storage/firstaid/fire, /turf/open/floor/plasteel/black, /area/shuttle/escape) "aV" = ( @@ -639,15 +636,15 @@ /area/shuttle/escape) "bH" = ( /obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 3; - pixel_y = -6 - }, -/obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/electrical{ pixel_x = -2; pixel_y = 5 }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 3; + pixel_y = -6 + }, /turf/open/floor/plasteel/darkgreen/side{ dir = 9; icon_state = "darkgreen" @@ -664,7 +661,8 @@ }, /area/shuttle/escape) "bJ" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/grille, +/obj/structure/window/plastitanium, /turf/open/floor/plating, /area/shuttle/escape) "bK" = ( @@ -972,39 +970,14 @@ }, /area/shuttle/escape) "cr" = ( -/turf/open/space, /obj/machinery/porta_turret/centcom_shuttle{ dir = 5 }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, +/turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) "cs" = ( /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) -"ct" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cu" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cv" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cw" = ( -/turf/open/space, -/obj/machinery/porta_turret/centcom_shuttle{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "cx" = ( /turf/open/space, /turf/closed/wall/mineral/plastitanium{ @@ -1037,30 +1010,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/shuttle/escape) -"cB" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cC" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) "cD" = ( /turf/open/space, /turf/closed/wall/mineral/plastitanium{ icon_state = "diagonalWall3" }, /area/shuttle/escape) -"cE" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cF" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cG" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cH" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) "cI" = ( /turf/open/space, /turf/closed/wall/mineral/plastitanium{ @@ -1068,381 +1023,18 @@ icon_state = "diagonalWall3" }, /area/shuttle/escape) -"cJ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cK" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cL" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cM" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cN" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cO" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cP" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cQ" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cR" = ( -/turf/open/space, -/obj/machinery/porta_turret/centcom_shuttle{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"cS" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cT" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cU" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cV" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cW" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cX" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cY" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"cZ" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"da" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"db" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dc" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dd" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"de" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"df" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dg" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dh" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"di" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dj" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dk" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dl" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dm" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dn" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"do" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dp" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dq" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dr" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"ds" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dt" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"du" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dv" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dw" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dx" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dy" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dz" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dA" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dC" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dD" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dE" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dF" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"dG" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dH" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dI" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dJ" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dK" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dL" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dM" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dN" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dO" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dP" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dQ" = ( -/turf/open/space, -/obj/machinery/porta_turret/centcom_shuttle{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dR" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dS" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dT" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dU" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dV" = ( -/turf/open/space, -/obj/machinery/porta_turret/centcom_shuttle{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"dW" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dX" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dY" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"dZ" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ea" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"eb" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ec" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ed" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ee" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ef" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"eg" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"eh" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) "ei" = ( -/turf/open/space, /obj/machinery/porta_turret/centcom_shuttle{ dir = 10 }, -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"ej" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ek" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"el" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"em" = ( /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) "en" = ( -/turf/open/space, /obj/machinery/porta_turret/centcom_shuttle{ dir = 6 }, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"eo" = ( /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) -"ep" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"eq" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"er" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"es" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"et" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"eu" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ev" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"ew" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"ex" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ey" = ( -/turf/closed/wall/mineral/plastitanium/interior, -/area/shuttle/escape) -"ez" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"eA" = ( -/turf/open/space, -/obj/machinery/porta_turret/centcom_shuttle{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "eB" = ( /obj/machinery/flasher{ id = "shuttleflash"; @@ -1489,22 +1081,10 @@ dir = 8 }, /area/shuttle/escape) -"eG" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 1 - }, -/area/shuttle/escape) "eH" = ( /obj/machinery/light, /turf/open/floor/plasteel/darkgreen/side, /area/shuttle/escape) -"eI" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/darkgreen/side, -/area/shuttle/escape) "eJ" = ( /obj/machinery/button/flasher{ id = "cockpit_flasher"; @@ -1514,30 +1094,6 @@ /obj/machinery/light, /turf/open/floor/mineral/titanium/blue, /area/space) -"eK" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 1 - }, -/area/shuttle/escape) -"eL" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 1 - }, -/area/shuttle/escape) -"eM" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 1 - }, -/area/shuttle/escape) "eN" = ( /obj/machinery/light{ dir = 4 @@ -1547,62 +1103,44 @@ }, /area/shuttle/escape) "eO" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 8 - }, +/obj/machinery/status_display, +/turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) "eP" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/darkgreen/side, +/turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) "eQ" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 4 - }, -/area/shuttle/escape) -"eR" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/darkgreen/side, -/area/shuttle/escape) -"eS" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/darkgreen/side, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) (1,1,1) = {" aa cs ac ac -cD +cs ad aa -cu -cu +bJ +bJ cs -cu -cu +bJ +bJ bs cs bE -cu -cu -cD +bJ +bJ +cs ad aa bs -cu +bJ bs cs -cu +bJ cs -cu +bJ ei ad ad @@ -1629,17 +1167,17 @@ bK bM cs ad -cu +bJ bF be be -eO +eF be be cd -cu +bJ ad -cx +cs ar co "} @@ -1686,25 +1224,25 @@ ar aJ ar cs -cu -cu -cu -cu +bJ +bJ +bJ +bJ cs -ar -eG +eP +eE aC eH ar bT bo -eK +eE bZ ca aC bZ ca -eR +eH ab ch ar @@ -1788,25 +1326,25 @@ ar aM ar cs -cu -cu -ab +bJ +bJ +eO br bz -bo +eO cs bL bP ar bU bo -eL +eE bZ ca aC bZ ca -eS +eH ab ci ar @@ -1830,7 +1368,7 @@ bz cs bH bG -eI +eH cs cs cs @@ -1867,7 +1405,7 @@ aZ bQ cs ad -cu +bJ bW aZ bq @@ -1875,9 +1413,9 @@ aC by aZ ce -cu +bJ ad -cy +cs ar co "} @@ -1885,8 +1423,8 @@ co cr cs ac -cA -cI +ac +cs ad cr cs @@ -1896,19 +1434,19 @@ ar br bz ar -cu -cu -cu -cI +bJ +bJ +bJ +cs ad cr -cu -cs +bJ +eP br aC bz -cs -cu +eP +bJ en ad ad @@ -1937,11 +1475,11 @@ ad ad ad ad -cu +bJ cb aC cc -cu +bJ ad ad ad @@ -1952,15 +1490,15 @@ ad (12,1,1) = {" ad ad -cx cs -cu cs -cu -cu -cu +bJ cs -bo +bJ +bJ +bJ +cs +eO bt bA bo @@ -1971,14 +1509,14 @@ ad aa cs cs -cs -eM +eP +eE aC +eH eP cs cs cs -cD ad ad ad @@ -1997,10 +1535,10 @@ bl bp bu bA -cu -ad -ad +bJ ad +eQ +eQ ad cs bV @@ -2019,11 +1557,11 @@ ad "} (14,1,1) = {" ad -cu +bJ as aC aC -cu +bJ aT aC bh @@ -2031,12 +1569,12 @@ bh aC bv bB -cu +bJ ad +eQ +eQ ad -eJ -ad -cu +bJ br bX bX @@ -2046,18 +1584,18 @@ bX bX bX bz -cu +bJ ad ad ad "} (15,1,1) = {" ad -cu +bJ at aD aC -cu +bJ aU aC aC @@ -2065,12 +1603,12 @@ aC aC aC bC -cu +bJ ad +eQ +eQ ad -ad -ad -cu +bJ br bY bY @@ -2080,7 +1618,7 @@ bY bY bY bz -cu +bJ ad ad ad @@ -2099,10 +1637,10 @@ bm bi bm ar -cI -ad -ad +cs ad +eQ +eQ ad cs bW @@ -2110,7 +1648,7 @@ aZ aZ eN aZ -eQ +eN aZ aZ ce @@ -2122,17 +1660,17 @@ ad (17,1,1) = {" ad ad -cy -cs -cu cs cs -cu -cu -cu -cu +bJ +cs +cs +bJ +bJ +bJ +bJ +cs cs -cI ad ad ad @@ -2140,15 +1678,15 @@ ad ad cr cs -cu -cu +bJ +bJ ab -cu +bJ ab -cu -cu +bJ +bJ +cs cs -cI ad ad ad From adca4820085e373e403b8a4c31a79a893b15832c Mon Sep 17 00:00:00 2001 From: FrozenGuy5 <31222036+praisenarsie@users.noreply.github.com> Date: Tue, 31 Oct 2017 21:18:22 +0100 Subject: [PATCH 19/32] Nerfs smoke machine + improves grammar (#32196) * https is the way to go * changes links to https:// instead of http:// * tsk tsk byond * Nerfs smoke machine + improves grammar * requested changes * i can spell --- .../modules/reagents/chemistry/machinery/smoke_machine.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index 2365bb03ed..dc92dd3b52 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -1,6 +1,6 @@ /obj/machinery/smoke_machine - name = "Smoke Machine" - desc = "Seriously man?" + name = "smoke machine" + desc = "A machine with a centrifuge installed into it. It produces smoke with any reagents you put into the machine." icon = 'icons/obj/chemical.dmi' icon_state = "smoke0" density = TRUE @@ -11,9 +11,9 @@ var/cooldown = 0 var/screen = "home" var/useramount = 30 // Last used amount - var/volume = 1000 + var/volume = 300 var/setting = 3 - var/list/possible_settings = list(3,6,9,12,15) + var/list/possible_settings = list(3,6,9) /datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting = 3, efficiency = 10, loc) amount = setting From aa88e6116998c1daa6bf19571da2a65dfe818b3d Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 1 Nov 2017 09:20:58 +1300 Subject: [PATCH 21/32] Merge pull request #32109 from ACCount12/runtime_a_day Fixes a common runtime on prefs screen --- code/modules/surgery/bodyparts/dismemberment.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 279589c4b1..9784dd115c 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -121,14 +121,22 @@ O.transfer_to_limb(src, C) update_icon_dropped() - forceMove(T) C.update_health_hud() //update the healthdoll C.update_body() C.update_hair() C.update_canmove() + + if(!T) // T = null happens when a "dummy human" used for rendering icons on prefs screen gets its limbs replaced. + qdel(src) + return + if(is_pseudopart) drop_organs(C) //Psuedoparts shouldn't have organs, but just in case qdel(src) + return + + forceMove(T) + //when a limb is dropped, the internal organs are removed from the mob and put into the limb From fcfc1d82c91a97270d83848f6ed58a1f6ec18240 Mon Sep 17 00:00:00 2001 From: JJRcop Date: Tue, 31 Oct 2017 16:20:28 -0400 Subject: [PATCH 23/32] Webhook now comments its diff (#32151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Webhook now comments its diff instead of its dump * Fixes variable access in webhook * Fixes webhook regex flaw * Missing semicolon in webhook well... I don't have much to say to you this is... i mean... 😀😀😁😁😁😁😂😂😂😂😂😂😂😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 * Fixes anoher webhook regex issue * Re-adds content to webhook update * Encapsulates webhook diff in
--- .../github_webhook_processor.php | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index 37805aae7a..20d5631b73 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -519,32 +519,46 @@ function update_pr_balance($payload) { fclose($balances_file); } -function auto_update($payload){ - global $enable_live_tracking; - global $path_to_script; - global $repoOwnerAndName; - global $tracked_branch; - if(!$enable_live_tracking || !has_tree_been_edited($payload, $path_to_script) || $payload['pull_request']['base']['ref'] != $tracked_branch) - return; - - $content = file_get_contents('https://raw.githubusercontent.com/' . $repoOwnerAndName . '/' . $tracked_branch . '/'. $path_to_script); - - create_comment($payload, "Edit detected. Self updating... Here is my new code:\n``" . "`HTML+PHP\n" . $content . "\n``" . '`'); - - $code_file = fopen(basename($path_to_script), 'w'); - fwrite($code_file, $content); - fclose($code_file); -} - $github_diff = null; -function has_tree_been_edited($payload, $tree){ +function get_diff($payload) { global $github_diff; if ($github_diff === null) { //go to the diff url $url = $payload['pull_request']['diff_url']; $github_diff = file_get_contents($url); } + return $github_diff; +} + +function auto_update($payload){ + global $enable_live_tracking; + global $path_to_script; + global $repoOwnerAndName; + global $tracked_branch; + global $github_diff; + if(!$enable_live_tracking || !has_tree_been_edited($payload, $path_to_script) || $payload['pull_request']['base']['ref'] != $tracked_branch) + return; + + get_diff($payload); + $content = file_get_contents('https://raw.githubusercontent.com/' . $repoOwnerAndName . '/' . $tracked_branch . '/'. $path_to_script); + $content_diff = "### Diff not available. :slightly_frowning_face:"; + if($github_diff && preg_match('/(diff --git a\/' . preg_quote($path_to_script, '/') . '.+?)(?:^diff)?/sm', $github_diff, $matches)) { + $script_diff = matches[1]; + if($script_diff) { + $content_diff = "``" . "`DIFF\n" . $script_diff ."\n``" . "`"; + } + } + create_comment($payload, "Edit detected. Self updating... \n
Here are my changes:\n\n" . $content_diff . "\n
\n
Here is my new code:\n\n``" . "`HTML+PHP\n" . $content . "\n``" . '`\n
'); + + $code_file = fopen(basename($path_to_script), 'w'); + fwrite($code_file, $content); + fclose($code_file); +} + +function has_tree_been_edited($payload, $tree){ + global $github_diff; + get_diff($payload); //find things in the _maps/map_files tree //e.g. diff --git a/_maps/map_files/Cerestation/cerestation.dmm b/_maps/map_files/Cerestation/cerestation.dmm return $github_diff !== FALSE && preg_match('/^diff --git a\/' . preg_quote($tree, '/') . '/m') !== FALSE; From 59f3a714e265b47eabfac04db25c539eb645ee79 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 1 Nov 2017 09:30:12 +1300 Subject: [PATCH 25/32] Merge pull request #32250 from ninjanomnom/map-cable-color Makes greyscaled cables' color viewable in map editing --- code/game/objects/items/handcuffs.dm | 9 +++++++++ code/modules/power/cable.dm | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 93ea89445b..8ebb7b6061 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -91,6 +91,7 @@ icon_state = "cuff" item_state = "coil" item_color = "red" + color = "#ff0000" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' materials = list(MAT_METAL=150, MAT_GLASS=75) @@ -109,6 +110,7 @@ update_icon() /obj/item/restraints/handcuffs/cable/update_icon() + color = null add_atom_colour(item_color, FIXED_COLOUR_PRIORITY) /obj/item/restraints/handcuffs/cable/attack(mob/living/carbon/C, mob/living/carbon/human/user) @@ -130,24 +132,31 @@ /obj/item/restraints/handcuffs/cable/red item_color = "red" + color = "#ff0000" /obj/item/restraints/handcuffs/cable/yellow item_color = "yellow" + color = "#ffff00" /obj/item/restraints/handcuffs/cable/blue item_color = "blue" + color = "#1919c8" /obj/item/restraints/handcuffs/cable/green item_color = "green" + color = "#00aa00" /obj/item/restraints/handcuffs/cable/pink item_color = "pink" + color = "#ff3ccd" /obj/item/restraints/handcuffs/cable/orange item_color = "orange" + color = "#ff8000" /obj/item/restraints/handcuffs/cable/cyan item_color = "cyan" + color = "#00ffff" /obj/item/restraints/handcuffs/cable/white item_color = "white" diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index ec23f5b7f8..dc63253681 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -48,24 +48,31 @@ By design, d1 is the smallest direction and d2 is the highest var/obj/item/stack/cable_coil/stored var/cable_color = "red" + color = "#ff0000" /obj/structure/cable/yellow cable_color = "yellow" + color = "#ffff00" /obj/structure/cable/green cable_color = "green" + color = "#00aa00" /obj/structure/cable/blue cable_color = "blue" + color = "#1919c8" /obj/structure/cable/pink cable_color = "pink" + color = "#ff3cc8" /obj/structure/cable/orange cable_color = "orange" + color = "#ff8000" /obj/structure/cable/cyan cable_color = "cyan" + color = "#00ffff" /obj/structure/cable/white cable_color = "white" @@ -123,6 +130,7 @@ By design, d1 is the smallest direction and d2 is the highest icon_state = "[d1]-[d2]-f" else icon_state = "[d1]-[d2]" + color = null add_atom_colour(cable_color, FIXED_COLOUR_PRIORITY) /obj/structure/cable/proc/handlecable(obj/item/W, mob/user, params) @@ -523,6 +531,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai /obj/item/stack/cable_coil/update_icon() icon_state = "[initial(item_state)][amount < 3 ? amount : ""]" name = "cable [amount < 3 ? "piece" : "coil"]" + color = null add_atom_colour(item_color, FIXED_COLOUR_PRIORITY) /obj/item/stack/cable_coil/attack_hand(mob/user) @@ -743,30 +752,38 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai /obj/item/stack/cable_coil/red item_color = "red" + color = "#ff0000" /obj/item/stack/cable_coil/yellow item_color = "yellow" + color = "#ffff00" /obj/item/stack/cable_coil/blue item_color = "blue" + color = "#1919c8" /obj/item/stack/cable_coil/green item_color = "green" + color = "#00aa00" /obj/item/stack/cable_coil/pink item_color = "pink" + color = "#ff3ccd" /obj/item/stack/cable_coil/orange item_color = "orange" + color = "#ff8000" /obj/item/stack/cable_coil/cyan item_color = "cyan" + color = "#00ffff" /obj/item/stack/cable_coil/white item_color = "white" /obj/item/stack/cable_coil/random item_color = null + color = "#ffffff" /obj/item/stack/cable_coil/random/five amount = 5 From 486982b422995597e79db40d19e8e3d2647f40ee Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 1 Nov 2017 09:31:11 +1300 Subject: [PATCH 27/32] Merge pull request #32145 from PKPenguin321/patch-16 Fixes a camera issue with scout holoparasites --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 865ae48b4c..1829a85344 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -320,6 +320,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians forceMove(summoner.loc) new /obj/effect/temp_visual/guardian/phase(loc) cooldown = world.time + 10 + reset_perspective() return TRUE return FALSE From a02d9f2106c8e3c0e93317911e618093de130bd0 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 1 Nov 2017 11:07:07 +1300 Subject: [PATCH 29/32] Merge pull request #32297 from MrStonedOne/patch-444 Improves webhook logging (and fixes the bug that broke it) --- tools/WebhookProcessor/github_webhook_processor.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index 37805aae7a..e8e2aacee7 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -42,7 +42,7 @@ set_error_handler(function($severity, $message, $file, $line) { set_exception_handler(function($e) { header('HTTP/1.1 500 Internal Server Error'); echo "Error on line {$e->getLine()}: " . htmlSpecialChars($e->getMessage()); - file_put_contents('htwebhookerror.log', "Error on line {$e->getLine()}: " . $e->getMessage(), FILE_APPEND); + file_put_contents('htwebhookerror.log', '['.date(DATE_ATOM).'] '."Error on line {$e->getLine()}: " . $e->getMessage().PHP_EOL, FILE_APPEND); die(); }); $rawPost = NULL; @@ -547,7 +547,7 @@ function has_tree_been_edited($payload, $tree){ } //find things in the _maps/map_files tree //e.g. diff --git a/_maps/map_files/Cerestation/cerestation.dmm b/_maps/map_files/Cerestation/cerestation.dmm - return $github_diff !== FALSE && preg_match('/^diff --git a\/' . preg_quote($tree, '/') . '/m') !== FALSE; + return ($github_diff !== FALSE) && (preg_match('/^diff --git a\/' . preg_quote($tree, '/') . '/m', $github_diff) !== 0); } $no_changelog = false; From d792624dd8b45295b54ee0c50f32071190d42d38 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 31 Oct 2017 23:39:43 +0100 Subject: [PATCH 31/32] Nerfs peaceborg chain bucklestun (#32251) The definition of a trap option is that you don't know its a trap option until you use it. Obviously anyone who has tried it before realizes that they're a stunted joke but that doesn't make it any worse of a addition to the game. --- code/game/objects/items/robot/robot_items.dm | 16 ++++++++++++++++ code/modules/fields/peaceborg_dampener.dm | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 2ccb57564f..c4d86b0800 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -561,6 +561,10 @@ if(istype(dampening_field)) QDEL_NULL(dampening_field) dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) + + var/mob/living/silicon/robot/owner = get_host() + if(owner) + owner.module.allow_riding = FALSE /obj/item/borg/projectile_dampen/proc/deactivate_field() QDEL_NULL(dampening_field) @@ -568,6 +572,18 @@ for(var/P in tracked) restore_projectile(P) + var/mob/living/silicon/robot/owner = get_host() + if(owner) + owner.module.allow_riding = TRUE + +/obj/item/borg/projectile_dampen/proc/get_host() + if(istype(host)) + return host + else + if(iscyborg(host.loc)) + return host.loc + return null + /obj/item/borg/projectile_dampen/dropped() . = ..() host = loc diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm index 5e0fbdfb2b..79bd866fca 100644 --- a/code/modules/fields/peaceborg_dampener.dm +++ b/code/modules/fields/peaceborg_dampener.dm @@ -42,7 +42,7 @@ if(R.has_buckled_mobs()) for(var/mob/living/L in R.buckled_mobs) L.visible_message("[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!") //I know it's bad. - L.Knockdown(60) + L.Knockdown(10) R.unbuckle_mob(L) do_sparks(5, 0, L) ..()