diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 7d162833a37..70a5c5908f5 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -16,12 +16,17 @@ // Is an open container for all intents and purposes. #define OPENCONTAINER (REFILLABLE | DRAINABLE | TRANSPARENT) - -#define TOUCH 1 // splashing -#define INGEST 2 // ingestion -#define VAPOR 3 // foam, spray, blob attack -#define PATCH 4 // patches -#define INJECT 5 // injection +// Reagent exposure methods. +/// Used for splashing. +#define TOUCH (1<<0) +/// Used for ingesting the reagents. Food, drinks, inhaling smoke. +#define INGEST (1<<1) +/// Used by foams, sprays, and blob attacks. +#define VAPOR (1<<2) +/// Used by medical patches and gels. +#define PATCH (1<<3) +/// Used for direct injection of reagents. +#define INJECT (1<<4) //defines passed through to the on_reagent_change proc diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 58580674dde..10b645b001c 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -216,7 +216,7 @@ Behavior that's still missing from this component that original food items had t if(owner.reagents.total_volume) SEND_SIGNAL(parent, COMSIG_FOOD_EATEN, eater, feeder) var/fraction = min(bite_consumption / owner.reagents.total_volume, 1) - owner.reagents.trans_to(eater, bite_consumption, transfered_by = feeder, method = INGEST) + owner.reagents.trans_to(eater, bite_consumption, transfered_by = feeder, methods = INGEST) bitecount++ On_Consume(eater) checkLiked(fraction, eater) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5f097d46646..7e295e075ec 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -484,12 +484,12 @@ * Arguments: * - [reagents][/list]: The list of reagents the atom is being exposed to. * - [source][/datum/reagents]: The reagent holder the reagents are being sourced from. - * - method: How the atom is being exposed to the reagents. + * - methods: How the atom is being exposed to the reagents. Bitflags. * - volume_modifier: Volume multiplier. * - show_message: Whether to display anything to mobs when they are exposed. */ -/atom/proc/expose_reagents(list/reagents, datum/reagents/source, method=TOUCH, volume_modifier=1, show_message=TRUE) - if((. = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, method, volume_modifier, show_message)) & COMPONENT_NO_EXPOSE_REAGENTS) +/atom/proc/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) + if((. = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, methods, volume_modifier, show_message)) & COMPONENT_NO_EXPOSE_REAGENTS) return for(var/reagent in reagents) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 5ef0eb2bf6e..87d83bc2f60 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -306,7 +306,7 @@ if(chem in spray_chems) var/datum/reagents/holder = new() holder.add_reagent(chem_buttons[chem], 10) //I hope this is the correct way to do this. - holder.trans_to(occupant, 10, method = VAPOR) + holder.trans_to(occupant, 10, methods = VAPOR) playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE, -6) if(user) log_combat(user, occupant, "sprayed [chem] into", addition = "via [src]") diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 8444cac305a..8e57ad9f498 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -138,7 +138,7 @@ if(istype(beaker, /obj/item/reagent_containers/blood)) // speed up transfer on blood packs transfer_amount *= 2 - beaker.reagents.trans_to(attached, transfer_amount, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages + beaker.reagents.trans_to(attached, transfer_amount, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages update_icon() // Take blood diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index eec39abcda1..0f6fe31d445 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -334,7 +334,7 @@ R += "[A.name] ([num2text(A.volume)]" mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) - mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume, transfered_by = originaloccupant, method = INJECT) + mechsyringe.reagents.trans_to(M, mechsyringe.reagents.total_volume, transfered_by = originaloccupant, methods = INJECT) M.take_bodypart_damage(2) log_combat(originaloccupant, M, "shot", "syringegun") break diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 37e179fc2ea..31702bffe7a 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -428,7 +428,7 @@ if(affected_turfs.len) fraction /= affected_turfs.len for(var/t in affected_turfs) - reagents.trans_to(t, ., volume_multiplier, transfered_by = user, method = TOUCH) + reagents.trans_to(t, ., volume_multiplier, transfered_by = user, methods = TOUCH) check_empty(user) /obj/item/toy/crayon/attack(mob/M, mob/user) @@ -447,7 +447,7 @@ var/eaten = use_charges(user, 5, FALSE) if(check_empty(user)) //Prevents divsion by zero return - reagents.trans_to(M, eaten, volume_multiplier, transfered_by = user, method = INGEST) + reagents.trans_to(M, eaten, volume_multiplier, transfered_by = user, methods = INGEST) // check_empty() is called during afterattack else ..() @@ -671,7 +671,7 @@ H.lip_color = paint_color H.update_body() var/used = use_charges(user, 10, FALSE) - reagents.trans_to(user, used, volume_multiplier, transfered_by = user, method = VAPOR) + reagents.trans_to(user, used, volume_multiplier, transfered_by = user, methods = VAPOR) return (OXYLOSS) @@ -738,7 +738,7 @@ else target.set_opacity(initial(target.opacity)) . = use_charges(user, 2) - reagents.trans_to(target, ., volume_multiplier, transfered_by = user, method = VAPOR) + reagents.trans_to(target, ., volume_multiplier, transfered_by = user, methods = VAPOR) if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, TRUE, 5) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 4cfc6cc5bd7..ce2b709512a 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -419,7 +419,7 @@ return var/used_amount = injection_amount/usage_ratio - reagents.trans_to(user,used_amount,multiplier=usage_ratio, method = INJECT) + reagents.trans_to(user,used_amount,multiplier=usage_ratio, methods = INJECT) update_icon() user.update_inv_back() //for overlays update diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 920f463d247..4d1126983e8 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -361,7 +361,7 @@ . += custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay /// Handles exposing an object to reagents. -/obj/expose_reagents(list/reagents, datum/reagents/source, method=TOUCH, volume_modifier=1, show_message=TRUE) +/obj/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS) return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 48c9cb562c9..fba202d2544 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -584,7 +584,7 @@ GLOBAL_LIST_EMPTY(station_turfs) . = BULLET_ACT_TURF /// Handles exposing a turf to reagents. -/turf/expose_reagents(list/reagents, datum/reagents/source, method=TOUCH, volume_modifier=1, show_message=TRUE) +/turf/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS) return diff --git a/code/modules/antagonists/blob/blobstrains/_reagent.dm b/code/modules/antagonists/blob/blobstrains/_reagent.dm index 3d210188d9b..0113013c957 100644 --- a/code/modules/antagonists/blob/blobstrains/_reagent.dm +++ b/code/modules/antagonists/blob/blobstrains/_reagent.dm @@ -27,7 +27,7 @@ can_synth = FALSE -/datum/reagent/blob/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) return 0 //the dead, and blob mobs, don't cause reactions return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. diff --git a/code/modules/antagonists/blob/blobstrains/blazing_oil.dm b/code/modules/antagonists/blob/blobstrains/blazing_oil.dm index 88d8f5f71ff..1a717787dec 100644 --- a/code/modules/antagonists/blob/blobstrains/blazing_oil.dm +++ b/code/modules/antagonists/blob/blobstrains/blazing_oil.dm @@ -31,7 +31,7 @@ taste_description = "burning oil" color = "#B68D00" -/datum/reagent/blob/blazing_oil/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/blazing_oil/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.adjust_fire_stacks(round(reac_volume/10)) M.IgniteMob() diff --git a/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm b/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm index aa11c7ca90b..ebfc84f008d 100644 --- a/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm +++ b/code/modules/antagonists/blob/blobstrains/cryogenic_poison.dm @@ -16,7 +16,7 @@ color = "#8BA6E9" taste_description = "brain freeze" -/datum/reagent/blob/cryogenic_poison/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/cryogenic_poison/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume) diff --git a/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm index 96d4ccfde0c..4f2f802f78b 100644 --- a/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm +++ b/code/modules/antagonists/blob/blobstrains/distributed_neurons.dm @@ -24,7 +24,7 @@ name = "Distributed Neurons" color = "#E88D5D" -/datum/reagent/blob/distributed_neurons/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/distributed_neurons/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.6*reac_volume, TOX) if(O && ishuman(M)) diff --git a/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm b/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm index 6d61732b147..02a8c914d12 100644 --- a/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm +++ b/code/modules/antagonists/blob/blobstrains/electromagnetic_web.dm @@ -29,7 +29,7 @@ taste_description = "pop rocks" color = "#83ECEC" -/datum/reagent/blob/electromagnetic_web/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/electromagnetic_web/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(prob(reac_volume*2)) M.emp_act(EMP_LIGHT) diff --git a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm index 6e85d2110d6..f0ab16706a5 100644 --- a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm +++ b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm @@ -26,7 +26,7 @@ taste_description = "gelatin" color = "#EFD65A" -/datum/reagent/blob/energized_jelly/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/energized_jelly/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.losebreath += round(0.2*reac_volume) M.adjustStaminaLoss(reac_volume * 1.2) diff --git a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm index e19c1331969..3324df30f9b 100644 --- a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm +++ b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm @@ -31,7 +31,7 @@ taste_description = "the bomb" color = "#8B2500" -/datum/reagent/blob/explosive_lattice/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/explosive_lattice/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) var/initial_volume = reac_volume reac_volume = ..() if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming diff --git a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm index 6c07ca6c34b..cc08a4a197d 100644 --- a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm +++ b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm @@ -36,7 +36,7 @@ taste_description = "efficiency" color = "#4F4441" -/datum/reagent/blob/networked_fibers/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/networked_fibers/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.6*reac_volume, BRUTE, wound_bonus=CANT_WOUND) if(!QDELETED(M)) diff --git a/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm b/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm index 297e56ae2f8..7647d5ad958 100644 --- a/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm +++ b/code/modules/antagonists/blob/blobstrains/pressurized_slime.dm @@ -39,7 +39,7 @@ taste_description = "a sponge" color = "#AAAABB" -/datum/reagent/blob/pressurized_slime/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/pressurized_slime/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() var/turf/open/T = get_turf(M) if(istype(T) && prob(reac_volume)) diff --git a/code/modules/antagonists/blob/blobstrains/reactive_spines.dm b/code/modules/antagonists/blob/blobstrains/reactive_spines.dm index fd39fe55df4..8286bb63fe9 100644 --- a/code/modules/antagonists/blob/blobstrains/reactive_spines.dm +++ b/code/modules/antagonists/blob/blobstrains/reactive_spines.dm @@ -24,7 +24,7 @@ taste_description = "rock" color = "#9ACD32" -/datum/reagent/blob/reactive_spines/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/reactive_spines/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) return 0 //the dead, and blob mobs, don't cause reactions M.adjustBruteLoss(reac_volume) diff --git a/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm b/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm index 1df852bb1c8..499f29da3c1 100644 --- a/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm +++ b/code/modules/antagonists/blob/blobstrains/regenerative_materia.dm @@ -15,7 +15,7 @@ taste_description = "heaven" color = "#A88FB7" -/datum/reagent/blob/regenerative_materia/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/regenerative_materia/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.adjust_drugginess(reac_volume) if(M.reagents) diff --git a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm index 5d590d45084..a31426ca060 100644 --- a/code/modules/antagonists/blob/blobstrains/replicating_foam.dm +++ b/code/modules/antagonists/blob/blobstrains/replicating_foam.dm @@ -30,6 +30,6 @@ taste_description = "duplication" color = "#7B5A57" -/datum/reagent/blob/replicating_foam/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/replicating_foam/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.7*reac_volume, BRUTE, wound_bonus=CANT_WOUND) diff --git a/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm b/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm index d24a1a2008d..85ae2fd5df1 100644 --- a/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm +++ b/code/modules/antagonists/blob/blobstrains/shifting_fragments.dm @@ -31,6 +31,6 @@ name = "Shifting Fragments" color = "#C8963C" -/datum/reagent/blob/shifting_fragments/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/shifting_fragments/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.7*reac_volume, BRUTE, wound_bonus=CANT_WOUND) diff --git a/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm b/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm index f9d558e3a8c..f0645badf29 100644 --- a/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm +++ b/code/modules/antagonists/blob/blobstrains/synchronous_mesh.dm @@ -29,7 +29,7 @@ taste_description = "toxic mold" color = "#65ADA2" -/datum/reagent/blob/synchronous_mesh/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) +/datum/reagent/blob/synchronous_mesh/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.2*reac_volume, BRUTE, wound_bonus=CANT_WOUND) if(M && reac_volume) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 1be2063863e..4597c0cc401 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -243,7 +243,7 @@ mob_occupant.Unconscious((mob_occupant.bodytemperature * unconscious_factor) * 2000) if(beaker) if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic. - beaker.reagents.trans_to(occupant, 1, efficiency * 0.25, method = VAPOR) // Transfer reagents. + beaker.reagents.trans_to(occupant, 1, efficiency * 0.25, methods = VAPOR) // Transfer reagents. air1.gases[/datum/gas/oxygen][MOLES] -= max(0,air1.gases[/datum/gas/oxygen][MOLES] - 2 / efficiency) //Let's use gas for this air1.garbage_collect() if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker). diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index aaaa1ad1bff..6bb864262df 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -29,7 +29,7 @@ var/reagentlist = pretty_string_from_reagent_list(reagents) var/log_object = "containing [reagentlist]" if(user.a_intent == INTENT_HARM && !C.is_mouth_covered()) - reagents.trans_to(C, reagents.total_volume, transfered_by = user, method = INGEST) + reagents.trans_to(C, reagents.total_volume, transfered_by = user, methods = INGEST) C.visible_message("[user] smothers \the [C] with \the [src]!", "[user] smothers you with \the [src]!", "You hear some struggling and muffled cries of surprise.") log_combat(user, C, "smothered", src, log_object) else diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 98902eec08a..f41282af2bc 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -47,7 +47,7 @@ SEND_SIGNAL(src, COMSIG_DRINK_DRANK, M, user) var/fraction = min(gulp_size/reagents.total_volume, 1) checkLiked(fraction, M) - reagents.trans_to(M, gulp_size, transfered_by = user, method = INGEST) + reagents.trans_to(M, gulp_size, transfered_by = user, methods = INGEST) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), TRUE) if(iscarbon(M)) var/mob/living/carbon/carbon_drinker = M diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index c70ebc2d300..4dc24de4659 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -90,7 +90,7 @@ M.visible_message("[user] fed [M] from [src].", \ "[user] fed you from [src].") log_combat(user, M, "fed", reagents.log_list()) - reagents.trans_to(M, 10, transfered_by = user, method = INGEST) + reagents.trans_to(M, 10, transfered_by = user, methods = INGEST) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), TRUE) return 1 diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 1165f7c04d6..a189ea0f321 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -157,7 +157,7 @@ All foods are distributed among various categories. Use common sense. if(reagents.total_volume) SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user) var/fraction = min(bitesize / reagents.total_volume, 1) - reagents.trans_to(M, bitesize, transfered_by = user, method = INGEST) + reagents.trans_to(M, bitesize, transfered_by = user, methods = INGEST) bitecount++ On_Consume(M) checkLiked(fraction, M) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index f95999032bb..08e92760dc2 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -487,7 +487,7 @@ if(iscarbon(loc)) var/mob/living/carbon/C = loc if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob - if(!reagents.trans_to(C, REAGENTS_METABOLISM, method = INGEST)) + if(!reagents.trans_to(C, REAGENTS_METABOLISM, methods = INGEST)) reagents.remove_any(REAGENTS_METABOLISM) return reagents.remove_any(REAGENTS_METABOLISM) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 6585d77932c..8d6b671849c 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -457,7 +457,7 @@ var/mob/living/L = target if(L.reagents && L.can_inject(null, 0)) var/injecting_amount = max(1, G.seed.potency*0.2) // Minimum of 1, max of 20 - G.reagents.trans_to(L, injecting_amount, method = INJECT) + G.reagents.trans_to(L, injecting_amount, methods = INJECT) to_chat(target, "You are pricked by [G]!") log_combat(G, L, "pricked and attempted to inject reagents from [G] to [L]. Last touched by: [G.fingerprintslast].") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index c6c93bfb488..7464b9f46e1 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -602,12 +602,12 @@ reagent_state = LIQUID color = "#FFEBEB" -/datum/reagent/flightpotion/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) +/datum/reagent/flightpotion/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) var/mob/living/carbon/C = M var/holycheck = ishumanbasic(C) if(reac_volume < 5 || !(holycheck || islizard(C) || (ismoth(C) && C.dna.features["moth_wings"] != "Burnt Off"))) // implying xenohumans are holy //as with all things, - if(method == INGEST && show_message) + if((methods & INGEST) && show_message) to_chat(C, "You feel nothing but a terrible aftertaste.") return ..() if(C.dna.species.has_innate_wings) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index b8b79587f09..68981a88f57 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -440,17 +440,17 @@ /** Handles exposing a mob to reagents. * - * If the method is INGEST the mob tastes the reagents. - * If the method is VAPOR it incorporates permiability protection. + * If the methods include INGEST the mob tastes the reagents. + * If the methods include VAPOR it incorporates permiability protection. */ -/mob/living/expose_reagents(list/reagents, datum/reagents/source, method=TOUCH, volume_modifier=1, show_message=TRUE) +/mob/living/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE) if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS) return - if(method == INGEST) + if(methods & INGEST) taste(source) - var/touch_protection = (method == VAPOR) ? get_permeability_protection() : 0 + var/touch_protection = (methods & VAPOR) ? get_permeability_protection() : 0 for(var/reagent in reagents) var/datum/reagent/R = reagent - . |= R.expose_mob(src, method, reagents[R], show_message, touch_protection) + . |= R.expose_mob(src, methods, reagents[R], show_message, touch_protection) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 6ff23ece78f..27c9c4e31bc 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -182,7 +182,7 @@ if(reagents.total_volume) if(M.reagents) - reagents.trans_to(M, reagents.total_volume, transfered_by = user, method = INJECT) + reagents.trans_to(M, reagents.total_volume, transfered_by = user, methods = INJECT) /obj/item/pen/sleepy/Initialize() diff --git a/code/modules/plumbing/plumbers/bottler.dm b/code/modules/plumbing/plumbers/bottler.dm index 650e6fbdfff..801b035349b 100644 --- a/code/modules/plumbing/plumbers/bottler.dm +++ b/code/modules/plumbing/plumbers/bottler.dm @@ -72,8 +72,8 @@ AM.forceMove(badspot) if(istype(AM, /obj/item/slime_extract)) ///slime extracts need inject AM.forceMove(goodspot) - reagents.trans_to(AM, wanted_amount, transfered_by = src, method = INJECT) + reagents.trans_to(AM, wanted_amount, transfered_by = src, methods = INJECT) return if(istype(AM, /obj/item/slimecross/industrial)) ///no need to move slimecross industrial things - reagents.trans_to(AM, wanted_amount, transfered_by = src, method = INJECT) + reagents.trans_to(AM, wanted_amount, transfered_by = src, methods = INJECT) return diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 51870d9a20d..b86f3a38a44 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -15,7 +15,7 @@ if(blocked != 100) // not completely blocked if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..() - reagents.trans_to(M, reagents.total_volume, method = INJECT) + reagents.trans_to(M, reagents.total_volume, methods = INJECT) return BULLET_ACT_HIT else blocked = 100 diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 4bf005df06d..07793fe5c48 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -206,11 +206,11 @@ * * no_react - passed through to [/datum/reagents/proc/add_reagent] * * mob/transfered_by - used for logging * * remove_blacklisted - skips transferring of reagents with can_synth = FALSE - * * method - passed through to [/datum/reagents/proc/react_single] and [/datum/reagent/proc/on_transfer] + * * methods - passed through to [/datum/reagents/proc/react_single] and [/datum/reagent/proc/on_transfer] * * show_message - passed through to [/datum/reagents/proc/react_single] * * round_robin - if round_robin=TRUE, so transfer 5 from 15 water, 15 sugar and 15 plasma becomes 10, 15, 15 instead of 13.3333, 13.3333 13.3333. Good if you hate floating point errors */ -/datum/reagents/proc/trans_to(obj/target, amount = 1, multiplier = 1, preserve_data = TRUE, no_react = FALSE, mob/transfered_by, remove_blacklisted = FALSE, method = null, show_message = TRUE, round_robin = FALSE) +/datum/reagents/proc/trans_to(obj/target, amount = 1, multiplier = 1, preserve_data = TRUE, no_react = FALSE, mob/transfered_by, remove_blacklisted = FALSE, methods = NONE, show_message = TRUE, round_robin = FALSE) var/list/cached_reagents = reagent_list if(!target || !total_volume) return @@ -241,9 +241,9 @@ if(preserve_data) trans_data = copy_data(T) R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, no_react = 1) //we only handle reaction after every reagent has been transfered. - if(method) - R.expose_single(T, target_atom, method, part, show_message) - T.on_transfer(target_atom, method, transfer_amount * multiplier) + if(methods) + R.expose_single(T, target_atom, methods, part, show_message) + T.on_transfer(target_atom, methods, transfer_amount * multiplier) remove_reagent(T.type, transfer_amount) transfer_log[T.type] = transfer_amount else @@ -261,9 +261,9 @@ transfer_amount = T.volume R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, no_react = 1) to_transfer = max(to_transfer - transfer_amount , 0) - if(method) - R.expose_single(T, target_atom, method, transfer_amount, show_message) - T.on_transfer(target_atom, method, transfer_amount * multiplier) + if(methods) + R.expose_single(T, target_atom, methods, transfer_amount, show_message) + T.on_transfer(target_atom, methods, transfer_amount * multiplier) remove_reagent(T.type, transfer_amount) transfer_log[T.type] = transfer_amount @@ -643,7 +643,7 @@ * * [/datum/reagent/proc/expose_turf] * * [/datum/reagent/proc/expose_obj] */ -/datum/reagents/proc/expose(atom/A, method = TOUCH, volume_modifier = 1, show_message = 1) +/datum/reagents/proc/expose(atom/A, methods = TOUCH, volume_modifier = 1, show_message = 1) if(isnull(A)) return null @@ -656,11 +656,11 @@ var/datum/reagent/R = reagent reagents[R] = R.volume * volume_modifier - return A.expose_reagents(reagents, src, method, volume_modifier, show_message) + return A.expose_reagents(reagents, src, methods, volume_modifier, show_message) /// Same as [/datum/reagents/proc/expose] but only for one reagent -/datum/reagents/proc/expose_single(datum/reagent/R, atom/A, method = TOUCH, volume_modifier = 1, show_message = TRUE) +/datum/reagents/proc/expose_single(datum/reagent/R, atom/A, methods = TOUCH, volume_modifier = 1, show_message = TRUE) if(isnull(A)) return null @@ -670,7 +670,7 @@ return null // Yes, we need the parentheses. - return A.expose_reagents(list((R) = R.volume * volume_modifier), src, method, volume_modifier, show_message) + return A.expose_reagents(list((R) = R.volume * volume_modifier), src, methods, volume_modifier, show_message) /// Is this holder full or not /datum/reagents/proc/holder_full() diff --git a/code/modules/reagents/chemistry/readme.md b/code/modules/reagents/chemistry/readme.md index 0b498dd3bee..3ead7a5d185 100644 --- a/code/modules/reagents/chemistry/readme.md +++ b/code/modules/reagents/chemistry/readme.md @@ -64,12 +64,12 @@ The holder (reagents datum) is the datum that holds a list of all reagents curre clear_reagents() This proc removes ALL reagents from the holder. - reaction(var/atom/A, var/method=TOUCH, var/volume_modifier=0) + expose(var/atom/A, var/methods=TOUCH, var/volume_modifier=0) This proc calls the appropriate reaction procs of the reagents. I.e. if A is an object, it will call the reagents expose_obj - proc. The method var is used for reaction on mobs. It simply tells + proc. The methods var is used for reaction on mobs. It simply tells us if the mob TOUCHed the reagent, if it INGESTed the reagent, if the reagent - was VAPORIZEd on them, if the reagent was INJECTed, or transfered via a PATCH to them. + was VAPORIZEd on them, if the reagent was INJECTed, and/or transfered via a PATCH to them. Since the volume can be checked in a reagents proc, you might want to use the volume_modifier var to modifiy the passed value without actually changing the volume of the reagents. @@ -116,11 +116,12 @@ The holder (reagents datum) is the datum that holds a list of all reagents curre # About Reagents: Reagents are all the things you can mix and fille in bottles etc. This can be anything from rejuvs over water to ... iron. Each reagent also has a few procs - i'll explain those below. ``` - expose_mob(var/mob/living/L, var/method=TOUCH) + expose_mob(var/mob/living/L, var/methods=TOUCH) This is called by the holder's reation proc. This version is only called when the reagent - reacts with a mob. The method var can be either - TOUCH or INGEST. You'll want to put stuff like + reacts with a mob. The methods var can be any + combination of TOUCH, INGEST, VAPOR, PATCH, + and INJECT. You'll want to put stuff like acid-facemelting in here. expose_obj(var/obj/O) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 12ec7b4de92..3f25609be11 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -94,10 +94,10 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) return /// Applies this reagent to a [/mob/living] -/datum/reagent/proc/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) +/datum/reagent/proc/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(!istype(M)) return 0 - if(method == VAPOR) //smoke, foam, spray + if(methods & VAPOR) //smoke, foam, spray if(M.reagents) var/modifier = clamp((1 - touch_protection), 0, 1) var/amount = round(reac_volume*modifier, 0.1) @@ -121,7 +121,7 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. ///Called after a reagent is transfered -/datum/reagent/proc/on_transfer(atom/A, method=TOUCH, trans_volume) +/datum/reagent/proc/on_transfer(atom/A, methods=TOUCH, trans_volume) return diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index f11c6506f79..e64b8145f77 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -62,11 +62,11 @@ All effects don't start immediately, but rather get worse over time; the rate is O.visible_message("[O]'s ink is smeared by [name], but doesn't wash away!") return -/datum/reagent/consumable/ethanol/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with ethanol isn't quite as good as fuel. +/datum/reagent/consumable/ethanol/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with ethanol isn't quite as good as fuel. if(!isliving(M)) return - if(method in list(TOUCH, VAPOR, PATCH)) + if(methods & (TOUCH|VAPOR|PATCH)) M.adjust_fire_stacks(reac_volume / 15) if(iscarbon(M)) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index f6cd5e84129..f5b2989f3df 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -123,8 +123,8 @@ ..() . = TRUE -/datum/reagent/medicine/c2/probital/on_transfer(atom/A, method=INGEST, trans_volume) - if(method != INGEST || !iscarbon(A)) +/datum/reagent/medicine/c2/probital/on_transfer(atom/A, methods=INGEST, trans_volume) + if(!(methods & INGEST) || !iscarbon(A)) return A.reagents.remove_reagent(/datum/reagent/medicine/c2/probital, trans_volume * 0.05) @@ -189,8 +189,8 @@ ..() . = TRUE -/datum/reagent/medicine/c2/hercuri/expose_mob(mob/living/carbon/M, method=VAPOR, reac_volume) - if(method != VAPOR) +/datum/reagent/medicine/c2/hercuri/expose_mob(mob/living/carbon/M, methods=VAPOR, reac_volume) + if(!(methods & VAPOR)) return M.adjust_bodytemperature(-reac_volume * TEMPERATURE_DAMAGE_COEFFICIENT, 50) @@ -336,8 +336,8 @@ overdose_threshold = 6 var/conversion_amount -/datum/reagent/medicine/c2/syriniver/on_transfer(atom/A, method=INJECT, trans_volume) - if(method != INJECT || !iscarbon(A)) +/datum/reagent/medicine/c2/syriniver/on_transfer(atom/A, methods=INJECT, trans_volume) + if(!(methods & INJECT) || !iscarbon(A)) return var/mob/living/carbon/C = A if(trans_volume >= 0.6) //prevents cheesing with ultralow doses. @@ -412,12 +412,12 @@ reagent_state = LIQUID color = "#FFEBEB" -/datum/reagent/medicine/c2/synthflesh/expose_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1) +/datum/reagent/medicine/c2/synthflesh/expose_mob(mob/living/M, methods=TOUCH, reac_volume,show_message = 1) if(iscarbon(M)) var/mob/living/carbon/carbies = M if (carbies.stat == DEAD) show_message = 0 - if(method in list(PATCH, TOUCH, VAPOR)) + if(methods & (PATCH|TOUCH|VAPOR)) var/harmies = min(carbies.getBruteLoss(),carbies.adjustBruteLoss(-1.25 * reac_volume)*-1) var/burnies = min(carbies.getFireLoss(),carbies.adjustFireLoss(-1.25 * reac_volume)*-1) for(var/i in carbies.all_wounds) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 16776e5f1e6..201e4c8cf8c 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -534,9 +534,9 @@ glass_name = "glass of Pwr Game" glass_desc = "Goes well with a Vlad's salad." -/datum/reagent/consumable/pwr_game/expose_mob(mob/living/C, method=TOUCH, reac_volume) +/datum/reagent/consumable/pwr_game/expose_mob(mob/living/C, methods=TOUCH, reac_volume) ..() - if(C?.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && method==INGEST && !HAS_TRAIT(C, TRAIT_GAMERGOD)) + if(C?.mind?.get_skill_level(/datum/skill/gaming) >= SKILL_LEVEL_LEGENDARY && (methods & INGEST) && !HAS_TRAIT(C, TRAIT_GAMERGOD)) ADD_TRAIT(C, TRAIT_GAMERGOD, "pwr_game") to_chat(C, "As you imbibe the Pwr Game, your gamer third eye opens... \ You feel as though a great secret of the universe has been made known to you...") diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 52fe5bcbfc6..12f045771a0 100755 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -24,20 +24,19 @@ return holder.remove_reagent(type, metabolization_rate) -/datum/reagent/consumable/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == INGEST) - if (quality && !HAS_TRAIT(M, TRAIT_AGEUSIA)) - switch(quality) - if (DRINK_NICE) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_nice) - if (DRINK_GOOD) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_good) - if (DRINK_VERYGOOD) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_verygood) - if (DRINK_FANTASTIC) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_fantastic) - if (FOOD_AMAZING) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_food", /datum/mood_event/amazingtaste) +/datum/reagent/consumable/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if((methods & INGEST) && quality && !HAS_TRAIT(M, TRAIT_AGEUSIA)) + switch(quality) + if (DRINK_NICE) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_nice) + if (DRINK_GOOD) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_good) + if (DRINK_VERYGOOD) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_verygood) + if (DRINK_FANTASTIC) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_fantastic) + if (FOOD_AMAZING) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_food", /datum/mood_event/amazingtaste) return ..() /datum/reagent/consumable/nutriment @@ -135,18 +134,18 @@ F.fry(volume) F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume) -/datum/reagent/consumable/cooking_oil/expose_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0) +/datum/reagent/consumable/cooking_oil/expose_mob(mob/living/M, methods = TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(!istype(M)) return var/boiling = FALSE if(holder && holder.chem_temp >= fry_temperature) boiling = TRUE - if(method != VAPOR && method != TOUCH) //Directly coats the mob, and doesn't go into their bloodstream + if(!(methods & (VAPOR|TOUCH))) //Directly coats the mob, and doesn't go into their bloodstream return ..() if(!boiling) return TRUE var/oil_damage = ((holder.chem_temp / fry_temperature) * 0.33) //Damage taken per unit - if(method == TOUCH) + if(methods & TOUCH) oil_damage *= 1 - M.get_permeability_protection() var/FryLoss = round(min(38, oil_damage * reac_volume)) if(!HAS_TRAIT(M, TRAIT_OIL_FRIED)) @@ -306,12 +305,12 @@ color = "#B31008" // rgb: 179, 16, 8 taste_description = "scorching agony" -/datum/reagent/consumable/condensedcapsaicin/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/consumable/condensedcapsaicin/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(!ishuman(M) && !ismonkey(M)) return var/mob/living/carbon/victim = M - if(method == TOUCH || method == VAPOR) + if(methods & (TOUCH|VAPOR)) var/pepper_proof = victim.is_pepper_proof() //check for protection @@ -326,7 +325,7 @@ victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray) addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS) victim.update_damage_hud() - if(method == INGEST) + if(methods & INGEST) if(!holder.has_reagent(/datum/reagent/consumable/milk)) if(prob(15)) to_chat(M, "[pick("Your head pounds.", "Your mouth feels like it's on fire.", "You feel dizzy.")]") @@ -350,7 +349,7 @@ color = "#FFFFFF" // rgb: 255,255,255 taste_description = "salt" -/datum/reagent/consumable/sodiumchloride/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/consumable/sodiumchloride/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(!istype(M)) return if(M.has_bane(BANE_SALT)) @@ -595,8 +594,8 @@ M.adjustToxLoss(-1*REM, 0) ..() -/datum/reagent/consumable/honey/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH))) +/datum/reagent/consumable/honey/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(iscarbon(M) && (methods & (TOUCH|VAPOR|PATCH))) var/mob/living/carbon/C = M for(var/s in C.surgeries) var/datum/surgery/S = s @@ -621,18 +620,12 @@ color = "#c0c9a0" taste_description = "bitterness" -/datum/reagent/consumable/tearjuice/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/consumable/tearjuice/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(!istype(M)) return var/unprotected = FALSE - switch(method) - if(INGEST) - unprotected = TRUE - if(INJECT) - unprotected = FALSE - else //Touch or vapor - if(!M.is_mouth_covered() && !M.is_eyes_covered()) - unprotected = TRUE + if((methods & INGEST) || ((methods & (TOUCH|PATCH|VAPOR)) && !M.is_mouth_covered() && !M.is_eyes_covered())) + unprotected = TRUE if(unprotected) if(!M.getorganslot(ORGAN_SLOT_EYES)) //can't blind somebody with no eyes to_chat(M, "Your eye sockets feel wet.") @@ -747,8 +740,8 @@ color = "#97ee63" taste_description = "pure electricity" -/datum/reagent/consumable/liquidelectricity/expose_mob(mob/living/M, method=TOUCH, reac_volume) //can't be on life because of the way blood works. - if((method == INGEST || method == INJECT || method == PATCH) && iscarbon(M)) +/datum/reagent/consumable/liquidelectricity/expose_mob(mob/living/M, methods=TOUCH, reac_volume) //can't be on life because of the way blood works. + if((methods & (INGEST|INJECT|PATCH)) && iscarbon(M)) var/mob/living/carbon/C = M var/obj/item/organ/stomach/ethereal/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) if(istype(stomach)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index ec6a4763ded..f47b6976db2 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -232,7 +232,7 @@ ..() . = 1 -/datum/reagent/medicine/rezadone/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/medicine/rezadone/expose_mob(mob/living/M, methods=TOUCH, reac_volume) . = ..() if(iscarbon(M)) var/mob/living/carbon/patient = M @@ -326,9 +326,9 @@ ..() return TRUE -/datum/reagent/medicine/mine_salve/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) +/datum/reagent/medicine/mine_salve/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message = 1) if(iscarbon(M) && M.stat != DEAD) - if(method in list(INGEST, VAPOR, INJECT)) + if(methods & (INGEST|VAPOR|INJECT)) M.adjust_nutrition(-5) if(show_message) to_chat(M, "Your stomach feels empty and cramps!") @@ -766,13 +766,13 @@ if(chems.has_reagent(type, 1)) mytray.spawnplant() -/datum/reagent/medicine/strange_reagent/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/medicine/strange_reagent/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(M.stat != DEAD) return ..() if(M.suiciding || M.hellbound) //they are never coming back M.visible_message("[M]'s body does not react...") return - if(iscarbon(M) && method != INGEST) //simplemobs can still be splashed + if(iscarbon(M) && !(methods & INGEST)) //simplemobs can still be splashed return ..() var/amount_to_revive = round((M.getBruteLoss()+M.getFireLoss())/20) if(M.getBruteLoss()+M.getFireLoss() >= 200 || HAS_TRAIT(M, TRAIT_HUSK) || reac_volume < amount_to_revive) //body will die from brute+burn on revive or you haven't provided enough to revive. @@ -1272,8 +1272,8 @@ ..() . = 1 -/datum/reagent/medicine/polypyr/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/medicine/polypyr/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) if(M && ishuman(M) && reac_volume >= 0.5) var/mob/living/carbon/human/H = M H.hair_color = "92f" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 88b875707a9..13840f96384 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -16,7 +16,7 @@ if(chems.has_reagent(src.type, 1)) mytray.adjustPests(rand(2,3)) -/datum/reagent/blood/expose_mob(mob/living/L, method=TOUCH, reac_volume) +/datum/reagent/blood/expose_mob(mob/living/L, methods=TOUCH, reac_volume) if(data && data["viruses"]) for(var/thing in data["viruses"]) var/datum/disease/D = thing @@ -24,14 +24,14 @@ if((D.spread_flags & DISEASE_SPREAD_SPECIAL) || (D.spread_flags & DISEASE_SPREAD_NON_CONTAGIOUS)) continue - if((method == TOUCH || method == VAPOR) && (D.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) + if((methods & (TOUCH|VAPOR)) && (D.spread_flags & DISEASE_SPREAD_CONTACT_FLUIDS)) L.ContactContractDisease(D) else //ingest, patch or inject L.ForceContractDisease(D) if(iscarbon(L)) var/mob/living/carbon/C = L - if(C.get_blood_id() == /datum/reagent/blood && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) + if(C.get_blood_id() == /datum/reagent/blood && ((methods & INJECT) || ((methods & INGEST) && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) C.reagents.add_reagent(/datum/reagent/toxin, reac_volume * 0.5) else @@ -105,8 +105,8 @@ color = "#C81040" // rgb: 200, 16, 64 taste_description = "slime" -/datum/reagent/vaccine/expose_mob(mob/living/L, method=TOUCH, reac_volume) - if(islist(data) && (method == INGEST || method == INJECT)) +/datum/reagent/vaccine/expose_mob(mob/living/L, methods=TOUCH, reac_volume) + if(islist(data) && (methods & (INGEST|INJECT))) for(var/thing in L.diseases) var/datum/disease/D = thing if(D.GetDiseaseID() in data) @@ -193,10 +193,10 @@ * Water reaction to a mob */ -/datum/reagent/water/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with water can help put them out! +/datum/reagent/water/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with water can help put them out! if(!istype(M)) return - if(method == TOUCH) + if(methods & TOUCH) M.adjust_fire_stacks(-(reac_volume / 10)) M.ExtinguishMob() ..() @@ -232,7 +232,7 @@ REMOVE_TRAIT(L, TRAIT_HOLY, type) ..() -/datum/reagent/water/holywater/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/water/holywater/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(iscultist(M)) to_chat(M, "A vile holiness begins to spread its shining tendrils through your mind, purging the Geometer of Blood's influence!") ..() @@ -316,10 +316,10 @@ * Water reaction to a mob */ -/datum/reagent/hydrogen_peroxide/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with h2o2 can burn them ! +/datum/reagent/hydrogen_peroxide/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with h2o2 can burn them ! if(!istype(M)) return - if(method == TOUCH) + if(methods & TOUCH) M.adjustFireLoss(2, 0) // burns ..() @@ -329,8 +329,8 @@ taste_description = "suffering" metabolization_rate = 2.5 * REAGENTS_METABOLISM //1u/tick -/datum/reagent/fuel/unholywater/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/fuel/unholywater/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) M.reagents.add_reagent(type,reac_volume/4) return return ..() @@ -400,9 +400,9 @@ overdose_threshold = 11 //Slightly more than one un-nozzled spraybottle. taste_description = "sour oranges" -/datum/reagent/spraytan/expose_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) +/datum/reagent/spraytan/expose_mob(mob/living/M, methods=TOUCH, reac_volume, show_message = 1) if(ishuman(M)) - if(method == PATCH || method == VAPOR) + if(methods & (PATCH|VAPOR)) var/mob/living/carbon/human/N = M if(N.dna.species.id == "human") switch(N.skin_tone) @@ -459,9 +459,8 @@ - if(method == INGEST) - if(show_message) - to_chat(M, "That tasted horrible.") + if((methods & INGEST) && show_message) + to_chat(M, "That tasted horrible.") ..() @@ -685,8 +684,8 @@ color = "#13BC5E" // rgb: 19, 188, 94 taste_description = "slime" -/datum/reagent/aslimetoxin/expose_mob(mob/living/L, method=TOUCH, reac_volume) - if(method != TOUCH) +/datum/reagent/aslimetoxin/expose_mob(mob/living/L, methods=TOUCH, reac_volume) + if(methods & ~TOUCH) L.ForceContractDisease(new /datum/disease/transformation/slime(), FALSE, TRUE) /datum/reagent/gluttonytoxin @@ -696,7 +695,7 @@ can_synth = FALSE taste_description = "decay" -/datum/reagent/gluttonytoxin/expose_mob(mob/living/L, method=TOUCH, reac_volume) +/datum/reagent/gluttonytoxin/expose_mob(mob/living/L, methods=TOUCH, reac_volume) L.ForceContractDisease(new /datum/disease/transformation/morph(), FALSE, TRUE) /datum/reagent/serotrotium @@ -905,8 +904,8 @@ color = "#D0EFEE" // space cleaner but lighter taste_description = "bitterness" -/datum/reagent/space_cleaner/sterilizine/expose_mob(mob/living/carbon/C, method=TOUCH, reac_volume) - if(method in list(TOUCH, VAPOR, PATCH)) +/datum/reagent/space_cleaner/sterilizine/expose_mob(mob/living/carbon/C, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR|PATCH)) for(var/s in C.surgeries) var/datum/surgery/S = s S.speed_modifier = max(0.2, S.speed_modifier) @@ -926,7 +925,7 @@ C.blood_volume += 0.5 ..() -/datum/reagent/iron/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/iron/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. if(holder && holder.chem_temp < 100) // COLD iron. M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) @@ -948,7 +947,7 @@ taste_description = "expensive yet reasonable metal" material = /datum/material/silver -/datum/reagent/silver/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/silver/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(M.has_bane(BANE_SILVER)) M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() @@ -1006,8 +1005,8 @@ taste_description = "fizzling blue" material = /datum/material/bluespace -/datum/reagent/bluespace/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/bluespace/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) do_teleport(M, get_turf(M), (reac_volume / 5), asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) //4 tiles per crystal ..() @@ -1046,8 +1045,8 @@ glass_name = "glass of welder fuel" glass_desc = "Unless you're an industrial tool, this is probably not safe for consumption." -/datum/reagent/fuel/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite! - if(method == TOUCH || method == VAPOR) +/datum/reagent/fuel/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with welding fuel to make them easy to ignite! + if(methods & (TOUCH|VAPOR)) M.adjust_fire_stacks(reac_volume / 10) return ..() @@ -1080,8 +1079,8 @@ for(var/mob/living/simple_animal/slime/M in T) M.adjustToxLoss(rand(5,10)) -/datum/reagent/space_cleaner/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/space_cleaner/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) M.wash(clean_types) /datum/reagent/space_cleaner/ez_clean @@ -1096,9 +1095,9 @@ M.adjustToxLoss(3.33) ..() -/datum/reagent/space_cleaner/ez_clean/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/space_cleaner/ez_clean/expose_mob(mob/living/M, methods=TOUCH, reac_volume) ..() - if((method == TOUCH || method == VAPOR) && !issilicon(M)) + if((methods & (TOUCH|VAPOR)) && !issilicon(M)) M.adjustBruteLoss(1.5) M.adjustFireLoss(1.5) @@ -1137,8 +1136,8 @@ can_synth = FALSE taste_description = "sludge" -/datum/reagent/nanomachines/expose_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) +/datum/reagent/nanomachines/expose_mob(mob/living/L, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE) /datum/reagent/xenomicrobes @@ -1148,8 +1147,8 @@ can_synth = FALSE taste_description = "sludge" -/datum/reagent/xenomicrobes/expose_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) +/datum/reagent/xenomicrobes/expose_mob(mob/living/L, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/xeno(), FALSE, TRUE) /datum/reagent/fungalspores @@ -1159,8 +1158,8 @@ can_synth = FALSE taste_description = "slime" -/datum/reagent/fungalspores/expose_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) +/datum/reagent/fungalspores/expose_mob(mob/living/L, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/tuberculosis(), FALSE, TRUE) /datum/reagent/snail @@ -1170,8 +1169,8 @@ taste_description = "goo" can_synth = FALSE //special orange man request -/datum/reagent/snail/expose_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) +/datum/reagent/snail/expose_mob(mob/living/L, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/gastrolosis(), FALSE, TRUE) /datum/reagent/fluorosurfactant//foam precursor @@ -1264,8 +1263,8 @@ var/temp = holder ? holder.chem_temp : T20C T.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[temp]") -/datum/reagent/nitrous_oxide/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == VAPOR) +/datum/reagent/nitrous_oxide/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & VAPOR) M.drowsyness += max(round(reac_volume, 1), 2) /datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/M) @@ -1693,10 +1692,10 @@ taste_description = "acid" -/datum/reagent/acetone_oxide/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people kills people! +/datum/reagent/acetone_oxide/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people kills people! if(!istype(M)) return - if(method == TOUCH) + if(methods & TOUCH) M.adjustFireLoss(2, FALSE) // burns, M.adjust_fire_stacks((reac_volume / 10)) ..() @@ -1773,8 +1772,8 @@ /datum/reagent/hair_dye/proc/UpdateColor() color = pick(potential_colors) -/datum/reagent/hair_dye/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/hair_dye/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) if(M && ishuman(M)) var/mob/living/carbon/human/H = M H.hair_color = pick(potential_colors) @@ -1788,16 +1787,15 @@ color = "#A86B45" //hair is brown taste_description = "sourness" -/datum/reagent/barbers_aid/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) - if(M && ishuman(M) && !HAS_TRAIT(M, TRAIT_BALD)) - var/mob/living/carbon/human/H = M - var/datum/sprite_accessory/hair/picked_hair = pick(GLOB.hairstyles_list) - var/datum/sprite_accessory/facial_hair/picked_beard = pick(GLOB.facial_hairstyles_list) - to_chat(H, "Hair starts sprouting from your scalp.") - H.hairstyle = picked_hair - H.facial_hairstyle = picked_beard - H.update_hair() +/datum/reagent/barbers_aid/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if((methods & (TOUCH|VAPOR)) && ishuman(M) && !HAS_TRAIT(M, TRAIT_BALD)) + var/mob/living/carbon/human/exposed_human = M + var/datum/sprite_accessory/hair/picked_hair = pick(GLOB.hairstyles_list) + var/datum/sprite_accessory/facial_hair/picked_beard = pick(GLOB.facial_hairstyles_list) + to_chat(exposed_human, "Hair starts sprouting from your scalp.") + exposed_human.hairstyle = picked_hair + exposed_human.facial_hairstyle = picked_beard + exposed_human.update_hair() /datum/reagent/concentrated_barbers_aid name = "Concentrated Barber's Aid" @@ -1806,8 +1804,8 @@ color = "#7A4E33" //hair is dark browmn taste_description = "sourness" -/datum/reagent/concentrated_barbers_aid/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/concentrated_barbers_aid/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) if(M && ishuman(M) && !HAS_TRAIT(M, TRAIT_BALD)) var/mob/living/carbon/human/H = M to_chat(H, "Your hair starts growing at an incredible speed!") @@ -1822,14 +1820,13 @@ color = "#ecb2cf" taste_description = "bitterness" -/datum/reagent/baldium/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) - if(M && ishuman(M)) - var/mob/living/carbon/human/H = M - to_chat(H, "Your hair is falling out in clumps!") - H.hairstyle = "Bald" - H.facial_hairstyle = "Shaved" - H.update_hair() +/datum/reagent/baldium/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if((methods & (TOUCH|VAPOR)) && ishuman(M)) + var/mob/living/carbon/human/exposed_human = M + to_chat(exposed_human, "Your hair is falling out in clumps!") + exposed_human.hairstyle = "Bald" + exposed_human.facial_hairstyle = "Shaved" + exposed_human.update_hair() /datum/reagent/saltpetre name = "Saltpetre" @@ -1944,7 +1941,7 @@ can_synth = FALSE taste_description = "brains" -/datum/reagent/romerol/expose_mob(mob/living/carbon/human/H, method=TOUCH, reac_volume) +/datum/reagent/romerol/expose_mob(mob/living/carbon/human/H, methods=TOUCH, reac_volume) // Silently add the zombie infection organ to be activated upon death if(!H.getorganslot(ORGAN_SLOT_ZOMBIE)) var/obj/item/organ/zombie_infection/nodamage/ZI = new() @@ -2113,8 +2110,8 @@ taste_description = "inner peace" can_synth = FALSE -/datum/reagent/tranquility/expose_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) - if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) +/datum/reagent/tranquility/expose_mob(mob/living/L, methods=TOUCH, reac_volume, show_message = 1, touch_protection = 0) + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/gondola(), FALSE, TRUE) @@ -2167,8 +2164,8 @@ yuck_cycle = 0 // reset vomiting return ..() -/datum/reagent/yuck/on_transfer(atom/A, method=TOUCH, trans_volume) - if(method == INGEST || !iscarbon(A)) +/datum/reagent/yuck/on_transfer(atom/A, methods=TOUCH, trans_volume) + if((methods & INGEST) || !iscarbon(A)) return ..() A.reagents.remove_reagent(type, trans_volume) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 505a716126c..3c3b9483cd4 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -69,9 +69,9 @@ if(prob(reac_volume)) W.ScrapeAway() -/datum/reagent/clf3/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/clf3/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(istype(M)) - if(method != INGEST && method != INJECT) + if(methods & (TOUCH|VAPOR|PATCH)) M.adjust_fire_stacks(min(reac_volume/5, 10)) M.IgniteMob() if(!locate(/obj/effect/hotspot) in M.loc) @@ -158,7 +158,7 @@ taste_description = "burning" self_consuming = TRUE -/datum/reagent/phlogiston/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/phlogiston/expose_mob(mob/living/M, methods=TOUCH, reac_volume) M.adjust_fire_stacks(1) var/burndmg = max(0.3*M.fire_stacks, 0.3) M.adjustFireLoss(burndmg, 0) @@ -193,9 +193,9 @@ M.adjust_fire_stacks(1) ..() -/datum/reagent/napalm/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/napalm/expose_mob(mob/living/M, methods=TOUCH, reac_volume) if(istype(M)) - if(method != INGEST && method != INJECT) + if(methods & (TOUCH|VAPOR|PATCH)) M.adjust_fire_stacks(min(reac_volume/4, 20)) /datum/reagent/cryostylane @@ -310,8 +310,8 @@ /datum/reagent/firefighting_foam/expose_obj(obj/O, reac_volume) O.extinguish() -/datum/reagent/firefighting_foam/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method in list(VAPOR, TOUCH)) +/datum/reagent/firefighting_foam/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) M.adjust_fire_stacks(-reac_volume) M.ExtinguishMob() ..() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 02be6e33be3..4da66edc3c0 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -38,12 +38,12 @@ taste_description = "slime" taste_mult = 0.9 -/datum/reagent/toxin/mutagen/expose_mob(mob/living/carbon/M, method=TOUCH, reac_volume) +/datum/reagent/toxin/mutagen/expose_mob(mob/living/carbon/M, methods=TOUCH, reac_volume) if(!..()) return if(!M.has_dna() || HAS_TRAIT(M, TRAIT_GENELESS) || HAS_TRAIT(M, TRAIT_BADDNA)) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - if((method==VAPOR && prob(min(33, reac_volume))) || method==INGEST || method==PATCH || method==INJECT) + if(((methods & VAPOR) && prob(min(33, reac_volume))) || (methods & (INGEST|PATCH|INJECT))) M.randmuti() if(prob(98)) M.easy_randmut(NEGATIVE+MINOR_NEGATIVE) @@ -102,8 +102,8 @@ if(temp >= LIQUID_PLASMA_BP) T.atmos_spawn_air("plasma=[reac_volume];TEMP=[temp]") -/datum/reagent/toxin/plasma/expose_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with plasma is stronger than fuel! - if(method == TOUCH || method == VAPOR) +/datum/reagent/toxin/plasma/expose_mob(mob/living/M, methods=TOUCH, reac_volume)//Splashing people with plasma is stronger than fuel! + if(methods & (TOUCH|VAPOR)) M.adjust_fire_stacks(reac_volume / 5) return ..() @@ -208,9 +208,9 @@ L.cure_fakedeath(type) ..() -/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/L, method=TOUCH, reac_volume) +/datum/reagent/toxin/zombiepowder/expose_mob(mob/living/L, methods=TOUCH, reac_volume) L.adjustOxyLoss(0.5*REM, 0) - if(method == INGEST) + if(methods & INGEST) var/datum/reagent/toxin/zombiepowder/Z = L.reagents.has_reagent(/datum/reagent/toxin/zombiepowder) if(istype(Z)) Z.fakedeath_active = TRUE @@ -287,13 +287,11 @@ var/obj/structure/spacevine/SV = O SV.on_chem_effect(src) -/datum/reagent/toxin/plantbgone/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == VAPOR) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.wear_mask) // If not wearing a mask - var/damage = min(round(0.4*reac_volume, 0.1),10) - C.adjustToxLoss(damage) +/datum/reagent/toxin/plantbgone/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if((methods & VAPOR) && iscarbon(M)) + var/mob/living/carbon/exposed_carbon = M + if(!exposed_carbon.wear_mask) + exposed_carbon.adjustToxLoss(min(round(0.4 * reac_volume, 0.1), 10)) /datum/reagent/toxin/plantbgone/weedkiller name = "Weed Killer" @@ -322,7 +320,7 @@ mytray.adjustToxic(round(chems.get_reagent_amount(type) * 1)) mytray.adjustPests(-rand(1,2)) -/datum/reagent/toxin/pestkiller/expose_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/toxin/pestkiller/expose_mob(mob/living/M, methods=TOUCH, reac_volume) ..() if(M.mob_biotypes & MOB_BUG) var/damage = min(round(0.4*reac_volume, 0.1),10) @@ -583,8 +581,8 @@ metabolization_rate = 0.4 * REAGENTS_METABOLISM toxpwr = 0 -/datum/reagent/toxin/itching_powder/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(method == TOUCH || method == VAPOR) +/datum/reagent/toxin/itching_powder/expose_mob(mob/living/M, methods=TOUCH, reac_volume) + if(methods & (TOUCH|VAPOR)) M.reagents?.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume) /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) @@ -841,14 +839,14 @@ mytray.adjustToxic(round(chems.get_reagent_amount(type) * 1.5)) mytray.adjustWeeds(-rand(1,2)) -/datum/reagent/toxin/acid/expose_mob(mob/living/carbon/C, method=TOUCH, reac_volume) +/datum/reagent/toxin/acid/expose_mob(mob/living/carbon/C, methods=TOUCH, reac_volume) if(!istype(C)) return reac_volume = round(reac_volume,0.1) - if(method == INGEST) + if(methods & INGEST) C.adjustBruteLoss(min(6*toxpwr, reac_volume * toxpwr)) return - if(method == INJECT) + if(methods & INJECT) C.adjustBruteLoss(1.5 * min(6*toxpwr, reac_volume * toxpwr)) return C.acid_act(acidpwr, reac_volume) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index fb2e586244f..3afae78b534 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -68,9 +68,9 @@ */ /obj/item/reagent_containers/on_accidental_consumption(mob/living/carbon/M, mob/living/carbon/user, obj/item/source_item, discover_after = TRUE) M.losebreath += 2 - reagents?.trans_to(M, min(15, reagents.total_volume / rand(5,10)), transfered_by = user, method = INGEST) + reagents?.trans_to(M, min(15, reagents.total_volume / rand(5,10)), transfered_by = user, methods = INGEST) if(source_item?.reagents) - reagents.trans_to(source_item, min(source_item.reagents.total_volume / 2, reagents.total_volume / 5), transfered_by = user, method = TOUCH) + reagents.trans_to(source_item, min(source_item.reagents.total_volume / 2, reagents.total_volume / 5), transfered_by = user, methods = TOUCH) return ..() diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 7f1cb8d35e9..e9a8db98b44 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -114,7 +114,7 @@ Borg Hypospray to_chat(M, "You feel a tiny prick!") to_chat(user, "You inject [M] with the injector.") if(M.reagents) - var/trans = R.trans_to(M, amount_per_transfer_from_this, transfered_by = user, method = INJECT) + var/trans = R.trans_to(M, amount_per_transfer_from_this, transfered_by = user, methods = INJECT) to_chat(user, "[trans] unit\s injected. [R.total_volume] unit\s remaining.") var/list/injected = list() diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index fedec9c622d..f65a21cf1ef 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -38,7 +38,7 @@ if(!safe_thing.reagents) safe_thing.create_reagents(100) - trans = reagents.trans_to(safe_thing, amount_per_transfer_from_this, transfered_by = user, method = TOUCH) + trans = reagents.trans_to(safe_thing, amount_per_transfer_from_this, transfered_by = user, methods = TOUCH) target.visible_message("[user] tries to squirt something into [target]'s eyes, but fails!", \ "[user] tries to squirt something into your eyes, but fails!") diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 3179d4d5857..4a9d8b9765b 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -45,7 +45,7 @@ if(M.reagents) var/trans = 0 if(!infinite) - trans = reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user, method = INJECT) + trans = reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user, methods = INJECT) else reagents.expose(M, INJECT, fraction) trans = reagents.copy_to(M, amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/medigel.dm b/code/modules/reagents/reagent_containers/medigel.dm index f8a11e186b9..40833177bd7 100644 --- a/code/modules/reagents/reagent_containers/medigel.dm +++ b/code/modules/reagents/reagent_containers/medigel.dm @@ -71,7 +71,7 @@ else log_combat(user, M, "applied", src, reagents.log_list()) playsound(src, 'sound/effects/spray.ogg', 30, TRUE, -6) - reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user, method = apply_type) + reagents.trans_to(M, amount_per_transfer_from_this, transfered_by = user, methods = apply_type) return /obj/item/reagent_containers/medigel/libital diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 1766949e89d..72452a16675 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -50,7 +50,7 @@ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, M, "[pick(strings(REDPILL_FILE, "redpill_questions"))]"), 50) if(reagents.total_volume) - reagents.trans_to(M, reagents.total_volume, transfered_by = user, method = apply_type) + reagents.trans_to(M, reagents.total_volume, transfered_by = user, methods = apply_type) qdel(src) return TRUE @@ -73,13 +73,13 @@ reagents.trans_to(target, reagents.total_volume, transfered_by = user) qdel(src) -/* +/* * On accidental consumption, consume the pill */ /obj/item/reagent_containers/pill/on_accidental_consumption(mob/living/carbon/M, mob/living/carbon/user, obj/item/source_item, discover_after = FALSE) to_chat(M, "You swallow something small. Was that in \the [source_item]?") if(reagents?.total_volume) - reagents.trans_to(M, reagents.total_volume, transfered_by = user, method = INGEST) + reagents.trans_to(M, reagents.total_volume, transfered_by = user, methods = INGEST) source_item?.contents -= src qdel(src) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 0aa074a33cd..7485ed6ddb2 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -150,20 +150,20 @@ log_combat(user, L, "injected", src, addition="which had [contained]") else L.log_message("injected themselves ([contained]) with [src.name]", LOG_ATTACK, color="orange") - reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user, method = INJECT) + reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user, methods = INJECT) to_chat(user, "You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.") if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT) mode = SYRINGE_DRAW update_icon() -/* +/* * On accidental consumption, inject the eater with 2/3rd of the syringe and reveal it */ /obj/item/reagent_containers/syringe/on_accidental_consumption(mob/living/carbon/M, mob/living/carbon/user, obj/item/source_item, discover_after = TRUE) to_chat(M, "There's a syringe in \the [source_item]!!") - M.apply_damage(5, BRUTE, BODY_ZONE_HEAD) + M.apply_damage(5, BRUTE, BODY_ZONE_HEAD) if(reagents?.total_volume) - reagents.trans_to(M, round(reagents.total_volume*(2/3)), transfered_by = user, method = INJECT) + reagents.trans_to(M, round(reagents.total_volume*(2/3)), transfered_by = user, methods = INJECT) return discover_after diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 6bfe57311ab..4f9fc6d13f6 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -38,6 +38,6 @@ to_chat(owner, "You grit your teeth and burst the implanted [target.name]!") log_combat(owner, null, "swallowed an implanted pill", target) if(target.reagents.total_volume) - target.reagents.trans_to(owner, target.reagents.total_volume, transfered_by = owner, method = INGEST) + target.reagents.trans_to(owner, target.reagents.total_volume, transfered_by = owner, methods = INGEST) qdel(target) return TRUE