mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Implements new fossilized plant features and related chems. (#19303)
* Implements new fossilized plant features and related chems. * Make spiders from the drink spawn under the imbiber.
This commit is contained in:
@@ -341,6 +341,18 @@
|
||||
#define MUSTARD "mustard"
|
||||
#define RELISH "relish"
|
||||
#define UNTABLE_MUTAGEN "untable"
|
||||
#define ELECTRIC_SHEEP "electric_sheep"
|
||||
#define SCIENTISTS_SERENDIPITY "scientists_serendipity"
|
||||
#define METABUDDY "metabuddy"
|
||||
#define SPIDERS "spiders"
|
||||
#define WEED_EATER "weed_eater"
|
||||
#define RAGSTORICHES "ragstoriches"
|
||||
#define WAIFU "waifu"
|
||||
#define BEEPSKY_CLASSIC "beepsky_classic"
|
||||
#define SMOKYROOM "smokyroom"
|
||||
#define BAD_TOUCH "bad_touch"
|
||||
#define SUICIDE "suicide"
|
||||
#define KARMOTRINE "karmotrine"
|
||||
|
||||
#define TUNGSTEN "tungsten"
|
||||
#define LITHIUMSODIUMTUNGSTATE "lithiumsodiumtungstate"
|
||||
|
||||
@@ -1192,6 +1192,9 @@ var/global/num_vending_terminals = 1
|
||||
/obj/item/weapon/reagent_containers/food/drinks/coffee = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/mug = 10
|
||||
)
|
||||
premium = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine = 1
|
||||
)
|
||||
product_slogans = list(
|
||||
"I hope nobody asks me for a bloody cup o' tea...",
|
||||
"Alcohol is humanity's friend. Would you abandon a friend?",
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
if(S.can_stack_with(new_stack_type))
|
||||
if(S.max_amount >= S.amount + add_amount)
|
||||
S.add(add_amount)
|
||||
|
||||
if(user)
|
||||
to_chat(user, "<span class='info'>You add [add_amount] item\s to the stack. It now contains [S.amount] [CORRECT_STACK_NAME(S)].</span>")
|
||||
return S
|
||||
|
||||
|
||||
@@ -121,8 +121,6 @@
|
||||
|
||||
//Harvests the product of a plant.
|
||||
/obj/machinery/portable_atmospherics/hydroponics/proc/harvest(var/mob/user)
|
||||
|
||||
|
||||
//Harvest the product of the plant,
|
||||
if(!seed || !harvest || !user)
|
||||
return
|
||||
@@ -135,6 +133,17 @@
|
||||
return
|
||||
|
||||
seed.harvest(user,yield_mod)
|
||||
after_harvest()
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/proc/autoharvest()
|
||||
if(!seed || !harvest)
|
||||
return
|
||||
|
||||
seed.autoharvest(get_turf(src))
|
||||
after_harvest()
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/proc/after_harvest()
|
||||
|
||||
// Reset values.
|
||||
harvest = 0
|
||||
|
||||
@@ -248,6 +248,9 @@
|
||||
|
||||
check_health()
|
||||
|
||||
if(harvest && seed.harvest_repeat == 2)
|
||||
autoharvest()
|
||||
|
||||
// If enough time (in cycles, not ticks) has passed since the plant was harvested, we're ready to harvest again.
|
||||
if(!dead && seed.products && seed.products.len)
|
||||
if (age > seed.production)
|
||||
@@ -330,7 +333,7 @@
|
||||
overlays += image(icon = icon, icon_state = "hydrocover")
|
||||
|
||||
//Updated the various alert icons.
|
||||
if(draw_warnings)
|
||||
if(draw_warnings&& !reagents.has_reagent(SPORTDRINK))
|
||||
if(waterlevel <= 10)
|
||||
overlays += image(icon = icon, icon_state = "over_lowwater3")
|
||||
if(nutrilevel <= 2)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
packet_icon = "seed-telriis"
|
||||
plant_icon = "telriis"
|
||||
harvest_repeat = 1
|
||||
chems = list(NUTRIMENT = list(1,10),PWINE = list(0,2))
|
||||
chems = list(DIETHYLAMINE = list(0,10))
|
||||
|
||||
lifespan = 60
|
||||
maturation = 6
|
||||
@@ -38,14 +38,16 @@
|
||||
packet_icon = "seed-thaadra"
|
||||
plant_icon = "thaadra"
|
||||
harvest_repeat = 1
|
||||
chems = list(NUTRIMENT = list(1,10),FROSTOIL = list(5,7))
|
||||
chems = list(FROSTOIL = list(5,30))
|
||||
|
||||
lifespan = 50
|
||||
maturation = 3
|
||||
production = 3
|
||||
yield = 5
|
||||
potency = 20
|
||||
potency = 90 //Much higher than normal plants
|
||||
growth_stages = 4
|
||||
alter_temp = 1
|
||||
ideal_heat = T20C - 10
|
||||
|
||||
/obj/item/seeds/thaadra
|
||||
seed_type = "thaadra"
|
||||
@@ -66,7 +68,7 @@
|
||||
mutants = null
|
||||
packet_icon = "seed-jurlmah"
|
||||
plant_icon = "jurlmah"
|
||||
chems = list(NUTRIMENT = list(1,10),SEROTROTIUM = list(0,10))
|
||||
chems = list(CLONEXADONE = list(1,10))
|
||||
|
||||
lifespan = 25
|
||||
maturation = 6
|
||||
@@ -98,7 +100,7 @@
|
||||
mutants = null
|
||||
packet_icon = "seed-amauri"
|
||||
plant_icon = "amauri"
|
||||
chems = list(NUTRIMENT = list(1,10),ZOMBIEPOWDER = list(0,2),CONDENSEDCAPSAICIN = list(0,5))
|
||||
chems = list(POTASSIUM = list(0,10),SUGAR = list(0,10),PHOSPHORUS = list(0,10))
|
||||
|
||||
lifespan = 25
|
||||
maturation = 10
|
||||
@@ -121,6 +123,7 @@
|
||||
desc = "It is small, round and hard. Its skin is a thick dark purple."
|
||||
icon_state = "amaurifruit"
|
||||
plantname = "amauri"
|
||||
flags = NOREACT
|
||||
hydroflags = HYDRO_PREHISTORIC
|
||||
|
||||
/datum/seed/gelthi
|
||||
@@ -131,8 +134,8 @@
|
||||
mutants = null
|
||||
packet_icon = "seed-gelthi"
|
||||
plant_icon = "gelthi"
|
||||
harvest_repeat = 1
|
||||
chems = list(NUTRIMENT = list(1,10),VALERENIC_ACID = list(0,1),CAPSAICIN = list(0,1))
|
||||
harvest_repeat = 2
|
||||
chems = list(NUTRIMENT = list(1,10))
|
||||
|
||||
lifespan = 55
|
||||
maturation = 6
|
||||
@@ -195,12 +198,12 @@
|
||||
packet_icon = "seed-surik"
|
||||
plant_icon = "surik"
|
||||
harvest_repeat = 1
|
||||
chems = list(NUTRIMENT = list(1,10),HYOSCYAMINE = list(0,3),CYTISINE = list(0,5))
|
||||
chems = list(KARMOTRINE = list(2,2))
|
||||
|
||||
lifespan = 55
|
||||
maturation = 7
|
||||
production = 6
|
||||
yield = 3
|
||||
yield = 5
|
||||
potency = 20
|
||||
growth_stages = 4
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
|
||||
var/maturation = 0 // Time taken before the plant is mature.
|
||||
var/production = 0 // Time before harvesting can be undertaken again.
|
||||
var/growth_stages = 6 // Number of stages the plant passes through before it is mature.
|
||||
var/harvest_repeat = 0 // If 1, this plant will fruit repeatedly.
|
||||
var/harvest_repeat = 0 // If 1, this plant will fruit repeatedly. If 2, the plant will self-harvest.
|
||||
var/potency = 1 // General purpose plant strength value.
|
||||
var/spread = 0 // 0 limits plant to tray, 1 = creepers, 2 = vines.
|
||||
var/immutable = 0 // If set, plant will never mutate. If -1, plant is highly mutable.
|
||||
@@ -537,6 +537,9 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
|
||||
else
|
||||
to_chat(user, "You harvest from the [display_name].")
|
||||
|
||||
generate_product(get_turf(user), yield_mod)
|
||||
|
||||
/datum/seed/proc/generate_product(var/turf/T, yield_mod)
|
||||
add_newline_to_controller()
|
||||
|
||||
var/total_yield = 0
|
||||
@@ -555,9 +558,9 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
|
||||
var/obj/item/product
|
||||
|
||||
if(ispath(product_type, /obj/item/stack))
|
||||
product = drop_stack(product_type, get_turf(user), 1, user)
|
||||
product = drop_stack(product_type, T, 1, null)
|
||||
else
|
||||
product = new product_type(get_turf(user))
|
||||
product = new product_type(T)
|
||||
|
||||
score["stuffharvested"] += 1 //One point per product unit
|
||||
|
||||
@@ -585,6 +588,11 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
|
||||
var/obj/item/weapon/grown/current_product = product
|
||||
current_product.plantname = name
|
||||
|
||||
//Harvest without concern for the user
|
||||
/datum/seed/proc/autoharvest(var/turf/T, var/yield_mod = 1)
|
||||
if(T && (!isnull(products)) && products.len && (yield > 0))
|
||||
generate_product(T, yield_mod)
|
||||
|
||||
/datum/seed/proc/check_harvest(var/mob/user, var/obj/machinery/portable_atmospherics/hydroponics/tray)
|
||||
var/success = 1
|
||||
var/stung = 0
|
||||
|
||||
@@ -58,6 +58,9 @@
|
||||
if(prob(80))
|
||||
age++
|
||||
|
||||
if(harvest && (seed.harvest_repeat == 2))
|
||||
autoharvest()
|
||||
|
||||
if(!harvest && prob(3) && age > mature_time + seed.production)
|
||||
harvest = 1
|
||||
|
||||
|
||||
@@ -23,6 +23,13 @@
|
||||
|
||||
/obj/effect/plantsegment/proc/harvest(var/mob/user)
|
||||
seed.harvest(user, yield_mod = 0.5)
|
||||
after_harvest()
|
||||
|
||||
/obj/effect/plantsegment/proc/autoharvest()
|
||||
seed.autoharvest(get_turf(src), yield_mod = 0.5)
|
||||
after_harvest()
|
||||
|
||||
/obj/effect/plantsegment/proc/after_harvest()
|
||||
harvest = 0
|
||||
age = mature_time // Since we don't die of old age, there's no need to keep an accurate age count.
|
||||
update_icon()
|
||||
|
||||
@@ -114,64 +114,9 @@
|
||||
else if(ear_damage < 25) //Ear damage heals slowly under this threshold. otherwise you'll need earmuffs
|
||||
ear_damage = max(ear_damage - 0.05, 0)
|
||||
|
||||
//Dizziness
|
||||
if(dizziness || undergoing_hypothermia() == MODERATE_HYPOTHERMIA)
|
||||
var/wasdizzy = 1
|
||||
if(undergoing_hypothermia() == MODERATE_HYPOTHERMIA && !dizziness && prob(50))
|
||||
dizziness = 120
|
||||
wasdizzy = 0
|
||||
var/client/C = client
|
||||
var/pixel_x_diff = 0
|
||||
var/pixel_y_diff = 0
|
||||
var/temp
|
||||
var/saved_dizz = dizziness
|
||||
dizziness = max(dizziness - 1, 0)
|
||||
if(C)
|
||||
var/oldsrc = src
|
||||
var/amplitude = dizziness * (sin(dizziness * 0.044 * world.time) + 1) / 70 //This shit is annoying at high strength
|
||||
src = null
|
||||
spawn(0)
|
||||
if(C)
|
||||
temp = amplitude * sin(0.008 * saved_dizz * world.time)
|
||||
pixel_x_diff += temp
|
||||
C.pixel_x += temp * PIXEL_MULTIPLIER
|
||||
temp = amplitude * cos(0.008 * saved_dizz * world.time)
|
||||
pixel_y_diff += temp
|
||||
C.pixel_y += temp * PIXEL_MULTIPLIER
|
||||
sleep(3)
|
||||
if(C)
|
||||
temp = amplitude * sin(0.008 * saved_dizz * world.time)
|
||||
pixel_x_diff += temp
|
||||
C.pixel_x += temp * PIXEL_MULTIPLIER
|
||||
temp = amplitude * cos(0.008 * saved_dizz * world.time)
|
||||
pixel_y_diff += temp
|
||||
C.pixel_y += temp * PIXEL_MULTIPLIER
|
||||
sleep(3)
|
||||
if(C)
|
||||
C.pixel_x -= pixel_x_diff * PIXEL_MULTIPLIER
|
||||
C.pixel_y -= pixel_y_diff * PIXEL_MULTIPLIER
|
||||
src = oldsrc
|
||||
if(!wasdizzy)
|
||||
dizziness = 0
|
||||
handle_dizziness()
|
||||
handle_jitteriness()
|
||||
|
||||
//Jitteryness
|
||||
if(jitteriness)
|
||||
var/amplitude = min(8, (jitteriness/70) + 1)
|
||||
var/pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
var/pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
spawn()
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
|
||||
pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
|
||||
pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
//Flying
|
||||
if(flying)
|
||||
spawn()
|
||||
|
||||
@@ -1754,3 +1754,64 @@ Thanks.
|
||||
"suiciding")
|
||||
|
||||
reset_vars_after_duration(resettable_vars, duration)
|
||||
|
||||
/mob/living/proc/handle_dizziness()
|
||||
//Dizziness
|
||||
if(dizziness || undergoing_hypothermia() == MODERATE_HYPOTHERMIA)
|
||||
var/wasdizzy = 1
|
||||
if(undergoing_hypothermia() == MODERATE_HYPOTHERMIA && !dizziness && prob(50))
|
||||
dizziness = 120
|
||||
wasdizzy = 0
|
||||
var/client/C = client
|
||||
var/pixel_x_diff = 0
|
||||
var/pixel_y_diff = 0
|
||||
var/temp
|
||||
var/saved_dizz = dizziness
|
||||
dizziness = max(dizziness - 1, 0)
|
||||
if(C)
|
||||
var/oldsrc = src
|
||||
var/amplitude = dizziness * (sin(dizziness * 0.044 * world.time) + 1) / 70 //This shit is annoying at high strength
|
||||
src = null
|
||||
spawn(0)
|
||||
if(C)
|
||||
temp = amplitude * sin(0.008 * saved_dizz * world.time)
|
||||
pixel_x_diff += temp
|
||||
C.pixel_x += temp * PIXEL_MULTIPLIER
|
||||
temp = amplitude * cos(0.008 * saved_dizz * world.time)
|
||||
pixel_y_diff += temp
|
||||
C.pixel_y += temp * PIXEL_MULTIPLIER
|
||||
sleep(3)
|
||||
if(C)
|
||||
temp = amplitude * sin(0.008 * saved_dizz * world.time)
|
||||
pixel_x_diff += temp
|
||||
C.pixel_x += temp * PIXEL_MULTIPLIER
|
||||
temp = amplitude * cos(0.008 * saved_dizz * world.time)
|
||||
pixel_y_diff += temp
|
||||
C.pixel_y += temp * PIXEL_MULTIPLIER
|
||||
sleep(3)
|
||||
if(C)
|
||||
C.pixel_x -= pixel_x_diff * PIXEL_MULTIPLIER
|
||||
C.pixel_y -= pixel_y_diff * PIXEL_MULTIPLIER
|
||||
src = oldsrc
|
||||
if(!wasdizzy)
|
||||
dizziness = 0
|
||||
|
||||
|
||||
/mob/living/proc/handle_jitteriness()
|
||||
if(jitteriness)
|
||||
var/amplitude = min(8, (jitteriness/70) + 1)
|
||||
var/pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
var/pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
spawn()
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
|
||||
pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
|
||||
pixel_x_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
pixel_y_diff = rand(-amplitude, amplitude) * PIXEL_MULTIPLIER
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 1, loop = -1)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 1, loop = -1, easing = BOUNCE_EASING)
|
||||
|
||||
@@ -136,6 +136,9 @@
|
||||
src.druggy--
|
||||
src.druggy = max(0, src.druggy)
|
||||
|
||||
handle_dizziness()
|
||||
handle_jitteriness()
|
||||
|
||||
return 1
|
||||
|
||||
/mob/living/silicon/robot/mommi/handle_regular_hud_updates()
|
||||
|
||||
@@ -128,6 +128,9 @@
|
||||
druggy--
|
||||
druggy = max(0, druggy)
|
||||
|
||||
handle_dizziness()
|
||||
handle_jitteriness()
|
||||
|
||||
if(!is_component_functioning("radio"))
|
||||
radio.on = FALSE
|
||||
else
|
||||
|
||||
@@ -5244,6 +5244,215 @@
|
||||
L.take_damage(100, 0)
|
||||
data++
|
||||
|
||||
/datum/reagent/ethanol/karmotrine
|
||||
name = "Karmotrine"
|
||||
id = KARMOTRINE
|
||||
description = "Served exclusively by waifu bartenders."
|
||||
color = "#66ffff" //rgb(102, 255, 255)
|
||||
blur_start = 40 //Blur very early
|
||||
|
||||
/datum/reagent/ethanol/smokyroom
|
||||
name = "Smoky Room"
|
||||
id = SMOKYROOM
|
||||
description = "It was the kind of cool, black night that clung to you like something real... a black, tangible fabric of smoke, deceit, and murder. I had finished working my way through the fat cigars for the day - or at least told myself that to feel the sense of accomplishment for another night wasted on little more than chasing cheating dames and abusive husbands. It was enough to drive a man to drink... and it did. I sauntered into the cantina and wordlessly nodded to the barman. He knew my poison. I was a regular, after all. By the time the night was over, there would be another empty bottle and a case no closer to being cracked. Then I saw her, like a mirage across a desert, or a striken starlet on stage across a smoky room."
|
||||
color = "#664300"
|
||||
|
||||
/datum/reagent/ethanol/smokyroom/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(prob(4)) //Small chance per tick to some noir stuff and gain NOIRBLOCK if we don't have it.
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!(M_NOIR in H.mutations))
|
||||
H.mutations += M_NOIR
|
||||
H.dna.SetSEState(NOIRBLOCK,1)
|
||||
genemutcheck(H, NOIRBLOCK, null, MUTCHK_FORCED)
|
||||
|
||||
M.say(pick("The streets were heartless and cold, like the fickle 'love' of some hysterical dame.",
|
||||
"The lights, the smoke, the grime... the city itself seemed alive that day. Was it the pulse that made me think so? Or just all the blood?",
|
||||
"I caressed my .44 magnum. Ever since Jimmy bit it against the Two Bit Gang, the gun and its six rounds were the only partner I could trust.",
|
||||
"The whole reason I took the case to begin with was trouble, in the shape of a pinup blonde with shanks that<61>d make you dizzy. Wouldn<64>t give her name, said she was related to the captain",
|
||||
"Judging by the boys at the lab, the perp took a sander to the tooth profiles, but did a sloppy job. Lab report came in early this morning. Guess my vacation is on pause.",
|
||||
"The blacktop was baking that day, and the broads working 19th and Main were wearing even less than usual.",
|
||||
"The young dame was pride and joy of the station. Little did she know that looks can breed envy... or worse.",
|
||||
"The new case reeked of the same bad blood as that now half-forgotten case of the turncoat chef. A recipe for murder.",
|
||||
"I dragged myself out of my drink-addled torpor and called to the shadowy figure at my door - come in - because if I didn't take a new case I'd be through my bottle by noon.",
|
||||
"Nursing my scotch, I turned my gaze upward and spotted trouble in the form of a bruiser with brass knuckles across the smoke-filled nightclub's cabaret.",
|
||||
"I didn't even know who she was. Just stumbled across a girl and four toughs. Took her home and the mayor named me a hero.",
|
||||
"She was a flapper and a swinger, but she was also in some hot water. Told me she'd make it worth my while if I could get her out of it. I told her that I wanted payment in cold hard simoleons.",
|
||||
"What he did just didn't compare. He killed an innocent person. What drives a man to kill in cold blood? I didn't want to hang around and find out.",
|
||||
"I breathed in the smoke of the underground speakeasy like a fish breathes water. The brass at the precinct couldn't understand: I was in my element.",
|
||||
"I put enough holes in the man to drop a goliath, but he kept coming. Some kind of blood-fueled hatred. The adrenaline of a dying man can snap bones in one last moment of spite. I can still see the anger in those dying eyes."))
|
||||
|
||||
/datum/reagent/ethanol/rags_to_riches
|
||||
name = "Rags to Riches"
|
||||
id = RAGSTORICHES
|
||||
description = "The Spaceman Dream, incarnated as a cocktail."
|
||||
color = "#664300"
|
||||
dupeable = FALSE
|
||||
|
||||
/datum/reagent/ethanol/rags_to_riches/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(!M.loc || prob(70))
|
||||
return
|
||||
playsound(get_turf(M), pick('sound/items/polaroid1.ogg','sound/items/polaroid2.ogg'), 50, 1)
|
||||
dispense_cash(rand(5,15),get_turf(M))
|
||||
|
||||
/datum/reagent/ethanol/bad_touch
|
||||
name = "Bad Touch"
|
||||
id = BAD_TOUCH
|
||||
description = "Somewhere on the scale of bad touches between 'fondled by clown' and 'brushed by supermatter shard'."
|
||||
color = "#664300"
|
||||
|
||||
/datum/reagent/ethanol/bad_touch/on_mob_life(var/mob/living/M) //Hallucinate and take hallucination damage.
|
||||
if(..())
|
||||
return 1
|
||||
M.hallucination = max(M.hallucination, 10)
|
||||
M.halloss += 5
|
||||
|
||||
/datum/reagent/ethanol/electric_sheep
|
||||
name = "Electric Sheep"
|
||||
id = ELECTRIC_SHEEP
|
||||
description = "This is what robots dream about."
|
||||
color = "#664300"
|
||||
custom_metabolism = 1
|
||||
|
||||
/datum/reagent/ethanol/electric_sheep/on_mob_life(var/mob/living/M) //If it's human, shoot sparks every tick! If MoMMI, cause alcohol effects.
|
||||
if(..())
|
||||
return 1
|
||||
if(ishuman(M))
|
||||
spark(M, 5, FALSE)
|
||||
|
||||
/datum/reagent/ethanol/electric_sheep/reaction_mob(var/mob/living/M)
|
||||
if(isrobot(M))
|
||||
M.Jitter(20)
|
||||
M.Dizzy(20)
|
||||
M.druggy = max(M.druggy, 60)
|
||||
|
||||
/datum/reagent/ethanol/suicide
|
||||
name = "Suicide"
|
||||
id = SUICIDE
|
||||
description = "It's only tolerable because of the added alcohol."
|
||||
color = "#664300"
|
||||
custom_metabolism = 2
|
||||
|
||||
/datum/reagent/ethanol/suicide/on_mob_life(var/mob/living/M) //Instant vomit. Every tick.
|
||||
if(..())
|
||||
return 1
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.vomit(0,1)
|
||||
|
||||
/datum/reagent/ethanol/metabuddy
|
||||
name = "Metabuddy"
|
||||
id = METABUDDY
|
||||
description = "Ban when?"
|
||||
color = "#664300"
|
||||
var/global/list/datum/mind/metaclub = list()
|
||||
|
||||
/datum/reagent/ethanol/metabuddy/on_mob_life(var/mob/living/L)
|
||||
if(..())
|
||||
return 1
|
||||
var/datum/mind/LM = L.mind
|
||||
if(!metaclub.Find(LM) && LM)
|
||||
metaclub += LM
|
||||
var/datum/mind/new_buddy = LM
|
||||
for(var/datum/mind/M in metaclub) //Update metaclub icons
|
||||
if(M.current.client && new_buddy.current && new_buddy.current.client)
|
||||
var/imageloc = new_buddy.current
|
||||
var/imagelocB = M.current
|
||||
if(istype(M.current.loc,/obj/mecha))
|
||||
imageloc = M.current.loc
|
||||
imagelocB = M.current.loc
|
||||
var/image/I = image('icons/mob/mob.dmi', loc = imageloc, icon_state = "metaclub")
|
||||
I.plane = REV_ANTAG_HUD_PLANE
|
||||
M.current.client.images += I
|
||||
var/image/J = image('icons/mob/mob.dmi', loc = imagelocB, icon_state = "metaclub")
|
||||
J.plane = REV_ANTAG_HUD_PLANE
|
||||
new_buddy.current.client.images += J
|
||||
|
||||
/datum/reagent/ethanol/waifu
|
||||
name = "Waifu"
|
||||
id = WAIFU
|
||||
description = "Don't drink more than one waifu if you value your laifu."
|
||||
color = "#664300"
|
||||
|
||||
/datum/reagent/ethanol/waifu/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(M.gender == MALE)
|
||||
M.setGender(FEMALE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!M.is_wearing_item(/obj/item/clothing/under/schoolgirl))
|
||||
var/turf/T = get_turf(H)
|
||||
T.turf_animation('icons/effects/96x96.dmi',"beamin",-32,0,MOB_LAYER+1,'sound/effects/rejuvinate.ogg',anim_plane = MOB_PLANE)
|
||||
H.visible_message("<span class='warning'>[H] dons her magical girl outfit in a burst of light!</span>")
|
||||
var/obj/item/clothing/under/schoolgirl/S = new /obj/item/clothing/under/schoolgirl(get_turf(H))
|
||||
if(H.w_uniform)
|
||||
H.u_equip(H.w_uniform, 1)
|
||||
H.equip_to_slot(S, slot_w_uniform)
|
||||
holder.remove_reagent(WAIFU,4) //Generating clothes costs extra reagent
|
||||
M.regenerate_icons()
|
||||
|
||||
/datum/reagent/ethanol/scientists_serendipity
|
||||
name = "Scientist's Serendipity"
|
||||
id = SCIENTISTS_SERENDIPITY
|
||||
description = "Go ahead and blow the research budget on drinking this." //Can deconstruct a glass with this for loadsoftech
|
||||
color = "#664300"
|
||||
custom_metabolism = 0.01
|
||||
dupeable = FALSE
|
||||
|
||||
/datum/reagent/ethanol/beepskyclassic
|
||||
name = "Beepsky Classic"
|
||||
id = BEEPSKY_CLASSIC
|
||||
description = "Some believe that the more modern Beepsky Smash was introduced to make this drink more popular."
|
||||
color = "#664300" //rgb: 102, 67, 0
|
||||
custom_metabolism = 2 //Ten times the normal rate.
|
||||
|
||||
/datum/reagent/ethanol/beepskyclassic/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.job in list("Security Officer", "Head of Security", "Detective", "Warden"))
|
||||
playsound(get_turf(H), 'sound/voice/halt.ogg', 100, 1, 0)
|
||||
else
|
||||
H.Knockdown(10)
|
||||
playsound(get_turf(H), 'sound/weapons/Egloves.ogg', 100, 1, -1)
|
||||
|
||||
/datum/reagent/ethanol/spiders
|
||||
name = "Spiders"
|
||||
id = SPIDERS
|
||||
description = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA."
|
||||
color = "#666666" //rgb(102, 102, 102)
|
||||
custom_metabolism = 0.01 //Spiders really 'hang around'
|
||||
|
||||
/datum/reagent/ethanol/spiders/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
M.take_organ_damage(REM, 0) //Drinking a glass of live spiders is bad for you.
|
||||
if(holder.get_reagent_amount(SPIDERS)>=4) //The main reason we need to have a minimum cost rather than just high custom metabolism is so that someone can't give themselves an IV of spiders for "fun"
|
||||
new /mob/living/simple_animal/hostile/giant_spider/spiderling(get_turf(M))
|
||||
holder.remove_reagent(SPIDERS,4)
|
||||
M.emote("scream", , , 1)
|
||||
M.visible_message("<span class='warning'>[M] recoils as a spider emerges from \his mouth!</span>")
|
||||
|
||||
/datum/reagent/ethanol/weedeater
|
||||
name = "Weed Eater"
|
||||
id = WEED_EATER
|
||||
description = "The vegetarian equivalant of a snake eater."
|
||||
color = "#009933" //rgb(0, 153, 51)
|
||||
|
||||
/datum/reagent/ethanol/weedeater/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
var/spell = /spell/targeted/genetic/eat_weed
|
||||
if(!(locate(spell) in M.spell_list))
|
||||
to_chat(M, "<span class='notice'>You feel hungry like the diona.</span>")
|
||||
M.add_spell(spell)
|
||||
|
||||
/datum/reagent/ethanol/deadrum
|
||||
name = "Deadrum"
|
||||
id = RUM
|
||||
@@ -6183,6 +6392,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
|
||||
sport = 5
|
||||
color = "#CCFF66" //rgb: 204, 255, 51
|
||||
custom_metabolism = 0.01
|
||||
custom_plant_metabolism = HYDRO_SPEED_MULTIPLIER/5
|
||||
|
||||
/datum/reagent/antidepressant/citalopram
|
||||
name = "Citalopram"
|
||||
|
||||
@@ -3160,11 +3160,182 @@
|
||||
required_reagents = list(FORMIC_ACID = 1, PHENOL = 1, RADIUM = 1)
|
||||
result_amount = 3
|
||||
|
||||
//Karmotrine Drinks
|
||||
|
||||
/datum/chemical_reaction/smokyroom
|
||||
name = "Smoky Room"
|
||||
id = SMOKYROOM
|
||||
result = SMOKYROOM
|
||||
required_reagents = list(MANHATTAN = 1, ICE = 1, KARMOTRINE = 2)
|
||||
result_amount = 4
|
||||
|
||||
/datum/chemical_reaction/ragstoriches
|
||||
name = "Rags to Riches"
|
||||
id = RAGSTORICHES
|
||||
result = RAGSTORICHES
|
||||
required_reagents = list(VODKA = 1, COGNAC = 1, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/badtouch
|
||||
name = "Bad Touch"
|
||||
id = BAD_TOUCH
|
||||
result = BAD_TOUCH
|
||||
required_reagents = list(RUM = 2, KAHLUA = 1, ICE = 1, KARMOTRINE = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/electricsheep
|
||||
name = "Electric Sheep"
|
||||
id = ELECTRIC_SHEEP
|
||||
result = ELECTRIC_SHEEP
|
||||
required_reagents = list(WINE = 1, SILICON = 1, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/suicide
|
||||
name = "Suicide"
|
||||
id = SUICIDE
|
||||
result = SUICIDE
|
||||
required_reagents = list(SPACEMOUNTAINWIND = 1, DR_GIBB = 1, COLA = 1, LEMON_LIME = 1, KARMOTRINE = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/scientistsserendipity
|
||||
name = "Scientist's Serendipity"
|
||||
id = SCIENTISTS_SERENDIPITY
|
||||
result = SCIENTISTS_SERENDIPITY
|
||||
required_reagents = list(MOONROCKS = 1, KARMOTRINE = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/metabuddy
|
||||
name = "Metabuddy"
|
||||
id = METABUDDY
|
||||
result = METABUDDY
|
||||
required_reagents = list(TONIC = 2, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/waifu
|
||||
name = "Waifu"
|
||||
id = WAIFU
|
||||
result = WAIFU
|
||||
required_reagents = list(SAKE = 1, KARMOTRINE = 4)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/beepskyclassic
|
||||
name = "Beepsky Classic"
|
||||
id = BEEPSKY_CLASSIC
|
||||
result = BEEPSKY_CLASSIC
|
||||
required_reagents = list(BEEPSKY_SMASH = 2, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/spider
|
||||
name = "Spiders"
|
||||
id = SPIDERS
|
||||
result = SPIDERS
|
||||
required_reagents = list(CLONEXADONE = 3, KARMOTRINE = 2)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/weedeater
|
||||
name = "Weed Eater"
|
||||
id = WEED_EATER
|
||||
result = WEED_EATER
|
||||
required_reagents = list(SPACE_DRUGS = 1, AMATOXIN = 1, PSILOCYBIN = 1, KARMOTRINE = 2)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/lemonlime
|
||||
name = "Lemon Lime"
|
||||
id = LEMON_LIME
|
||||
result = LEMON_LIME
|
||||
required_reagents = list(LIMEJUICE = 1, LEMONJUICE = 1, SODAWATER = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/colorful_reagent
|
||||
name = "Colorful Reagent"
|
||||
id = COLORFUL_REAGENT
|
||||
result = COLORFUL_REAGENT
|
||||
required_reagents = list(MESCALINE = 1, PSILOCYBIN = 1, AMATOXIN = 1)
|
||||
|
||||
//Karmotrine Drinks
|
||||
|
||||
/datum/chemical_reaction/smokyroom
|
||||
name = "Smoky Room"
|
||||
id = SMOKYROOM
|
||||
result = SMOKYROOM
|
||||
required_reagents = list(MANHATTAN = 1, ICE = 1, KARMOTRINE = 2)
|
||||
result_amount = 4
|
||||
|
||||
/datum/chemical_reaction/ragstoriches
|
||||
name = "Rags to Riches"
|
||||
id = RAGSTORICHES
|
||||
result = RAGSTORICHES
|
||||
required_reagents = list(VODKA = 1, COGNAC = 1, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/badtouch
|
||||
name = "Bad Touch"
|
||||
id = BAD_TOUCH
|
||||
result = BAD_TOUCH
|
||||
required_reagents = list(RUM = 2, KAHLUA = 1, ICE = 1, KARMOTRINE = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/electricsheep
|
||||
name = "Electric Sheep"
|
||||
id = ELECTRIC_SHEEP
|
||||
result = ELECTRIC_SHEEP
|
||||
required_reagents = list(WINE = 1, SILICON = 1, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/suicide
|
||||
name = "Suicide"
|
||||
id = SUICIDE
|
||||
result = SUICIDE
|
||||
required_reagents = list(SPACEMOUNTAINWIND = 1, DR_GIBB = 1, COLA = 1, LEMON_LIME = 1, KARMOTRINE = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/scientistsserendipity
|
||||
name = "Scientist's Serendipity"
|
||||
id = SCIENTISTS_SERENDIPITY
|
||||
result = SCIENTISTS_SERENDIPITY
|
||||
required_reagents = list(MOONROCKS = 1, KARMOTRINE = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/metabuddy
|
||||
name = "Metabuddy"
|
||||
id = METABUDDY
|
||||
result = METABUDDY
|
||||
required_reagents = list(TONIC = 2, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/waifu
|
||||
name = "Waifu"
|
||||
id = WAIFU
|
||||
result = WAIFU
|
||||
required_reagents = list(SAKE = 1, KARMOTRINE = 4)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/beepskyclassic
|
||||
name = "Beepsky Classic"
|
||||
id = BEEPSKY_CLASSIC
|
||||
result = BEEPSKY_CLASSIC
|
||||
required_reagents = list(BEEPSKY_SMASH = 2, KARMOTRINE = 3)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/spider
|
||||
name = "Spiders"
|
||||
id = SPIDERS
|
||||
result = SPIDERS
|
||||
required_reagents = list(CLONEXADONE = 3, KARMOTRINE = 2)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/weedeater
|
||||
name = "Weed Eater"
|
||||
id = WEED_EATER
|
||||
result = WEED_EATER
|
||||
required_reagents = list(SPACE_DRUGS = 1, AMATOXIN = 1, PSILOCYBIN = 1, KARMOTRINE = 2)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/lemonlime
|
||||
name = "Lemon Lime"
|
||||
id = LEMON_LIME
|
||||
result = LEMON_LIME
|
||||
required_reagents = list(LIMEJUICE = 1, LEMONJUICE = 1, SODAWATER = 1)
|
||||
result_amount = 3
|
||||
|
||||
#undef ALERT_AMOUNT_ONLY
|
||||
|
||||
@@ -343,6 +343,7 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
|
||||
|
||||
if(isrobot(user))
|
||||
reagents.remove_any(amount_per_imbibe)
|
||||
reagents.reaction(user, TOUCH)
|
||||
return 1
|
||||
if(reagents.total_volume)
|
||||
if(can_drink(user))
|
||||
|
||||
@@ -679,6 +679,10 @@
|
||||
icon_state = "starkist"
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist/New()
|
||||
..()
|
||||
if(prob(30))
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/soda_cans/lemon_lime(get_turf(src))
|
||||
qdel(src) //You wanted ORANGE. It gave you lemon lime!
|
||||
return
|
||||
reagents.add_reagent(COLA, 15)
|
||||
reagents.add_reagent(ORANGEJUICE, 15)
|
||||
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
|
||||
@@ -1132,6 +1136,19 @@
|
||||
..()
|
||||
reagents.add_reagent(WINE, 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine
|
||||
name = "Vintage 2018 Special Reserve"
|
||||
desc = "Fermented during tumultuous years, and aged to perfection over several centuries."
|
||||
icon_state = "pwinebottle"
|
||||
vending_cat = "fermented" //doesn't actually matter, will appear under premium
|
||||
bottleheight = 30
|
||||
molotov = -1
|
||||
isGlass = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New()
|
||||
..()
|
||||
reagents.add_reagent(PWINE, 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
|
||||
name = "Jailbreaker Verte"
|
||||
desc = "One sip of this and you just know you're gonna have a good time."
|
||||
|
||||
@@ -15,9 +15,6 @@
|
||||
melt_temperature = MELTPOINT_GLASS
|
||||
w_type=RECYK_GLASS
|
||||
|
||||
//removed smashing - now uses smashing proc from drinks.dm - Hinaichigo
|
||||
//also now produces a broken glass when smashed instead of just a shard
|
||||
|
||||
on_reagent_change()
|
||||
..()
|
||||
/*if(reagents.reagent_list.len > 1 )
|
||||
@@ -39,6 +36,7 @@
|
||||
//mrid = R.get_master_reagent_id()
|
||||
isGlass = 1
|
||||
item_state = "glass_empty"
|
||||
origin_tech = ""
|
||||
switch(reagents.get_master_reagent_id())
|
||||
if(BEER)
|
||||
icon_state = "beerglass"
|
||||
@@ -557,6 +555,57 @@
|
||||
reagents.trans_to(P, reagents.total_volume)
|
||||
spawn(1)
|
||||
qdel(src)
|
||||
if(SCIENTISTS_SERENDIPITY)
|
||||
if(reagents.get_reagent_amount(SCIENTISTS_SERENDIPITY)<10) //You need at least 10u to get the tech bonus
|
||||
icon_state = "scientists_surprise"
|
||||
name = "\improper Scientist's Surprise"
|
||||
desc = "There is as yet insufficient data for a meaningful answer."
|
||||
else
|
||||
icon_state = SCIENTISTS_SERENDIPITY
|
||||
name = "\improper Scientist's Serendipity"
|
||||
desc = "Knock back a cold glass of R&D."
|
||||
origin_tech = "materials=7;engineering=3;plasmatech=2;powerstorage=4;bluespace=6;combat=3;magnets=6;programming=3"
|
||||
if(METABUDDY)
|
||||
icon_state = METABUDDY
|
||||
name = "\improper Metabuddy"
|
||||
desc = "The glass is etched with the name of a very deserving spaceman. There's a special note etched in the bottom..."
|
||||
if(SPIDERS)
|
||||
icon_state = SPIDERS
|
||||
name = "\improper This glass is full of spiders"
|
||||
desc = "Seriously, dude, don't touch it."
|
||||
if(WEED_EATER)
|
||||
icon_state = WEED_EATER
|
||||
name = "Weed Eater"
|
||||
desc = "The vegetarian equivalant of a snake eater."
|
||||
if(RAGSTORICHES)
|
||||
icon_state = RAGSTORICHES
|
||||
name = "\improper Rags to Riches"
|
||||
desc = "The Spaceman Dream, incarnated as a cocktail."
|
||||
if(WAIFU)
|
||||
icon_state = WAIFU
|
||||
name = "\improper Waifu"
|
||||
desc = "Don't drink more than one waifu if you value your laifu."
|
||||
if(BEEPSKY_CLASSIC)
|
||||
name = "\improper Beepsky Classic"
|
||||
icon_state = BEEPSKY_CLASSIC
|
||||
desc = "Some believe that the more modern Beepsky Smash was introduced to make this drink more popular."
|
||||
if(ELECTRIC_SHEEP)
|
||||
icon_state = ELECTRIC_SHEEP
|
||||
name = "\improper Electric Sheep"
|
||||
desc = "Silicons dream about this."
|
||||
if(SMOKYROOM)
|
||||
icon_state = SMOKYROOM
|
||||
name = "\improper Smoky Room"
|
||||
desc = "It was the kind of cool, black night that clung to you like something real... a black, tangible fabric of smoke, deceit, and murder. I had finished working my way through the fat cigars for the day - or at least told myself that to feel the sense of accomplishment for another night wasted on little more than chasing cheating dames and abusive husbands. It was enough to drive a man to drink... and it did. I sauntered into the cantina and wordlessly nodded to the barman. He knew my poison. I was a regular, after all. By the time the night was over, there would be another empty bottle and a case no closer to being cracked. Then I saw her, like a mirage across a desert, or a striken starlet on stage across a smoky room."
|
||||
if(BAD_TOUCH)
|
||||
icon_state = BAD_TOUCH
|
||||
name = "\improper Bad Touch"
|
||||
desc = "Somewhere on the scale of bad touches between 'fondled by clown' and 'brushed by supermatter shard'."
|
||||
if(SUICIDE)
|
||||
icon_state = SUICIDE
|
||||
name = "\improper Suicide"
|
||||
desc = "It's only tolerable because of the added alcohol."
|
||||
|
||||
else
|
||||
icon_state ="glass_colour"
|
||||
item_state ="glass_colour"
|
||||
@@ -566,8 +615,6 @@
|
||||
filling.alpha = mix_alpha_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
|
||||
|
||||
if(reagents.has_reagent(BLACKCOLOR))
|
||||
icon_state ="blackglass"
|
||||
name = "international drink of mystery"
|
||||
@@ -583,6 +630,11 @@
|
||||
var/mob/living/carbon/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/examine(mob/user)
|
||||
..()
|
||||
if(reagents.get_master_reagent_id() == METABUDDY && istype(user) && user.client)
|
||||
to_chat(user,"<span class='warning'>This one is made out to 'My very best friend, [user.client.ckey]'</span>")
|
||||
|
||||
// for /obj/machinery/vending/sovietsoda
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda
|
||||
New()
|
||||
|
||||
@@ -74,3 +74,35 @@ code\game\\dna\genes\goon_powers.dm
|
||||
|
||||
hud_state = "wiz_hulk"
|
||||
user_type = USER_TYPE_WIZARD
|
||||
|
||||
/spell/targeted/genetic/eat_weed
|
||||
name = "Eat Weeds"
|
||||
desc = "Devour weeds from soil or a hydroponics tray, gaining nutriment."
|
||||
spell_flags = INCLUDEUSER
|
||||
message = ""
|
||||
range = 0
|
||||
duration = 0
|
||||
max_targets = 1
|
||||
//mutations = list(M_EATWEEDS) - Some day, maybe, if this is ported to Diona nymphs instead of a verb
|
||||
hud_state = "ambrosiavulgaris"
|
||||
override_icon = 'icons/obj/harvest.dmi'
|
||||
|
||||
/spell/targeted/genetic/eat_weed/cast(list/targets, var/mob/user)
|
||||
..()
|
||||
if(!ishuman(user))
|
||||
return //We'll have to add an exception for monkeys if this is ported to diona
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/list/trays = list()
|
||||
for(var/obj/machinery/portable_atmospherics/hydroponics/tray in range(1))
|
||||
if(tray.weedlevel > 0)
|
||||
trays += tray
|
||||
|
||||
var/obj/machinery/portable_atmospherics/hydroponics/target = input(H,"Select a tray:") as null|anything in trays
|
||||
|
||||
if(!isnull(gcDestroyed) || !target || target.weedlevel == 0)
|
||||
return
|
||||
|
||||
H.reagents.add_reagent(NUTRIMENT, target.weedlevel)
|
||||
target.weedlevel = 0
|
||||
|
||||
user.visible_message("<span class='warning'>[user] begins rooting through [target], ripping out weeds and eating them noisily.</span>","<span class='warning'>You begin rooting through [target], ripping out weeds and eating them noisily.</span>")
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 233 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 89 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Reference in New Issue
Block a user