Merge pull request #2676 from FalseIncarnate/master

Item Plants, Grown Weapons, Botany Fixes/Changes
This commit is contained in:
Fox McCloud
2015-11-29 15:31:45 -05:00
7 changed files with 180 additions and 273 deletions
+69 -18
View File
@@ -113,7 +113,7 @@
descriptors |= "hallucinogenic"
if(reagents.has_reagent("styptic_powder"))
descriptors |= "medicinal"
if(reagents.has_reagent("gold"))
if(reagents.has_reagent("gold") || reagents.has_reagent("silver"))
descriptors |= "shiny"
if(reagents.has_reagent("lube"))
descriptors |= "slippery"
@@ -377,22 +377,7 @@
if(src) qdel(src)
return
if(seed.kitchen_tag == "grass")
user.show_message("<span class='notice'>You make a grass tile out of \the [src]!</span>", 1)
for(var/i=0,i<2,i++)
var/obj/item/stack/tile/grass/G = new (user.loc)
G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
for (var/obj/item/stack/tile/grass/NG in user.loc)
if(G==NG)
continue
if(NG.amount>=NG.max_amount)
continue
NG.attackby(G, user)
user << "You add the newly-formed grass to the stack. It now contains [G.amount] tiles."
qdel(src)
return
if(seed.get_trait(TRAIT_SPREAD) > 0)
if(user.a_intent == I_DISARM && seed.get_trait(TRAIT_SPREAD) > 0) //Using disarm so we can tell if you want to plant or convert non-final plants
user << "<span class='notice'>You plant the [src.name].</span>"
new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed)
new /obj/effect/plant(get_turf(user), src.seed)
@@ -400,7 +385,7 @@
return
if(seed.kitchen_tag)
if(!seed.final_form) //This isn't even my final form! (sorry, it had to be done)
switch(seed.kitchen_tag)
if("comfrey")
var/obj/item/stack/medical/bruise_pack/comfrey/poultice = new /obj/item/stack/medical/bruise_pack/comfrey(user.loc)
@@ -414,7 +399,73 @@
user << "<span class='notice'>You mash the petals into a poultice.</span>"
qdel(src)
return
if("grass")
user.show_message("<span class='notice'>You make a grass tile out of \the [src]!</span>", 1)
for(var/i=0,i<2,i++)
var/obj/item/stack/tile/grass/G = new (user.loc)
G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
for (var/obj/item/stack/tile/grass/NG in user.loc)
if(G==NG)
continue
if(NG.amount>=NG.max_amount)
continue
NG.attackby(G, user)
user << "You add the newly-formed grass to the stack. It now contains [G.amount] tiles."
qdel(src)
return
if("sunflower")
var/obj/item/weapon/grown/sunflower/SF = new /obj/item/weapon/grown/sunflower(user.loc)
user.unEquip(src)
user.put_in_hands(SF)
qdel(src)
return
if("novaflower")
var/obj/item/weapon/grown/novaflower/NF = new /obj/item/weapon/grown/novaflower(user.loc)
if(prob(10))
user.say("PRAISE THE SUN!")
else
user << "PRAISE THE SUN!"
user.unEquip(src)
user.put_in_hands(NF)
qdel(src)
return
if("cashpod")
user << "You crack open the cash pod..."
var/value = round(seed.get_trait(TRAIT_POTENCY))
var/dosh
user.unEquip(src)
switch(value)
if(0)
user << "It's empty! What a waste..."
if(1 to 10)
user << "It has a space dollar inside. Woo."
dosh = new /obj/item/weapon/spacecash(user.loc)
if(11 to 20)
user << "It has 10 space dollars inside!"
dosh = new /obj/item/weapon/spacecash/c10(user.loc)
if(21 to 30)
user << "It has 20 space dollars inside! Cool!"
dosh = new /obj/item/weapon/spacecash/c20(user.loc)
if(31 to 40)
user << "It has 50 space dollars inside! Nice!"
dosh = new /obj/item/weapon/spacecash/c50(user.loc)
if(41 to 50)
user << "It has 100 space dollars inside! Sweet!"
dosh = new /obj/item/weapon/spacecash/c100(user.loc)
if(51 to 60)
user << "It has 200 space dollars inside! Awesome!"
dosh = new /obj/item/weapon/spacecash/c200(user.loc)
if(61 to 80)
user << "It has 500 space dollars inside! CHA-CHING!"
dosh = new /obj/item/weapon/spacecash/c500(user.loc)
else
user << "It has 1000 space dollars inside! JACKPOT!"
dosh = new /obj/item/weapon/spacecash/c1000(user.loc)
if(dosh)
user.put_in_hands(dosh)
qdel(src)
return
/obj/item/weapon/reagent_containers/food/snacks/grown/pickup(mob/user)
..()
@@ -84,3 +84,47 @@
throwforce = 0
throw_speed = 4
throw_range = 20
// Sunflower
/obj/item/weapon/grown/sunflower
name = "sunflower"
desc = "A large, fresh-grown sunflower. How cheery!"
icon = 'icons/obj/harvest.dmi'
icon_state = "sunflower"
item_state = "sunflower"
w_class = 2.0
throwforce = 0
throw_speed = 4
throw_range = 20
/obj/item/weapon/grown/sunflower/attack(mob/M as mob, mob/user as mob)
M << "<font color='green'><b> [user] smacks you with a [name]!</font><font color='yellow'><b>FLOWER POWER<b></font>"
user << "<font color='green'> Your [name]'s </font><font color='yellow'><b>FLOWER POWER</b></font><font color='green'> strikes [M]</font>"
// Novaflower
/obj/item/weapon/grown/novaflower
name = "novaflower"
desc = "A large, fresh-grown novaflower. It seems to radiate heat."
icon = 'icons/obj/harvest.dmi'
icon_state = "novaflower"
item_state = "sunflower"
w_class = 2.0
throwforce = 0
throw_speed = 4
throw_range = 20
/obj/item/weapon/grown/novaflower/attack(mob/living/carbon/M as mob, mob/user as mob)
M << "<font color='green'>[user] smacks you with a [name]!</font><font color='yellow'><b>FLOWER POWER</b></font>"
user << "<font color='green'> Your [name]'s </font><font color='yellow'><b>FLOWER POWER</b></font><font color='green'> strikes [M]</font>"
if(istype(M, /mob/living))
M << "<span class='warning'>You are heated by the warmth of the of the [name]!</span>"
M.bodytemperature += potency/2 * TEMPERATURE_DAMAGE_COEFFICIENT
/obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
user << "<span class='warning'>The [name] burns your bare hand!</span>"
user.adjustFireLoss(rand(1,5))
+10 -9
View File
@@ -21,7 +21,8 @@
var/kitchen_tag // Used by the reagent grinder.
var/trash_type // Garbage item produced when eaten.
var/splat_type = /obj/effect/decal/cleanable/fruit_smudge // Graffiti decal.
var/has_mob_product
var/preset_product
var/final_form = 1
var/modular_icon = 0 // Dictates if the product uses a modular sprite. 0 = preset, 1 = modular
var/preset_icon = "undef" // Name of the iconstate in icon/obj/harvest.dmi to use for preset sprite
// Make sure to set this to the correct icon if not using a modular sprite
@@ -650,8 +651,8 @@
consume_gasses |= new_gasses
gene.values["[TRAIT_CONSUME_GASSES]"] = null
if(GENE_METABOLISM)
has_mob_product = gene.values["mob_product"]
gene.values["mob_product"] = null
preset_product = gene.values["alt_product"]
gene.values["alt_product"] = null
for(var/trait in gene.values)
set_trait(trait,gene.values["[trait]"])
@@ -680,7 +681,7 @@
if(GENE_HARDINESS)
traits_to_copy = list(TRAIT_TOXINS_TOLERANCE,TRAIT_PEST_TOLERANCE,TRAIT_WEED_TOLERANCE,TRAIT_ENDURANCE)
if(GENE_METABOLISM)
P.values["mob_product"] = has_mob_product
P.values["alt_product"] = preset_product
traits_to_copy = list(TRAIT_REQUIRES_NUTRIENTS,TRAIT_REQUIRES_WATER,TRAIT_ALTER_TEMP)
if(GENE_VIGOUR)
traits_to_copy = list(TRAIT_PRODUCTION,TRAIT_MATURATION,TRAIT_YIELD,TRAIT_SPREAD)
@@ -740,14 +741,13 @@
currently_querying = list()
for(var/i = 0;i<total_yield;i++)
var/obj/item/product
if(has_mob_product)
product = new has_mob_product(get_turf(user),name)
if(preset_product)
product = new preset_product(get_turf(user),name)
else
product = new /obj/item/weapon/reagent_containers/food/snacks/grown(get_turf(user),name)
if(get_trait(TRAIT_PRODUCT_COLOUR))
if(modular_icon == 1)
if(!has_mob_product || (has_mob_product && has_mob_product != /mob/living/simple_animal/diona))
product.color = get_trait(TRAIT_PRODUCT_COLOUR)
product.color = get_trait(TRAIT_PRODUCT_COLOUR)
if(istype(product,/obj/item/weapon/reagent_containers/food))
var/obj/item/weapon/reagent_containers/food/food = product
food.filling_color = get_trait(TRAIT_PRODUCT_COLOUR)
@@ -782,7 +782,8 @@
new_seed.can_self_harvest = can_self_harvest
new_seed.kitchen_tag = kitchen_tag
new_seed.trash_type = trash_type
new_seed.has_mob_product = has_mob_product
new_seed.preset_product = preset_product
new_seed.final_form = final_form
//Copy over everything else.
if(mutants) new_seed.mutants = mutants.Copy()
if(chems) new_seed.chems = chems.Copy()
+57 -5
View File
@@ -206,7 +206,7 @@
display_name = "killer tomato plant"
mutants = null
can_self_harvest = 1
has_mob_product = /mob/living/simple_animal/tomato
preset_product = /mob/living/simple_animal/tomato
preset_icon = "killertomato"
/datum/seed/tomato/killer/New()
@@ -250,7 +250,7 @@
name = "eggplant"
seed_name = "eggplant"
display_name = "eggplants"
mutants = list("realeggplant")
mutants = list("egg-plant")
chems = list("plantmatter" = list(1,10))
kitchen_tag = "eggplant"
preset_icon = "eggplant"
@@ -266,6 +266,25 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#892694")
set_trait(TRAIT_PLANT_ICON,"bush4")
/datum/seed/egg_plant
name = "egg-plant"
seed_name = "egg-plant"
display_name = "egg-plants"
mutants = null
chems = list("egg" = list(1,10))
preset_product = /obj/item/weapon/reagent_containers/food/snacks/egg
/datum/seed/egg_plant/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,20)
set_trait(TRAIT_PRODUCT_ICON,"eggplant")
set_trait(TRAIT_PRODUCT_COLOUR,"#FFFFE5")
set_trait(TRAIT_PLANT_ICON,"bush4")
//Apples/varieties.
/datum/seed/apple
name = "apple"
@@ -528,7 +547,7 @@
display_name = "walking mushrooms"
mutants = null
can_self_harvest = 1
has_mob_product = /mob/living/simple_animal/hostile/mushroom
preset_product = /mob/living/simple_animal/hostile/mushroom
preset_icon = "walkingmushroom"
/datum/seed/mushroom/plump/walking/New()
@@ -696,6 +715,7 @@
display_name = "poppies"
chems = list("plantmatter" = list(1,20), "styptic_powder" = list(1,10))
kitchen_tag = "poppy"
modular_icon = 1
preset_icon = "poppy"
/datum/seed/flower/poppy/New()
@@ -715,6 +735,8 @@
mutants = list("moonflowers", "novaflowers")
display_name = "sunflowers"
preset_icon = "sunflower"
final_form = 0
kitchen_tag = "sunflower"
/datum/seed/flower/sunflower/New()
..()
@@ -730,6 +752,8 @@
mutants = null
display_name = "moonflowers"
preset_icon = "moonflower"
final_form = 1
kitchen_tag = ""
/datum/seed/flower/moonflower/New()
..()
@@ -746,6 +770,8 @@
chems = list("fuel" = list(1,10))
display_name = "novaflowers"
preset_icon = "novaflower"
final_form = 0
kitchen_tag = "novaflower"
/datum/seed/flower/novaflower/New()
..()
@@ -1104,6 +1130,7 @@
seed_name = "lemon"
display_name = "lemon trees"
chems = list("plantmatter" = list(1,20))
mutants = list("cashtree")
kitchen_tag = "lemon"
preset_icon = "lemon"
@@ -1112,6 +1139,27 @@
set_trait(TRAIT_PRODUCES_POWER,1)
set_trait(TRAIT_PRODUCT_COLOUR,"#F0E226")
/datum/seed/cashtree
name = "cashtree"
seed_name = "money tree"
seed_noun = "coins"
display_name = "money trees"
chems = list("gold" = list(1,10), "silver" = list(1,5))
mutants = null
final_form = 0
kitchen_tag = "cashpod"
preset_icon = "cashpod"
/datum/seed/cashtree/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCTION,6)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_POTENCY,10)
set_trait(TRAIT_PRODUCT_ICON,"cash")
set_trait(TRAIT_PRODUCT_COLOUR,"#F0E226")
set_trait(TRAIT_PLANT_ICON,"tree")
/datum/seed/citrus/orange
name = "orange"
seed_name = "orange"
@@ -1131,6 +1179,7 @@
chems = list("plantmatter" = list(1,20))
kitchen_tag = "grass"
modular_icon = 1
final_form = 0
/datum/seed/grass/New()
..()
@@ -1209,7 +1258,7 @@
seed_noun = "nodes"
display_name = "replicant pods"
can_self_harvest = 1
has_mob_product = /mob/living/simple_animal/diona
preset_product = /mob/living/simple_animal/diona
/datum/seed/diona/New()
..()
@@ -1230,7 +1279,8 @@
seed_noun = "pods"
display_name = "laughing clowns"
can_self_harvest = 1
has_mob_product = /mob/living/simple_animal/hostile/retaliate/clown
modular_icon = 1
preset_product = /mob/living/simple_animal/hostile/retaliate/clown
/datum/seed/clown/New()
..()
@@ -1251,6 +1301,7 @@
chems = list("styptic_powder" = list(0,10))
kitchen_tag = "comfrey"
modular_icon = 1
final_form = 0
/datum/seed/comfrey/New()
..()
@@ -1270,6 +1321,7 @@
chems = list("silver_sulfadiazine" = list(3,5))
kitchen_tag = "aloe"
modular_icon = 1
final_form = 0
/datum/seed/aloe/New()
..()