From 82a2eb8ae4e5c986f906c286b0d5c9a7ac8149ca Mon Sep 17 00:00:00 2001 From: Cheridan Date: Fri, 15 Nov 2013 00:48:53 -0600 Subject: [PATCH] Hydroponics Plant Size Scaling! Plants now get resized, based on their potency! (Except for logs and sunflowers because they're snowflakes) screenshot: http://puu.sh/5iJws.png --- code/__HELPERS/maths.dm | 13 +++++++++++++ code/modules/hydroponics/grown.dm | 16 ++++++++++------ code/modules/hydroponics/growninedible.dm | 8 +++++--- code/modules/hydroponics/hydroitemcode.dm | 4 ++-- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index e22cfe454b4..92cdca63216 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -120,6 +120,19 @@ var/const/Sqrt2 = 1.41421356 var/t = round((val - min) / d) return val - (t * d) + +//A logarithm that converts an integer to a number scaled between 0 and 1 (can be tweaked to be higher). +//Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions. +/proc/TransformUsingVariable(var/input, var/inputmaximum, var/scaling_modifier = 0) + + var/inputToDegrees = (input/inputmaximum)*180 //Converting from a 0 -> 100 scale to a 0 -> 180 scale. The 0 -> 180 scale corresponds to degrees + var/size_factor = ((-cos(inputToDegrees) +1) /2) //returns a value from 0 to 1 + + return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5 + //world<< "Transform multiplier of [src] is [size_factor + scaling_modifer]" + + + //converts a uniform distributed random number into a normal distributed one //since this method produces two random numbers, one is saved for subsequent calls //(making the cost negligble for every second call) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index d55a809bd3c..5776ec01bef 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -20,12 +20,16 @@ var/potency = -1 var/plant_type = 0 icon = 'icons/obj/harvest.dmi' - New(newloc,newpotency) - if (!isnull(newpotency)) - potency = newpotency - ..() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + +/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc,newpotency) + if (!isnull(newpotency)) + potency = newpotency + ..() + pixel_x = rand(-5.0, 5) + pixel_y = rand(-5.0, 5) + + transform *= TransformUsingVariable(potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency! + /obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/O as obj, var/mob/user as mob) ..() diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 11e8e7c3c20..f1093c2c898 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -14,13 +14,15 @@ var/maturation = 7 var/production = 7 var/yield = 2 - var/potency = 1 + var/potency = 20 var/plant_type = 0 - New() - create_reagents(50) + +/obj/item/weapon/grown/New() + create_reagents(50) /obj/item/weapon/grown/proc/changePotency(newValue) //-QualityVan potency = newValue + transform *= TransformUsingVariable(potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency! /obj/item/weapon/grown/log name = "tower-cap log" diff --git a/code/modules/hydroponics/hydroitemcode.dm b/code/modules/hydroponics/hydroitemcode.dm index 5923ee8af38..d463e6c6b6a 100644 --- a/code/modules/hydroponics/hydroitemcode.dm +++ b/code/modules/hydroponics/hydroitemcode.dm @@ -49,7 +49,7 @@ del(src) /obj/item/weapon/grown/nettle/changePotency(newValue) //-QualityVan - potency = newValue + ..() force = round((5+potency/5), 1) //Deathnettle @@ -93,7 +93,7 @@ del(src) /obj/item/weapon/grown/deathnettle/changePotency(newValue) //-QualityVan - potency = newValue + ..() force = round((5+potency/2.5), 1)