From 3979c813cad87b49b92e2c110aa71446a60ac4fe Mon Sep 17 00:00:00 2001 From: NanakoAC Date: Wed, 3 Aug 2016 20:33:06 +0100 Subject: [PATCH] Fixes #117, Fixes #118, Fixes #667 (#668) --- code/game/objects/effects/chem/water.dm | 45 +++++++++++++++++------ code/modules/mob/new_player/new_player.dm | 5 ++- code/modules/power/power.dm | 9 +++-- html/changelogs/Nanako-slimespray.yml | 38 +++++++++++++++++++ 4 files changed, 80 insertions(+), 17 deletions(-) create mode 100644 html/changelogs/Nanako-slimespray.yml diff --git a/code/game/objects/effects/chem/water.dm b/code/game/objects/effects/chem/water.dm index 9b154645443..1b4d7450019 100644 --- a/code/game/objects/effects/chem/water.dm +++ b/code/game/objects/effects/chem/water.dm @@ -23,30 +23,53 @@ step_towards(src, target) var/turf/T = get_turf(src) if(T && reagents) - reagents.touch_turf(T) - var/mob/M - for(var/atom/A in T) - if(!ismob(A) && A.simulated) // Mobs are handled differently - reagents.touch(A) - else if(ismob(A) && !M) - M = A - if(M) - reagents.splash(M, reagents.total_volume) + + if (wet_things(T)) break + if(T == get_turf(target)) break sleep(delay) sleep(10) qdel(src) +//Wets everything in the tile +//A return value of 1 means that the wetting should stop. Either the water ran out or some error ocurred +/obj/effect/effect/water/proc/wet_things(var/turf/T) + + if (!reagents || reagents.total_volume <= 0) + return 1 + + + reagents.touch_turf(T) + var/list/mobshere = list() + for (var/mob/living/L in T) + mobshere.Add(L) + + + for (var/atom/B in T) + if (!ismob(B)) + reagents.touch(B) + + if (mobshere.len) + var/portion = 1 / mobshere.len + var/total = reagents.total_volume + for (var/mob/living/L in mobshere) + reagents.splash(L, total * portion) + return 1 + + return 0 + + + /obj/effect/effect/water/Move(turf/newloc) if(newloc.density) return 0 . = ..() /obj/effect/effect/water/Bump(atom/A) - if(reagents) - reagents.touch(A) + var/turf/T = get_turf(A) + wet_things(T) return ..() //Used by spraybottles. diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index cf102c40950..27287825849 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -404,8 +404,9 @@ if(job && IsJobAvailable(job.title)) var/active = 0 // Only players with the job assigned and AFK for less than 10 minutes count as active - for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 * 60 * 10) - active++ + for(var/mob/M in player_list) //Added isliving check here, so it won't check ghosts and qualify them as active + if(isliving(M) && M.mind && M.client && M.mind.assigned_role == job.title && M.client.inactivity <= 10 * 60 * 10) + active++ dat += "[job.title] ([job.current_positions]) (Active: [active])
" dat += "" diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 87685a0d2f6..3a1a33260fd 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -313,8 +313,10 @@ //No animations will be performed by this proc. /proc/electrocute_mob(mob/living/carbon/M as mob, var/power_source, var/obj/source, var/siemens_coeff = 1.0) if(istype(M.loc,/obj/mecha)) return 0 //feckin mechs are dumb - var/mob/living/carbon/human/H = M //20/1/16 Insulation (vaurca) - if(H.species.name == "Vaurca") return 0 + var/mob/living/carbon/human/H = null + if (ishuman(M)) + H = M //20/1/16 Insulation (vaurca) + if(H.species.name == "Vaurca") return 0 var/area/source_area if(istype(power_source,/area)) source_area = power_source @@ -344,8 +346,7 @@ //If following checks determine user is protected we won't alarm for long. if(PN) PN.trigger_warning(5) - if(istype(M,/mob/living/carbon/human)) - //var/mob/living/carbon/human/H = M + if(H) if(H.species.siemens_coefficient == 0) return if(H.gloves) diff --git a/html/changelogs/Nanako-slimespray.yml b/html/changelogs/Nanako-slimespray.yml new file mode 100644 index 00000000000..269dbbba4a4 --- /dev/null +++ b/html/changelogs/Nanako-slimespray.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Nanako + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Spraying water will now wet all mobs in the tile, dividing reagents amongst them. This fixes some issues where slimes would be unsprayable." + + \ No newline at end of file