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:
Allspice
2018-08-23 02:24:21 -07:00
committed by jknpj
parent 8b77854a3e
commit 6c9558b49f
22 changed files with 658 additions and 115 deletions

View File

@@ -341,6 +341,18 @@
#define MUSTARD "mustard" #define MUSTARD "mustard"
#define RELISH "relish" #define RELISH "relish"
#define UNTABLE_MUTAGEN "untable" #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 TUNGSTEN "tungsten"
#define LITHIUMSODIUMTUNGSTATE "lithiumsodiumtungstate" #define LITHIUMSODIUMTUNGSTATE "lithiumsodiumtungstate"

View File

@@ -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/coffee = 10,
/obj/item/weapon/reagent_containers/food/drinks/mug = 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( product_slogans = list(
"I hope nobody asks me for a bloody cup o' tea...", "I hope nobody asks me for a bloody cup o' tea...",
"Alcohol is humanity's friend. Would you abandon a friend?", "Alcohol is humanity's friend. Would you abandon a friend?",

View File

@@ -395,8 +395,8 @@
if(S.can_stack_with(new_stack_type)) if(S.can_stack_with(new_stack_type))
if(S.max_amount >= S.amount + add_amount) if(S.max_amount >= S.amount + add_amount)
S.add(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>") 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 return S
var/obj/item/stack/S = new new_stack_type(loc) var/obj/item/stack/S = new new_stack_type(loc)

View File

@@ -121,8 +121,6 @@
//Harvests the product of a plant. //Harvests the product of a plant.
/obj/machinery/portable_atmospherics/hydroponics/proc/harvest(var/mob/user) /obj/machinery/portable_atmospherics/hydroponics/proc/harvest(var/mob/user)
//Harvest the product of the plant, //Harvest the product of the plant,
if(!seed || !harvest || !user) if(!seed || !harvest || !user)
return return
@@ -135,6 +133,17 @@
return return
seed.harvest(user,yield_mod) 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. // Reset values.
harvest = 0 harvest = 0

View File

@@ -248,6 +248,9 @@
check_health() 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 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(!dead && seed.products && seed.products.len)
if (age > seed.production) if (age > seed.production)
@@ -330,7 +333,7 @@
overlays += image(icon = icon, icon_state = "hydrocover") overlays += image(icon = icon, icon_state = "hydrocover")
//Updated the various alert icons. //Updated the various alert icons.
if(draw_warnings) if(draw_warnings&& !reagents.has_reagent(SPORTDRINK))
if(waterlevel <= 10) if(waterlevel <= 10)
overlays += image(icon = icon, icon_state = "over_lowwater3") overlays += image(icon = icon, icon_state = "over_lowwater3")
if(nutrilevel <= 2) if(nutrilevel <= 2)

View File

@@ -9,7 +9,7 @@
packet_icon = "seed-telriis" packet_icon = "seed-telriis"
plant_icon = "telriis" plant_icon = "telriis"
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),PWINE = list(0,2)) chems = list(DIETHYLAMINE = list(0,10))
lifespan = 60 lifespan = 60
maturation = 6 maturation = 6
@@ -38,14 +38,16 @@
packet_icon = "seed-thaadra" packet_icon = "seed-thaadra"
plant_icon = "thaadra" plant_icon = "thaadra"
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),FROSTOIL = list(5,7)) chems = list(FROSTOIL = list(5,30))
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
production = 3 production = 3
yield = 5 yield = 5
potency = 20 potency = 90 //Much higher than normal plants
growth_stages = 4 growth_stages = 4
alter_temp = 1
ideal_heat = T20C - 10
/obj/item/seeds/thaadra /obj/item/seeds/thaadra
seed_type = "thaadra" seed_type = "thaadra"
@@ -66,7 +68,7 @@
mutants = null mutants = null
packet_icon = "seed-jurlmah" packet_icon = "seed-jurlmah"
plant_icon = "jurlmah" plant_icon = "jurlmah"
chems = list(NUTRIMENT = list(1,10),SEROTROTIUM = list(0,10)) chems = list(CLONEXADONE = list(1,10))
lifespan = 25 lifespan = 25
maturation = 6 maturation = 6
@@ -98,7 +100,7 @@
mutants = null mutants = null
packet_icon = "seed-amauri" packet_icon = "seed-amauri"
plant_icon = "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 lifespan = 25
maturation = 10 maturation = 10
@@ -121,6 +123,7 @@
desc = "It is small, round and hard. Its skin is a thick dark purple." desc = "It is small, round and hard. Its skin is a thick dark purple."
icon_state = "amaurifruit" icon_state = "amaurifruit"
plantname = "amauri" plantname = "amauri"
flags = NOREACT
hydroflags = HYDRO_PREHISTORIC hydroflags = HYDRO_PREHISTORIC
/datum/seed/gelthi /datum/seed/gelthi
@@ -131,8 +134,8 @@
mutants = null mutants = null
packet_icon = "seed-gelthi" packet_icon = "seed-gelthi"
plant_icon = "gelthi" plant_icon = "gelthi"
harvest_repeat = 1 harvest_repeat = 2
chems = list(NUTRIMENT = list(1,10),VALERENIC_ACID = list(0,1),CAPSAICIN = list(0,1)) chems = list(NUTRIMENT = list(1,10))
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -195,12 +198,12 @@
packet_icon = "seed-surik" packet_icon = "seed-surik"
plant_icon = "surik" plant_icon = "surik"
harvest_repeat = 1 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 lifespan = 55
maturation = 7 maturation = 7
production = 6 production = 6
yield = 3 yield = 5
potency = 20 potency = 20
growth_stages = 4 growth_stages = 4

