Merge pull request #3664 from FlattestGuitar/master

IPC Booze and their ability to drink.
This commit is contained in:
Fox McCloud
2016-02-24 18:13:42 -05:00
6 changed files with 159 additions and 31 deletions
+88
View File
@@ -62,3 +62,91 @@
result = "jackrose"
required_reagents = list("applejack" = 4, "lemonjuice" = 1)
result_amount = 5
// ROBOT ALCOHOL PAST THIS POINT
// WOOO!
/datum/reagent/ethanol/synthanol
name = "Synthanol"
id = "synthanol"
description = "A runny liquid with conductive capacities. Its effects on synthetics are similar to those of alcohol on organics."
reagent_state = LIQUID
color = "#1BB1FF"
process_flags = SYNTHETIC
metabolization_rate = 0.4
vomit_start = INFINITY //
blur_start = INFINITY //
pass_out = INFINITY //INFINITY, so that IPCs don't puke and stuff
var/collapse_start = 200 //amount absorbed after wich mob starts collapsing
var/braindamage_start = 300 //amount absorbed after which mob starts taking small amount of brain damage
/datum/chemical_reaction/synthanol
name = "Synthanol"
id = "synthanol"
result = "synthanol"
required_reagents = list("lube" = 1, "plasma" = 1, "fuel" = 1)
result_amount = 3
mix_message = "The chemicals mix to create shiny, blue substance."
/datum/reagent/ethanol/synthanol/on_mob_life(var/mob/living/M as mob, var/alien)
var/d = data
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(33))
M.adjustBrainLoss(1)
..()
/datum/reagent/ethanol/synthanol/robottears
name = "Robot Tears"
id = "robottears"
description = "An oily substance that an IPC could technically consider a 'drink'."
reagent_state = LIQUID
color = "#363636"
/datum/chemical_reaction/synthanol/robottears
name = "Robot Tears"
id = "robottears"
result = "robottears"
required_reagents = list("synthanol" = 1, "oil" = 1, "sodawater" = 1)
result_amount = 3
mix_message = "The ingredients combine into a stiff, dark goo."
/datum/reagent/ethanol/synthanol/trinary
name = "Trinary"
id = "trinary"
description = "A fruit drink meant only for synthetics, however that works."
reagent_state = LIQUID
color = "#adb21f"
/datum/chemical_reaction/synthanol/trinary
name = "Trinary"
id = "trinary"
result = "trinary"
required_reagents = list("synthanol" = 1, "limejuice" = 1, "orangejuice" = 1)
result_amount = 3
mix_message = "The ingredients mix into a colorful substance."
/datum/reagent/ethanol/synthanol/servo
name = "Servo"
id = "servo"
description = "A drink containing some organic ingredients, but meant only for synthetics."
reagent_state = LIQUID
color = "#5b3210"
/datum/chemical_reaction/synthanol/servo
name = "Servo"
id = "servo"
result = "servo"
required_reagents = list("synthanol" = 2, "cream" = 1, "hot_coco" = 1)
result_amount = 4
mix_message = "The ingredients mix into a dark brown substance."
// ROBOT ALCOHOL ENDS
@@ -223,4 +223,12 @@
icon_state = "sodawater"
New()
..()
reagents.add_reagent("sodawater", 50)
reagents.add_reagent("sodawater", 50)
/obj/item/weapon/reagent_containers/food/drinks/cans/synthanol
name = "Beep's Classic Synthanol"
desc = "A can of IPC booze, however that works."
icon_state = "synthanolcan"
New()
..()
reagents.add_reagent("synthanol", 50)
@@ -23,7 +23,7 @@
var/fillevel = gulp_size
if(!R.total_volume || !R)
user << "\red None of [src] left, oh no!"
user << "<span class='warning'> None of [src] left, oh no!</span>"
return 0
if(M == user)
@@ -31,10 +31,13 @@
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(!H.check_has_mouth())
user << "Where do you intend to put \the [src]? You don't have a mouth!"
return
M << "\blue You swallow a gulp of [src]."
if(!H.get_species() == "Machine")
user << "Where do you intend to put \the [src]? You don't have a mouth!"
return
else
M << "<span class='notice'> You pour a bit of liquid from [src] into your connection port.</span>"
else
M << "<span class='notice'> You swallow a gulp of [src].</span>"
if(reagents.total_volume)
reagents.reaction(M, INGEST)
spawn(0)
@@ -45,15 +48,15 @@
else if( istype(M, /mob/living/carbon/human) )
var/mob/living/carbon/human/H = M
if(!H.check_has_mouth())
if(!H.check_has_mouth() && !H.get_species() == "Machine")
user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!"
return
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] attempts to feed [M] [src].", 1)
O.show_message("<span class='warning'> [user] attempts to feed [M] [src].</span>", 1)
if(!do_mob(user, M)) return
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] feeds [M] [src].", 1)
O.show_message("<span class='warning'> [user] feeds [M] [src].</span>", 1)
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been fed [src.name] by [key_name(user)] Reagents: [reagentlist(src)]</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [M.name] by [key_name(M)] Reagents: [reagentlist(src)]</font>")
@@ -95,23 +98,23 @@
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
if(!target.reagents.total_volume)
user << "\red [target] is empty."
user << "<span class='warning'> [target] is empty.</span>"
return
if(reagents.total_volume >= reagents.maximum_volume)
user << "\red [src] is full."
user << "<span class='warning'> [src] is full.</span>"
return
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
user << "\blue You fill [src] with [trans] units of the contents of [target]."
user << "<span class='notice'> You fill [src] with [trans] units of the contents of [target].</span>"
else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
user << "\red [src] is empty."
user << "<span class='warning'> [src] is empty.</span>"
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
user << "\red [target] is full."
user << "<span class='warning'> [target] is full.</span>"
return
@@ -123,7 +126,7 @@
refillName = reagents.get_master_reagent_name()
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution to [target]."
user << "<span class='notice'> You transfer [trans] units of the solution to [target].</span>"
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
if(refill in drinks) // Only synthesize drinks
@@ -152,15 +155,15 @@
if(!..(user, 1))
return
if(!reagents || reagents.total_volume==0)
user << "\blue \The [src] is empty!"
user << "<span class='notice'> \The [src] is empty!</span>"
else if (reagents.total_volume<=src.volume/4)
user << "\blue \The [src] is almost empty!"
user << "<span class='notice'> \The [src] is almost empty!</span>"
else if (reagents.total_volume<=src.volume*0.66)
user << "\blue \The [src] is half empty!" // Pessimism is the real order of the day.
user << "<span class='notice'> \The [src] is half full!</span>" // We're all optimistic, right?!
else if (reagents.total_volume<=src.volume*0.90)
user << "\blue \The [src] is almost full!"
user << "<span class='notice'> \The [src] is almost full!</span>"
else
user << "\blue \The [src] is full!"
user << "<span class='notice'> \The [src] is full!</span>"
////////////////////////////////////////////////////////////////////////////////
@@ -404,4 +407,4 @@
desc = "A flask with a Lithium Atom symbol on it."
icon = 'icons/obj/custom_items.dmi'
icon_state = "lithiumflask"
volume = 50
volume = 50
@@ -564,6 +564,24 @@
icon_state = "patronglass"
name = "Jack Rose"
desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s."
if("synthanol")
icon_state = "synthanolglass"
name = "Glass of Synthanol"
desc = "The equivalent of alcohol for synthetic crewmembers. They'd find it awful if they had tastebuds too."
if("robottears")
icon_state = "robottearsglass"
name = "Glass of Robot Tears"
desc = "No robots were hurt in the making of this drink."
if("trinary")
icon_state = "trinaryglass"
name = "Glass of Trinary"
desc = "Colorful drink made for synthetic crewmembers. It doesn't seem like it would taste well."
if("servo")
icon_state = "servoglass"
name = "Glass of Servo"
desc = "Chocolate - based drink made for IPCs. Not sure if anyone's actually tried out the recipe."
else
icon_state ="glass_brown"
name = "Glass of ..what?"