diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 608c70ac839..8314586397b 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -360,7 +360,17 @@ G.next_shock = world.time + time // Simple helper to face what you clicked on, in case it should be needed in more than one place /mob/proc/face_atom(var/atom/A) - if( stat || (buckled && !buckled.movable) || !A || !x || !y || !A.x || !A.y ) return + + // Snowflake for space vines. + var/is_buckled = 0 + if(buckled) + if(istype(buckled)) + if(!buckled.movable) + is_buckled = 1 + else + is_buckled = 0 + + if( stat || is_buckled || !A || !x || !y || !A.x || !A.y ) return var/dx = A.x - x var/dy = A.y - y if(!dx && !dy) return diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 16f89e4d25c..a0a83486dd4 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -159,7 +159,7 @@ return // Advance plant age. - age += 1 * HYDRO_SPEED_MULTIPLIER + if(prob(25)) age += 1 * HYDRO_SPEED_MULTIPLIER // Maintain tray nutrient and water levels. if(seed.nutrient_consumption > 0 && nutrilevel > 0 && prob(25)) @@ -380,12 +380,14 @@ /obj/machinery/portable_atmospherics/hydroponics/proc/mutate(var/severity) + world << "Tray mutation proc called with [severity]." + // No seed, no mutations. if(!seed) return // Check if we should even bother working on the current seed datum. - if(seed.mutants.len && severity > 1 && prob(10+mutation_mod)) + if(seed.mutants. && seed.mutants.len && severity > 1 && prob(10+mutation_mod)) mutate_species() return @@ -573,7 +575,7 @@ reagent_value = mutagenic_reagents[R.id]+mutation_mod if(reagent_total >= reagent_value) if(prob(min(reagent_total*reagent_value,100))) - mutate(reagent_value > 10 ? 2 : 1) + mutate(reagent_total > 10 ? 2 : 1) S.reagents.clear_reagents() @@ -622,7 +624,7 @@ update_icon() else - user << "\red The [src] already has seeds in it!" + user << "\red \The [src] already has seeds in it!" else if (istype(O, /obj/item/weapon/reagent_containers/spray/plantbgone)) if(seed) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 5c7b61858b0..e0a0fef7569 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -15,9 +15,10 @@ layer = 2.9 anchored = 1 density = 1 - var/active = 1 //No sales pitches if off! - var/vend_ready = 1 //Are we ready to vend?? Is it time?? - var/vend_delay = 10 //How long does it take to vend? + var/active = 1 //No sales pitches if off! + var/delay_product_spawn // If set, uses sleep() in product spawn proc (mostly for seeds to retrieve correct names). + var/vend_ready = 1 //Are we ready to vend?? Is it time?? + var/vend_delay = 10 //How long does it take to vend? var/datum/data/vending_product/currently_vending = null // A /datum/data/vending_product instance of what we're paying for right now. // To be filled out at compile time @@ -106,19 +107,25 @@ var/atom/temp = new typepath(null) var/datum/data/vending_product/R = new /datum/data/vending_product() + R.product_path = typepath R.amount = amount R.max_amount = amount R.price = price R.display_color = pick("red","blue","green") - sleep(3) - R.product_name = temp.name if(hidden) hidden_records += R else if(req_coin) coin_records += R else product_records += R + + if(delay_product_spawn) + sleep(3) + R.product_name = temp.name + else + R.product_name = temp.name + // world << "Added: [R.product_name]] - [R.amount] - [R.product_path]" @@ -770,6 +777,8 @@ product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!" product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!" icon_state = "seeds" + delay_product_spawn = 1 + products = list(/obj/item/seeds/bananaseed = 3,/obj/item/seeds/berryseed = 3,/obj/item/seeds/carrotseed = 3,/obj/item/seeds/chantermycelium = 3,/obj/item/seeds/chiliseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3, /obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3, diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 0c87e6dcdd2..9f7947ccb2e 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -58,9 +58,9 @@ proc/populate_seed_list() //Tolerances. var/requires_nutrients = 1 // The plant can starve. - var/nutrient_consumption = 0.1 // Plant eats this much per tick. - var/requires_water = 1 // The plant can become dehydrated. - var/water_consumption = 1 // Plant drinks this much per tick. + var/nutrient_consumption = 0.25 // Plant eats this much per tick. + var/requires_water = 3 // The plant can become dehydrated. + var/water_consumption = 1 // Plant drinks this much per tick. var/ideal_heat = 293 // Preferred temperature in Kelvin. var/heat_tolerance = 20 // Departure from ideal that is survivable. var/ideal_light = 8 // Preferred light level in luminosity. @@ -104,9 +104,12 @@ proc/populate_seed_list() //Mutates the plant overall (randomly). /datum/seed/proc/mutate(var/degree,var/turf/source_turf) + + world << "Seed mutation proc called with [degree]." + if(!degree || immutable) return - source_turf.visible_message("[display_name] quivers uneasily!") + source_turf.visible_message("\blue \The [display_name] quivers!") //This looks like shit, but it's a lot easier to read/change this way. var/total_mutations = rand(1,1+degree) @@ -115,7 +118,7 @@ proc/populate_seed_list() if(0) //Plant cancer! lifespan = max(0,lifespan-rand(1,5)) endurance = max(0,endurance-rand(10,20)) - source_turf.visible_message("[display_name] withers rapidly!") + source_turf.visible_message("\red \The [display_name] withers rapidly!") if(1) nutrient_consumption = max(0, min(5, nutrient_consumption + rand(-(degree*0.1),(degree*0.1)))) water_consumption = max(0, min(50, water_consumption + rand(-degree,degree))) @@ -134,7 +137,7 @@ proc/populate_seed_list() if(prob(degree*5)) carnivorous = max(0, min(2, carnivorous + rand(-degree,degree))) if(carnivorous) - source_turf.visible_message("[display_name] shudders hungrily.") + source_turf.visible_message("\blue \The [display_name] shudders hungrily.") if(6) weed_tolerance = max(0, min(10, weed_tolerance + (rand(-2,2) * degree))) if(prob(degree*5)) parasite = !parasite @@ -148,7 +151,7 @@ proc/populate_seed_list() potency = max(0, min(200, potency + (rand(-20,20) * degree))) if(prob(degree*5)) spread = max(0, min(2, spread + rand(-1,1))) - source_turf.visible_message("[display_name] spasms visibly, shifting in the tray.") + source_turf.visible_message("\blue \The [display_name] spasms visibly, shifting in the tray.") if(9) maturation = max(0, min(30, maturation + (rand(-1,1) * degree))) if(prob(degree*5)) @@ -157,22 +160,22 @@ proc/populate_seed_list() if(prob(degree*2)) biolum = !biolum if(biolum) - source_turf.visible_message("[display_name] begins to glow!") + source_turf.visible_message("\blue \The [display_name] begins to glow!") if(prob(degree*2)) biolum_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - source_turf.visible_message("[display_name]'s glow changes colour!") + source_turf.visible_message("\blue \The [display_name]'s glow changes colour!") else - source_turf.visible_message("[display_name]'s glow dims...") + source_turf.visible_message("\blue \The [display_name]'s glow dims...") if(11) if(prob(degree*2)) flowers = !flowers if(flowers) - source_turf.visible_message("[display_name] sprouts a bevy of flowers!") + source_turf.visible_message("\blue \The [display_name] sprouts a bevy of flowers!") if(prob(degree*2)) flower_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - source_turf.visible_message("[display_name]'s flowers changes colour!") + source_turf.visible_message("\blue \The [display_name]'s flowers changes colour!") else - source_turf.visible_message("[display_name]'s flowers wither and fall off.") + source_turf.visible_message("\blue \The [display_name]'s flowers wither and fall off.") return //Mutates a specific trait/set of traits. @@ -368,7 +371,7 @@ proc/populate_seed_list() yield_mod = 0 total_yield = yield else - total_yield = max(1,rand(1,((yield_mod+yield)))) + total_yield = max(1,rand(yield_mod,yield_mod+yield)) currently_querying = list() for(var/i = 0;i \The [user] fires \the [src] into \the [tray]!") + Fire(target,user) return + ..() + /obj/item/weapon/gun/energy/meteorgun name = "meteor gun" desc = "For the love of god, make sure you're aiming this the right way!" @@ -176,6 +186,14 @@ obj/item/weapon/gun/energy/staff/focus /obj/item/weapon/gun/energy/sniperrifle/dropped(mob/user) user.client.view = world.view + + +/* +This is called from +modules/mob/mob_movement.dm if you move you will be zoomed out +modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. +*/ + /obj/item/weapon/gun/energy/sniperrifle/verb/zoom() set category = "Object" set name = "Use Sniper Scope" diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index 80152b44a49..7d5b581d60d 100644 Binary files a/icons/obj/hydroponics.dmi and b/icons/obj/hydroponics.dmi differ