View File

@@ -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/maturation = 0 // Time taken before the plant is mature.
var/production = 0 // Time before harvesting can be undertaken again. 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/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/potency = 1 // General purpose plant strength value.
var/spread = 0 // 0 limits plant to tray, 1 = creepers, 2 = vines. 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. var/immutable = 0 // If set, plant will never mutate. If -1, plant is highly mutable.
@@ -537,53 +537,61 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
else else
to_chat(user, "You harvest from the [display_name].") to_chat(user, "You harvest from the [display_name].")
add_newline_to_controller() generate_product(get_turf(user), yield_mod)
var/total_yield = 0 /datum/seed/proc/generate_product(var/turf/T, yield_mod)
if(yield > -1) add_newline_to_controller()
if(isnull(yield_mod) || yield_mod < 0)
yield_mod = 1
total_yield = yield
else
total_yield = yield * yield_mod
total_yield = round(max(1,total_yield))
currently_querying = list() var/total_yield = 0
for(var/i = 0;i<total_yield;i++) if(yield > -1)
var/product_type = pick(products) if(isnull(yield_mod) || yield_mod < 0)
yield_mod = 1
total_yield = yield
else
total_yield = yield * yield_mod
total_yield = round(max(1,total_yield))
var/obj/item/product currently_querying = list()
for(var/i = 0;i<total_yield;i++)
var/product_type = pick(products)
if(ispath(product_type, /obj/item/stack)) var/obj/item/product
product = drop_stack(product_type, get_turf(user), 1, user)
else
product = new product_type(get_turf(user))
score["stuffharvested"] += 1 //One point per product unit if(ispath(product_type, /obj/item/stack))
product = drop_stack(product_type, T, 1, null)
else
product = new product_type(T)
if(mysterious) score["stuffharvested"] += 1 //One point per product unit
product.name += "?"
product.desc += " On second thought, something about this one looks strange."
if(biolum) if(mysterious)
if(biolum_colour) product.name += "?"
product.light_color = biolum_colour product.desc += " On second thought, something about this one looks strange."
//product.set_light(1+round(potency/50))
product.set_light(2)
//Handle spawning in living, mobile products (like dionaea). if(biolum)
if(istype(product,/mob/living)) if(biolum_colour)
product.light_color = biolum_colour
//product.set_light(1+round(potency/50))
product.set_light(2)
product.visible_message("<span class='notice'>The pod disgorges [product]!</span>") //Handle spawning in living, mobile products (like dionaea).
handle_living_product(product) if(istype(product,/mob/living))
// Make sure the product is inheriting the correct seed type reference. product.visible_message("<span class='notice'>The pod disgorges [product]!</span>")
else if(istype(product,/obj/item/weapon/reagent_containers/food/snacks/grown)) handle_living_product(product)
var/obj/item/weapon/reagent_containers/food/snacks/grown/current_product = product
current_product.plantname = name // Make sure the product is inheriting the correct seed type reference.
else if(istype(product,/obj/item/weapon/grown)) else if(istype(product,/obj/item/weapon/reagent_containers/food/snacks/grown))
var/obj/item/weapon/grown/current_product = product var/obj/item/weapon/reagent_containers/food/snacks/grown/current_product = product
current_product.plantname = name current_product.plantname = name
else if(istype(product,/obj/item/weapon/grown))
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) /datum/seed/proc/check_harvest(var/mob/user, var/obj/machinery/portable_atmospherics/hydroponics/tray)
var/success = 1 var/success = 1

