From fbcb1b924fba9c57b29271c58b6cd89bf6829cea Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Sat, 26 Jan 2019 12:22:43 -0800 Subject: [PATCH 01/64] [s]Advance proc call no longer allows you to call world/datum procs as global procs (#42529) * [s]Advance proc call no longer allows you to call world/datum procs as static procs * Update debug.dm --- code/modules/admin/verbs/debug.dm | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c4c99e054e3..631e8cd6037 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -52,25 +52,22 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null if(!procname) return - - //hascall() doesn't support proc paths (eg: /proc/gib(), it only supports "gib") - var/testname = procname - if(targetselected) - //Find one of the 3 possible ways they could have written /proc/PROCNAME - if(findtext(procname, "/proc/")) - testname = replacetext(procname, "/proc/", "") - else if(findtext(procname, "/proc")) - testname = replacetext(procname, "/proc", "") - else if(findtext(procname, "proc/")) - testname = replacetext(procname, "proc/", "") - //Clear out any parenthesis if they're a dummy - testname = replacetext(testname, "()", "") - - if(targetselected && !hascall(target,testname)) - to_chat(usr, "Error: callproc(): type [target.type] has no proc named [procname].") + + //strip away everything but the proc name + var/list/proclist = splittext(procname, "/") + if (!length(proclist)) + return + procname = proclist[proclist.len] + + var/proctype = "proc" + if ("verb" in proclist) + proctype = "verb" + + if(targetselected && !hascall(target, procname)) + to_chat(usr, "Error: callproc(): type [target.type] has no [proctype] named [procname].") return else - var/procpath = text2path(procname) + var/procpath = text2path("[proctype]/[procname]") if (!procpath) to_chat(usr, "Error: callproc(): proc [procname] does not exist. (Did you forget the /proc/ part?)") return From 74da8a23825a081b453593d3346ea49b942a365f Mon Sep 17 00:00:00 2001 From: kierany9 Date: Sun, 27 Jan 2019 20:16:20 +0100 Subject: [PATCH 02/64] owch --- code/game/gamemodes/hivemind/radar.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/hivemind/radar.dm b/code/game/gamemodes/hivemind/radar.dm index ccf7ab9a9b5..8e52578681c 100644 --- a/code/game/gamemodes/hivemind/radar.dm +++ b/code/game/gamemodes/hivemind/radar.dm @@ -33,7 +33,7 @@ if(C == owner) continue var/datum/status_effect/hive_track/mark = C.has_status_effect(STATUS_EFFECT_HIVE_TRACKER) - if(mark?.tracked_by == owner) + if(mark && mark.tracked_by == owner) trackable_targets_exist = TRUE var/their_loc = get_turf(C) var/distance = get_dist_euclidian(my_loc, their_loc) From 604a059eaff446695d933fa334d85283bf2ab8ce Mon Sep 17 00:00:00 2001 From: wesoda25 <37246588+wesoda25@users.noreply.github.com> Date: Sun, 27 Jan 2019 15:11:21 -0500 Subject: [PATCH 03/64] Mime Foods/Drinks Now Silence the Mime (#42499) Mime stuff silences the mime now cl tweak: The nothing, silencer, and blank paper beverages now apply a mute on the mime for their duration (and a bit after). cl If you want to heal as a mime, you should not be allowed to speak. By extension things such as mime burgers will have this effect given the fact that they have nothing inside them (the reagent). --- code/__DEFINES/reagents.dm | 2 ++ code/modules/food_and_drinks/food/snacks_burgers.dm | 2 +- code/modules/reagents/chemistry/reagents/alcohol_reagents.dm | 2 ++ code/modules/reagents/chemistry/reagents/drink_reagents.dm | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 030e077a722..ec04edfec8f 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -27,3 +27,5 @@ #define DEL_REAGENT 1 // reagent deleted (fully cleared) #define ADD_REAGENT 2 // reagent added #define REM_REAGENT 3 // reagent removed (may still exist) + +#define MIMEDRINK_SILENCE_DURATION 30 //ends up being 60 seconds given 1 tick every 2 seconds diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 27f6572f48a..d5153638bf1 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -288,4 +288,4 @@ icon_state = "empoweredburger" list_reagents = list("nutriment" = 8, "liquidelectricity" = 5) tastes = list("bun" = 2, "pure electricity" = 4) - foodtype = GRAIN | TOXIC \ No newline at end of file + foodtype = GRAIN | TOXIC diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 3096bc740ee..2717270f0bf 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1169,6 +1169,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job == "Mime") + M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION) M.heal_bodypart_damage(1,1) . = 1 return ..() || . @@ -1855,6 +1856,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job == "Mime") + M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION) M.heal_bodypart_damage(1,1) . = 1 return ..() diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 61980f72660..3ae2198f7cf 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -154,6 +154,7 @@ /datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M) if(ishuman(M) && M.job == "Mime") + M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION) M.heal_bodypart_damage(1,1, 0) . = 1 ..() From 23fc38af7ef70b446abfe32cacb865847d6742cb Mon Sep 17 00:00:00 2001 From: leon2550 <43494490+leon2550@users.noreply.github.com> Date: Sun, 27 Jan 2019 21:10:10 -0500 Subject: [PATCH 04/64] Increase drop chance for Crusher trophies (#42481) it takes way too long to get a crusher trophy as is, and it kinda makes crushers pointless. so i increased the drop chance to about 1 in 4 instead of 1 in 20. also, first PR, yay. --- .../living/simple_animal/hostile/mining_mobs/mining_mobs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index 363ff2dc23c..9e7b5f22cca 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -20,7 +20,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE mob_size = MOB_SIZE_LARGE var/icon_aggro = null - var/crusher_drop_mod = 5 + var/crusher_drop_mod = 25 /mob/living/simple_animal/hostile/asteroid/Initialize(mapload) . = ..() @@ -58,7 +58,7 @@ /mob/living/simple_animal/hostile/asteroid/death(gibbed) SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) - if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 20 creatures before getting the item + if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item spawn_crusher_loot() ..(gibbed) From 35670e8832161da0c6025cd3a95cb3efce39fd46 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Mon, 28 Jan 2019 01:16:46 -0500 Subject: [PATCH 05/64] Cleanbot now cleans up salt and plant smudges --- code/modules/mob/living/simple_animal/bot/cleanbot.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 152eda49f9c..24e8ab76077 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -179,10 +179,7 @@ /obj/effect/decal/cleanable/vomit, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/molten_object, - /obj/effect/decal/cleanable/food/tomato_smudge, - /obj/effect/decal/cleanable/food/egg_smudge, - /obj/effect/decal/cleanable/food/pie_smudge, - /obj/effect/decal/cleanable/food/flour, + /obj/effect/decal/cleanable/food, /obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/greenglow, /obj/effect/decal/cleanable/dirt, From 5d4143f9230be8d4056581b9d22f2dbfa5622906 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 27 Jan 2019 23:22:32 -0800 Subject: [PATCH 06/64] Emergency projectile fix #42544 Okay, oranges was right and I'm stupid. Stops the server from crashing from a beam rifle, jesus. --- code/modules/mob/living/living_movement.dm | 4 +--- code/modules/projectiles/guns/misc/beam_rifle.dm | 2 +- code/modules/projectiles/projectile.dm | 11 ++++------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 44cdade59f9..f11e9695e8b 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -7,9 +7,7 @@ return TRUE if(istype(mover, /obj/item/projectile)) var/obj/item/projectile/P = mover - if(P.can_hit_target(src, P.permutated, src == P.original, TRUE)) - P.Bump(src) - return TRUE + return !P.can_hit_target(src, P.permutated, src == P.original, TRUE) if(mover.throwing) return (!density || !(mobility_flags & MOBILITY_STAND)) if(buckled == mover) diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 53cce271d01..81e1b7ffd2f 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -565,7 +565,7 @@ /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target) qdel(src) - return BULLET_ACT_HIT + return FALSE /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/on_hit() qdel(src) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0ba147f687b..962320fa2bd 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -230,13 +230,6 @@ if(hitscan) store_hitscan_collision(pcache) return TRUE - if(firer && !ignore_source_check) - var/mob/checking = firer - if((A == firer) || (((A in firer.buckled_mobs) || (istype(checking) && (A == checking.buckled))) && (A != original)) || (A == firer.loc && ismecha(A))) //cannot shoot yourself or your mech - trajectory_ignore_forcemove = TRUE - forceMove(T) - trajectory_ignore_forcemove = FALSE - return FALSE var/distance = get_dist(T, starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. @@ -529,6 +522,10 @@ /obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE) if(QDELETED(target)) return FALSE + if(!ignore_source_check && firer) + var/mob/M = firer + if((target == firer) || ((target == firer.loc) && ismecha(firer.loc)) || (target in firer.buckled_mobs) || (istype(M) && (M.buckled == target))) + return FALSE if(!ignore_loc && (loc != target.loc)) return FALSE if(target in passthrough) From 233600613c54a233a42a63345957c3289f80ce9d Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 28 Jan 2019 07:30:33 +0000 Subject: [PATCH 07/64] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-42519.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-42519.yml diff --git a/html/changelog.html b/html/changelog.html index d0f806e5b99..0578b56be33 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,12 @@ -->
+

28 January 2019

+

Gousaid67 updated:

+
    +
  • Spraycans are now able to spray walls again!
  • +
+

26 January 2019

4dplanner updated: