Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into space_ruins

This commit is contained in:
Crazylemon64
2016-06-24 15:58:04 -07:00
547 changed files with 24802 additions and 9055 deletions
+2 -2
View File
@@ -302,14 +302,14 @@ var/const/INGEST = 2
var/list/seen = viewers(4, get_turf(my_atom))
for(var/mob/M in seen)
if(!C.no_message)
to_chat(M, "\blue \icon[my_atom] [C.mix_message]")
to_chat(M, "\blue [bicon(my_atom)] [C.mix_message]")
if(istype(my_atom, /obj/item/slime_extract))
var/obj/item/slime_extract/ME2 = my_atom
ME2.Uses--
if(ME2.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in seen)
to_chat(M, "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction.")
to_chat(M, "\blue [bicon(my_atom)] The [my_atom]'s power is consumed in the reaction.")
ME2.name = "used slime extract"
ME2.desc = "This extract has been used up."
-311
View File
@@ -1,311 +0,0 @@
/obj/item/weapon/dart_cartridge
name = "dart cartridge"
desc = "A rack of hollow darts."
icon = 'icons/obj/ammo.dmi'
icon_state = "darts-5"
item_state = "rcdammo"
opacity = 0
density = 0
anchored = 0.0
origin_tech = "materials=2"
var/darts = 5
/obj/item/weapon/dart_cartridge/update_icon()
if(!darts)
icon_state = "darts-0"
else if(darts > 5)
icon_state = "darts-5"
else
icon_state = "darts-[darts]"
return 1
/obj/item/weapon/gun/dartgun
name = "dart gun"
desc = "A small gas-powered dartgun, capable of delivering chemical cocktails swiftly across short distances."
icon_state = "dartgun-empty"
var/list/beakers = list() //All containers inside the gun.
var/list/mixing = list() //Containers being used for mixing.
var/obj/item/weapon/dart_cartridge/cartridge = null //Container of darts.
var/max_beakers = 3
var/dart_reagent_amount = 15
var/container_type = /obj/item/weapon/reagent_containers/glass/beaker
var/list/starting_chems = null
/obj/item/weapon/gun/dartgun/update_icon()
if(!cartridge)
icon_state = "dartgun-empty"
return 1
if(!cartridge.darts)
icon_state = "dartgun-0"
else if(cartridge.darts > 5)
icon_state = "dartgun-5"
else
icon_state = "dartgun-[cartridge.darts]"
return 1
/obj/item/weapon/gun/dartgun/New()
..()
if(starting_chems)
for(var/chem in starting_chems)
var/obj/B = new container_type(src)
B.reagents.add_reagent(chem, 50)
beakers += B
cartridge = new /obj/item/weapon/dart_cartridge(src)
update_icon()
/obj/item/weapon/gun/dartgun/examine(mob/user)
if(..(user, 2))
if(beakers.len)
to_chat(user, "<span class='notice>[src] contains:</span>")
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
if(B.reagents && B.reagents.reagent_list.len)
for(var/datum/reagent/R in B.reagents.reagent_list)
to_chat(user, "<span class='notice>[R.volume] units of [R.name]</span>")
/obj/item/weapon/gun/dartgun/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/dart_cartridge))
var/obj/item/weapon/dart_cartridge/D = I
if(!D.darts)
to_chat(user, "<span class='warning'>[D] is empty.</span>")
return 0
if(cartridge)
if(cartridge.darts <= 0)
src.remove_cartridge()
else
to_chat(user, "<span class='warning'>There's already a cartridge in [src].</span>")
return 0
user.drop_item()
cartridge = D
D.forceMove(src)
to_chat(user, "<span class='notice'>You slot [D] into [src].</span>")
update_icon()
return
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!istype(I, container_type))
to_chat(user, "<span class='warning'>[I] doesn't seem to fit into [src].</span>")
return
if(beakers.len >= max_beakers)
to_chat(user, "<span class='warning'>[src] already has [max_beakers] beakers in it - another one isn't going to fit!</span>")
return
var/obj/item/weapon/reagent_containers/glass/beaker/B = I
if(!user.drop_item())
to_chat(user, "<span class='warning'>\The [B] is stuck to you!</span>")
return
B.forceMove(src)
beakers += B
to_chat(user, "<span class='notice>You slot [B] into [src].</span>")
src.updateUsrDialog()
/obj/item/weapon/gun/dartgun/can_fire()
if(!cartridge)
return 0
else
return cartridge.darts
/obj/item/weapon/gun/dartgun/proc/has_selected_beaker_reagents()
return 0
/obj/item/weapon/gun/dartgun/proc/remove_cartridge()
if(cartridge)
to_chat(usr, "<span class='notice'>You pop the cartridge out of [src].</span>")
var/obj/item/weapon/dart_cartridge/C = cartridge
C.forceMove(get_turf(src))
C.update_icon()
cartridge = null
src.update_icon()
/obj/item/weapon/gun/dartgun/proc/get_mixed_syringe()
if (!cartridge)
return 0
if(!cartridge.darts)
return 0
var/obj/item/weapon/reagent_containers/syringe/dart = new(src)
if(mixing.len)
var/mix_amount = dart_reagent_amount/mixing.len
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in mixing)
B.reagents.trans_to(dart,mix_amount)
return dart
/obj/item/weapon/gun/dartgun/proc/fire_dart(atom/target, mob/user)
if (locate (/obj/structure/table, src.loc))
return
else
var/turf/trg = get_turf(target)
var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
var/obj/item/weapon/reagent_containers/syringe/S = get_mixed_syringe()
if(!S)
to_chat(user, "<span class='warning'>There are no darts in [src]!</span>")
return
if(!S.reagents)
to_chat(user, "<span class='warning'>There are no reagents available!</span>")
return
cartridge.darts--
src.update_icon()
S.reagents.trans_to(D, S.reagents.total_volume)
qdel(S)
D.icon_state = "syringeproj"
D.name = "syringe"
D.flags |= NOREACT
playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1)
for(var/i=0, i<6, i++)
if(!D) break
if(D.loc == trg) break
step_towards(D,trg)
if(D)
for(var/mob/living/carbon/M in D.loc)
if(!istype(M,/mob/living/carbon)) continue
if(M == user) continue
//Syringe gun attack logging by Yvarov
var/R
if(D.reagents)
for(var/datum/reagent/A in D.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
if (istype(M, /mob))
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>dartgun</b> ([R])"
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>dartgun</b> ([R])"
if(M.ckey)
msg_admin_attack("[key_name_admin(user)] shot [M] ([M.ckey]) with a dartgun ([R]).")
if(!iscarbon(user))
M.LAssailant = null
else
M.LAssailant = user
else
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[key_name_admin(M)]</b> with a <b>dartgun</b> ([R])"
msg_admin_attack("UNKNOWN shot [key_name(M)] with a <b>dartgun</b> ([R]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
if(D.reagents)
D.reagents.trans_to(M, 15)
to_chat(M, "<span class='danger'>You feel a slight prick.</span>")
qdel(D)
break
if(D)
for(var/atom/A in D.loc)
if(A == user) continue
if(A.density) qdel(D)
sleep(1)
if (D) spawn(10) qdel(D)
return
/obj/item/weapon/gun/dartgun/afterattack(obj/target, mob/user , flag)
if(!isturf(target.loc) || target == user) return
..()
/obj/item/weapon/gun/dartgun/can_hit(var/mob/living/target as mob, var/mob/living/user as mob)
return 1
/obj/item/weapon/gun/dartgun/attack_self(mob/user)
user.set_machine(src)
var/dat = "<b>[src] mixing control:</b><br><br>"
if (beakers.len)
var/i = 1
for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers)
dat += "Beaker [i] contains: "
if(B.reagents && B.reagents.reagent_list.len)
for(var/datum/reagent/R in B.reagents.reagent_list)
dat += "<br> [R.volume] units of [R.name], "
if (check_beaker_mixing(B))
dat += text("<A href='?src=\ref[src];stop_mix=[i]'><font color='green'>Mixing</font></A> ")
else
dat += text("<A href='?src=\ref[src];mix=[i]'><font color='red'>Not mixing</font></A> ")
else
dat += "nothing."
dat += " \[<A href='?src=\ref[src];eject=[i]'>Eject</A>\]<br>"
i++
else
dat += "There are no beakers inserted!<br><br>"
if(cartridge)
if(cartridge.darts)
dat += "The dart cartridge has [cartridge.darts] shots remaining."
else
dat += "<font color='red'>The dart cartridge is empty!</font>"
dat += " \[<A href='?src=\ref[src];eject_cart=1'>Eject</A>\]"
user << browse(dat, "window=dartgun")
onclose(user, "dartgun", src)
/obj/item/weapon/gun/dartgun/proc/check_beaker_mixing(var/obj/item/B)
if(!mixing || !beakers)
return 0
for(var/obj/item/M in mixing)
if(M == B)
return 1
return 0
/obj/item/weapon/gun/dartgun/Topic(href, href_list)
src.add_fingerprint(usr)
if(href_list["stop_mix"])
var/index = text2num(href_list["stop_mix"])
if(index <= beakers.len)
for(var/obj/item/M in mixing)
if(M == beakers[index])
mixing -= M
break
else if (href_list["mix"])
var/index = text2num(href_list["mix"])
if(index <= beakers.len)
mixing += beakers[index]
else if (href_list["eject"])
var/index = text2num(href_list["eject"])
if(index <= beakers.len)
if(beakers[index])
var/obj/item/weapon/reagent_containers/glass/beaker/B = beakers[index]
to_chat(usr, "<span class='notice'>You remove [B] from [src].</span>")
mixing -= B
beakers -= B
B.forceMove(get_turf(src))
else if (href_list["eject_cart"])
remove_cartridge()
src.updateUsrDialog()
return
/obj/item/weapon/gun/dartgun/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)
if(cartridge)
spawn(0) fire_dart(target,user)
else
to_chat(usr, "<span class='warning'>[src] is empty.</span>")
/obj/item/weapon/gun/dartgun/vox
name = "alien dart gun"
desc = "A small gas-powered dartgun, fitted for nonhuman hands."
/obj/item/weapon/gun/dartgun/vox/medical
starting_chems = list("silver_sulfadiazine","styptic_powder","charcoal")
/obj/item/weapon/gun/dartgun/vox/raider
starting_chems = list("space_drugs","ether","haloperidol")
/obj/effect/syringe_gun_dummy //moved this shitty thing here
name = ""
desc = ""
icon = 'icons/obj/chemical.dmi'
icon_state = "null"
anchored = 1
density = 0
New()
var/datum/reagents/R = new/datum/reagents(15)
reagents = R
R.my_atom = src
-111
View File
@@ -1,111 +0,0 @@
/obj/item/weapon/gun/grenadelauncher
name = "grenade launcher"
icon = 'icons/obj/gun.dmi'
icon_state = "riotgun"
item_state = "riotgun"
w_class = 4.0
throw_speed = 2
throw_range = 10
force = 5.0
var/list/grenades = new/list()
var/max_grenades = 3
var/ammo_name = "grenade"
var/ammo_type = /obj/item/weapon/grenade
var/unloaded
materials = list(MAT_METAL=2000)
/obj/item/weapon/gun/grenadelauncher/examine(mob/user)
if(..(user, 2))
to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.")
/obj/item/weapon/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params)
if((istype(I, ammo_type)))
if(grenades.len < max_grenades)
user.drop_item()
I.loc = src
grenades += I
to_chat(user, "\blue You put the [ammo_name] in the [name].")
to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.")
else
to_chat(usr, "\red The grenade launcher cannot hold more [ammo_name]s.")
/obj/item/weapon/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
if (istype(target, /obj/item/weapon/storage/backpack ))
return
else if (locate (/obj/structure/table, src.loc))
return
else if(target == user)
return
if(grenades.len)
spawn(0) fire_grenade(target,user)
else
to_chat(usr, "\red The [name] is empty.")
/obj/item/weapon/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user)
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] fired a [ammo_name]!", user), 1)
to_chat(user, "\red You fire the [name]!")
var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta!
grenades -= F
F.loc = user.loc
F.throw_at(target, 30, 2, user)
message_admins("[key_name_admin(user)] fired a [ammo_name] ([F.name]) from a launcher ([name]).")
log_game("[key_name_admin(user)] used a [ammo_name] ([name]).")
F.active = 1
F.icon_state = initial(icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
spawn(15)
F.prime()
/obj/item/weapon/gun/grenadelauncher/piecannon
name = "pie cannon"
icon = 'icons/obj/gun.dmi'
icon_state = "piecannon1"
item_state = "piecannon1"
w_class = 4.0
throw_speed = 2
throw_range = 10
force = 5.0
clumsy_check = 0
grenades = new/list()
max_grenades = 5
ammo_name = "cream pie"
ammo_type = /obj/item/weapon/reagent_containers/food/snacks/pie
/obj/item/weapon/gun/grenadelauncher/piecannon/New()
..()
for(var/i=0, i < max_grenades, i++)
var/obj/item/weapon/reagent_containers/food/snacks/pie/P = new /obj/item/weapon/reagent_containers/food/snacks/pie(src)
grenades += P
/obj/item/weapon/gun/grenadelauncher/piecannon/attackby(obj/item/I as obj, mob/user as mob, params)
if((istype(I, ammo_type)))
if(grenades.len < max_grenades)
user.drop_item()
I.loc = src
grenades += I
to_chat(user, "\blue You put the [ammo_name] in the [name].")
to_chat(user, "\blue [grenades.len] / [max_grenades] [ammo_name]s.")
icon_state = "piecannon1"
else
to_chat(usr, "\red The grenade launcher cannot hold more [ammo_name]s.")
/obj/item/weapon/gun/grenadelauncher/piecannon/fire_grenade(atom/target, mob/user)
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] fired a [ammo_name]!", user), 1)
to_chat(user, "\red You fire the [name]!")
var/obj/item/weapon/reagent_containers/food/snacks/pie/P = grenades[1] //Now with less copypasta!
grenades -= P
P.loc = user.loc
P.throw_at(target, 30, 2, user)
if(!grenades.len)
icon_state = "piecannon0"
+8 -37
View File
@@ -36,9 +36,6 @@
id = "applejack"
description = "A highly concentrated alcoholic beverage made by repeatedly freezing cider and removing the ice."
color = "#997A00"
slur_start = 30
brawl_start = 40
confused_start = 100
alcohol_perc = 0.4
/datum/chemical_reaction/applejack
@@ -120,14 +117,7 @@
color = "#1BB1FF"
process_flags = ORGANIC | SYNTHETIC
metabolization_rate = 0.4
vomit_start = INFINITY //
blur_start = INFINITY //
pass_out = INFINITY //INFINITY, so that IPCs don't puke and stuff
var/spark_start = 50 //amount absorbed after which mob starts sparking
var/collapse_start = 80 //amount absorbed after wich mob starts sparking and collapsing (DOUBLE THE SPARKS, DOUBLE THE FUN)
var/braindamage_start = 250 //amount absorbed after which mob starts taking a small amount of brain damage
alcohol_perc = 0.5
/datum/chemical_reaction/synthanol
name = "Synthanol"
@@ -139,26 +129,7 @@
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/reagent/ethanol/synthanol/on_mob_life(var/mob/living/M as mob, var/alien)
var/d = 0
// make all the beverages work together
for(var/datum/reagent/ethanol/synthanol/A in holder.reagent_list)
if(isnum(A.current_cycle)) d += A.current_cycle * A.alcohol_perc
if(M.isSynthetic()) //works normally on synthetics
if(d >= spark_start && prob(25))
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, M)
s.start()
if(d >= collapse_start && prob(10))
M.emote("collapse")
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, M)
s.start()
if(d >= braindamage_start && prob(10))
M.adjustBrainLoss(1)
else
if(!M.isSynthetic())
holder.remove_reagent(id, 3.6) //gets removed from organics very fast
if(prob(25))
holder.remove_reagent(id, 15)
@@ -179,7 +150,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "An oily substance that an IPC could technically consider a 'drink'."
reagent_state = LIQUID
color = "#363636"
alcohol_perc = 0.5
alcohol_perc = 0.25
/datum/chemical_reaction/synthanol/robottears
name = "Robot Tears"
@@ -195,7 +166,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A fruit drink meant only for synthetics, however that works."
reagent_state = LIQUID
color = "#adb21f"
alcohol_perc = 0.3
alcohol_perc = 0.2
/datum/chemical_reaction/synthanol/trinary
name = "Trinary"
@@ -211,7 +182,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A drink containing some organic ingredients, but meant only for synthetics."
reagent_state = LIQUID
color = "#5b3210"
alcohol_perc = 0.5
alcohol_perc = 0.25
/datum/chemical_reaction/synthanol/servo
name = "Servo"
@@ -227,7 +198,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "A potent mix of alcohol and synthanol. Will only work on synthetics."
reagent_state = LIQUID
color = "#e7ae04"
alcohol_perc = 0.2
alcohol_perc = 0.15
/datum/chemical_reaction/synthanol/uplink
name = "Uplink"
@@ -242,7 +213,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "The classic drink adjusted for a robot's tastes."
reagent_state = LIQUID
color = "#7204e7"
alcohol_perc = 0.5
alcohol_perc = 0.25
/datum/chemical_reaction/synthanol/synthnsoda
name = "Synth 'n Soda"
@@ -257,7 +228,7 @@ datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/vo
description = "Someone mixed wine and alcohol for robots. Hope you're proud of yourself."
reagent_state = LIQUID
color = "#d004e7"
alcohol_perc = 0.5
alcohol_perc = 0.25
/datum/chemical_reaction/synthanol/synthignon
name = "Synthignon"
+2 -1
View File
@@ -774,6 +774,7 @@ datum/reagent/antihol
datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
M.slurring = 0
M.AdjustDrunk(-4)
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
if(M.toxloss <= 25)
M.adjustToxLoss(-2.0)
@@ -1059,4 +1060,4 @@ datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
M.adjustBrainLoss(-15*REM)
M.adjustCloneLoss(-3*REM)
..()
return
return
+21 -16
View File
@@ -10,37 +10,42 @@
apply_method = "apply"
transfer_efficiency = 0.5 //patches aren't as effective at getting chemicals into the bloodstream.
/obj/item/weapon/reagent_containers/food/pill/patch/New()
..()
icon_state = "bandaid"
/obj/item/weapon/reagent_containers/food/pill/patch/afterattack(obj/target, mob/user , proximity)
return // thanks inheritance again
/obj/item/weapon/reagent_containers/food/pill/patch/styptic
name = "healing patch"
desc = "Helps with brute injuries."
New()
..()
reagents.add_reagent("styptic_powder", 40)
icon_state = "bandaid_brute"
instant_application = 1
/obj/item/weapon/reagent_containers/food/pill/patch/styptic/New()
..()
reagents.add_reagent("styptic_powder", 40)
/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf
name = "burn patch"
desc = "Helps with burn injuries."
New()
..()
reagents.add_reagent("silver_sulfadiazine", 40)
icon_state = "bandaid_burn"
instant_application = 1
/obj/item/weapon/reagent_containers/food/pill/patch/silver_sulf/New()
..()
reagents.add_reagent("silver_sulfadiazine", 40)
/obj/item/weapon/reagent_containers/food/pill/patch/synthflesh
name = "syntheflesh patch"
desc = "Helps with burn injuries."
New()
..()
reagents.add_reagent("synthflesh", 20)
instant_application = 1
/obj/item/weapon/reagent_containers/food/pill/patch/synthflesh/New()
..()
reagents.add_reagent("synthflesh", 20)
/obj/item/weapon/reagent_containers/food/pill/patch/nicotine
name = "nicotine patch"
desc = "Helps temporarily curb the cravings of nicotine dependency."
New()
..()
reagents.add_reagent("nicotine", 20)
/obj/item/weapon/reagent_containers/food/pill/patch/nicotine/New()
..()
reagents.add_reagent("nicotine", 20)
@@ -156,8 +156,8 @@
name = "Cuba Libre"
id = "cubalibre"
result = "cubalibre"
required_reagents = list("rum" = 2, "cola" = 1)
result_amount = 3
required_reagents = list("rum" = 2, "cola" = 2, "limejuice" = 1)
result_amount = 5
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/mojito
@@ -509,6 +509,14 @@
result_amount = 2
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/cafe_mocha
name = "Cafe Mocha"
id = "cafe_mocha"
result = "cafe_mocha"
required_reagents = list("cafe_latte" = 1, "chocolate" = 1)
result_amount = 2
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/acidspit
name = "Acid Spit"
id = "acidspit"
@@ -667,4 +675,4 @@
result = "rewriter"
required_reagents = list("spacemountainwind" = 1, "coffee" = 1)
result_amount = 2
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
@@ -109,16 +109,17 @@
max_temp = 273
mix_message = "Ice forms as the water freezes."
mix_sound = null
/datum/chemical_reaction/water
name = "Water"
id = "water"
result = "water"
required_reagents = list("ice" = 1)
result_amount = 1
min_temp = 274
min_temp = 301 // In Space.....ice melts at 82F...don't ask
mix_message = "Water pools as the ice melts."
mix_sound = null
/datum/chemical_reaction/dough
name = "Dough"
id = "dough"
@@ -7,64 +7,13 @@
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
color = "#404030" // rgb: 64, 64, 48
can_grow_in_plants = 0 //Alcoholic drinks won't be grown in plants (would "water down" random seed chems too much)
var/datum/martial_art/drunk_brawling/F = new
var/dizzy_adj = 3
var/slurr_adj = 3
var/confused_adj = 2
var/slur_start = 20 //amount absorbed after which mob starts slurring
var/brawl_start = 25 //amount absorbed after which mob switches to drunken brawling as a fighting style
var/confused_start = 30 //amount absorbed after which mob starts confusing directions
var/vomit_start = 45 //amount absorbed after which mob starts vomitting
var/blur_start = 70 //amount absorbed after which mob starts getting blurred vision
var/pass_out = 90 //amount absorbed after which mob starts passing out
var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0
/datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien)
// Sobering multiplier.
// Sober block makes it more difficult to get drunk
var/sober_str=!(SOBER in M.mutations)?1:2
M.nutrition += nutriment_factor
var/d = 0
// make all the beverages work together
for(var/datum/reagent/ethanol/A in holder.reagent_list)
if(isnum(A.current_cycle)) d += A.current_cycle * A.alcohol_perc
d/=sober_str
var/obj/item/organ/internal/liver/L
if(ishuman(M) && !M.isSynthetic())
var/mob/living/carbon/human/H = M
L = H.get_int_organ(/obj/item/organ/internal/liver)
d *= L ? L.alcohol_intensity : 5
M.dizziness += dizzy_adj.
if(d >= slur_start && d < pass_out)
if (!M.slurring) M.slurring = 1
M.slurring += slurr_adj/sober_str
if(d >= brawl_start && ishuman(M))
var/mob/living/carbon/human/H = M
F.teach(H,1)
if(src.volume < 3)
if(H.martial_art == F)
F.remove(H)
if(d >= confused_start && prob(33))
if (!M.confused) M.confused = 1
M.confused = max(M.confused+(confused_adj/sober_str),0)
if(d >= blur_start)
M.eye_blurry = max(M.eye_blurry, 10/sober_str)
M.drowsyness = max(M.drowsyness, 0)
if(d >= vomit_start)
if(prob(8))
M.fakevomit()
if(d >= pass_out)
M.Paralyse(20 / sober_str)
M.drowsyness = max(M.drowsyness, 30/sober_str)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if (L)
L.take_damage(0.1, 1)
H.adjustToxLoss(0.1)
M.AdjustDrunk(alcohol_perc)
M.dizziness += dizzy_adj
..()
return
@@ -97,7 +46,7 @@
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
nutriment_factor = 2 * FOOD_METABOLISM
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/beer/on_mob_life(var/mob/living/M as mob)
..()
@@ -109,7 +58,7 @@
id = "cider"
description = "An alcoholic beverage derived from apples."
color = "#174116"
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/whiskey
name = "Whiskey"
@@ -174,7 +123,7 @@
id = "mojito"
description = "If it's good enough for Spesscuba, it's good enough for you."
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/vodka
name = "Vodka"
@@ -226,8 +175,6 @@
description = "An unbelievably strong and potent variety of Cider."
color = "#CF3811"
dizzy_adj = 20
slurr_adj = 20
confused_adj = 3
alcohol_perc = 1 //because that's a thing it's supposed to do, I guess
/datum/reagent/ethanol/ale
@@ -265,7 +212,7 @@
description = "This appears to be beer mixed with milk. Disgusting."
reagent_state = LIQUID
color = "#895C4C" // rgb: 137, 92, 76
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/atomicbomb
name = "Atomic Bomb"
@@ -429,7 +376,7 @@
description = "Beer and Ale, brought together in a delicious mix. Intended for true men only."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/longislandicedtea
name = "Long Island Iced Tea"
@@ -517,7 +464,7 @@
description = "Barefoot and pregnant"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/snowwhite
name = "Snow White"
@@ -525,7 +472,7 @@
description = "A cold refreshment"
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/demonsblood
name = "Demons Blood"
@@ -534,7 +481,6 @@
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 10
slurr_adj = 10
alcohol_perc = 0.4
/datum/reagent/ethanol/vodkatonic
@@ -544,7 +490,6 @@
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
slurr_adj = 3
alcohol_perc = 0.3
/datum/reagent/ethanol/ginfizz
@@ -554,7 +499,6 @@
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
dizzy_adj = 4
slurr_adj = 3
alcohol_perc = 0.4
/datum/reagent/ethanol/bahama_mama
@@ -563,7 +507,7 @@
description = "Tropic cocktail."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/singulo
name = "Singulo"
@@ -572,7 +516,6 @@
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
dizzy_adj = 15
slurr_adj = 15
alcohol_perc = 0.7
/datum/reagent/ethanol/sbiten
@@ -603,7 +546,7 @@
description = "The true Viking drink! Even though it has a strange red color."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/mead
name = "Mead"
@@ -611,7 +554,7 @@
description = "A Vikings drink, though a cheap one."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/iced_beer
name = "Iced Beer"
@@ -619,7 +562,7 @@
description = "A beer which is so cold the air around it freezes."
reagent_state = LIQUID
color = "#664300" // rgb: 102, 67, 0
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/iced_beer/on_mob_life(var/mob/living/M as mob)
..()
@@ -685,16 +628,10 @@
/datum/reagent/ethanol/neurotoxin/on_mob_life(var/mob/living/M as mob)
M.weakened = max(M.weakened, 3)
M.dizziness +=6
if(current_cycle >= 15 && current_cycle <45)
if (!M.slurring)
M.slurring = 1
M.slurring += 3
else if(current_cycle >= 45 && prob(50) && current_cycle <55)
M.confused = max(M.confused+3,0)
else if(current_cycle >=55)
dizzy_adj = 6
if(current_cycle >=55)
M.druggy = max(M.druggy, 55)
else if(current_cycle >=200)
if(current_cycle >=200)
M.adjustToxLoss(2)
..()
return
@@ -739,7 +676,7 @@
description = "The surprise is, it's green!"
reagent_state = LIQUID
color = "#2E6671" // rgb: 46, 102, 113
alcohol_perc = 0.1
alcohol_perc = 0.2
/datum/reagent/ethanol/driestmartini
name = "Driest Martini"
@@ -754,8 +691,6 @@
if(current_cycle >= 55 && current_cycle <115)
if (!M.stuttering) M.stuttering = 1
M.stuttering += 10
else if(current_cycle >= 115 && prob(33))
M.confused = max(M.confused+15,15)
..()
return
@@ -241,6 +241,12 @@
M.adjustBruteLoss(-1)
return
/datum/reagent/drink/coffee/cafe_latte/cafe_mocha
name = "Cafe Mocha"
id = "cafe_mocha"
description = "The perfect blend of coffe, milk, and chocolate."
color = "#673629"
/datum/reagent/drink/tea
name = "Tea"
id = "tea"
@@ -297,6 +297,13 @@
if(data >= 75 && prob(33)) // 30 units, 150 seconds
if (!M.confused) M.confused = 1
M.confused += 3
if(isvampirethrall(M))
ticker.mode.remove_vampire_mind(M.mind)
holder.remove_reagent(src.id, src.volume)
M.jitteriness = 0
M.stuttering = 0
M.confused = 0
return
if(iscultist(M))
ticker.mode.remove_cultist(M.mind)
holder.remove_reagent(src.id, src.volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
@@ -87,7 +87,7 @@
if(reagents.has_reagent(bad_reagent))
badshit += reagents_to_log[bad_reagent]
if(badshit.len)
var/hl="\red <b>([english_list(badshit)])</b> \black"
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
@@ -55,7 +55,7 @@
if(reagents.has_reagent(bad_reagent))
badshit += reagents_to_log[bad_reagent]
if(badshit.len)
var/hl="\red <b>([english_list(badshit)])</b> \black"
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
@@ -10,6 +10,7 @@
var/apply_type = INGEST
var/apply_method = "swallow"
var/transfer_efficiency = 1.0
var/instant_application = 0 //if we want to bypass the forcedfeed delay
/obj/item/weapon/reagent_containers/food/New()
..()
@@ -183,6 +183,15 @@
..()
reagents.add_reagent("sodiumchloride", 20)
/obj/item/weapon/reagent_containers/food/condiment/saltshaker/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] begins to swap forms with the salt shaker! It looks like \he's trying to commit suicide.</span>")
var/newname = "[name]"
name = "[user.name]"
user.name = newname
user.real_name = newname
desc = "Salt. From dead crew, presumably."
return TOXLOSS
/obj/item/weapon/reagent_containers/food/condiment/peppermill
name = "pepper mill"
desc = "Often used to flavor food or make people sneeze."
@@ -459,6 +459,10 @@
icon_state = "cafe_latte"
name = "Cafe Latte"
desc = "A nice, strong and refreshing beverage while you are reading."
if("cafe_mocha")
icon_state = "cafe_latte"
name = "Cafe Mocha"
desc = "The perfect blend of coffe, milk, and chocolate."
if("acidspit")
icon_state = "acidspitglass"
name = "Acid Spit"
@@ -139,13 +139,13 @@
reagents.add_reagent("sugar", 3)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
/obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn
name = "candy corn"
desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas."
icon_state = "candy_corn"
icon_state = "candycorn"
filling_color = "#FFFCB0"
/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New()
/obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn/New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("sugar", 2)
@@ -121,7 +121,7 @@
if(reagents.has_reagent(bad_reagent))
badshit += reagents_to_log[bad_reagent]
if(badshit.len)
var/hl="\red <b>([english_list(badshit)])</b> \black"
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
@@ -43,7 +43,7 @@
if(reagents.has_reagent(bad_reagent))
badshit += reagents_to_log[bad_reagent]
if(badshit.len)
var/hl="\red <b>([english_list(badshit)])</b> \black"
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
message_admins("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
log_game("[user.name] ([user.ckey]) added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
@@ -155,7 +155,7 @@
/obj/item/weapon/reagent_containers/spray/chemsprayer
name = "chem sprayer"
desc = "A utility used to spray large amounts of reagents in a given area."
icon = 'icons/obj/gun.dmi'
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "chemsprayer"
item_state = "chemsprayer"
throwforce = 0
@@ -234,4 +234,4 @@
if (istype(A, /obj/effect/blob)) // blob damage in blob code
return
..()
..()
@@ -17,6 +17,7 @@
w_class = 1
sharp = 1
var/mode = SYRINGE_DRAW
var/projectile_type = /obj/item/projectile/bullet/dart/syringe
/obj/item/weapon/reagent_containers/syringe/on_reagent_change()
update_icon()
@@ -218,7 +219,7 @@
if(reagents.has_reagent(bad_reagent))
badshit += reagents_to_log[bad_reagent]
if(badshit.len)
var/hl="\red <b>([english_list(badshit)])</b> \black"
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl] ")
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
@@ -247,6 +248,12 @@
else
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.")
if(istype(target, /obj/item/weapon/reagent_containers/food/pill/patch))
var/obj/item/weapon/reagent_containers/food/pill/patch/P = target
if(P.instant_application)
to_chat(user, "<span class=warning>You break the medical seal on the [P]!</span>")
P.instant_application = 0
if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT)
mode = SYRINGE_DRAW
update_icon()
@@ -533,4 +540,4 @@
reagents.add_reagent("capulettium_plus", 5)
reagents.add_reagent("sodium_thiopental", 5)
mode = SYRINGE_INJECT
update_icon()
update_icon()