View File

@@ -58,6 +58,9 @@
if(prob(80)) if(prob(80))
age++ age++
if(harvest && (seed.harvest_repeat == 2))
autoharvest()
if(!harvest && prob(3) && age > mature_time + seed.production) if(!harvest && prob(3) && age > mature_time + seed.production)
harvest = 1 harvest = 1

View File

@@ -23,6 +23,13 @@
/obj/effect/plantsegment/proc/harvest(var/mob/user) /obj/effect/plantsegment/proc/harvest(var/mob/user)
seed.harvest(user, yield_mod = 0.5) 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 harvest = 0
age = mature_time // Since we don't die of old age, there's no need to keep an accurate age count. age = mature_time // Since we don't die of old age, there's no need to keep an accurate age count.
update_icon() update_icon()

View File

@@ -114,64 +114,9 @@
else if(ear_damage < 25) //Ear damage heals slowly under this threshold. otherwise you'll need earmuffs 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) ear_damage = max(ear_damage - 0.05, 0)
//Dizziness handle_dizziness()
if(dizziness || undergoing_hypothermia() == MODERATE_HYPOTHERMIA) handle_jitteriness()
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
//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 //Flying
if(flying) if(flying)
spawn() spawn()

View File

@@ -1754,3 +1754,64 @@ Thanks.
"suiciding") "suiciding")
reset_vars_after_duration(resettable_vars, duration) 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)

View File

@@ -136,6 +136,9 @@
src.druggy-- src.druggy--
src.druggy = max(0, src.druggy) src.druggy = max(0, src.druggy)
handle_dizziness()
handle_jitteriness()
return 1 return 1
/mob/living/silicon/robot/mommi/handle_regular_hud_updates() /mob/living/silicon/robot/mommi/handle_regular_hud_updates()

View File

@@ -128,6 +128,9 @@
druggy-- druggy--
druggy = max(0, druggy) druggy = max(0, druggy)
handle_dizziness()
handle_jitteriness()
if(!is_component_functioning("radio")) if(!is_component_functioning("radio"))
radio.on = FALSE radio.on = FALSE
else else

View File

@@ -5244,6 +5244,215 @@
L.take_damage(100, 0) L.take_damage(100, 0)
data++ 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 /datum/reagent/ethanol/deadrum
name = "Deadrum" name = "Deadrum"
id = RUM id = RUM
@@ -6183,6 +6392,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
sport = 5 sport = 5
color = "#CCFF66" //rgb: 204, 255, 51 color = "#CCFF66" //rgb: 204, 255, 51
custom_metabolism = 0.01 custom_metabolism = 0.01
custom_plant_metabolism = HYDRO_SPEED_MULTIPLIER/5
/datum/reagent/antidepressant/citalopram /datum/reagent/antidepressant/citalopram
name = "Citalopram" name = "Citalopram"

View File

@@ -3160,11 +3160,182 @@
required_reagents = list(FORMIC_ACID = 1, PHENOL = 1, RADIUM = 1) required_reagents = list(FORMIC_ACID = 1, PHENOL = 1, RADIUM = 1)
result_amount = 3 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 /datum/chemical_reaction/colorful_reagent
name = "Colorful Reagent" name = "Colorful Reagent"
id = COLORFUL_REAGENT id = COLORFUL_REAGENT
result = COLORFUL_REAGENT result = COLORFUL_REAGENT
required_reagents = list(MESCALINE = 1, PSILOCYBIN = 1, AMATOXIN = 1) 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 result_amount = 3
#undef ALERT_AMOUNT_ONLY #undef ALERT_AMOUNT_ONLY

View File

@@ -343,6 +343,7 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
if(isrobot(user)) if(isrobot(user))
reagents.remove_any(amount_per_imbibe) reagents.remove_any(amount_per_imbibe)
reagents.reaction(user, TOUCH)
return 1 return 1
if(reagents.total_volume) if(reagents.total_volume)
if(can_drink(user)) if(can_drink(user))
@@ -383,4 +384,4 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
var/thermal_energy = I.thermal_energy_transfer() var/thermal_energy = I.thermal_energy_transfer()
if(temperature && reagents) if(temperature && reagents)
reagents.heating(thermal_energy, temperature) reagents.heating(thermal_energy, temperature)
to_chat(user, "<span class='notice'>You heat [src] with [I].</span>") to_chat(user, "<span class='notice'>You heat [src] with [I].</span>")

View File

@@ -679,6 +679,10 @@
icon_state = "starkist" icon_state = "starkist"
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/starkist/New() /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(COLA, 15)
reagents.add_reagent(ORANGEJUICE, 15) reagents.add_reagent(ORANGEJUICE, 15)
src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER src.pixel_x = rand(-10, 10) * PIXEL_MULTIPLIER
@@ -1132,6 +1136,19 @@
..() ..()
reagents.add_reagent(WINE, 100) 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 /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
name = "Jailbreaker Verte" name = "Jailbreaker Verte"
desc = "One sip of this and you just know you're gonna have a good time." desc = "One sip of this and you just know you're gonna have a good time."

View File

@@ -15,9 +15,6 @@
melt_temperature = MELTPOINT_GLASS melt_temperature = MELTPOINT_GLASS
w_type=RECYK_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() on_reagent_change()
..() ..()
/*if(reagents.reagent_list.len > 1 ) /*if(reagents.reagent_list.len > 1 )
@@ -39,6 +36,7 @@
//mrid = R.get_master_reagent_id() //mrid = R.get_master_reagent_id()
isGlass = 1 isGlass = 1
item_state = "glass_empty" item_state = "glass_empty"
origin_tech = ""
switch(reagents.get_master_reagent_id()) switch(reagents.get_master_reagent_id())
if(BEER) if(BEER)
icon_state = "beerglass" icon_state = "beerglass"
@@ -557,6 +555,57 @@
reagents.trans_to(P, reagents.total_volume) reagents.trans_to(P, reagents.total_volume)
spawn(1) spawn(1)
qdel(src) 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 else
icon_state ="glass_colour" icon_state ="glass_colour"
item_state ="glass_colour" item_state ="glass_colour"
@@ -566,8 +615,6 @@
filling.alpha = mix_alpha_from_reagents(reagents.reagent_list) filling.alpha = mix_alpha_from_reagents(reagents.reagent_list)
overlays += filling overlays += filling
if(reagents.has_reagent(BLACKCOLOR)) if(reagents.has_reagent(BLACKCOLOR))
icon_state ="blackglass" icon_state ="blackglass"
name = "international drink of mystery" name = "international drink of mystery"
@@ -583,6 +630,11 @@
var/mob/living/carbon/M = loc var/mob/living/carbon/M = loc
M.update_inv_hands() 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 // for /obj/machinery/vending/sovietsoda
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda
New() New()

View File

@@ -74,3 +74,35 @@ code\game\\dna\genes\goon_powers.dm
hud_state = "wiz_hulk" hud_state = "wiz_hulk"
user_type = USER_TYPE_WIZARD 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