module things, jfc

This commit is contained in:
Poojawa
2018-09-11 07:51:01 -05:00
parent 8b9ef1e400
commit 284e9d0325
695 changed files with 11343 additions and 5661 deletions
@@ -111,7 +111,7 @@ Borg Hypospray
var/list/injected = list()
for(var/datum/reagent/RG in R.reagent_list)
injected += RG.name
add_logs(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])")
log_combat(user, M, "injected", src, "(CHEMICALS: [english_list(injected)])")
/obj/item/reagent_containers/borghypo/attack_self(mob/user)
var/chosen_reagent = modes[input(user, "What reagent do you want to dispense?") as null|anything in reagent_ids]
@@ -197,6 +197,7 @@ Borg Shaker
RG.add_reagent(reagent_ids[valueofi], 5)
/obj/item/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
. = ..()
if(!proximity)
return
@@ -251,6 +252,6 @@ Borg Shaker
/obj/item/reagent_containers/borghypo/epi
name = "epinephrine injector"
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients.."
desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients."
reagent_ids = list("epinephrine")
accepts_reagent_upgrades = FALSE
@@ -302,3 +302,105 @@
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10)
//Oldstation.dmm chemical storage bottles
/obj/item/reagent_containers/glass/bottle/hydrogen
name = "hydrogen bottle"
list_reagents = list("hydrogen" = 30)
/obj/item/reagent_containers/glass/bottle/lithium
name = "lithium bottle"
list_reagents = list("lithium" = 30)
/obj/item/reagent_containers/glass/bottle/carbon
name = "carbon bottle"
list_reagents = list("carbon" = 30)
/obj/item/reagent_containers/glass/bottle/nitrogen
name = "nitrogen bottle"
list_reagents = list("nitrogen" = 30)
/obj/item/reagent_containers/glass/bottle/oxygen
name = "oxygen bottle"
list_reagents = list("oxygen" = 30)
/obj/item/reagent_containers/glass/bottle/fluorine
name = "fluorine bottle"
list_reagents = list("fluorine" = 30)
/obj/item/reagent_containers/glass/bottle/sodium
name = "sodium bottle"
list_reagents = list("sodium" = 30)
/obj/item/reagent_containers/glass/bottle/aluminium
name = "aluminium bottle"
list_reagents = list("aluminium" = 30)
/obj/item/reagent_containers/glass/bottle/silicon
name = "silicon bottle"
list_reagents = list("silicon" = 30)
/obj/item/reagent_containers/glass/bottle/phosphorus
name = "phosphorus bottle"
list_reagents = list("phosphorus" = 30)
/obj/item/reagent_containers/glass/bottle/sulfur
name = "sulfur bottle"
list_reagents = list("sulfur" = 30)
/obj/item/reagent_containers/glass/bottle/chlorine
name = "chlorine bottle"
list_reagents = list("chlorine" = 30)
/obj/item/reagent_containers/glass/bottle/potassium
name = "potassium bottle"
list_reagents = list("potassium" = 30)
/obj/item/reagent_containers/glass/bottle/iron
name = "iron bottle"
list_reagents = list("iron" = 30)
/obj/item/reagent_containers/glass/bottle/copper
name = "copper bottle"
list_reagents = list("copper" = 30)
/obj/item/reagent_containers/glass/bottle/mercury
name = "mercury bottle"
list_reagents = list("mercury" = 30)
/obj/item/reagent_containers/glass/bottle/radium
name = "radium bottle"
list_reagents = list("radium" = 30)
/obj/item/reagent_containers/glass/bottle/water
name = "water bottle"
list_reagents = list("water" = 30)
/obj/item/reagent_containers/glass/bottle/ethanol
name = "ethanol bottle"
list_reagents = list("ethanol" = 30)
/obj/item/reagent_containers/glass/bottle/sugar
name = "sugar bottle"
list_reagents = list("sugar" = 30)
/obj/item/reagent_containers/glass/bottle/sacid
name = "sulphuric acid bottle"
list_reagents = list("sacid" = 30)
/obj/item/reagent_containers/glass/bottle/welding_fuel
name = "welding fuel bottle"
list_reagents = list("welding_fuel" = 30)
/obj/item/reagent_containers/glass/bottle/silver
name = "silver bottle"
list_reagents = list("silver" = 30)
/obj/item/reagent_containers/glass/bottle/iodine
name = "iodine bottle"
list_reagents = list("iodine" = 30)
/obj/item/reagent_containers/glass/bottle/bromine
name = "bromine bottle"
list_reagents = list("bromine" = 30)
@@ -9,6 +9,7 @@
container_type = TRANSPARENT
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
. = ..()
if(!proximity)
return
if(!target.reagents)
@@ -68,7 +69,7 @@
for(var/datum/reagent/A in src.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
add_logs(user, M, "squirted", R)
log_combat(user, M, "squirted", R)
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution.</span>")
@@ -29,11 +29,10 @@
R += A.id + " ("
R += num2text(A.volume) + "),"
if(isturf(target) && reagents.reagent_list.len && thrownby)
add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]")
log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].")
log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]")
message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].")
reagents.reaction(M, TOUCH)
add_logs(user, M, "splashed", R)
log_combat(user, M, "splashed", R)
reagents.clear_reagents()
else
if(M != user)
@@ -44,7 +43,7 @@
if(!reagents || !reagents.total_volume)
return // The drink might be empty after the delay, such as by spam-feeding
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
add_logs(user, M, "fed", reagents.log_list())
log_combat(user, M, "fed", reagents.log_list())
else
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
var/fraction = min(5/reagents.total_volume, 1)
@@ -53,6 +52,7 @@
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
. = ..()
if((!proximity) || !check_allowed_items(target,target_self=1))
return
@@ -172,7 +172,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
volume = 120
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,15,20,25,30,60,120)
possible_transfer_amounts = list(5,10,15,20,25,30,60,120)
/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
@@ -186,7 +186,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
volume = 180
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,15,20,25,30,60,120,180)
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,180)
/obj/item/reagent_containers/glass/beaker/noreact
name = "cryostasis beaker"
@@ -251,7 +251,7 @@
materials = list(MAT_METAL=200)
w_class = WEIGHT_CLASS_NORMAL
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
possible_transfer_amounts = list(5,10,15,20,25,30,50,70)
volume = 70
flags_inv = HIDEHAIR
slot_flags = ITEM_SLOT_HEAD
@@ -330,103 +330,3 @@
/obj/item/reagent_containers/glass/beaker/waterbottle/large/empty
list_reagents = list()
/obj/item/reagent_containers/glass/beaker/large/hydrogen
name = "hydrogen beaker"
list_reagents = list("hydrogen" = 50)
/obj/item/reagent_containers/glass/beaker/large/lithium
name = "lithium beaker"
list_reagents = list("lithium" = 50)
/obj/item/reagent_containers/glass/beaker/large/carbon
name = "carbon beaker"
list_reagents = list("carbon" = 50)
/obj/item/reagent_containers/glass/beaker/large/nitrogen
name = "nitrogen beaker"
list_reagents = list("nitrogen" = 50)
/obj/item/reagent_containers/glass/beaker/large/oxygen
name = "oxygen beaker"
list_reagents = list("oxygen" = 50)
/obj/item/reagent_containers/glass/beaker/large/fluorine
name = "fluorine beaker"
list_reagents = list("fluorine" = 50)
/obj/item/reagent_containers/glass/beaker/large/sodium
name = "sodium beaker"
list_reagents = list("sodium" = 50)
/obj/item/reagent_containers/glass/beaker/large/aluminium
name = "aluminium beaker"
list_reagents = list("aluminium" = 50)
/obj/item/reagent_containers/glass/beaker/large/silicon
name = "silicon beaker"
list_reagents = list("silicon" = 50)
/obj/item/reagent_containers/glass/beaker/large/phosphorus
name = "phosphorus beaker"
list_reagents = list("phosphorus" = 50)
/obj/item/reagent_containers/glass/beaker/large/sulfur
name = "sulfur beaker"
list_reagents = list("sulfur" = 50)
/obj/item/reagent_containers/glass/beaker/large/chlorine
name = "chlorine beaker"
list_reagents = list("chlorine" = 50)
/obj/item/reagent_containers/glass/beaker/large/potassium
name = "potassium beaker"
list_reagents = list("potassium" = 50)
/obj/item/reagent_containers/glass/beaker/large/iron
name = "iron beaker"
list_reagents = list("iron" = 50)
/obj/item/reagent_containers/glass/beaker/large/copper
name = "copper beaker"
list_reagents = list("copper" = 50)
/obj/item/reagent_containers/glass/beaker/large/mercury
name = "mercury beaker"
list_reagents = list("mercury" = 50)
/obj/item/reagent_containers/glass/beaker/large/radium
name = "radium beaker"
list_reagents = list("radium" = 50)
/obj/item/reagent_containers/glass/beaker/large/water
name = "water beaker"
list_reagents = list("water" = 50)
/obj/item/reagent_containers/glass/beaker/large/ethanol
name = "ethanol beaker"
list_reagents = list("ethanol" = 50)
/obj/item/reagent_containers/glass/beaker/large/sugar
name = "sugar beaker"
list_reagents = list("sugar" = 50)
/obj/item/reagent_containers/glass/beaker/large/sacid
name = "sulphuric acid beaker"
list_reagents = list("sacid" = 50)
/obj/item/reagent_containers/glass/beaker/large/welding_fuel
name = "welding fuel beaker"
list_reagents = list("welding_fuel" = 50)
/obj/item/reagent_containers/glass/beaker/large/silver
name = "silver beaker"
list_reagents = list("silver" = 50)
/obj/item/reagent_containers/glass/beaker/large/iodine
name = "iodine beaker"
list_reagents = list("iodine" = 50)
/obj/item/reagent_containers/glass/beaker/large/bromine
name = "bromine beaker"
list_reagents = list("bromine" = 50)
@@ -30,7 +30,7 @@
for(var/datum/reagent/R in reagents.reagent_list)
injected += R.name
var/contained = english_list(injected)
add_logs(user, M, "attempted to inject", src, "([contained])")
log_combat(user, M, "attempted to inject", src, "([contained])")
if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
@@ -48,7 +48,7 @@
to_chat(user, "<span class='notice'>[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].</span>")
add_logs(user, M, "injected", src, "([contained])")
log_combat(user, M, "injected", src, "([contained])")
/obj/item/reagent_containers/hypospray/CMO
list_reagents = list("omnizine" = 30)
@@ -46,7 +46,7 @@
to_chat(M, "<span class='notice'>You [apply_method] yourself with [src].</span>")
else
add_logs(user, M, "attempted to apply", src, reagents.log_list())
log_combat(user, M, "attempted to apply", src, reagents.log_list())
M.visible_message("<span class='danger'>[user] attempts to [apply_method] [src] on [M].</span>", \
"<span class='userdanger'>[user] attempts to [apply_method] [src] on [M].</span>")
if(!do_mob(user, M))
@@ -60,7 +60,7 @@
return
else
add_logs(user, M, "applied", src, reagents.log_list())
log_combat(user, M, "applied", src, reagents.log_list())
playsound(src, 'sound/effects/spray2.ogg', 50, 1, -6)
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(M, apply_type, fraction)
@@ -9,9 +9,7 @@
apply_type = PATCH
apply_method = "apply"
self_delay = 30 // three seconds
/obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
return // thanks inheritance again
dissolvable = FALSE
/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
if(ishuman(L))
@@ -13,6 +13,7 @@
var/apply_method = "swallow"
var/roundstart = 0
var/self_delay = 0 //pills are instant, this is because patches inheret their aplication from pills
var/dissolvable = TRUE
/obj/item/reagent_containers/pill/Initialize()
. = ..()
@@ -46,7 +47,7 @@
"<span class='userdanger'>[user] forces [M] to [apply_method] [src].</span>")
add_logs(user, M, "fed", reagents.log_list())
log_combat(user, M, "fed", reagents.log_list())
if(reagents.total_volume)
reagents.reaction(M, apply_type)
reagents.trans_to(M, reagents.total_volume)
@@ -55,22 +56,24 @@
/obj/item/reagent_containers/pill/afterattack(obj/target, mob/user , proximity)
. = ..()
if(!proximity)
return
if(target.is_refillable())
if(target.is_drainable() && !target.reagents.total_volume)
to_chat(user, "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>")
return
if(!dissolvable || !target.is_refillable())
return
if(target.is_drainable() && !target.reagents.total_volume)
to_chat(user, "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>")
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
if(target.reagents.holder_full())
to_chat(user, "<span class='warning'>[target] is full.</span>")
return
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
reagents.trans_to(target, reagents.total_volume)
qdel(src)
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
reagents.trans_to(target, reagents.total_volume)
qdel(src)
/obj/item/reagent_containers/pill/tox
name = "toxins pill"
@@ -151,7 +154,7 @@
icon_state = "pill18"
list_reagents = list("insulin" = 50)
roundstart = 1
///////////////////////////////////////// this pill is used only in a legion mob drop
///////////////////////////////////////// this pill is used only in a legion mob drop
/obj/item/reagent_containers/pill/shadowtoxin
name = "black pill"
desc = "I wouldn't eat this if I were you."
@@ -178,5 +181,18 @@
name = "speedy pill"
list_reagents = list("aranesp" = 10)
/obj/item/reagent_containers/pill/floorpill
name = "floorpill"
desc = "A strange pill found in the depths of maintenance"
icon_state = "pill21"
var/static/list/names = list("maintenance pill","floorpill","mystery pill","suspicious pill","strange pill")
var/static/list/descs = list("Your feeling is telling you no, but...","Drugs are expensive, you can't afford not to eat any pills that you find."\
, "Surely, there's no way this could go bad.")
/obj/item/reagent_containers/pill/floorpill/Initialize()
list_reagents = list(get_random_reagent_id() = rand(10,50))
. = ..()
name = pick(names)
if(prob(20))
desc = pick(descs)
@@ -24,6 +24,7 @@
possible_transfer_amounts = list(5,10,15,20,25,30,50,100)
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
. = ..()
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
return
@@ -195,7 +196,7 @@
/obj/item/reagent_containers/spray/pepper/afterattack(atom/A as mob|obj, mob/user)
if (A.loc == user)
return
..()
. = ..()
//water flower
/obj/item/reagent_containers/spray/waterflower
@@ -273,7 +274,7 @@
// Make it so the bioterror spray doesn't spray yourself when you click your inventory items
if (A.loc == user)
return
..()
. = ..()
/obj/item/reagent_containers/spray/chemsprayer/spray(atom/A)
var/direction = get_dir(src, A)
@@ -48,6 +48,7 @@
return
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user , proximity)
. = ..()
if(busy)
return
if(!proximity)
@@ -110,7 +111,7 @@
if(SYRINGE_INJECT)
// Always log attemped injections for admins
var/contained = reagents.log_list()
add_logs(user, L, "attemped to inject", src, addition="which had [contained]")
log_combat(user, target, "attempted to inject", src, addition="which had [contained]")
if(!reagents.total_volume)
to_chat(user, "<span class='notice'>[src] is empty.</span>")
@@ -140,11 +141,9 @@
"<span class='userdanger'>[user] injects [L] with the syringe!</span>")
if(L != user)
add_logs(user, L, "injected", src, addition="which had [contained]")
log_combat(user, L, "injected", src, addition="which had [contained]")
else
log_attack("<font color='red'>[key_name(user)] injected [key_name(L)] with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])</font>")
L.log_message("<font color='orange'>Injected themselves ([contained]) with [src.name].</font>", INDIVIDUAL_ATTACK_LOG)
L.log_message("injected themselves ([contained]) with [src.name]", LOG_ATTACK, color="orange")
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, INJECT, fraction)
reagents.trans_to(target, amount_per_transfer_from_this)
@@ -224,7 +223,7 @@
list_reagents = list("chloralhydrate" = 50)
/obj/item/reagent_containers/syringe/lethal/execution
list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
list_reagents = list("plasma" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10)
/obj/item/reagent_containers/syringe/mulligan
name = "Mulligan"
@@ -260,10 +259,3 @@
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
volume = 10
proj_piercing = 1
/obj/item/reagent_containers/syringe/alien
name = "Hive's Blessing"
desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone."
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list("xenomicrobes" = 1)