/obj/item/weapon/reagent_containers/spray name = "spray bottle" desc = "A spray bottle, with an unscrewable top." icon = 'icons/obj/janitor.dmi' icon_state = "cleaner" item_state = "cleaner" flags = TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY slot_flags = SLOT_BELT throwforce = 3 w_class = 2.0 throw_speed = 2 throw_range = 10 amount_per_transfer_from_this = 5 volume = 250 possible_transfer_amounts = null /obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob) if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink)) return if(istype(A, /obj/effect/proc_holder/spell)) return if(istype(A, /obj/structure/reagent_dispensers)) //this block copypasted from reagent_containers/glass, for lack of a better solution if(!A.reagents.total_volume && A.reagents) user << "\The [A] is empty." return if(reagents.total_volume >= reagents.maximum_volume) user << "\The [src] is full." return var/trans = A.reagents.trans_to(src, A:amount_per_transfer_from_this) user << "You fill \the [src] with [trans] units of the contents of \the [A]." return if(reagents.total_volume < amount_per_transfer_from_this) user << "\The [src] is empty!" return var/obj/effect/decal/D = new/obj/effect/decal(get_turf(src)) D.create_reagents(amount_per_transfer_from_this) reagents.trans_to(D, amount_per_transfer_from_this) D.name = "chemicals" D.icon = 'icons/obj/chempuff.dmi' D.icon += mix_color_from_reagents(D.reagents.reagent_list) spawn(0) for(var/i=0, i<3, i++) step_towards(D,A) D.reagents.reaction(get_turf(D)) for(var/atom/T in get_turf(D)) D.reagents.reaction(T) sleep(3) del(D) playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) if(reagents.has_reagent("sacid")) message_admins("[key_name_admin(user)] fired sulphuric acid from a spray bottle.") log_game("[key_name(user)] fired sulphuric acid from a spray bottle.") if(reagents.has_reagent("pacid")) message_admins("[key_name_admin(user)] fired Polyacid from a spray bottle.") log_game("[key_name(user)] fired Polyacid from a spray bottle.") if(reagents.has_reagent("lube")) message_admins("[key_name_admin(user)] fired Space lube from a spray bottle.") log_game("[key_name(user)] fired Space lube from a spray bottle.") return /obj/item/weapon/reagent_containers/spray/examine() set src in usr ..() for(var/datum/reagent/R in reagents.reagent_list) usr << "[round(R.volume)] units of [R.name] left." return //space cleaner /obj/item/weapon/reagent_containers/spray/cleaner name = "space cleaner" desc = "BLAM!-brand non-foaming space cleaner!" /obj/item/weapon/reagent_containers/spray/cleaner/New() ..() reagents.add_reagent("cleaner", 250) //pepperspray /obj/item/weapon/reagent_containers/spray/pepper name = "pepperspray" desc = "Manufactured by UhangInc, used to blind and down an opponent quickly." icon = 'icons/obj/weapons.dmi' icon_state = "pepperspray" item_state = "pepperspray" volume = 40 amount_per_transfer_from_this = 10 /obj/item/weapon/reagent_containers/spray/pepper/New() ..() reagents.add_reagent("condensedcapsaicin", 40) //chemsprayer /obj/item/weapon/reagent_containers/spray/chemsprayer name = "chem sprayer" desc = "A utility used to spray large amounts of reagent in a given area." icon = 'icons/obj/gun.dmi' icon_state = "chemsprayer" item_state = "chemsprayer" throwforce = 3 w_class = 3.0 volume = 600 origin_tech = "combat=3;materials=3;engineering=3" //this is a big copypasta clusterfuck, but it's still better than it used to be! /obj/item/weapon/reagent_containers/spray/chemsprayer/afterattack(atom/A as mob|obj, mob/user as mob) if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink)) return if(istype(A, /obj/effect/proc_holder/spell)) return if(istype(A, /obj/structure/reagent_dispensers)) //this block copypasted from reagent_containers/glass, for lack of a better solution if(!A.reagents.total_volume && A.reagents) user << "\The [A] is empty." return if(reagents.total_volume >= reagents.maximum_volume) user << "\The [src] is full." return var/trans = A.reagents.trans_to(src, A:amount_per_transfer_from_this) user << "You fill \the [src] with [trans] units of the contents of \the [A]." return if(reagents.total_volume < amount_per_transfer_from_this) user << "\The [src] is empty!" return var/Sprays[3] for(var/i=1, i<=3, i++) // intialize sprays if(src.reagents.total_volume < 1) break var/obj/effect/decal/D = new/obj/effect/decal(get_turf(src)) D.name = "chemicals" D.icon = 'icons/obj/chempuff.dmi' D.create_reagents(amount_per_transfer_from_this) src.reagents.trans_to(D, amount_per_transfer_from_this) D.icon += mix_color_from_reagents(D.reagents.reagent_list) Sprays[i] = D var/direction = get_dir(src, A) var/turf/T = get_turf(A) var/turf/T1 = get_step(T,turn(direction, 90)) var/turf/T2 = get_step(T,turn(direction, -90)) var/list/the_targets = list(T,T1,T2) for(var/i=1, i<=Sprays.len, i++) spawn() var/obj/effect/decal/D = Sprays[i] if(!D) continue // Spreads the sprays a little bit var/turf/my_target = pick(the_targets) the_targets -= my_target for(var/j=1, j<=rand(6,8), j++) step_towards(D, my_target) D.reagents.reaction(get_turf(D)) for(var/atom/t in get_turf(D)) D.reagents.reaction(t) sleep(2) del(D) playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) if(reagents.has_reagent("sacid")) message_admins("[key_name_admin(user)] fired sulphuric acid from a chem sprayer.") log_game("[key_name(user)] fired sulphuric acid from a chem sprayer.") if(reagents.has_reagent("pacid")) message_admins("[key_name_admin(user)] fired Polyacid from a chem sprayer.") log_game("[key_name(user)] fired Polyacid from a chem sprayer.") if(reagents.has_reagent("lube")) message_admins("[key_name_admin(user)] fired Space lube from a chem sprayer.") log_game("[key_name(user)] fired Space lube from a chem sprayer.") return //looking for plant-b-gone? it's in code/game/objects/items/weapons/hydroponics.dm