From a9b093bcec8b7c4821dd9a27dbda5f7c3a09da33 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sat, 30 Jul 2016 02:16:25 -0500 Subject: [PATCH] Sprays now respect blocking --- code/modules/reagents/Chemistry-Holder.dm | 22 ++++++++------ html/changelogs/anewbe.yml | 36 +++++++++++++++++++++++ 2 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/anewbe.yml diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index b2d04233f2..57b62e609d 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -97,30 +97,30 @@ return 0 if(my_atom.flags & NOREACT) // No reactions here return 0 - + var/reaction_occured var/list/effect_reactions = list() var/list/eligible_reactions = list() for(var/i in 1 to PROCESS_REACTION_ITER) reaction_occured = 0 - + //need to rebuild this to account for chain reactions for(var/datum/reagent/R in reagent_list) eligible_reactions |= chemical_reactions_list[R.id] - + for(var/datum/chemical_reaction/C in eligible_reactions) if(C.can_happen(src) && C.process(src)) effect_reactions |= C reaction_occured = 1 - + eligible_reactions.Cut() - + if(!reaction_occured) break - + for(var/datum/chemical_reaction/C in effect_reactions) C.post_reaction(src) - + update_total() return reaction_occured @@ -300,7 +300,7 @@ amount -= spill if(spill) splash(target.loc, spill, multiplier, copy, min_spill, max_spill) - + trans_to(target, amount, multiplier, copy) /datum/reagents/proc/trans_id_to(var/atom/target, var/id, var/amount = 1) @@ -366,6 +366,10 @@ var/perm = 1 if(isliving(target)) //will we ever even need to tranfer reagents to non-living mobs? var/mob/living/L = target + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(0, null, null, null, "the spray") == 1) //If they block the spray, it does nothing. + amount = 0 perm = L.reagent_permeability() return trans_to_mob(target, amount, CHEM_TOUCH, perm, copy) @@ -416,4 +420,4 @@ /* Atom reagent creation - use it all the time */ /atom/proc/create_reagents(var/max_vol) - reagents = new/datum/reagents(max_vol, src) + reagents = new/datum/reagents(max_vol, src) diff --git a/html/changelogs/anewbe.yml b/html/changelogs/anewbe.yml new file mode 100644 index 0000000000..ac0f82f23f --- /dev/null +++ b/html/changelogs/anewbe.yml @@ -0,0 +1,36 @@ +################################ +# 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: Anewbe + +# 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: + - rscadd: "Sprays now respect shields."