mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-12 08:27:24 +01:00
@@ -13,6 +13,7 @@
|
||||
#define PINEAPPLE (1<<12)
|
||||
#define BREAKFAST (1<<13)
|
||||
#define CLOTH (1<<14)
|
||||
#define ANTITOXIC (1<<15)
|
||||
|
||||
#define DRINK_NICE 1
|
||||
#define DRINK_GOOD 2
|
||||
|
||||
@@ -1,26 +1,42 @@
|
||||
/datum/component/anti_magic
|
||||
var/magic = FALSE
|
||||
var/holy = FALSE
|
||||
var/psychic = FALSE
|
||||
var/charges = INFINITY
|
||||
var/blocks_self = TRUE
|
||||
var/datum/callback/reaction
|
||||
var/datum/callback/expire
|
||||
|
||||
/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE)
|
||||
/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire)
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
|
||||
RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
|
||||
else if(ismob(parent))
|
||||
RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect)
|
||||
RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect)
|
||||
else
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
magic = _magic
|
||||
holy = _holy
|
||||
psychic = _psychic
|
||||
if(!isnull(_charges))
|
||||
charges = _charges
|
||||
blocks_self = _blocks_self
|
||||
reaction = _reaction
|
||||
expire = _expire
|
||||
|
||||
/datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot)
|
||||
RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/can_protect, TRUE)
|
||||
RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE)
|
||||
|
||||
/datum/component/anti_magic/proc/on_drop(datum/source, mob/user)
|
||||
UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC)
|
||||
|
||||
/datum/component/anti_magic/proc/can_protect(datum/source, _magic, _holy, list/protection_sources)
|
||||
if((_magic && magic) || (_holy && holy))
|
||||
/datum/component/anti_magic/proc/protect(datum/source, mob/user, _magic, _holy, _psychic, chargecost = 1, self, list/protection_sources)
|
||||
if(((_magic && magic) || (_holy && holy) || (_psychic && psychic)) && (!self || blocks_self))
|
||||
protection_sources += parent
|
||||
reaction?.Invoke(user, chargecost)
|
||||
charges -= chargecost
|
||||
if(charges <= 0)
|
||||
expire?.Invoke(user)
|
||||
qdel(src)
|
||||
return COMPONENT_BLOCK_MAGIC
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
full_w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
var/value = 0
|
||||
|
||||
/obj/item/stack/spacecash/Initialize()
|
||||
|
||||
@@ -142,6 +142,7 @@
|
||||
stop_bleeding = 1800
|
||||
self_delay = 20
|
||||
max_amount = 12
|
||||
grind_results = list(/datum/reagent/cellulose = 3)
|
||||
|
||||
|
||||
/obj/item/stack/medical/gauze/attackby(obj/item/I, mob/user, params)
|
||||
@@ -190,3 +191,16 @@
|
||||
|
||||
/obj/item/stack/medical/get_belt_overlay()
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch")
|
||||
|
||||
/obj/item/stack/medical/aloe
|
||||
name = "aloe cream"
|
||||
desc = "A healing paste you can apply on wounds."
|
||||
|
||||
icon_state = "aloe_paste"
|
||||
self_delay = 25
|
||||
novariants = TRUE
|
||||
amount = 20
|
||||
max_amount = 20
|
||||
heal_brute = 25
|
||||
heal_burn = 30
|
||||
grind_results = list(/datum/reagent/consumable/aloejuice = 1)
|
||||
|
||||
@@ -244,7 +244,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||
novariants = TRUE
|
||||
grind_results = list(/datum/reagent/carbon = 20)
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.wood_recipes
|
||||
@@ -274,7 +274,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/bamboo
|
||||
grind_results = list(/datum/reagent/carbon = 5)
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there.
|
||||
// Taken from /obj/item/stack/rods/attackby in [rods.dm]
|
||||
@@ -353,6 +353,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
is_fabric = TRUE
|
||||
loom_result = /obj/item/stack/sheet/silk
|
||||
merge_type = /obj/item/stack/sheet/cloth
|
||||
grind_results = list(/datum/reagent/cellulose = 4)
|
||||
|
||||
/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.cloth_recipes
|
||||
@@ -372,6 +373,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
item_state = "sheet-cloth"
|
||||
novariants = TRUE
|
||||
merge_type = /obj/item/stack/sheet/silk
|
||||
grind_results = list(/datum/reagent/cellulose = 2)
|
||||
|
||||
//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE)
|
||||
// recipes = GLOB.silk_recipes
|
||||
@@ -396,6 +398,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
force = 0
|
||||
throwforce = 0
|
||||
merge_type = /obj/item/stack/sheet/durathread
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.durathread_recipes
|
||||
|
||||
@@ -82,6 +82,55 @@
|
||||
item_state = "tile-fairygrass"
|
||||
turf_type = /turf/open/floor/grass/fairy
|
||||
resistance_flags = FLAMMABLE
|
||||
color = "#33CCFF"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/white
|
||||
name = "white fairygrass tile"
|
||||
singular_name = "white fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing white grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/white
|
||||
color = "#FFFFFF"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/red
|
||||
name = "red fairygrass tile"
|
||||
singular_name = "red fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing red grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/red
|
||||
color = "#FF3333"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/yellow
|
||||
name = "yellow fairygrass tile"
|
||||
singular_name = "yellow fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing yellow grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/yellow
|
||||
color = "#FFFF66"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/green
|
||||
name = "green fairygrass tile"
|
||||
singular_name = "green fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing green grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/green
|
||||
color = "#99FF99"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/blue
|
||||
name = "blue fairygrass tile"
|
||||
singular_name = "blue fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing blue grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/blue
|
||||
|
||||
/obj/item/stack/tile/fairygrass/purple
|
||||
name = "purple fairygrass tile"
|
||||
singular_name = "purple fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing purple grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/purple
|
||||
color = "#D966FF"
|
||||
|
||||
/obj/item/stack/tile/fairygrass/pink
|
||||
name = "pink fairygrass tile"
|
||||
singular_name = "pink fairygrass floor tile"
|
||||
desc = "A patch of odd, glowing pink grass."
|
||||
turf_type = /turf/open/floor/grass/fairy/pink
|
||||
color = "#FFB3DA"
|
||||
|
||||
//Wood
|
||||
/obj/item/stack/tile/wood
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
amount = 25
|
||||
max_amount = 25
|
||||
resistance_flags = FLAMMABLE
|
||||
grind_results = list(/datum/reagent/cellulose = 3)
|
||||
|
||||
/obj/item/stack/wrapping_paper/use(used, transfer)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -885,29 +885,41 @@ obj/item/storage/belt/slut/ComponentInitialize()
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
final_block_chance = 0 //To thin to block bullets
|
||||
final_block_chance = 0 //Too thin to block bullets
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/belt/botany
|
||||
name = "botany belt"
|
||||
desc = "A belt used to hold most janitorial supplies."
|
||||
icon_state = "grenadebeltold" //reusing the old grenade belt sprite, can't go wrong.
|
||||
item_state = "grenadebeltold"
|
||||
name = "botanical belt"
|
||||
desc = "A belt made for holding hydroponics supplies."
|
||||
icon_state = "botanybelt"
|
||||
item_state = "botanybelt"
|
||||
content_overlays = TRUE
|
||||
|
||||
/obj/item/storage/belt/botany/New()
|
||||
if(prob(1))
|
||||
new/obj/item/storage/belt/botany/fancy(loc)
|
||||
qdel(src)
|
||||
. = ..()
|
||||
|
||||
/obj/item/storage/belt/botany/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_items = 8
|
||||
STR.max_items = 6
|
||||
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/reagent_containers/glass/bottle,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/disk/plantgene,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/seeds,
|
||||
/obj/item/shovel/spade,
|
||||
/obj/item/reagent_containers/glass/bottle,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/reagent_containers/spray/pestspray,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/plant_analyzer
|
||||
))
|
||||
/obj/item/shovel/spade,
|
||||
/obj/item/gun/energy/floragun
|
||||
))
|
||||
|
||||
/obj/item/storage/belt/botany/fancy //I like citadel's botany belt but I also wanna keep the default
|
||||
desc = "A belt made for holding hydroponics supplies. Oddly enough, it's not green."
|
||||
icon_state = "botanybelt_extra"
|
||||
item_state = "botanybelt_extra"
|
||||
|
||||
@@ -105,8 +105,49 @@
|
||||
icon_state = "fairygrass"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass
|
||||
light_range = 2
|
||||
light_power = 0.50
|
||||
light_power = 0.80
|
||||
light_color = "#33CCFF"
|
||||
color = "#33CCFF"
|
||||
|
||||
/turf/open/floor/grass/fairy/white
|
||||
name = "white fairygrass patch"
|
||||
light_color = "#FFFFFF"
|
||||
color = "#FFFFFF"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/white
|
||||
|
||||
/turf/open/floor/grass/fairy/red
|
||||
name = "red fairygrass patch"
|
||||
light_color = "#FF3333"
|
||||
color = "#FF3333"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/red
|
||||
|
||||
/turf/open/floor/grass/fairy/yellow
|
||||
name = "yellow fairygrass patch"
|
||||
light_color = "#FFFF66"
|
||||
color = "#FFFF66"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/yellow
|
||||
|
||||
/turf/open/floor/grass/fairy/green
|
||||
name = "green fairygrass patch"
|
||||
light_color = "#99FF99"
|
||||
color = "#99FF99"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/green
|
||||
|
||||
/turf/open/floor/grass/fairy/blue
|
||||
name = "blue fairygrass patch"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/blue
|
||||
|
||||
/turf/open/floor/grass/fairy/purple
|
||||
name = "purple fairygrass patch"
|
||||
light_color = "#D966FF"
|
||||
color = "#D966FF"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/purple
|
||||
|
||||
/turf/open/floor/grass/fairy/pink
|
||||
name = "pink fairygrass patch"
|
||||
light_color = "#FFB3DA"
|
||||
color = "#FFB3DA"
|
||||
floor_tile = /obj/item/stack/tile/fairygrass/pink
|
||||
|
||||
/turf/open/floor/grass/snow
|
||||
gender = PLURAL
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
var/access_any = FALSE //Do we care about access?
|
||||
var/list/contains = null //What items are in the crate
|
||||
var/crate_name = "crate" //The crate that comes with each order
|
||||
var/crate_desc = "" //Crate's description
|
||||
var/desc = ""//no desc by default
|
||||
var/crate_type = /obj/structure/closet/crate //what kind of crate - Locked crates needed for access locked crates
|
||||
var/dangerous = FALSE // Should we message admins?
|
||||
@@ -19,6 +20,8 @@
|
||||
/datum/supply_pack/proc/generate(atom/A)
|
||||
var/obj/structure/closet/crate/C = new crate_type(A)
|
||||
C.name = crate_name
|
||||
if(crate_desc)
|
||||
C.desc = crate_desc
|
||||
if(access)
|
||||
C.req_access = list(access)
|
||||
if(access_any)
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
/datum/supply_pack/misc/lewd
|
||||
name = "Lewd Crate" // OwO
|
||||
desc = "Psss want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!"
|
||||
desc = "Psst, want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!"
|
||||
cost = 5000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/dildo/custom,
|
||||
|
||||
@@ -196,9 +196,185 @@
|
||||
/obj/item/reagent_containers/food/snacks/grown/strawberry)
|
||||
crate_name = "fruit crate"
|
||||
|
||||
|
||||
//ALIEN-ESQUE SEEDS CRATE
|
||||
/datum/supply_pack/organic/rareseeds
|
||||
name = "Galactic Seeds Crate"
|
||||
desc = "Explore the vastness of space, now condensed into a single crate! Contains at least 4 seeds from random regions of space."
|
||||
cost = 9500 //See fill proc. I know this costs a lot
|
||||
contains = list()
|
||||
crate_name = "galactic seeds crate"
|
||||
crate_desc = "A rectangular steel crate."
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/rareseeds/fill(obj/structure/closet/crate/C)
|
||||
. = ..()
|
||||
var/iteration = 0
|
||||
var/common_seeds = list(
|
||||
/obj/item/seeds/wheat,
|
||||
/obj/item/seeds/wheat/oat,
|
||||
/obj/item/seeds/peas,
|
||||
/obj/item/seeds/tea,
|
||||
/obj/item/seeds/coffee,
|
||||
/obj/item/seeds/poppy,
|
||||
/obj/item/seeds/sunflower,
|
||||
/obj/item/seeds/grass,
|
||||
/obj/item/seeds/glowshroom,
|
||||
/obj/item/seeds/cotton,
|
||||
/obj/item/seeds/reishi,
|
||||
/obj/item/seeds/kudzu, //For some sort of realism that kudzu generally grows everywhere, have it a common seed
|
||||
/obj/item/seeds/starthistle)
|
||||
var/uncommon_seeds = list(
|
||||
/obj/item/seeds/chanterelle/jupitercup,
|
||||
/obj/item/seeds/sunflower/moonflower,
|
||||
/obj/item/seeds/bee_balm,
|
||||
/obj/item/seeds/random,
|
||||
/obj/item/seeds/tea/astra,
|
||||
/obj/item/seeds/peas/laugh,
|
||||
/obj/item/seeds/galaxythistle,
|
||||
/obj/item/seeds/coconut,
|
||||
/obj/item/seeds/ambrosia/deus,
|
||||
/obj/item/seeds/aloe,
|
||||
/obj/item/seeds/cannabis/rainbow,
|
||||
/obj/item/seeds/cannabis/ultimate,
|
||||
/obj/item/seeds/angel,
|
||||
/obj/item/seeds/liberty,
|
||||
/obj/item/seeds/plump/walkingmushroom,
|
||||
/obj/item/seeds/chanterelle,
|
||||
/obj/item/seeds/glowshroom/shadowshroom)
|
||||
var/xenoarch_seeds = list(
|
||||
/obj/item/seeds/amauri,
|
||||
/obj/item/seeds/gelthi,
|
||||
/obj/item/seeds/jurlmah,
|
||||
/obj/item/seeds/nofruit,
|
||||
/obj/item/seeds/shand,
|
||||
/obj/item/seeds/surik,
|
||||
/obj/item/seeds/telriis,
|
||||
/obj/item/seeds/thaadra,
|
||||
/obj/item/seeds/vale,
|
||||
/obj/item/seeds/vaporsac)
|
||||
var/lavaland_seeds = list(
|
||||
/obj/item/seeds/lavaland/polypore,
|
||||
/obj/item/seeds/lavaland/porcini,
|
||||
/obj/item/seeds/lavaland/inocybe,
|
||||
/obj/item/seeds/lavaland/ember,
|
||||
/obj/item/seeds/lavaland/cactus)
|
||||
while((prob(68) || iteration <= 4) && iteration <= 15)
|
||||
iteration++
|
||||
var/obj/item/seeds/chosen_seed = null
|
||||
var/obj/item/seeds/cache = null
|
||||
switch(iteration)
|
||||
if(1 to 3)
|
||||
chosen_seed = pick(common_seeds)
|
||||
if(4)
|
||||
if(prob(25))
|
||||
chosen_seed = pick(lavaland_seeds)
|
||||
else
|
||||
chosen_seed = pick(common_seeds)
|
||||
if(5)
|
||||
if(prob(40))
|
||||
chosen_seed = pick(lavaland_seeds)
|
||||
else
|
||||
chosen_seed = pick(common_seeds)
|
||||
if(6)
|
||||
if(prob(70))
|
||||
chosen_seed = pick(common_seeds)
|
||||
else
|
||||
chosen_seed = pick(uncommon_seeds)
|
||||
if(7)
|
||||
if(prob(3))
|
||||
chosen_seed = pick(xenoarch_seeds)
|
||||
else if(prob(40))
|
||||
chosen_seed = pick(common_seeds)
|
||||
else
|
||||
chosen_seed = pick(uncommon_seeds)
|
||||
if(8 to 10)
|
||||
if(prob(8))
|
||||
chosen_seed = pick(xenoarch_seeds)
|
||||
else
|
||||
chosen_seed = pick(uncommon_seeds)
|
||||
if(11 to INFINITY)
|
||||
if(prob(15))
|
||||
chosen_seed = pick(xenoarch_seeds)
|
||||
else if (prob(50))
|
||||
chosen_seed = pick(uncommon_seeds)
|
||||
else
|
||||
chosen_seed = pick(lavaland_seeds)
|
||||
|
||||
new chosen_seed(C)
|
||||
cache = chosen_seed
|
||||
//Make it actually seem like it's from another galaxy with all this stuff
|
||||
if(prob(23) && !istype(chosen_seed, /obj/item/seeds/starthistle))
|
||||
chosen_seed.rarity += 1
|
||||
|
||||
var/mutated = FALSE
|
||||
for(var/datum/plant_gene/G in cache.genes)
|
||||
if(locate(G) in chosen_seed.genes && prob(60))
|
||||
if(prob(50))
|
||||
chosen_seed.unset_mutability(G, PLANT_GENE_EXTRACTABLE)
|
||||
chosen_seed.rarity += 5
|
||||
else if(prob(70))
|
||||
chosen_seed.unset_mutability(G, PLANT_GENE_REMOVABLE)
|
||||
chosen_seed.rarity += 5
|
||||
else if(!istype(G, /datum/plant_gene/core))
|
||||
chosen_seed.forbiddengenes += G.type //Has the slim chance to make this plant unable to produce anything it started out with
|
||||
chosen_seed.genes -= locate(G) in chosen_seed.genes //Sanity check
|
||||
chosen_seed.rarity += 10
|
||||
|
||||
if(prob(65)) //To make this seem even more otherworldly
|
||||
//Our own version of add_random_reagents
|
||||
var/random_amount = round(rand(0, 25), 5) * 0.01
|
||||
if(random_amount <= 0) random_amount = 0.02
|
||||
var/datum/plant_gene/reagent/R = new(get_random_reagent_id(), random_amount)
|
||||
|
||||
if(R.can_add(chosen_seed))
|
||||
chosen_seed.genes += R
|
||||
chosen_seed.rarity += 5
|
||||
else
|
||||
qdel(R)
|
||||
chosen_seed.reagents_from_genes()
|
||||
|
||||
if(prob(3)) //This is insanely rare, but we will use different grow sprites. Probably will fuck something up
|
||||
var/obj/item/seeds/S = pick(subtypesof(/obj/item/seeds))
|
||||
if(prob(85))
|
||||
chosen_seed.plantname = "[pick("Alien", "Supernatural", "Artificial", "Modified")] [S.plantname]"
|
||||
chosen_seed.rarity += 20*(!mutated)
|
||||
else
|
||||
chosen_seed.plantname = S.plantname
|
||||
chosen_seed.growing_icon = S.growing_icon
|
||||
chosen_seed.species = S.species
|
||||
chosen_seed.icon_grow = S.icon_grow
|
||||
chosen_seed.icon_harvest = S.icon_harvest
|
||||
chosen_seed.icon_dead = S.icon_dead
|
||||
chosen_seed.rarity += 35*(!mutated) //woah nelly
|
||||
mutated = TRUE
|
||||
|
||||
else if(prob(70)) //Add basic reagents from grounded sheets, but only small amounts
|
||||
var/A = rand(1, 5)
|
||||
var/chosen_reagent
|
||||
switch(A)
|
||||
if(1)
|
||||
chosen_reagent = /datum/reagent/toxin/plasma
|
||||
if(2)
|
||||
chosen_reagent = /datum/reagent/uranium
|
||||
if(3)
|
||||
chosen_reagent = /datum/reagent/iron
|
||||
if(4)
|
||||
chosen_reagent = /datum/reagent/gold
|
||||
if(5)
|
||||
chosen_reagent = /datum/reagent/cellulose
|
||||
var/datum/plant_gene/reagent/R = new(chosen_reagent, A*0.02)
|
||||
if(R.can_add(chosen_seed))
|
||||
chosen_seed.genes += R
|
||||
chosen_seed.rarity += 5
|
||||
else
|
||||
qdel(R)
|
||||
chosen_seed.reagents_from_genes()
|
||||
//All in a while() loop! Very efficient I know
|
||||
|
||||
/datum/supply_pack/organic/grill
|
||||
name = "Grilling Starter Kit"
|
||||
desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets."
|
||||
desc = "Hey dad, I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets."
|
||||
cost = 3000
|
||||
crate_type = /obj/structure/closet/crate
|
||||
contains = list(/obj/item/stack/sheet/mineral/coal/five,
|
||||
@@ -277,11 +453,9 @@
|
||||
|
||||
/datum/supply_pack/organic/hydroponics
|
||||
name = "Hydroponics Crate"
|
||||
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
|
||||
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
contains = list(/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/cultivator,
|
||||
@@ -326,6 +500,33 @@
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass)
|
||||
crate_name = "kitchen cutlery deluxe set"
|
||||
|
||||
/datum/supply_pack/organic/hydroponics/maintgarden
|
||||
name = "Maintenance Garden Crate"
|
||||
desc = "Set up your own tiny paradise with do-it-yourself botany kit. Contains sandstone for dirt plots, pest spray, ammonia, a portable seed generator, basic botanical tools, and some seeds to start off with."
|
||||
cost = 2700
|
||||
contains = list(/obj/item/storage/bag/plants/portaseeder,
|
||||
/obj/item/reagent_containers/spray/pestspray,
|
||||
/obj/item/stack/sheet/mineral/sandstone/twelve,
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/clothing/gloves/botanic_leather,
|
||||
/obj/item/clothing/suit/apron,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/seeds/carrot,
|
||||
/obj/item/seeds/carrot,
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/tower,
|
||||
/obj/item/seeds/watermelon,
|
||||
/obj/item/seeds/watermelon,
|
||||
/obj/item/seeds/grass,
|
||||
/obj/item/seeds/grass)
|
||||
crate_name = "maint garden crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/mre
|
||||
name = "MRE supply kit (emergency rations)"
|
||||
desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank."
|
||||
@@ -399,7 +600,7 @@
|
||||
/obj/item/seeds/carrot,
|
||||
/obj/item/seeds/sunflower,
|
||||
/obj/item/seeds/rose,
|
||||
/obj/item/seeds/chanter,
|
||||
/obj/item/seeds/chanterelle,
|
||||
/obj/item/seeds/potato,
|
||||
/obj/item/seeds/sugarcane)
|
||||
crate_name = "seeds crate"
|
||||
|
||||
@@ -314,6 +314,14 @@
|
||||
crate_name = "games supply crate"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/vending/hydro
|
||||
name = "Hydroponics Supply Crate"
|
||||
desc = "Arnt you glad you dont have to do it the natural way? Contains a megaseed and nutrimax vending machine refill."
|
||||
cost = 5000
|
||||
contains = list(/obj/item/vending_refill/hydroseeds,
|
||||
/obj/item/vending_refill/hydronutrients)
|
||||
crate_name = "hydroponics supply crate"
|
||||
|
||||
/datum/supply_pack/service/vending/snack
|
||||
name = "Snack Supply Crate"
|
||||
desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
|
||||
|
||||
@@ -111,6 +111,10 @@
|
||||
for(var/datum/reagent/A in RC.reagents.reagent_list)
|
||||
.["other"][A.type] += A.volume
|
||||
.["other"][I.type] += 1
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/grown) && !.["color"]) //First we find has priority
|
||||
var/obj/item/reagent_containers/food/snacks/grown/G = I
|
||||
if(G.modified_colors)
|
||||
.["color"] = G.color
|
||||
|
||||
/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents)
|
||||
if(!R.tools.len)
|
||||
@@ -146,6 +150,9 @@
|
||||
/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R)
|
||||
var/list/contents = get_surroundings(user)
|
||||
var/send_feedback = 1
|
||||
var/cached_color = null
|
||||
if(contents["color"]) //From plants
|
||||
cached_color = contents["color"]
|
||||
if(check_contents(R, contents))
|
||||
if(check_tools(user, R, contents))
|
||||
if(do_after(user, R.time, target = user))
|
||||
@@ -157,6 +164,7 @@
|
||||
var/list/parts = del_reqs(R, user)
|
||||
var/atom/movable/I = new R.result (get_turf(user.loc))
|
||||
I.CheckParts(parts, R)
|
||||
I.color = cached_color
|
||||
if(send_feedback)
|
||||
SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
|
||||
return 0
|
||||
|
||||
@@ -293,3 +293,11 @@
|
||||
time = 60
|
||||
always_availible = TRUE
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/garlic_necklace
|
||||
name = "Garlic Necklace"
|
||||
result = /obj/item/clothing/neck/garlic_necklace
|
||||
reqs = list(/obj/item/reagent_containers/food/snacks/grown/garlic = 15,
|
||||
/obj/item/stack/cable_coil = 10)
|
||||
time = 100 //Takes a while to put all the garlics on the coil and knot it.
|
||||
category = CAT_CLOTHING
|
||||
|
||||
@@ -396,6 +396,16 @@
|
||||
list_reagents = list(/datum/reagent/consumable/orangejuice = 100)
|
||||
foodtype = FRUIT| BREAKFAST
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/bio_carton
|
||||
name = "small carton box"
|
||||
desc = "A small biodegradable carton box made from plant biomatter."
|
||||
icon_state = "eco_box"
|
||||
item_state = "carton"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
|
||||
volume = 50
|
||||
isGlass = FALSE
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream
|
||||
name = "milk cream"
|
||||
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lime
|
||||
name = "lime cake slice"
|
||||
@@ -127,7 +127,7 @@
|
||||
icon_state = "limecake_slice"
|
||||
filling_color = "#00FF00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/lemon
|
||||
name = "lemon cake"
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
icon_state = "lime_sc"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "limes" = 5)
|
||||
foodtype = FRUIT
|
||||
foodtype = FRUIT | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/snowcones/lemon
|
||||
name = "lemon snowcone"
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins
|
||||
filling_color = "#00800"
|
||||
tastes = list("cobwebs" = 1, "sugar" = 2)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
foodtype = JUNKFOOD | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tobiko
|
||||
name = "tobiko"
|
||||
@@ -443,7 +443,7 @@
|
||||
var/mutable_appearance/head
|
||||
var/headcolor = rgb(0, 0, 0)
|
||||
tastes = list("candy" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
foodtype = JUNKFOOD | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/lollipop/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -452,7 +452,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3)
|
||||
cooked_type = null
|
||||
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
|
||||
foodtype = GRAIN
|
||||
foodtype = GRAIN | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/dankpocket
|
||||
name = "\improper Dank-pocket"
|
||||
@@ -613,9 +613,11 @@
|
||||
name = "exceptional plump helmet biscuit"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
|
||||
bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
foodtype |= ANTITOXIC
|
||||
. = ..()
|
||||
if(fey)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
foodtype |= ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cracker
|
||||
name = "cracker"
|
||||
|
||||
@@ -149,8 +149,10 @@
|
||||
name = "exceptional plump pie"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
foodtype |= ANTITOXIC
|
||||
if(fey)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
foodtype |= ANTITOXIC
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pie/xemeatpie
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket
|
||||
name = "donkpocket pizza slice"
|
||||
@@ -106,7 +106,7 @@
|
||||
icon_state = "donkpocketpizzaslice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizza/dank
|
||||
name = "dank pizza"
|
||||
@@ -116,7 +116,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzaslice/dank
|
||||
name = "dank pizza slice"
|
||||
@@ -124,7 +124,7 @@
|
||||
icon_state = "dankpizzaslice"
|
||||
filling_color = "#2E8B57"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizza/sassysage
|
||||
name = "sassysage pizza"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
tastes = list("leaves" = 1)
|
||||
foodtype = VEGETABLES
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/herbsalad
|
||||
name = "herb salad"
|
||||
@@ -38,7 +38,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1)
|
||||
foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT
|
||||
foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/oatmeal
|
||||
name = "oatmeal"
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
icon_state = "nettlesoup"
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("nettles" = 1)
|
||||
foodtype = VEGETABLES
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/mystery
|
||||
name = "mystery soup"
|
||||
|
||||
@@ -106,8 +106,8 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5)
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES
|
||||
price = 5
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/carbonnanotube_noodles
|
||||
name = "carbon nanotube noodles"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/biogenerator/attackby(obj/item/O, mob/user, params)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
return ..()
|
||||
|
||||
if(processing)
|
||||
|
||||
@@ -307,6 +307,17 @@
|
||||
seed.genes -= G
|
||||
if(istype(G, /datum/plant_gene/reagent))
|
||||
seed.reagents_from_genes()
|
||||
if(istype(G, /datum/plant_gene/trait/modified_color))
|
||||
var/datum/plant_gene/trait/modified_color/found
|
||||
for(var/datum/plant_gene/trait/modified_color/T in seed.genes)
|
||||
if(istype(T, /datum/plant_gene/trait/modified_color) && T.type != G.type)
|
||||
found = T
|
||||
break
|
||||
if(found)
|
||||
seed.color = found.color
|
||||
else
|
||||
seed.color = null
|
||||
seed.modified_colors = FALSE
|
||||
repaint_seed()
|
||||
if("extract")
|
||||
if(disk && !disk.read_only)
|
||||
@@ -343,6 +354,10 @@
|
||||
seed.genes += disk.gene.Copy()
|
||||
if(istype(disk.gene, /datum/plant_gene/reagent))
|
||||
seed.reagents_from_genes()
|
||||
if(istype(disk.gene, /datum/plant_gene/trait/modified_color) && !seed.modified_colors)
|
||||
var/datum/plant_gene/trait/modified_color/M = disk.gene
|
||||
seed.color = M.color
|
||||
seed.modified_colors = TRUE
|
||||
disk.gene.apply_vars(seed)
|
||||
repaint_seed()
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/distill_reagent //If NULL and this object can be distilled, it uses a generic fruit_wine reagent and adjusts its variables.
|
||||
var/wine_flavor //If NULL, this is automatically set to the fruit's flavor. Determines the flavor of the wine if distill_reagent is NULL.
|
||||
var/wine_power = 10 //Determines the boozepwr of the wine if distill_reagent is NULL.
|
||||
var/modified_colors = FALSE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed)
|
||||
. = ..()
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
seed = /obj/item/seeds/ambrosia/deus
|
||||
name = "ambrosia deus branch"
|
||||
desc = "Eating this makes you feel immortal!"
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
icon_state = "ambrosiadeus"
|
||||
filling_color = "#008B8B"
|
||||
wine_power = 50
|
||||
|
||||
@@ -27,6 +27,12 @@
|
||||
juice_results = list(/datum/reagent/consumable/banana = 0)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/bananahonk
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana/generate_trash(atom/location)
|
||||
. = ..()
|
||||
var/obj/item/grown/bananapeel/peel = .
|
||||
if(istype(peel))
|
||||
peel.grind_results = list(/datum/reagent/consumable/banana_peel = seed.potency * 0.2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1)
|
||||
@@ -120,6 +126,41 @@
|
||||
desc = "A peel from a bluespace banana."
|
||||
icon_state = "banana_peel_blue"
|
||||
|
||||
//Banana Spider
|
||||
/obj/item/seeds/banana/exotic_banana
|
||||
name = "pack of exotic banana seeds"
|
||||
desc = "They're seeds that grow into banana trees. However, those bananas might be alive."
|
||||
icon_state = "seed_exoticbanana"
|
||||
species = "exoticbanana"
|
||||
icon_grow = "banana-grow"
|
||||
plantname = "Exotic Banana Tree"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/slip)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable
|
||||
seed = /obj/item/seeds/banana/exotic_banana
|
||||
name = "banana spider"
|
||||
desc = "You do not know what it is, but you can bet the clown would love it."
|
||||
icon_state = "exoticbanana"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
foodtype = GROSS | MEAT | RAW | FRUIT
|
||||
grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5)
|
||||
var/awakening = 0
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user)
|
||||
if(awakening || isspaceturf(user.loc))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You decide to wake up the banana spider...</span>")
|
||||
awakening = 1
|
||||
|
||||
spawn(30)
|
||||
if(!QDELETED(src))
|
||||
var/mob/living/simple_animal/banana_spider/S = new /mob/living/simple_animal/banana_spider(get_turf(src.loc))
|
||||
S.speed += round(10 / max(seed.potency, 1), 1)
|
||||
S.visible_message("<span class='notice'>The banana spider chitters as it stretches its legs.</span>")
|
||||
qdel(src)
|
||||
|
||||
// Other
|
||||
/obj/item/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes
|
||||
name = "synthesized banana peel"
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
seed = /obj/item/seeds/strawberry
|
||||
name = "strawberry"
|
||||
icon_state = "strawberry"
|
||||
filling_color = "#7FFF00"
|
||||
juice_results = list("strawberryjuice" = 0)
|
||||
filling_color = "#E50D31"
|
||||
juice_results = list(/datum/reagent/consumable/strawberryjuice = 0)
|
||||
tastes = list("strawberries" = 1)
|
||||
wine_power = 20
|
||||
|
||||
@@ -14,12 +14,9 @@
|
||||
icon_dead = "cannabis-dead" // Same for the dead icon
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/cannabis/rainbow,
|
||||
/obj/item/seeds/cannabis/death,
|
||||
/obj/item/seeds/cannabis/white,
|
||||
/obj/item/seeds/cannabis/ultimate)
|
||||
/obj/item/seeds/cannabis/death)
|
||||
reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.35) // gives u the munchies
|
||||
|
||||
|
||||
/obj/item/seeds/cannabis/rainbow
|
||||
name = "pack of rainbow weed seeds"
|
||||
desc = "These seeds grow into rainbow weed. Groovy."
|
||||
@@ -27,7 +24,7 @@
|
||||
species = "megacannabis"
|
||||
plantname = "Rainbow Weed"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
|
||||
mutatelist = list()
|
||||
mutatelist = list(/obj/item/seeds/cannabis/ultimate)
|
||||
reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35)
|
||||
rarity = 40
|
||||
|
||||
@@ -38,7 +35,7 @@
|
||||
species = "blackcannabis"
|
||||
plantname = "Deathweed"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death
|
||||
mutatelist = list()
|
||||
mutatelist = list(/obj/item/seeds/cannabis/white)
|
||||
reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15)
|
||||
rarity = 40
|
||||
|
||||
@@ -61,6 +58,7 @@
|
||||
species = "ocannabis"
|
||||
plantname = "Omega Weed"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green)
|
||||
mutatelist = list()
|
||||
reagents_add = list(/datum/reagent/drug/space_drugs = 0.3,
|
||||
/datum/reagent/toxin/mindbreaker = 0.3,
|
||||
@@ -105,6 +103,7 @@
|
||||
seed = /obj/item/seeds/cannabis/death
|
||||
name = "death cannabis leaf"
|
||||
desc = "Looks a bit dark. Oh well."
|
||||
foodtype = VEGETABLES | TOXIC
|
||||
icon_state = "blackcannabis"
|
||||
wine_power = 40
|
||||
|
||||
@@ -112,6 +111,7 @@
|
||||
seed = /obj/item/seeds/cannabis/white
|
||||
name = "white cannabis leaf"
|
||||
desc = "It feels smooth and nice to the touch."
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
icon_state = "whitecannabis"
|
||||
wine_power = 10
|
||||
|
||||
|
||||
@@ -29,10 +29,11 @@
|
||||
// Oat
|
||||
/obj/item/seeds/wheat/oat
|
||||
name = "pack of oat seeds"
|
||||
desc = "These may, or may not, grow into oat."
|
||||
desc = "Oat's just a matter of time..."
|
||||
icon_state = "seed-oat"
|
||||
species = "oat"
|
||||
plantname = "Oat Stalks"
|
||||
rarity = 10 //Not really new, just better
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/oat
|
||||
mutatelist = list()
|
||||
|
||||
@@ -45,14 +46,14 @@
|
||||
filling_color = "#556B2F"
|
||||
bitesize_mod = 2
|
||||
foodtype = GRAIN
|
||||
grind_results = list(/datum/reagent/consumable/flour = 0)
|
||||
grind_results = list(/datum/reagent/consumable/flour = 0.5) //So when it grinds it has 50% more flour
|
||||
tastes = list("oat" = 1)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/ale
|
||||
|
||||
// Rice
|
||||
/obj/item/seeds/wheat/rice
|
||||
name = "pack of rice seeds"
|
||||
desc = "These may, or may not, grow into rice."
|
||||
desc = "Rice, rice, baby!"
|
||||
icon_state = "seed-rice"
|
||||
species = "rice"
|
||||
plantname = "Rice Stalks"
|
||||
@@ -81,6 +82,7 @@
|
||||
species = "meatwheat"
|
||||
plantname = "Meatwheat"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/meatwheat
|
||||
rarity = 40
|
||||
mutatelist = list()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/meatwheat
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
seed = /obj/item/seeds/lime
|
||||
name = "lime"
|
||||
desc = "It's so sour, your face will twist."
|
||||
foodtype = FRUIT | ANTITOXIC
|
||||
icon_state = "lime"
|
||||
filling_color = "#00FF00"
|
||||
juice_results = list(/datum/reagent/consumable/limejuice = 0)
|
||||
@@ -61,6 +62,7 @@
|
||||
juice_results = list(/datum/reagent/consumable/orangejuice = 0)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/triple_sec
|
||||
|
||||
|
||||
//3D Orange
|
||||
/obj/item/seeds/orange_3d
|
||||
name = "pack of extradimensional orange seeds"
|
||||
@@ -68,7 +70,7 @@
|
||||
icon_state = "seed-orange"
|
||||
species = "orange"
|
||||
plantname = "Extradimensional Orange Tree"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/citrus/orange
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d
|
||||
lifespan = 60
|
||||
endurance = 50
|
||||
yield = 5
|
||||
@@ -80,14 +82,14 @@
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/haloperidol = 0.15)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d
|
||||
seed = /obj/item/seeds/orange
|
||||
seed = /obj/item/seeds/orange_3d
|
||||
name = "extradminesional orange"
|
||||
desc = "You can hardly wrap your head around this thing."
|
||||
icon_state = "orang"
|
||||
filling_color = "#FFA500"
|
||||
juice_results = list(/datum/reagent/consumable/orangejuice = 0)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/triple_sec
|
||||
tastes = list("polygons" = 1, "oranges" = 1)
|
||||
distill_reagent = /datum/reagent/toxin/mindbreaker
|
||||
tastes = list("polygons" = 1, "bluespace" = 1, "the true nature of reality" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/pickup(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -99,4 +99,4 @@
|
||||
. =..()
|
||||
reagents.clear_reagents()
|
||||
reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04)
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
/obj/item/grown/corncob/attackby(obj/item/grown/W, mob/user, params)
|
||||
if(W.is_sharp())
|
||||
|
||||
@@ -76,4 +76,4 @@
|
||||
throw_range = 3
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
cotton_type = /obj/item/stack/sheet/cotton/durathread
|
||||
cotton_name = "raw durathread"
|
||||
cotton_name = "raw durathread"
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
potency = 25
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
reagents_add = list("garlic" = 0.15, "nutriment" = 0.1)
|
||||
icon_grow = "garlic-grow"
|
||||
icon_harvest = "garlic-harvest"
|
||||
icon_dead = "garlic-dead"
|
||||
reagents_add = list(/datum/reagent/consumable/garlic = 0.15, /datum/reagent/consumable/nutriment = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/garlic
|
||||
seed = /obj/item/seeds/garlic
|
||||
@@ -19,4 +22,11 @@
|
||||
filling_color = "#C0C9A0"
|
||||
bitesize_mod = 2
|
||||
tastes = list("garlic" = 1)
|
||||
wine_power = 10
|
||||
wine_power = 10
|
||||
|
||||
/obj/item/clothing/neck/garlic_necklace
|
||||
name = "garlic necklace"
|
||||
desc = "A clove of garlic on a cable, tied to itself in a circle, just might fit around your neck. For <strike>loonies<strike> people who fear getting their blood sucked."
|
||||
icon_state = "garlic_necklace"
|
||||
item_state = "garlic_necklace"
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
bitesize_mod = 2
|
||||
var/stacktype = /obj/item/stack/tile/grass
|
||||
var/tile_coefficient = 0.02 // 1/50
|
||||
wine_power = 15
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/beer/green
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/grass/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>You prepare the astroturf.</span>")
|
||||
@@ -49,17 +49,46 @@
|
||||
plantname = "Fairygrass"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/grass/fairy
|
||||
icon_grow = "fairygrass-grow"
|
||||
icon_dead = "fairygrass-dead"
|
||||
icon_dead = "grass-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue)
|
||||
mutatelist = list (/obj/item/seeds/grass/carpet)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/grass/fairy
|
||||
seed = /obj/item/seeds/grass/fairy
|
||||
name = "fairygrass"
|
||||
desc = "Blue, glowing, and smells fainly of mushrooms."
|
||||
desc = "Smells fainly of mushrooms."
|
||||
icon_state = "fairygrassclump"
|
||||
filling_color = "#3399ff"
|
||||
stacktype = /obj/item/stack/tile/fairygrass
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/beer/light
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/grass/fairy/attack_self(mob/user)
|
||||
var/datum/plant_gene/trait/glow/G = null
|
||||
for(var/datum/plant_gene/trait/glow/gene in seed.genes)
|
||||
G = gene
|
||||
break
|
||||
|
||||
stacktype = initial(stacktype)
|
||||
|
||||
if(G)
|
||||
switch(G.type)
|
||||
if(/datum/plant_gene/trait/glow/white)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/white
|
||||
if(/datum/plant_gene/trait/glow/red)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/red
|
||||
if(/datum/plant_gene/trait/glow/yellow)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/yellow
|
||||
if(/datum/plant_gene/trait/glow/green)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/green
|
||||
if(/datum/plant_gene/trait/glow/blue)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/blue
|
||||
if(/datum/plant_gene/trait/glow/purple)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/purple
|
||||
if(/datum/plant_gene/trait/glow/pink)
|
||||
stacktype = /obj/item/stack/tile/fairygrass/pink
|
||||
|
||||
. = ..()
|
||||
|
||||
// Carpet
|
||||
/obj/item/seeds/grass/carpet
|
||||
@@ -69,7 +98,7 @@
|
||||
species = "carpet"
|
||||
plantname = "Carpet"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/grass/carpet
|
||||
mutatelist = list()
|
||||
mutatelist = list(/obj/item/seeds/grass/fairy)
|
||||
rarity = 10
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/grass/carpet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// A very special plant, deserving it's own file.
|
||||
// A very special plant, deserving its own file.
|
||||
|
||||
/obj/item/seeds/kudzu
|
||||
name = "pack of kudzu seeds"
|
||||
|
||||
@@ -61,7 +61,19 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god
|
||||
var/uses = 1
|
||||
if(seed)
|
||||
uses = round(seed.potency / 20)
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major)
|
||||
if(major)
|
||||
visible_message("<span class='warning'>[src] hums slightly, and seems to decay a bit.</span>")
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/expire(mob/user)
|
||||
visible_message("<span class='warning'>[src] rapidly turns into ash!</span>")
|
||||
qdel(src)
|
||||
new /obj/effect/decal/cleanable/ash(drop_location())
|
||||
|
||||
//Milkmelon
|
||||
/obj/item/seeds/watermelon/milk
|
||||
@@ -84,4 +96,4 @@
|
||||
filling_color = "#FFAABB"
|
||||
dried_type = null
|
||||
wine_power = 30
|
||||
wine_flavor = "creamy"
|
||||
wine_flavor = "creamy"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Starthistle
|
||||
/obj/item/seeds/starthistle
|
||||
name = "pack of starthistle seeds"
|
||||
desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots."
|
||||
desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots. Grind down these seeds for a substitution of mustardgrind."
|
||||
icon_state = "seed-starthistle"
|
||||
species = "starthistle"
|
||||
plantname = "Starthistle"
|
||||
@@ -9,7 +9,7 @@
|
||||
endurance = 50 // damm pesky weeds
|
||||
maturation = 5
|
||||
production = 1
|
||||
yield = 2
|
||||
yield = 6
|
||||
potency = 10
|
||||
growthstages = 3
|
||||
grind_results = list(/datum/reagent/mustardgrind = 1)
|
||||
@@ -58,7 +58,6 @@
|
||||
|
||||
var/datum/gas_mixture/stank = new
|
||||
var/list/cached_gases = stank.gases
|
||||
|
||||
cached_gases[/datum/gas/miasma] += (yield + 5)*7*MIASMA_CORPSE_MOLES // this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses
|
||||
stank.temperature = T20C // without this the room would eventually freeze and miasma mining would be easier
|
||||
T.assume_air(stank)
|
||||
@@ -261,14 +260,17 @@
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
|
||||
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime()
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
|
||||
icon_state = "cherry_bomb_lit"
|
||||
playsound(src, 'sound/effects/fuse.ogg', seed.potency, 0)
|
||||
addtimer(CALLBACK(src, /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate), rand(50, 100))
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate()
|
||||
reagents.chem_temp = 1000 //Sets off the black powder
|
||||
reagents.handle_reactions()
|
||||
|
||||
// Lavaland cactus
|
||||
|
||||
// Lavaland Cactus
|
||||
/obj/item/seeds/lavaland/cactus
|
||||
name = "pack of fruiting cactus seeds"
|
||||
desc = "These seeds grow into fruiting cacti."
|
||||
@@ -279,6 +281,7 @@
|
||||
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
|
||||
growthstages = 2
|
||||
|
||||
|
||||
// Coconut
|
||||
/obj/item/seeds/coconut
|
||||
name = "pack of coconut seeds"
|
||||
@@ -322,8 +325,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed)
|
||||
. = ..()
|
||||
var/newvolume
|
||||
newvolume = 50 + round(seed.potency,10)
|
||||
var/newvolume = 50 + round(seed.potency,10)
|
||||
if (seed.get_gene(/datum/plant_gene/trait/maxchem))
|
||||
newvolume = newvolume + 50
|
||||
volume = newvolume
|
||||
@@ -333,23 +335,27 @@
|
||||
transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size?
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user)
|
||||
if (opened == TRUE)
|
||||
if(possible_transfer_amounts.len)
|
||||
var/i=0
|
||||
for(var/A in possible_transfer_amounts)
|
||||
i++
|
||||
if(A == amount_per_transfer_from_this)
|
||||
if(i<possible_transfer_amounts.len)
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
|
||||
else
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[1]
|
||||
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
|
||||
return
|
||||
if (!opened)
|
||||
return
|
||||
|
||||
if(!possible_transfer_amounts.len)
|
||||
return
|
||||
var/i=0
|
||||
for(var/A in possible_transfer_amounts)
|
||||
i++
|
||||
if(A != amount_per_transfer_from_this)
|
||||
continue
|
||||
if(i<possible_transfer_amounts.len)
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
|
||||
else
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[1]
|
||||
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params)
|
||||
//DEFUSING NADE LOGIC
|
||||
if (W.tool_behaviour == TOOL_WIRECUTTER && fused == TRUE)
|
||||
user.show_message("<span class='notice'>You cut the fuse!</span>", 1)
|
||||
if (W.tool_behaviour == TOOL_WIRECUTTER && fused)
|
||||
user.visible_message("<span class='notice'>[user] cuts something from the coconut.</span>", "<span class='notice'>You cut the fuse!</span>")
|
||||
playsound(user, W.hitsound, 50, 1, -1)
|
||||
icon_state = "coconut_carved"
|
||||
desc = "A coconut. This one's got a hole in it."
|
||||
@@ -361,14 +367,14 @@
|
||||
set_light(0, 0.0)
|
||||
return
|
||||
//IGNITING NADE LOGIC
|
||||
if(fusedactive == FALSE && fused == TRUE)
|
||||
if(!fusedactive && fused)
|
||||
var/lighting_text = W.ignition_effect(src, user)
|
||||
if(lighting_text)
|
||||
user.visible_message("<span class='warning'>[user] ignites [src]'s fuse!</span>", "<span class='userdanger'>You ignite the [src]'s fuse!</span>")
|
||||
user.visible_message("<span class='warning'>[user] ignites a fuse from [src]!</span>", "<span class='userdanger'>You ignite the [src]'s fuse!</span>")
|
||||
fusedactive = TRUE
|
||||
defused = FALSE
|
||||
playsound(src, 'sound/effects/fuse.ogg', 100, 0)
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] "+ pretty_string_from_reagent_list(reagents.reagent_list))
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]")
|
||||
log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].")
|
||||
addtimer(CALLBACK(src, .proc/prime), 5 SECONDS)
|
||||
icon_state = "coconut_grenade_active"
|
||||
@@ -380,7 +386,7 @@
|
||||
|
||||
//ADDING A FUSE, NADE LOGIC
|
||||
if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread))
|
||||
if (carved == TRUE && straw == FALSE && fused == FALSE)
|
||||
if (carved && !straw && !fused)
|
||||
user.show_message("<span class='notice'>You add a fuse to the coconut!</span>", 1)
|
||||
W.use(1)
|
||||
fused = TRUE
|
||||
@@ -389,38 +395,31 @@
|
||||
name = "coconut bomb"
|
||||
return
|
||||
//ADDING STRAW LOGIC
|
||||
if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened == TRUE && straw == FALSE && fused == FALSE)
|
||||
if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened && !straw && fused)
|
||||
user.show_message("<span class='notice'>You add a bamboo straw to the coconut!</span>", 1)
|
||||
straw = TRUE
|
||||
W.use(1)
|
||||
icon_state += "_straw"
|
||||
desc = "You can already feel like you're on a tropical vacation."
|
||||
return
|
||||
//OPENING THE NUT LOGIC
|
||||
if (carved == FALSE && chopped == FALSE)
|
||||
if(W.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
user.show_message("<span class='notice'>You make a hole in the coconut!</span>", 1)
|
||||
if (!carved && !chopped)
|
||||
var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER
|
||||
if(screwdrivered || W.sharpness)
|
||||
user.show_message("<span class='notice'>You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!</span>", 1)
|
||||
carved = TRUE
|
||||
opened = TRUE
|
||||
spillable = !screwdrivered
|
||||
reagent_flags = OPENCONTAINER
|
||||
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
|
||||
icon_state = "coconut_carved"
|
||||
desc = "A coconut. This one's got a hole in it."
|
||||
playsound(user, W.hitsound, 50, 1, -1)
|
||||
return
|
||||
else if(W.sharpness)
|
||||
user.show_message("<span class='notice'>You slice the coconut open!</span>", 1)
|
||||
chopped = TRUE
|
||||
opened = TRUE
|
||||
reagent_flags = OPENCONTAINER
|
||||
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
|
||||
spillable = TRUE
|
||||
icon_state = "coconut_chopped"
|
||||
desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour."
|
||||
icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped"
|
||||
desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]."
|
||||
playsound(user, W.hitsound, 50, 1, -1)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target)
|
||||
if(M && user.a_intent == INTENT_HARM && spillable == FALSE)
|
||||
if(M && user.a_intent == INTENT_HARM && !spillable)
|
||||
var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at
|
||||
if (affecting == BODY_ZONE_HEAD && prob(15))
|
||||
//smash the nut open
|
||||
@@ -435,11 +434,11 @@
|
||||
|
||||
//Display an attack message.
|
||||
if(M != user)
|
||||
M.visible_message("<span class='danger'>[user] has cracked open a [src.name] on [M]'s head!</span>", \
|
||||
"<span class='userdanger'>[user] has cracked open a [src.name] on [M]'s head!</span>")
|
||||
M.visible_message("<span class='danger'>[user] has cracked open a [name] on [M]'s head!</span>", \
|
||||
"<span class='userdanger'>[user] has cracked open a [name] on [M]'s head!</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'>[M] cracks open a [src.name] on their [M.p_them()] head!</span>", \
|
||||
"<span class='userdanger'>[M] cracks open a [src.name] on [M.p_their()] head!</span>")
|
||||
user.visible_message("<span class='danger'>[M] cracks open a [name] on their [M.p_them()] head!</span>", \
|
||||
"<span class='userdanger'>[M] cracks open a [name] on [M.p_their()] head!</span>")
|
||||
|
||||
//The coconut breaks open so splash its reagents
|
||||
spillable = TRUE
|
||||
@@ -454,7 +453,7 @@
|
||||
if(fusedactive)
|
||||
return
|
||||
|
||||
if(opened == FALSE)
|
||||
if(!opened)
|
||||
return
|
||||
|
||||
if(!canconsume(M, user))
|
||||
@@ -489,21 +488,11 @@
|
||||
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
|
||||
log_combat(user, M, "fed", reagents.log_list())
|
||||
else
|
||||
if(M != user)
|
||||
M.visible_message("<span class='danger'>[user] attempts to feed something to [M].</span>",
|
||||
"<span class='userdanger'>[user] attempts to feed something to you.</span>")
|
||||
if(!do_mob(user, M))
|
||||
return
|
||||
if(!reagents || !reagents.total_volume)
|
||||
return // The drink might be empty after the delay, such as by spam-feeding
|
||||
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
|
||||
log_combat(user, M, "fed", reagents.log_list())
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
|
||||
var/fraction = min(5/reagents.total_volume, 1)
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
|
||||
var/fraction = min(5/reagents.total_volume, 1)
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
@@ -549,15 +538,13 @@
|
||||
transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size?
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime()
|
||||
if (!defused)
|
||||
var/turf/T = get_turf(src)
|
||||
reagents.chem_temp = 1000
|
||||
//Disable seperated contents when the grenade primes
|
||||
if (seed.get_gene(/datum/plant_gene/trait/noreact))
|
||||
DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT)
|
||||
reagents.handle_reactions()
|
||||
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
|
||||
qdel(src)
|
||||
if (defused)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
reagents.chem_temp = 1000
|
||||
reagents.handle_reactions()
|
||||
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
|
||||
qdel(src)
|
||||
@@ -567,3 +554,34 @@
|
||||
prime()
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/seeds/aloe
|
||||
name = "pack of aloe seeds"
|
||||
desc = "These seeds grow into aloe."
|
||||
icon_state = "seed-aloe"
|
||||
species = "aloe"
|
||||
plantname = "Aloe"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/aloe
|
||||
lifespan = 60
|
||||
endurance = 25
|
||||
maturation = 4
|
||||
production = 4
|
||||
yield = 6
|
||||
growthstages = 5
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/aloe
|
||||
seed = /obj/item/seeds/aloe
|
||||
name = "aloe"
|
||||
desc = "Cut leaves from the aloe plant."
|
||||
icon_state = "aloe"
|
||||
filling_color = "#90EE90"
|
||||
bitesize_mod = 5
|
||||
foodtype = VEGETABLES
|
||||
juice_results = list(/datum/reagent/consumable/aloejuice = 0)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/tequila
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/aloe/microwave_act(obj/machinery/microwave/M)
|
||||
new /obj/item/stack/medical/aloe(drop_location(), 2)
|
||||
qdel(src)
|
||||
|
||||
@@ -22,6 +22,37 @@
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0)
|
||||
mutatelist = list(/obj/item/seeds/reishi/negative)
|
||||
|
||||
/*
|
||||
/obj/item/seeds/reishi/dark
|
||||
name = "pack of dark reishi mycelium"
|
||||
desc = "This mycelium grows into something that'll put you into a trance."
|
||||
plantname = "Dark Reishi"
|
||||
lifespan = 2
|
||||
endurance = 8
|
||||
maturation = 6
|
||||
production = 1
|
||||
yield = 0
|
||||
potency = 0
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color/bw)
|
||||
reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.02)
|
||||
mutatelist = list(/obj/item/seeds/reishi/negative)
|
||||
*/
|
||||
|
||||
/obj/item/seeds/reishi/negative
|
||||
name = "pack of light-abosrbing reishi mycelium"
|
||||
desc = "This mycelium grows into something so tranquil, you'll never want to wake up from its trance."
|
||||
plantname = "Light-Absorbing Reishi"
|
||||
lifespan = 1
|
||||
endurance = 2 //Better use that enduro grow
|
||||
maturation = 10
|
||||
production = 6
|
||||
yield = 0
|
||||
potency = 0
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color)
|
||||
reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/toxin/amanitin = 0.05, /datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/nutriment/vitamin = 0.02)
|
||||
mutatelist = list(/obj/item/seeds/reishi)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/mushroom/reishi
|
||||
seed = /obj/item/seeds/reishi
|
||||
@@ -173,7 +204,7 @@
|
||||
to_chat(user, "<span class='notice'>You plant the walking mushroom.</span>")
|
||||
|
||||
// Chanterelle
|
||||
/obj/item/seeds/chanter
|
||||
/obj/item/seeds/chanterelle
|
||||
name = "pack of chanterelle mycelium"
|
||||
desc = "This mycelium grows into chanterelle mushrooms."
|
||||
icon_state = "mycelium-chanter"
|
||||
@@ -190,10 +221,10 @@
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
|
||||
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup, /obj/item/seeds/chanterelle/jupitercup/monochrome)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle
|
||||
seed = /obj/item/seeds/chanter
|
||||
seed = /obj/item/seeds/chanterelle
|
||||
name = "chanterelle cluster"
|
||||
desc = "<I>Cantharellus Cibarius</I>: These jolly yellow little shrooms sure look tasty!"
|
||||
icon_state = "chanterelle"
|
||||
@@ -215,12 +246,43 @@
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/fragile/teslium, /datum/plant_gene/trait/plant_type/carnivory)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list()
|
||||
|
||||
/obj/item/seeds/chanterelle/jupitercup/Initialize(mapload, nogenes = FALSE)
|
||||
. = ..()
|
||||
if(!nogenes)
|
||||
unset_mutability(/datum/plant_gene/trait/plant_type/carnivory, PLANT_GENE_REMOVABLE)
|
||||
|
||||
/obj/item/seeds/chanterelle/jupitercup/hollow
|
||||
name = "pack of hollow-cup mycelium"
|
||||
desc = "This mycelium grows into hollow-cup mushrooms. These mushrooms require only the upmost attention."
|
||||
plantname = "Hollow-cup Mushrooms"
|
||||
lifespan = 1 //starts decaying before it can even be harvested once
|
||||
production = 4
|
||||
endurance = 5
|
||||
yield = 0
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/plant_type/carnivory, /datum/plant_gene/trait/modified_color/transparent)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup, /obj/item/seeds/chanterelle/jupitercup/monochrome)
|
||||
color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, -0.3,-0.3,-0.3,0.7, 0,0,0,0)
|
||||
modified_colors = TRUE
|
||||
|
||||
/obj/item/seeds/chanterelle/jupitercup/monochrome
|
||||
name = "pack of silver-cup mycelium"
|
||||
desc = "This mycelium grows into silver-cup mushrooms. These mushrooms require only the upmost attention."
|
||||
plantname = "Silver-cup Mushrooms"
|
||||
lifespan = 1
|
||||
production = 5
|
||||
endurance = 7
|
||||
yield = 0
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/plant_type/carnivory, /datum/plant_gene/trait/modified_color/monochrome)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/nothing = 0.02)
|
||||
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup, /obj/item/seeds/chanterelle/jupitercup/hollow)
|
||||
color = list(0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
modified_colors = TRUE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup
|
||||
seed = /obj/item/seeds/chanterelle/jupitercup
|
||||
name = "jupiter cup"
|
||||
@@ -385,6 +447,19 @@
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
mutatelist = list(/obj/item/seeds/lavaland/inocybe/magenta)
|
||||
|
||||
/obj/item/seeds/lavaland/inocybe/magenta
|
||||
name = "pack of dilated inocybe mycelium"
|
||||
desc = "This mycelium grows into a specially-colored inocybe mushroom, their shifted cells make them appear red."
|
||||
plantname = "Red Inocybe Mushrooms"
|
||||
lifespan = 4
|
||||
endurance = 5
|
||||
maturation = 3
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color/monochrome/red)
|
||||
mutatelist = list()
|
||||
color = list(0.8,0,0,0, 0.8,0.5,0.5,0, 0.8,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
modified_colors = TRUE
|
||||
|
||||
// Embershroom (Mushroom stem)
|
||||
|
||||
@@ -397,3 +472,18 @@
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
mutatelist = list(/obj/item/seeds/lavaland/ember/cyan)
|
||||
|
||||
/obj/item/seeds/lavaland/ember/cyan
|
||||
name = "pack of dilated embershroom mycelium"
|
||||
desc = "This mycelium grows into a specially-colored embershroom mushroom, their shifted cells make them appear blue."
|
||||
plantname = "Blue Embershroom Mushrooms"
|
||||
lifespan = 6
|
||||
endurance = 10
|
||||
maturation = 4
|
||||
yield = 2
|
||||
potency = 25
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow/blue, /datum/plant_gene/trait/modified_color/monochrome/blue)
|
||||
mutatelist = list()
|
||||
color = list(0.5,0.5,0.8,0, 0.5,0.5,0.8,0, 0,0,0.8,0, 0,0,0,1, 0,0,0,0)
|
||||
modified_colors = TRUE
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
weed_chance = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/onion/red)
|
||||
mutatelist = list(/obj/item/seeds/onion/red, /obj/item/seeds/garlic)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/onion
|
||||
seed = /obj/item/seeds/onion
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
// Finally, peas. Base plant.
|
||||
/obj/item/seeds/peas
|
||||
name = "pack of pea pods"
|
||||
desc = "These seeds grows into vitamin rich peas!"
|
||||
icon_state = "seed-peas"
|
||||
species = "peas"
|
||||
plantname = "Pea Vines"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/peas
|
||||
maturation = 3
|
||||
potency = 25
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
icon_grow = "peas-grow"
|
||||
icon_dead = "peas-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/peas/laugh)
|
||||
reagents_add = list (/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/water = 0.05)
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/peas
|
||||
seed = /obj/item/seeds/peas
|
||||
name = "peapod"
|
||||
desc = "Finally... peas."
|
||||
icon_state = "peas"
|
||||
filling_color = "#739122"
|
||||
bitesize_mod = 1
|
||||
foodtype = VEGETABLES
|
||||
tastes = list ("peas" = 1, "chalky saltiness" = 1)
|
||||
distill_reagent = /datum/reagent/saltpetre
|
||||
|
||||
|
||||
// Laughin' Peas
|
||||
/obj/item/seeds/peas/laugh
|
||||
name = "pack of laughin' peas"
|
||||
desc = "These seeds give off a very soft purple glow.. they should grow into Laughin' Peas."
|
||||
icon_state = "seed-laughpeas"
|
||||
species = "laughpeas"
|
||||
plantname = "Laughin' Peas"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/laugh
|
||||
maturation = 7
|
||||
potency = 10
|
||||
yield = 7
|
||||
production = 5
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
icon_grow = "laughpeas-grow"
|
||||
icon_dead = "laughpeas-dead"
|
||||
genes = list (/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/purple)
|
||||
mutatelist = list (/obj/item/seeds/peas/laugh/peace)
|
||||
reagents_add = list (/datum/reagent/consumable/laughter = 0.05, /datum/reagent/consumable/sugar = 0.05, /datum/reagent/consumable/nutriment = 0.07)
|
||||
rarity = 25 //It actually might make CC Officials loosen up a smidge, eh?
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/laugh
|
||||
seed = /obj/item/seeds/peas/laugh
|
||||
name = "pod of laughin' peas"
|
||||
desc = "Ridens Cicer, guaranteed to improve your mood dramatically upon consumption!"
|
||||
icon_state = "laughpeas"
|
||||
filling_color = "#ee7bee"
|
||||
bitesize_mod = 2
|
||||
foodtype = VEGETABLES
|
||||
juice_results = list (/datum/reagent/consumable/laughsyrup = 0)
|
||||
tastes = list ("a prancing rabbit" = 1) //Vib Ribbon sends her regards.. wherever she is.
|
||||
wine_power = 90
|
||||
wine_flavor = "a vector-graphic rabbit dancing on your tongue"
|
||||
|
||||
|
||||
// World Peas - Peace at last, peace at last...
|
||||
/obj/item/seeds/peas/laugh/peace
|
||||
name = "pack of world peas"
|
||||
desc = "These rather large seeds give off a soothing blue glow..."
|
||||
icon_state = "seed-worldpeas"
|
||||
species = "worldpeas"
|
||||
plantname = "World Peas"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/peace
|
||||
maturation = 20
|
||||
potency = 75
|
||||
yield = 1
|
||||
production = 10
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
icon_grow = "worldpeas-grow"
|
||||
icon_dead = "worldpeas-dead"
|
||||
genes = list (/datum/plant_gene/trait/glow/blue)
|
||||
reagents_add = list (/datum/reagent/pax = 0.1, /datum/reagent/drug/happiness = 0.1, /datum/reagent/consumable/nutriment = 0.15)
|
||||
rarity = 50
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/peace
|
||||
seed = /obj/item/seeds/peas/laugh/peace
|
||||
name = "cluster of world peas"
|
||||
desc = "A plant discovered through extensive genetic engineering, and iterative graft work. It's rumored to bring peace to any who consume it. In the wider AgSci community, it's attained the nickname of 'Pax Mundi'." //at last... world peas. I'm not sorry.
|
||||
icon_state = "worldpeas"
|
||||
filling_color = "#0099CC"
|
||||
bitesize_mod = 4
|
||||
foodtype = VEGETABLES
|
||||
tastes = list ("numbing tranquility" = 2, "warmth" = 1)
|
||||
wine_power = 100
|
||||
wine_flavor = "mind-numbing peace and warmth"
|
||||
@@ -29,6 +29,28 @@
|
||||
|
||||
create_reagents(volume, INJECTABLE | DRAWABLE)
|
||||
|
||||
/obj/item/seeds/replicapod/pre_attack(obj/machinery/hydroponics/I)
|
||||
if(istype(I, /obj/machinery/hydroponics))
|
||||
if(!I.myseed)
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/seeds/replicapod/proc/check_mind_orbiting(atom/A)
|
||||
for(var/mob/M in A.orbiters?.orbiters)
|
||||
if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == DEAD && !M.suiciding && isobserver(M))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/seeds/replicapod/process()
|
||||
var/obj/machinery/hydroponics/parent = loc
|
||||
if(parent.harvest != 1)
|
||||
return
|
||||
if (check_mind_orbiting(parent))
|
||||
icon_harvest = "replicapod-orbit"
|
||||
else
|
||||
icon_harvest = "replicapod-harvest"
|
||||
parent.update_icon_plant()
|
||||
|
||||
/obj/item/seeds/replicapod/on_reagent_change(changetype)
|
||||
if(changetype == ADD_REAGENT)
|
||||
var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood)
|
||||
@@ -59,8 +81,11 @@
|
||||
|
||||
/obj/item/seeds/replicapod/get_analyzer_text()
|
||||
var/text = ..()
|
||||
var/obj/machinery/hydroponics/parent = loc
|
||||
if(contains_sample)
|
||||
text += "\n It contains a blood sample!"
|
||||
if (parent && istype(parent) && check_mind_orbiting(parent))
|
||||
text += "\n The soul is ready to enter the body."
|
||||
return text
|
||||
|
||||
|
||||
|
||||
@@ -41,4 +41,4 @@
|
||||
desc = "Dry them out to make some space-smokes."
|
||||
icon_state = "stobacco_leaves"
|
||||
distill_reagent = null
|
||||
wine_power = 50
|
||||
wine_power = 50
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
plantname = "Blood-Tomato Plants"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood
|
||||
mutatelist = list()
|
||||
reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
||||
reagents_add = list(/datum/reagent/blood/tomato = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/tomato/blood
|
||||
@@ -47,7 +47,7 @@
|
||||
splat_type = /obj/effect/gibspawner/generic
|
||||
filling_color = "#FF0000"
|
||||
foodtype = FRUIT | GROSS
|
||||
grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0)
|
||||
grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood/tomato = 0)
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary
|
||||
|
||||
// Blue Tomato
|
||||
|
||||
@@ -314,6 +314,9 @@
|
||||
else if(istype(A, /obj/item) && prob(20))
|
||||
var/obj/item/O = A
|
||||
O.microwave_act()
|
||||
else if(istype(A, /obj/item/grown/log))
|
||||
qdel(A)
|
||||
new /obj/item/stack/sheet/mineral/coal(loc, 1)
|
||||
|
||||
/obj/structure/bonfire/process()
|
||||
if(!CheckOxygen())
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
/obj/machinery/hydroponics/proc/applyChemicals(datum/reagents/S, mob/user)
|
||||
if(!myseed)
|
||||
return
|
||||
myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
|
||||
|
||||
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10))
|
||||
switch(rand(100))
|
||||
if(91 to 100)
|
||||
adjustHealth(-10)
|
||||
to_chat(user, "<span class='warning'>The plant shrivels and burns.</span>")
|
||||
if(81 to 90)
|
||||
mutatespecie()
|
||||
if(66 to 80)
|
||||
hardmutate()
|
||||
if(41 to 65)
|
||||
mutate()
|
||||
if(21 to 41)
|
||||
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
|
||||
if(11 to 20)
|
||||
mutateweed()
|
||||
if(1 to 10)
|
||||
mutatepest(user)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing happens...</span>")
|
||||
|
||||
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5))
|
||||
hardmutate()
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2))
|
||||
mutate()
|
||||
|
||||
|
||||
// After handling the mutating, we now handle the damage from adding crude radioactives...
|
||||
if(S.has_reagent(/datum/reagent/uranium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2))
|
||||
if(S.has_reagent(/datum/reagent/radium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce)
|
||||
|
||||
|
||||
// Nutriments
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1))
|
||||
yieldmod = 1
|
||||
mutmod = 1
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1))
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1))
|
||||
yieldmod = 0
|
||||
mutmod = 2
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1))
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1))
|
||||
yieldmod = 1.3
|
||||
mutmod = 0
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) * 1))
|
||||
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/endurogrow, 1))
|
||||
var/total_transferred = S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow)
|
||||
if(total_transferred >= 20)
|
||||
myseed.adjust_potency(-round(total_transferred / 10))
|
||||
myseed.adjust_yield(-round(total_transferred / 20))
|
||||
myseed.adjust_endurance(round(total_transferred / 30))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
|
||||
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/liquidearthquake, 1))
|
||||
var/total_transferred = S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake)
|
||||
if(total_transferred >= 20)
|
||||
myseed.adjust_weed_chance(round(total_transferred / 10))
|
||||
myseed.adjust_weed_rate(round(total_transferred / 20))
|
||||
myseed.adjust_production(-round(total_transferred / 30))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
|
||||
|
||||
// Ambrosia Gaia produces earthsblood.
|
||||
if(S.has_reagent(/datum/reagent/medicine/earthsblood))
|
||||
self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood)
|
||||
if(self_sufficiency_progress >= self_sufficiency_req)
|
||||
become_self_sufficient()
|
||||
else if(!self_sustaining)
|
||||
to_chat(user, "<span class='notice'>[src] warms as it might on a spring day under a genuine Sun.</span>")
|
||||
|
||||
// Antitoxin binds shit pretty well. So the tox goes significantly down
|
||||
if(S.has_reagent(/datum/reagent/medicine/charcoal, 1))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2))
|
||||
|
||||
// Toxins, not good for anything
|
||||
if(S.has_reagent(/datum/reagent/toxin, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2))
|
||||
|
||||
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
|
||||
if(S.has_reagent(/datum/reagent/consumable/milk, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9))
|
||||
|
||||
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
|
||||
if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7))
|
||||
|
||||
// Fluorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent(/datum/reagent/fluorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Chlorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent(/datum/reagent/chlorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5))
|
||||
adjustWeeds(-rand(1,3))
|
||||
|
||||
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
|
||||
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
|
||||
if(S.has_reagent(/datum/reagent/phosphorus, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though...
|
||||
if(S.has_reagent(/datum/reagent/consumable/sugar, 1))
|
||||
adjustWeeds(rand(1,2))
|
||||
adjustPests(rand(1,2))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1))
|
||||
|
||||
// It is water!
|
||||
if(S.has_reagent(/datum/reagent/water, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1))
|
||||
|
||||
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
|
||||
if(S.has_reagent(/datum/reagent/water/holywater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1))
|
||||
|
||||
// A variety of nutrients are dissolved in club soda, without sugar.
|
||||
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
|
||||
if(S.has_reagent(/datum/reagent/consumable/sodawater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
|
||||
// Sulphuric Acid
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Acid
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Plant-B-Gone is just as bad
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6))
|
||||
adjustWeeds(-rand(4,8))
|
||||
|
||||
// Napalm, not known for being good for anything organic
|
||||
if(S.has_reagent(/datum/reagent/napalm, 1))
|
||||
if(!(myseed.resistance_flags & FIRE_PROOF))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
|
||||
adjustWeeds(-rand(5,9))
|
||||
|
||||
//Weed Spray
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5))
|
||||
//old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
//Pest Spray
|
||||
if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Healing
|
||||
if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
|
||||
// Ammonia is bad ass.
|
||||
if(S.has_reagent(/datum/reagent/ammonia, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01))
|
||||
|
||||
// Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants
|
||||
if(S.has_reagent(/datum/reagent/saltpetre, 1))
|
||||
var/salt = S.get_reagent_amount(/datum/reagent/saltpetre)
|
||||
adjustHealth(round(salt * 0.25))
|
||||
if (myseed)
|
||||
myseed.adjust_production(-round(salt/100)-prob(salt%100))
|
||||
myseed.adjust_potency(round(salt*0.5))
|
||||
// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer
|
||||
if(S.has_reagent(/datum/reagent/ash, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5))
|
||||
adjustWeeds(-1)
|
||||
|
||||
// Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
|
||||
if(S.has_reagent(/datum/reagent/diethylamine, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Enduro Grow sacrifices potency + yield for endurance
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/endurogrow, 1))
|
||||
myseed.adjust_potency(-round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.1))
|
||||
myseed.adjust_yield(-round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.075))
|
||||
myseed.adjust_endurance(round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.35))
|
||||
|
||||
// Liquid Earthquake increases production speed but increases weeds
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/liquidearthquake, 1))
|
||||
myseed.adjust_weed_rate(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.1))
|
||||
myseed.adjust_weed_chance(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.3))
|
||||
myseed.adjust_production(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.075))
|
||||
|
||||
// Nutriment Compost, effectively
|
||||
if(S.has_reagent(/datum/reagent/consumable/nutriment, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1))
|
||||
|
||||
// Virusfood Compost for EVERYTHING
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
|
||||
// Blood
|
||||
if(S.has_reagent(/datum/reagent/blood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1))
|
||||
adjustPests(rand(2,4))
|
||||
|
||||
// Strange reagent
|
||||
if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1))
|
||||
spawnplant()
|
||||
|
||||
// Adminordrazine the best stuff there is. For testing/debugging.
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustPests(-rand(1,5))
|
||||
adjustWeeds(-rand(1,5))
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5))
|
||||
switch(rand(100))
|
||||
if(66 to 100)
|
||||
mutatespecie()
|
||||
if(33 to 65)
|
||||
mutateweed()
|
||||
if(1 to 32)
|
||||
mutatepest(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Nothing happens...</span>")
|
||||
@@ -10,6 +10,12 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=20)
|
||||
var/scan_mode = FALSE
|
||||
|
||||
/obj/item/plant_analyzer/attack_self(mob/user)
|
||||
. = ..()
|
||||
scan_mode = !scan_mode
|
||||
to_chat(user, "<span class='notice'>You switch [src] to [scan_mode ? "scan for chemical reagents and traits" : "scan for plant growth statistics"].</span>")
|
||||
|
||||
// *************************************
|
||||
// Hydroponics Tools
|
||||
@@ -192,4 +198,56 @@
|
||||
/obj/item/reagent_containers/glass/bottle/killer/pestkiller
|
||||
name = "bottle of pest spray"
|
||||
desc = "Contains a pesticide."
|
||||
list_reagents = list(/datum/reagent/toxin/pestkiller = 50)
|
||||
list_reagents = list(/datum/reagent/toxin/pestkiller = 50)
|
||||
|
||||
/*
|
||||
/obj/item/plant_debugger
|
||||
name = "plant debugger"
|
||||
desc = "You should never be able to see this."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "hydro"
|
||||
flags_1 = ABSTRACT
|
||||
var/mode = 0
|
||||
var/list/traits_list = list(
|
||||
/datum/plant_gene/trait/modified_color/monochrome/yellow,
|
||||
/datum/plant_gene/trait/modified_color/monochrome/green,
|
||||
/datum/plant_gene/trait/modified_color/vibrant,
|
||||
/datum/plant_gene/trait/modified_color/random,
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/,
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/red,
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/green,
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/blue)
|
||||
var/trait_to_add = null
|
||||
|
||||
/obj/item/plant_debugger/attack_self(mob/user)
|
||||
. = ..()
|
||||
mode++
|
||||
if(mode > traits_list.len)
|
||||
mode = 1
|
||||
trait_to_add = traits_list[mode]
|
||||
to_chat(user, "Now injecting: [trait_to_add]")
|
||||
|
||||
/obj/item/plant_debugger/pre_attack(atom/A, mob/living/user, params)
|
||||
if(!istype(A, /obj/machinery/hydroponics))
|
||||
return
|
||||
var/obj/machinery/hydroponics/H = A
|
||||
if(!H.myseed)
|
||||
to_chat(user, "This tray does not have a seed in it!")
|
||||
return
|
||||
for(var/G in H.myseed.genes)
|
||||
if(istype(G, /datum/plant_gene/trait/modified_color))
|
||||
var/datum/plant_gene/trait/T = new trait_to_add
|
||||
G = T
|
||||
T.apply_vars(H.myseed)
|
||||
H.update_icon()
|
||||
to_chat(user, "Converted old modified_color to [trait_to_add]")
|
||||
return
|
||||
var/datum/plant_gene/trait/T = new trait_to_add
|
||||
H.myseed.genes += T
|
||||
T.apply_vars(H.myseed)
|
||||
H.update_icon()
|
||||
to_chat(user, "Added [trait_to_add]")
|
||||
|
||||
/obj/item/plant_debugger/attack()
|
||||
return
|
||||
*/
|
||||
|
||||
@@ -6,45 +6,52 @@
|
||||
pixel_z = 8
|
||||
obj_flags = CAN_BE_HIT | UNIQUE_RENAME
|
||||
circuit = /obj/item/circuitboard/machine/hydroponics
|
||||
var/waterlevel = 100 //The amount of water in the tray (max 100)
|
||||
var/waterlevel = 100 //The amount of water in the tray
|
||||
var/maxwater = 100 //The maximum amount of water in the tray
|
||||
var/nutrilevel = 10 //The amount of nutrient in the tray (max 10)
|
||||
var/nutrilevel = 10 //The amount of nutrient in the tray
|
||||
var/maxnutri = 10 //The maximum nutrient of water in the tray
|
||||
var/pestlevel = 0 //The amount of pests in the tray (max 10)
|
||||
var/weedlevel = 0 //The amount of weeds in the tray (max 10)
|
||||
var/pestlevel = 0 //The amount of pests in the tray
|
||||
var/weedlevel = 0 //The amount of weeds in the tray
|
||||
var/yieldmod = 1 //Nutriment's effect on yield
|
||||
var/mutmod = 1 //Nutriment's effect on mutations
|
||||
var/toxic = 0 //Toxicity in the tray?
|
||||
var/age = 0 //Current age
|
||||
var/dead = 0 //Is it dead?
|
||||
var/dead = FALSE //Is it dead?
|
||||
var/plant_health //Its health
|
||||
var/lastproduce = 0 //Last time it was harvested
|
||||
var/lastcycle = 0 //Used for timing of cycles.
|
||||
var/cycledelay = 200 //About 10 seconds / cycle
|
||||
var/harvest = 0 //Ready to harvest?
|
||||
var/harvest = FALSE //Ready to harvest?
|
||||
var/obj/item/seeds/myseed = null //The currently planted seed
|
||||
var/rating = 1
|
||||
var/unwrenchable = 1
|
||||
var/unwrenchable = TRUE
|
||||
var/recent_bee_visit = FALSE //Have we been visited by a bee recently, so bees dont overpollinate one plant
|
||||
var/mob/lastuser //Last user to add reagents to a tray. Mostly for logging.
|
||||
var/self_sustaining = FALSE //If the tray generates nutrients and water on its own
|
||||
var/using_irrigation = FALSE //If the tray is connected to other trays via irrigation hoses
|
||||
var/self_sufficiency_req = 20 //Required total dose to make a self-sufficient hydro tray. 1:1 with earthsblood.
|
||||
var/self_sufficiency_progress = 0
|
||||
var/self_sustaining = FALSE //If the tray generates nutrients and water on its own
|
||||
|
||||
|
||||
/obj/machinery/hydroponics/constructable
|
||||
name = "hydroponics tray"
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
icon_state = "hydrotray3"
|
||||
|
||||
/obj/machinery/hydroponics/constructable/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
|
||||
|
||||
/obj/machinery/hydroponics/constructable/proc/can_be_rotated(mob/user, rotation_type)
|
||||
return !anchored
|
||||
|
||||
/obj/machinery/hydroponics/constructable/RefreshParts()
|
||||
var/tmp_capacity = 0
|
||||
for (var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
tmp_capacity += M.rating
|
||||
for (var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
rating = M.rating
|
||||
maxwater = tmp_capacity * 50 // Up to 300
|
||||
maxnutri = tmp_capacity * 5 // Up to 30
|
||||
maxwater = tmp_capacity * 50 // Up to 400
|
||||
maxnutri = tmp_capacity * 5 // Up to 40 Maximum
|
||||
|
||||
/obj/machinery/hydroponics/Destroy()
|
||||
if(myseed)
|
||||
@@ -57,12 +64,7 @@
|
||||
// handle opening the panel
|
||||
if(default_deconstruction_screwdriver(user, icon_state, icon_state, I))
|
||||
return
|
||||
|
||||
// handle deconstructing the machine, if permissible
|
||||
if (I.tool_behaviour == TOOL_CROWBAR && using_irrigation)
|
||||
to_chat(user, "<span class='warning'>Disconnect the hoses first!</span>")
|
||||
return
|
||||
else if(default_deconstruction_crowbar(I))
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
|
||||
return ..()
|
||||
@@ -75,21 +77,22 @@
|
||||
var/atom/a = processing_atoms[1]
|
||||
for(var/step_dir in GLOB.cardinals)
|
||||
var/obj/machinery/hydroponics/h = locate() in get_step(a, step_dir)
|
||||
// Soil plots aren't dense
|
||||
|
||||
if(h && h.using_irrigation && h.density && !(h in connected) && !(h in processing_atoms))
|
||||
processing_atoms += h
|
||||
|
||||
|
||||
processing_atoms -= a
|
||||
connected += a
|
||||
|
||||
return connected
|
||||
|
||||
|
||||
/obj/machinery/hydroponics/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
|
||||
if(!myseed)
|
||||
return ..()
|
||||
if(istype(Proj , /obj/item/projectile/energy/floramut))
|
||||
mutate()
|
||||
return BULLET_ACT_HIT
|
||||
else if(istype(Proj , /obj/item/projectile/energy/florayield))
|
||||
return myseed.bullet_act(Proj)
|
||||
else
|
||||
@@ -104,7 +107,7 @@
|
||||
if(self_sustaining)
|
||||
adjustNutri(1)
|
||||
adjustWater(rand(3,5))
|
||||
adjustWeeds(-2)
|
||||
adjustWeeds(-4) //Was -2. People keep getting confused as to why gaia isn't completely removing weeds
|
||||
adjustPests(-2)
|
||||
adjustToxic(-2)
|
||||
|
||||
@@ -118,10 +121,10 @@
|
||||
|
||||
needs_update = 1
|
||||
|
||||
|
||||
//Nutrients//////////////////////////////////////////////////////////////
|
||||
// Nutrients deplete slowly
|
||||
if(prob(50))
|
||||
adjustNutri(-1 / rating)
|
||||
// Nutrients should deplete at a constant rate
|
||||
adjustNutri(-1 / rating)
|
||||
|
||||
// Lack of nutrients hurts non-weeds
|
||||
if(nutrilevel <= 0 && !myseed.get_gene(/datum/plant_gene/trait/plant_type/weed_hardy))
|
||||
@@ -141,16 +144,19 @@
|
||||
|
||||
//Water//////////////////////////////////////////////////////////////////
|
||||
// Drink random amount of water
|
||||
adjustWater(-rand(1,6) / rating)
|
||||
if(waterlevel > 10)
|
||||
adjustWater(-rand(3,4) / rating)
|
||||
else
|
||||
adjustWater(-1 / rating) //Deplete water slower if we're dry. Just for some realism
|
||||
|
||||
// If the plant is dry, it loses health pretty fast, unless mushroom
|
||||
if(waterlevel <= 10 && !myseed.get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
|
||||
if(waterlevel <= 15 && !myseed.get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
|
||||
adjustHealth(-rand(0,1) / rating)
|
||||
if(waterlevel <= 0)
|
||||
adjustHealth(-rand(0,2) / rating)
|
||||
|
||||
// Sufficient water level and nutrient level = plant healthy but also spawns weeds
|
||||
else if(waterlevel > 10 && nutrilevel > 0)
|
||||
else if(waterlevel > 15 && nutrilevel > 0)
|
||||
adjustHealth(rand(1,2) / rating)
|
||||
if(myseed && prob(myseed.weed_chance))
|
||||
adjustWeeds(myseed.weed_rate)
|
||||
@@ -204,13 +210,14 @@
|
||||
|
||||
// If the plant is too old, lose health fast
|
||||
if(age > myseed.lifespan)
|
||||
adjustHealth(-rand(1,5) / rating)
|
||||
adjustHealth(-rand(3,5) / rating)
|
||||
|
||||
// Harvest code
|
||||
if(age > myseed.production && (age - lastproduce) > myseed.production && (!harvest && !dead))
|
||||
nutrimentMutation()
|
||||
if(age > myseed.production*2) //Start mutating stats every process cycle if we can be harvested, only after a while
|
||||
nutrimentMutation()
|
||||
if(myseed && myseed.yield != -1) // Unharvestable shouldn't be harvested
|
||||
harvest = 1
|
||||
harvest = TRUE
|
||||
else
|
||||
lastproduce = age
|
||||
if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase
|
||||
@@ -238,22 +245,22 @@
|
||||
return
|
||||
|
||||
/obj/machinery/hydroponics/proc/nutrimentMutation()
|
||||
if (mutmod == 0)
|
||||
return
|
||||
if (mutmod == 1)
|
||||
if(prob(80)) //80%
|
||||
mutate()
|
||||
else if(prob(75)) //15%
|
||||
hardmutate()
|
||||
return
|
||||
if (mutmod == 2)
|
||||
if(prob(50)) //50%
|
||||
mutate()
|
||||
else if(prob(50)) //25%
|
||||
hardmutate()
|
||||
else if(prob(50)) //12.5%
|
||||
mutatespecie()
|
||||
return
|
||||
switch (mutmod)
|
||||
|
||||
//0 does nothing
|
||||
|
||||
if(1)
|
||||
if(prob(80))
|
||||
mutate()
|
||||
else if(prob(75)) //15%
|
||||
hardmutate()
|
||||
if(2)
|
||||
if(prob(50))
|
||||
mutate()
|
||||
else if(prob(50)) //25%
|
||||
hardmutate()
|
||||
else if(prob(50)) //12.5%
|
||||
mutatespecie()
|
||||
return
|
||||
|
||||
/obj/machinery/hydroponics/update_icon()
|
||||
@@ -301,8 +308,10 @@
|
||||
else
|
||||
plant_overlay.icon_state = myseed.icon_harvest
|
||||
else
|
||||
var/t_growthstate = min(round((age / myseed.maturation) * myseed.growthstages), myseed.growthstages)
|
||||
var/t_growthstate = clamp(round((age / myseed.maturation) * myseed.growthstages), 1, myseed.growthstages)
|
||||
plant_overlay.icon_state = "[myseed.icon_grow][t_growthstate]"
|
||||
if(myseed.modified_colors) //In case we get a different color from other things
|
||||
plant_overlay.color = myseed.color
|
||||
add_overlay(plant_overlay)
|
||||
|
||||
/obj/machinery/hydroponics/proc/update_icon_lights()
|
||||
@@ -344,6 +353,9 @@
|
||||
. += "<span class='warning'>It's filled with weeds!</span>"
|
||||
if(pestlevel >= 5)
|
||||
. += "<span class='warning'>It's filled with tiny worms!</span>"
|
||||
to_chat(user, "" )
|
||||
|
||||
|
||||
|
||||
/obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, this happens.
|
||||
dead = 0
|
||||
@@ -364,7 +376,7 @@
|
||||
if(10 to 11)
|
||||
myseed = new /obj/item/seeds/amanita(src)
|
||||
if(8 to 9)
|
||||
myseed = new /obj/item/seeds/chanter(src)
|
||||
myseed = new /obj/item/seeds/chanterelle(src)
|
||||
if(6 to 7)
|
||||
myseed = new /obj/item/seeds/tower(src)
|
||||
if(4 to 5)
|
||||
@@ -379,7 +391,11 @@
|
||||
pestlevel = 0 // Reset
|
||||
update_icon()
|
||||
visible_message("<span class='warning'>The [oldPlantName] is overtaken by some [myseed.plantname]!</span>")
|
||||
|
||||
name = "hydroponics tray ([myseed.plantname])"
|
||||
if(myseed.product)
|
||||
desc = initial(myseed.product.desc)
|
||||
else
|
||||
desc = initial(desc)
|
||||
|
||||
/obj/machinery/hydroponics/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25, wrmut = 2, wcmut = 5, traitmut = 0) // Mutates the current seed
|
||||
if(!myseed)
|
||||
@@ -413,7 +429,7 @@
|
||||
sleep(5) // Wait a while
|
||||
update_icon()
|
||||
visible_message("<span class='warning'>[oldPlantName] suddenly mutates into [myseed.plantname]!</span>")
|
||||
|
||||
name = myseed ? "[initial(name)] ([myseed.plantname])" : initial(name)
|
||||
|
||||
/obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant
|
||||
if( weedlevel > 5 )
|
||||
@@ -436,15 +452,14 @@
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>The few weeds in [src] seem to react, but only for a moment...</span>")
|
||||
|
||||
|
||||
/obj/machinery/hydroponics/proc/plantdies() // OH NOES!!!!! I put this all in one function to make things easier
|
||||
/obj/machinery/hydroponics/proc/plantdies()
|
||||
plant_health = 0
|
||||
harvest = 0
|
||||
harvest = FALSE
|
||||
pestlevel = 0 // Pests die
|
||||
lastproduce = 0
|
||||
if(!dead)
|
||||
update_icon()
|
||||
dead = 1
|
||||
|
||||
dead = TRUE
|
||||
|
||||
|
||||
/obj/machinery/hydroponics/proc/mutatepest(mob/user)
|
||||
@@ -456,238 +471,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The pests seem to behave oddly, but quickly settle down...</span>")
|
||||
|
||||
/obj/machinery/hydroponics/proc/applyChemicals(datum/reagents/S, mob/user)
|
||||
if(myseed)
|
||||
myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
|
||||
|
||||
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10))
|
||||
switch(rand(100))
|
||||
if(91 to 100)
|
||||
adjustHealth(-10)
|
||||
to_chat(user, "<span class='warning'>The plant shrivels and burns.</span>")
|
||||
if(81 to 90)
|
||||
mutatespecie()
|
||||
if(66 to 80)
|
||||
hardmutate()
|
||||
if(41 to 65)
|
||||
mutate()
|
||||
if(21 to 41)
|
||||
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
|
||||
if(11 to 20)
|
||||
mutateweed()
|
||||
if(1 to 10)
|
||||
mutatepest(user)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing happens...</span>")
|
||||
|
||||
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5))
|
||||
hardmutate()
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2))
|
||||
mutate()
|
||||
|
||||
// After handling the mutating, we now handle the damage from adding crude radioactives...
|
||||
if(S.has_reagent(/datum/reagent/uranium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2))
|
||||
if(S.has_reagent(/datum/reagent/radium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce)
|
||||
|
||||
// Nutriments
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1))
|
||||
yieldmod = 1
|
||||
mutmod = 1
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1))
|
||||
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1))
|
||||
yieldmod = 0
|
||||
mutmod = 2
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1))
|
||||
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1))
|
||||
yieldmod = 1.3
|
||||
mutmod = 0
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 ))
|
||||
|
||||
// Ambrosia Gaia produces earthsblood.
|
||||
if(S.has_reagent(/datum/reagent/medicine/earthsblood))
|
||||
self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood)
|
||||
if(self_sufficiency_progress >= self_sufficiency_req)
|
||||
become_self_sufficient()
|
||||
else if(!self_sustaining)
|
||||
to_chat(user, "<span class='notice'>[src] warms as it might on a spring day under a genuine Sun.</span>")
|
||||
|
||||
// Antitoxin binds shit pretty well. So the tox goes significantly down
|
||||
if(S.has_reagent(/datum/reagent/medicine/charcoal, 1))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2))
|
||||
|
||||
// Toxins, not good for anything
|
||||
if(S.has_reagent(/datum/reagent/toxin, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2))
|
||||
|
||||
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
|
||||
if(S.has_reagent(/datum/reagent/consumable/milk, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9))
|
||||
|
||||
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
|
||||
if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7))
|
||||
|
||||
// Fluorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent(/datum/reagent/fluorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Chlorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent(/datum/reagent/chlorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5))
|
||||
adjustWeeds(-rand(1,3))
|
||||
|
||||
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
|
||||
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
|
||||
if(S.has_reagent(/datum/reagent/phosphorus, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though...
|
||||
if(S.has_reagent(/datum/reagent/consumable/sugar, 1))
|
||||
adjustWeeds(rand(1,2))
|
||||
adjustPests(rand(1,2))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1))
|
||||
|
||||
// It is water!
|
||||
if(S.has_reagent(/datum/reagent/water, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1))
|
||||
|
||||
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
|
||||
if(S.has_reagent(/datum/reagent/water/holywater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1))
|
||||
|
||||
// A variety of nutrients are dissolved in club soda, without sugar.
|
||||
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
|
||||
if(S.has_reagent(/datum/reagent/consumable/sodawater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
|
||||
// Sulphuric Acid
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Acid
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Plant-B-Gone is just as bad
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6))
|
||||
adjustWeeds(-rand(4,8))
|
||||
|
||||
// Napalm, not known for being good for anything organic
|
||||
if(S.has_reagent(/datum/reagent/napalm, 1))
|
||||
if(!(myseed.resistance_flags & FIRE_PROOF))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
|
||||
adjustWeeds(-rand(5,9))
|
||||
|
||||
//Weed Spray
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5))
|
||||
//old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
//Pest Spray
|
||||
if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Healing
|
||||
if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
|
||||
// Ammonia is bad ass.
|
||||
if(S.has_reagent(/datum/reagent/ammonia, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01))
|
||||
|
||||
// Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants
|
||||
if(S.has_reagent(/datum/reagent/saltpetre, 1))
|
||||
var/salt = S.get_reagent_amount(/datum/reagent/saltpetre)
|
||||
adjustHealth(round(salt * 0.25))
|
||||
if (myseed)
|
||||
myseed.adjust_production(-round(salt/100)-prob(salt%100))
|
||||
myseed.adjust_potency(round(salt*0.5))
|
||||
// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer
|
||||
if(S.has_reagent(/datum/reagent/ash, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5))
|
||||
adjustWeeds(-1)
|
||||
|
||||
// Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
|
||||
if(S.has_reagent(/datum/reagent/diethylamine, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Nutriment Compost, effectively
|
||||
if(S.has_reagent(/datum/reagent/consumable/nutriment, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1))
|
||||
|
||||
// Virusfood Compost for EVERYTHING
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
|
||||
// Blood
|
||||
if(S.has_reagent(/datum/reagent/blood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1))
|
||||
adjustPests(rand(2,4))
|
||||
|
||||
// Strange reagent
|
||||
if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1))
|
||||
spawnplant()
|
||||
|
||||
// Adminordrazine the best stuff there is. For testing/debugging.
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustPests(-rand(1,5))
|
||||
adjustWeeds(-rand(1,5))
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5))
|
||||
switch(rand(100))
|
||||
if(66 to 100)
|
||||
mutatespecie()
|
||||
if(33 to 65)
|
||||
mutateweed()
|
||||
if(1 to 32)
|
||||
mutatepest(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Nothing happens...</span>")
|
||||
|
||||
/obj/machinery/hydroponics/attackby(obj/item/O, mob/user, params)
|
||||
//Called when mob user "attacks" it with object O
|
||||
if(istype(O, /obj/item/reagent_containers) ) // Syringe stuff (and other reagent containers now too)
|
||||
@@ -710,6 +493,10 @@
|
||||
var/transfer_amount
|
||||
|
||||
if(istype(reagent_source, /obj/item/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/reagent_containers/pill))
|
||||
if(istype(reagent_source, /obj/item/reagent_containers/food/snacks))
|
||||
var/obj/item/reagent_containers/food/snacks/R = reagent_source
|
||||
if (R.trash)
|
||||
R.generate_trash(get_turf(user))
|
||||
visi_msg="[user] composts [reagent_source], spreading it through [target]"
|
||||
transfer_amount = reagent_source.reagents.total_volume
|
||||
else
|
||||
@@ -721,34 +508,32 @@
|
||||
syr.mode = 0
|
||||
else if(istype(reagent_source, /obj/item/reagent_containers/spray/))
|
||||
visi_msg="[user] sprays [target] with [reagent_source]"
|
||||
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
irrigate = 1
|
||||
//playsound(loc, 'sound/effect/spray3.ogg', 50, 1, 6) //this sound displeases my ears immensely
|
||||
else if(transfer_amount) // Droppers, cans, beakers, what have you.
|
||||
visi_msg="[user] uses [reagent_source] on [target]"
|
||||
irrigate = 1
|
||||
// Beakers, bottles, buckets, etc.
|
||||
if(reagent_source.is_drainable())
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
|
||||
|
||||
if(irrigate && transfer_amount > 30 && reagent_source.reagents.total_volume >= 30 && using_irrigation)
|
||||
trays = FindConnected()
|
||||
if (trays.len > 1)
|
||||
visi_msg += ", setting off the irrigation system"
|
||||
visi_msg += ", setting off the irrigation system."
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE)
|
||||
|
||||
if(visi_msg)
|
||||
visible_message("<span class='notice'>[visi_msg].</span>")
|
||||
visible_message("<span class='notice'>[visi_msg]</span>")
|
||||
|
||||
var/split = round(transfer_amount/trays.len)
|
||||
|
||||
|
||||
for(var/obj/machinery/hydroponics/H in trays)
|
||||
//cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener
|
||||
|
||||
var/datum/reagents/S = new /datum/reagents() //This is a strange way, but I don't know of a better one so I can't fix it at the moment...
|
||||
S.my_atom = H
|
||||
|
||||
reagent_source.reagents.trans_to(S,split)
|
||||
if(istype(reagent_source, /obj/item/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/reagent_containers/pill))
|
||||
qdel(reagent_source)
|
||||
lastuser = user
|
||||
|
||||
H.applyChemicals(S, user)
|
||||
|
||||
@@ -757,7 +542,6 @@
|
||||
H.update_icon()
|
||||
if(reagent_source) // If the source wasn't composted and destroyed
|
||||
reagent_source.update_icon()
|
||||
return 1
|
||||
|
||||
else if(istype(O, /obj/item/seeds) && !istype(O, /obj/item/seeds/sample))
|
||||
if(!myseed)
|
||||
@@ -766,22 +550,40 @@
|
||||
if(!user.transferItemToLoc(O, src))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You plant [O].</span>")
|
||||
dead = 0
|
||||
dead = FALSE
|
||||
myseed = O
|
||||
name = myseed ? "[initial(name)] ([myseed.plantname])" : initial(name)
|
||||
age = 1
|
||||
plant_health = myseed.endurance
|
||||
lastcycle = world.time
|
||||
for(var/datum/plant_gene/trait/G in myseed.genes)
|
||||
G.apply_vars(myseed)
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] already has seeds in it!</span>")
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/plant_analyzer))
|
||||
var/obj/item/plant_analyzer/P_analyzer = O
|
||||
if(myseed)
|
||||
to_chat(user, "*** <B>[myseed.plantname]</B> ***" )
|
||||
to_chat(user, "- Plant Age: <span class='notice'>[age]</span>")
|
||||
var/list/text_string = myseed.get_analyzer_text()
|
||||
if(text_string)
|
||||
to_chat(user, text_string)
|
||||
if(!P_analyzer.scan_mode)
|
||||
to_chat(user, "*** <B>[myseed.plantname]</B> ***" )
|
||||
to_chat(user, "- Plant Age: <span class='notice'>[age]</span>")
|
||||
var/list/text_string = myseed.get_analyzer_text()
|
||||
if(text_string)
|
||||
to_chat(user, text_string)
|
||||
to_chat(user, "*---------*")
|
||||
else
|
||||
to_chat(user, "- <B>Plant Reagents</B> -")
|
||||
to_chat(user, "*---------*")
|
||||
if(!LAZYLEN(myseed.reagents_add))
|
||||
to_chat(user, "<span class='notice'>- No reagents -</span>")
|
||||
to_chat(user, "*---------*")
|
||||
return
|
||||
for(var/datum/plant_gene/reagent/G in myseed.genes)
|
||||
to_chat(user, "<span class='notice'>- [G.get_name()] -</span>")
|
||||
to_chat(user, "*---------*")
|
||||
else
|
||||
to_chat(user, "<B>No plant found.</B>")
|
||||
to_chat(user, "- Weed level: <span class='notice'>[weedlevel] / 10</span>")
|
||||
@@ -790,6 +592,7 @@
|
||||
to_chat(user, "- Water level: <span class='notice'>[waterlevel] / [maxwater]</span>")
|
||||
to_chat(user, "- Nutrition level: <span class='notice'>[nutrilevel] / [maxnutri]</span>")
|
||||
to_chat(user, "")
|
||||
return
|
||||
|
||||
else if(istype(O, /obj/item/cultivator))
|
||||
if(weedlevel > 0)
|
||||
@@ -833,6 +636,8 @@
|
||||
harvest = FALSE //To make sure they can't just put in another seed and insta-harvest it
|
||||
qdel(myseed)
|
||||
myseed = null
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
weedlevel = 0 //Has a side effect of cleaning up those nasty weeds
|
||||
update_icon()
|
||||
|
||||
@@ -857,20 +662,22 @@
|
||||
if(issilicon(user)) //How does AI know what plant is?
|
||||
return
|
||||
if(harvest)
|
||||
return myseed.harvest(user)
|
||||
myseed.harvest(user)
|
||||
return
|
||||
|
||||
else if(dead)
|
||||
dead = 0
|
||||
dead = FALSE
|
||||
to_chat(user, "<span class='notice'>You remove the dead plant from [src].</span>")
|
||||
qdel(myseed)
|
||||
myseed = null
|
||||
update_icon()
|
||||
name = myseed ? "[initial(name)] ([myseed.plantname])" : initial(name)
|
||||
else
|
||||
if(user)
|
||||
examine(user)
|
||||
|
||||
/obj/machinery/hydroponics/proc/update_tray(mob/user)
|
||||
harvest = 0
|
||||
harvest = FALSE
|
||||
lastproduce = age
|
||||
if(istype(myseed, /obj/item/seeds/replicapod))
|
||||
to_chat(user, "<span class='notice'>You harvest from the [myseed.plantname].</span>")
|
||||
@@ -881,31 +688,33 @@
|
||||
if(!myseed.get_gene(/datum/plant_gene/trait/repeated_harvest))
|
||||
qdel(myseed)
|
||||
myseed = null
|
||||
dead = 0
|
||||
dead = FALSE
|
||||
name = myseed ? "[initial(name)] ([myseed.plantname])" : initial(name)
|
||||
desc = initial(desc)
|
||||
update_icon()
|
||||
|
||||
/// Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds.///
|
||||
/obj/machinery/hydroponics/proc/adjustNutri(adjustamt)
|
||||
nutrilevel = CLAMP(nutrilevel + adjustamt, 0, maxnutri)
|
||||
nutrilevel = clamp(nutrilevel + adjustamt, 0, maxnutri)
|
||||
|
||||
/obj/machinery/hydroponics/proc/adjustWater(adjustamt)
|
||||
waterlevel = CLAMP(waterlevel + adjustamt, 0, maxwater)
|
||||
waterlevel = clamp(waterlevel + adjustamt, 0, maxwater)
|
||||
|
||||
if(adjustamt>0)
|
||||
adjustToxic(-round(adjustamt/4))//Toxicity dilutation code. The more water you put in, the lesser the toxin concentration.
|
||||
|
||||
/obj/machinery/hydroponics/proc/adjustHealth(adjustamt)
|
||||
if(myseed && !dead)
|
||||
plant_health = CLAMP(plant_health + adjustamt, 0, myseed.endurance)
|
||||
plant_health = clamp(plant_health + adjustamt, 0, myseed.endurance)
|
||||
|
||||
/obj/machinery/hydroponics/proc/adjustToxic(adjustamt)
|
||||
toxic = CLAMP(toxic + adjustamt, 0, 100)
|
||||
toxic = clamp(toxic + adjustamt, 0, 100)
|
||||
|
||||
/obj/machinery/hydroponics/proc/adjustPests(adjustamt)
|
||||
pestlevel = CLAMP(pestlevel + adjustamt, 0, 10)
|
||||
pestlevel = clamp(pestlevel + adjustamt, 0, 10)
|
||||
|
||||
/obj/machinery/hydroponics/proc/adjustWeeds(adjustamt)
|
||||
weedlevel = CLAMP(weedlevel + adjustamt, 0, 10)
|
||||
weedlevel = clamp(weedlevel + adjustamt, 0, 10)
|
||||
|
||||
/obj/machinery/hydroponics/proc/spawnplant() // why would you put strange reagent in a hydro tray you monster I bet you also feed them blood
|
||||
var/list/livingplants = list(/mob/living/simple_animal/hostile/tree, /mob/living/simple_animal/hostile/killertomato)
|
||||
|
||||
@@ -356,6 +356,164 @@ datum/plant_gene/trait/glow/white
|
||||
name = "Pink Bioluminescence"
|
||||
glow_color = "#FFB3DA"
|
||||
|
||||
//Change grow, harvest, and crafted food's color
|
||||
//Made for mostly being fancy with stuff. Should be rare or hard to obtain, with the exception of strange seeds
|
||||
/datum/plant_gene/trait/modified_color
|
||||
name = "Dilated Light (Negative)"
|
||||
var/color = list(-1,0,0,0, 0,-1,0,0, 0,0,-1,0, 0,0,0,1, 1,1,1,0) //Negative Colors
|
||||
var/long_calculation = FALSE //For advanced color matrices
|
||||
|
||||
/datum/plant_gene/trait/modified_color/on_new(obj/item/reagent_containers/food/snacks/grown/G, newloc)
|
||||
if(G.modified_colors)
|
||||
return
|
||||
for(var/datum/plant_gene/trait/I in G.seed.genes) //Have ones first added give priority
|
||||
if(istype(I, /datum/plant_gene/trait/modified_color) && I.type != type)
|
||||
return
|
||||
if(long_calculation)
|
||||
calculate()
|
||||
G.color = color
|
||||
G.modified_colors = TRUE
|
||||
|
||||
//same as above but for the gene modder
|
||||
/datum/plant_gene/trait/modified_color/apply_vars(obj/item/seeds/S)
|
||||
S.color = color
|
||||
S.modified_colors = TRUE
|
||||
|
||||
/datum/plant_gene/trait/modified_color/proc/calculate()
|
||||
return
|
||||
|
||||
/datum/plant_gene/trait/modified_color/transparent
|
||||
name = "Dilated Light (Flimsy)"
|
||||
color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, -0.3,-0.3,-0.3,0.7, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome
|
||||
name = "Dilated Light (Monochrome)"
|
||||
color = list(0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/red
|
||||
name = "Dilated Light (Red)"
|
||||
color = list(0.8,0,0,0, 0.8,0.5,0.5,0, 0.8,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/green
|
||||
name = "Dilated Light (Green)"
|
||||
color = list(0.5,0.8,0.5,0, 0,0.8,0,0, 0.5,0.8,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/blue
|
||||
name = "Dilated Light (Blue)"
|
||||
color = list(0.5,0.5,0.8,0, 0.5,0.5,0.8,0, 0,0,0.8,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/*
|
||||
/datum/plant_gene/trait/modified_color/monochrome/yellow
|
||||
name = "Dilated Light (Yellow)"
|
||||
color = list(0.8,0,0,0, 0,0.4,0,0, 0.8,0.4,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/green
|
||||
name = "Dilated Light (Green)"
|
||||
color = list(0.5,0.8,0.4,0, 0,0.8,0,0, 0,0,0.4,0, 0,0,0,1, 0,0,0,0)
|
||||
*/
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/
|
||||
name = "Dilated Light (Dark)"
|
||||
color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, -0.3, -0.3, -0.3, 0)
|
||||
|
||||
/*
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/red //for vyx
|
||||
name = "Dilated Light (Dark Red)"
|
||||
color = list(1,0,0,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/green
|
||||
name = "Dilated Light (Dark Green)"
|
||||
color = list(0.5,0.5,0.5,0, 0,1,0,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/monochrome/dark/blue
|
||||
name = "Dilated Light (Dark Blue)"
|
||||
color = list(0.5,0.5,0.,0, 0.5,0.5,0.5,0, 0,0,1,0, 0,0,0,1, 0,0,0,0)
|
||||
*/
|
||||
|
||||
/datum/plant_gene/trait/modified_color/vibrant
|
||||
name = "Dilated Light (Strong)"
|
||||
color = list(2,-1,-1,0, -1,2,-1,0, -1,-1,2,0, 0,0,0,1, 0,0,0,0) //Any higher starts to look like clown vomit
|
||||
|
||||
/datum/plant_gene/trait/modified_color/cyan
|
||||
name = "Dilated Light (Shift R)"
|
||||
color = list(
|
||||
0.25, 1, 0.5, 0,
|
||||
0.5, 0.25, 1, 0,
|
||||
1, 0.5, 0.25, 0,
|
||||
0,0,0,1,
|
||||
0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/magenta
|
||||
name = "Dilated Light (Shift L)"
|
||||
color = list(
|
||||
0.25, 0.5, 1, 0,
|
||||
1, 0.25, 0.5, 0,
|
||||
0.5, 1, 0.25, 0,
|
||||
0,0,0,1,
|
||||
0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/sunset
|
||||
name = "Dilated Light (Shift S)"
|
||||
color = list(
|
||||
1, 0.25, 0, 0,
|
||||
0.25, 1, 0, 0,
|
||||
0.25, 0.125, 0.35,0,
|
||||
0,0,0,1,
|
||||
0,0,0,0)
|
||||
|
||||
/datum/plant_gene/trait/modified_color/random
|
||||
name = "Dilated Light (Shift C)"
|
||||
color = list()
|
||||
long_calculation = TRUE
|
||||
|
||||
|
||||
//Calculations
|
||||
/*
|
||||
/datum/plant_gene/trait/modified_color/shift_red/calculate()
|
||||
var/list/M = color
|
||||
M[5] += 0.5 * M[1]
|
||||
M[6] += 0.5 * M[2]
|
||||
M[7] += 0.5 * M[3]
|
||||
color = M
|
||||
|
||||
/datum/plant_gene/trait/modified_color/shift_green/calculate()
|
||||
var/list/M = color
|
||||
M[9] += 0.5 * M[5]
|
||||
M[10] += 0.5 * M[6]
|
||||
M[11] += 0.5 * M[7]
|
||||
color = M
|
||||
|
||||
/datum/plant_gene/trait/modified_color/shift_blue/calculate()
|
||||
var/list/M = color
|
||||
M[13] += 0.5 * M[9]
|
||||
M[14] += 0.5 * M[10]
|
||||
M[15] += 0.5 * M[11]
|
||||
color = M
|
||||
*/
|
||||
|
||||
/datum/plant_gene/trait/modified_color/random/calculate()
|
||||
var/R = rand(0,255) / 255
|
||||
var/G = rand(0,255) / 255
|
||||
var/B = rand(0,255) / 255
|
||||
var/A = rand(200,255)/ 255
|
||||
|
||||
if(prob(50))
|
||||
color = list(R,0,0,0,
|
||||
0,G,0,0,
|
||||
0,0,B,0,
|
||||
0,0,0,1,
|
||||
0,0,0,0)
|
||||
else
|
||||
color = list(R,0,0,0,
|
||||
0,G,0,0,
|
||||
0,0,B,0,
|
||||
0,0,0,A,
|
||||
0,0,0,0)
|
||||
var/D = rand(1,20)
|
||||
if(color[D] != 0)
|
||||
color[D] *= 1.5
|
||||
else
|
||||
color[D] = rand(-100, 100) * 0.01
|
||||
|
||||
/datum/plant_gene/trait/teleport
|
||||
// Makes plant teleport people when squashed or slipped on.
|
||||
|
||||
@@ -18,4 +18,4 @@
|
||||
/obj/item/seeds/sample/alienweed
|
||||
name = "alien weed sample"
|
||||
icon_state = "alienweed"
|
||||
sample_color = null
|
||||
sample_color = null
|
||||
|
||||
@@ -52,9 +52,9 @@
|
||||
|
||||
/obj/machinery/seed_extractor/RefreshParts()
|
||||
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
|
||||
max_seeds = 1000 * B.rating
|
||||
max_seeds = initial(max_seeds) * B.rating
|
||||
for(var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
seed_multiplier = M.rating
|
||||
seed_multiplier = initial(seed_multiplier) * M.rating
|
||||
|
||||
/obj/machinery/seed_extractor/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
resistance_flags = FLAMMABLE
|
||||
var/plantname = "Plants" // Name of plant when planted.
|
||||
var/product // A type path. The thing that is created when the plant is harvested.
|
||||
var/obj/item/product // A type path. The thing that is created when the plant is harvested.
|
||||
var/productdesc
|
||||
var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overridden.
|
||||
|
||||
var/growing_icon = 'icons/obj/hydroponics/growing.dmi' //the file that stores the sprites of the growing plant from this seed.
|
||||
@@ -26,7 +27,7 @@
|
||||
var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to CentCom.
|
||||
var/list/mutatelist = list() // The type of plants that this plant can mutate into.
|
||||
var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info.
|
||||
var/list/forbiddengenes = list() // Plant genes that the seed may be forbidden from having.
|
||||
var/list/forbiddengenes = list() // Genes the seed cannot have, such as perennial growth
|
||||
var/list/reagents_add = list()
|
||||
// A list of reagents to add to product.
|
||||
// Format: "reagent_id" = potency multiplier
|
||||
@@ -35,6 +36,7 @@
|
||||
|
||||
var/weed_rate = 1 //If the chance below passes, then this many weeds sprout during growth
|
||||
var/weed_chance = 5 //Percentage chance per tray update to grow weeds
|
||||
var/modified_colors = FALSE
|
||||
|
||||
/obj/item/seeds/Initialize(mapload, nogenes = 0)
|
||||
. = ..()
|
||||
@@ -70,6 +72,16 @@
|
||||
genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id])
|
||||
reagents_from_genes() //quality coding
|
||||
|
||||
/obj/item/seeds/examine(mob/user)
|
||||
. = ..()
|
||||
if(modified_colors)
|
||||
. += "It looks a bit funky..."
|
||||
. += "<span class='notice'>Use a pen on it to rename it or change its description.</span>"
|
||||
if(reagents_add && user.can_see_reagents())
|
||||
. += "<span class='notice'>- Plant Reagents -</span>"
|
||||
for(var/datum/plant_gene/reagent/G in genes)
|
||||
. += "<span class='notice'>- [G.get_name()] -</span>"
|
||||
|
||||
/obj/item/seeds/proc/Copy()
|
||||
var/obj/item/seeds/S = new type(null, 1)
|
||||
// Copy all the stats
|
||||
@@ -81,18 +93,26 @@
|
||||
S.potency = potency
|
||||
S.weed_rate = weed_rate
|
||||
S.weed_chance = weed_chance
|
||||
S.name = name
|
||||
S.plantname = plantname
|
||||
S.desc = desc
|
||||
S.productdesc = productdesc
|
||||
S.genes = list()
|
||||
for(var/g in genes)
|
||||
var/datum/plant_gene/G = g
|
||||
S.genes += G.Copy()
|
||||
S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
|
||||
if(modified_colors)
|
||||
S.modified_colors = TRUE
|
||||
S.color = color
|
||||
return S
|
||||
|
||||
/obj/item/seeds/proc/get_gene(typepath)
|
||||
return (locate(typepath) in genes)
|
||||
|
||||
obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
return (locate(typepath) in forbiddengenes)
|
||||
|
||||
/obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
return (typepath in forbiddengenes)
|
||||
|
||||
|
||||
/obj/item/seeds/proc/reagents_from_genes()
|
||||
@@ -121,9 +141,10 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
adjust_weed_rate(rand(-wrmut, wrmut))
|
||||
adjust_weed_chance(rand(-wcmut, wcmut))
|
||||
if(prob(traitmut))
|
||||
add_random_traits(1, 1)
|
||||
|
||||
|
||||
if(prob(50))
|
||||
add_random_traits(1, 1)
|
||||
else
|
||||
add_random_reagents(1, 1)
|
||||
|
||||
/obj/item/seeds/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
|
||||
if(istype(Proj, /obj/item/projectile/energy/florayield))
|
||||
@@ -136,6 +157,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
adjust_yield(1 * rating)
|
||||
else if(prob(1/(yield * yield) * 100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2...
|
||||
adjust_yield(1 * rating)
|
||||
return BULLET_ACT_HIT
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -156,24 +178,37 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
|
||||
/obj/item/seeds/proc/harvest(mob/user)
|
||||
var/obj/machinery/hydroponics/parent = loc //for ease of access
|
||||
var/t_amount = 0
|
||||
var/list/result = list()
|
||||
var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK
|
||||
var/t_amount = 0 ///Count used for creating the correct amount of results to the harvest.
|
||||
var/list/result = list() ///List of plants all harvested from the same batch.
|
||||
var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //Tile of the harvester to deposit the growables, needed for TK
|
||||
var/product_name
|
||||
while(t_amount < getYield())
|
||||
var/obj/item/reagent_containers/food/snacks/grown/t_prod = new product(output_loc, src)
|
||||
var/product_count = getYield()
|
||||
|
||||
while(t_amount < product_count)
|
||||
var/obj/item/reagent_containers/food/snacks/grown/t_prod
|
||||
t_prod = new product(output_loc, src)
|
||||
if(parent.myseed.plantname != initial(parent.myseed.plantname))
|
||||
t_prod.name = lowertext(parent.myseed.plantname)
|
||||
if(productdesc)
|
||||
t_prod.desc = productdesc
|
||||
t_prod.seed.name = parent.myseed.name
|
||||
t_prod.seed.desc = parent.myseed.desc
|
||||
t_prod.seed.plantname = parent.myseed.plantname
|
||||
result.Add(t_prod) // User gets a consumable
|
||||
if(!t_prod)
|
||||
return
|
||||
|
||||
if(modified_colors)
|
||||
t_prod.color = color
|
||||
t_prod.modified_colors = TRUE
|
||||
t_amount++
|
||||
product_name = t_prod.name
|
||||
product_name = parent.myseed.plantname
|
||||
if(getYield() >= 1)
|
||||
SSblackbox.record_feedback("tally", "food_harvested", getYield(), product_name)
|
||||
SSblackbox.record_feedback("tally", "food_harvested", product_count, product_name)
|
||||
parent.update_tray(user)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
/obj/item/seeds/proc/prepare_result(var/obj/item/reagent_containers/food/snacks/grown/T)
|
||||
if(!T.reagents)
|
||||
CRASH("[T] has no reagents.")
|
||||
@@ -194,7 +229,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
/// Setters procs ///
|
||||
/obj/item/seeds/proc/adjust_yield(adjustamt)
|
||||
if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable
|
||||
yield = CLAMP(yield + adjustamt, 0, 10)
|
||||
yield = clamp(yield + adjustamt, 0, 10)
|
||||
|
||||
if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
|
||||
yield = 1 // Mushrooms always have a minimum yield of 1.
|
||||
@@ -203,39 +238,39 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
C.value = yield
|
||||
|
||||
/obj/item/seeds/proc/adjust_lifespan(adjustamt)
|
||||
lifespan = CLAMP(lifespan + adjustamt, 10, 100)
|
||||
lifespan = clamp(lifespan + adjustamt, 10, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan)
|
||||
if(C)
|
||||
C.value = lifespan
|
||||
|
||||
/obj/item/seeds/proc/adjust_endurance(adjustamt)
|
||||
endurance = CLAMP(endurance + adjustamt, 10, 100)
|
||||
endurance = clamp(endurance + adjustamt, 10, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance)
|
||||
if(C)
|
||||
C.value = endurance
|
||||
|
||||
/obj/item/seeds/proc/adjust_production(adjustamt)
|
||||
if(yield != -1)
|
||||
production = CLAMP(production + adjustamt, 1, 10)
|
||||
production = clamp(production + adjustamt, 1, 10)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production)
|
||||
if(C)
|
||||
C.value = production
|
||||
|
||||
/obj/item/seeds/proc/adjust_potency(adjustamt)
|
||||
if(potency != -1)
|
||||
potency = CLAMP(potency + adjustamt, 0, 100)
|
||||
potency = clamp(potency + adjustamt, 0, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency)
|
||||
if(C)
|
||||
C.value = potency
|
||||
|
||||
/obj/item/seeds/proc/adjust_weed_rate(adjustamt)
|
||||
weed_rate = CLAMP(weed_rate + adjustamt, 0, 10)
|
||||
weed_rate = clamp(weed_rate + adjustamt, 0, 10)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate)
|
||||
if(C)
|
||||
C.value = weed_rate
|
||||
|
||||
/obj/item/seeds/proc/adjust_weed_chance(adjustamt)
|
||||
weed_chance = CLAMP(weed_chance + adjustamt, 0, 67)
|
||||
weed_chance = clamp(weed_chance + adjustamt, 0, 67)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance)
|
||||
if(C)
|
||||
C.value = weed_chance
|
||||
@@ -244,7 +279,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
|
||||
/obj/item/seeds/proc/set_yield(adjustamt)
|
||||
if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable
|
||||
yield = CLAMP(adjustamt, 0, 10)
|
||||
yield = clamp(adjustamt, 0, 10)
|
||||
|
||||
if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
|
||||
yield = 1 // Mushrooms always have a minimum yield of 1.
|
||||
@@ -253,39 +288,39 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
C.value = yield
|
||||
|
||||
/obj/item/seeds/proc/set_lifespan(adjustamt)
|
||||
lifespan = CLAMP(adjustamt, 10, 100)
|
||||
lifespan = clamp(adjustamt, 10, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan)
|
||||
if(C)
|
||||
C.value = lifespan
|
||||
|
||||
/obj/item/seeds/proc/set_endurance(adjustamt)
|
||||
endurance = CLAMP(adjustamt, 10, 100)
|
||||
endurance = clamp(adjustamt, 10, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance)
|
||||
if(C)
|
||||
C.value = endurance
|
||||
|
||||
/obj/item/seeds/proc/set_production(adjustamt)
|
||||
if(yield != -1)
|
||||
production = CLAMP(adjustamt, 1, 10)
|
||||
production = clamp(adjustamt, 1, 10)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production)
|
||||
if(C)
|
||||
C.value = production
|
||||
|
||||
/obj/item/seeds/proc/set_potency(adjustamt)
|
||||
if(potency != -1)
|
||||
potency = CLAMP(adjustamt, 0, 100)
|
||||
potency = clamp(adjustamt, 0, 100)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency)
|
||||
if(C)
|
||||
C.value = potency
|
||||
|
||||
/obj/item/seeds/proc/set_weed_rate(adjustamt)
|
||||
weed_rate = CLAMP(adjustamt, 0, 10)
|
||||
weed_rate = clamp(adjustamt, 0, 10)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate)
|
||||
if(C)
|
||||
C.value = weed_rate
|
||||
|
||||
/obj/item/seeds/proc/set_weed_chance(adjustamt)
|
||||
weed_chance = CLAMP(adjustamt, 0, 67)
|
||||
weed_chance = clamp(adjustamt, 0, 67)
|
||||
var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance)
|
||||
if(C)
|
||||
C.value = weed_chance
|
||||
@@ -320,9 +355,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
continue
|
||||
all_traits += " [traits.get_name()]"
|
||||
text += "- Plant Traits:[all_traits]\n"
|
||||
|
||||
text += "*---------*"
|
||||
|
||||
return text
|
||||
|
||||
/obj/item/seeds/proc/on_chem_reaction(datum/reagents/S) //in case seeds have some special interaction with special chems
|
||||
@@ -331,19 +364,73 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
/obj/item/seeds/attackby(obj/item/O, mob/user, params)
|
||||
if (istype(O, /obj/item/plant_analyzer))
|
||||
to_chat(user, "<span class='info'>*---------*\n This is \a <span class='name'>[src]</span>.</span>")
|
||||
var/text = get_analyzer_text()
|
||||
if(text)
|
||||
to_chat(user, "<span class='notice'>[text]</span>")
|
||||
|
||||
var/text
|
||||
var/obj/item/plant_analyzer/P_analyzer = O
|
||||
if(!P_analyzer.scan_mode)
|
||||
text = get_analyzer_text()
|
||||
if(text)
|
||||
to_chat(user, "<span class='notice'>[text]</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>- Plant Reagents -</span>")
|
||||
to_chat(user, "<span class='notice'>*---------*</span>")
|
||||
if(!LAZYLEN(reagents_add))
|
||||
to_chat(user, "<span class='notice'>- No reagents -</span>")
|
||||
to_chat(user, "*---------*")
|
||||
return
|
||||
for(var/datum/plant_gene/reagent/G in genes)
|
||||
to_chat(user, "<span class='notice'>- [G.get_name()] -</span>")
|
||||
to_chat(user, "<span class='notice'>*---------*</span>")
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/pen))
|
||||
var/choice = input("What would you like to change?") in list("Plant Name", "Seed Description", "Product Description", "Cancel")
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
switch(choice)
|
||||
if("Plant Name")
|
||||
var/newplantname = reject_bad_text(stripped_input(user, "Write a new plant name:", name, plantname))
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
if (length(newplantname) > 20)
|
||||
to_chat(user, "That name is too long!")
|
||||
return
|
||||
if(!newplantname)
|
||||
to_chat(user, "That name is invalid.")
|
||||
return
|
||||
else
|
||||
name = "[lowertext(newplantname)]"
|
||||
plantname = newplantname
|
||||
if("Seed Description")
|
||||
var/newdesc = stripped_input(user, "Write a new description:", name, desc)
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
if (length(newdesc) > 180)
|
||||
to_chat(user, "That description is too long!")
|
||||
return
|
||||
if(!newdesc)
|
||||
to_chat(user, "That description is invalid.")
|
||||
return
|
||||
else
|
||||
desc = newdesc
|
||||
if("Product Description")
|
||||
if(product && !productdesc)
|
||||
productdesc = initial(product.desc)
|
||||
var/newproductdesc = stripped_input(user, "Write a new description:", name, productdesc)
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
if (length(newproductdesc) > 180)
|
||||
to_chat(user, "That description is too long!")
|
||||
return
|
||||
if(!newproductdesc)
|
||||
to_chat(user, "That description is invalid.")
|
||||
return
|
||||
else
|
||||
productdesc = newproductdesc
|
||||
else
|
||||
return
|
||||
|
||||
..() // Fallthrough to item/attackby() so that bags can pick seeds up
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Checks plants for broken tray icons. Use Advanced Proc Call to activate.
|
||||
// Maybe some day it would be used as unit test.
|
||||
/proc/check_plants_growth_stages_icons()
|
||||
@@ -393,10 +480,16 @@ obj/item/seeds/proc/is_gene_forbidden(typepath)
|
||||
/obj/item/seeds/proc/add_random_traits(lower = 0, upper = 2)
|
||||
var/amount_random_traits = rand(lower, upper)
|
||||
for(var/i in 1 to amount_random_traits)
|
||||
var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)))
|
||||
var/random_trait
|
||||
if(!istype(src, /obj/item/seeds/random) || prob(30)) //70% chance to not get modified_color when rolling traits as strange seeds
|
||||
random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)))
|
||||
else
|
||||
random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)-typesof(/datum/plant_gene/trait/modified_color)))
|
||||
|
||||
var/datum/plant_gene/trait/T = new random_trait
|
||||
if(T.can_add(src) && !is_gene_forbidden(T))
|
||||
if(T.can_add(src) && !is_gene_forbidden(random_trait))
|
||||
genes += T
|
||||
T.apply_vars(src)
|
||||
else
|
||||
qdel(T)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
var/datum/action/innate/regenerate_limbs/regenerate_limbs
|
||||
var/datum/action/innate/slime_change/slime_change //CIT CHANGE
|
||||
liked_food = TOXIC | MEAT
|
||||
toxic_food = null
|
||||
toxic_food = ANTITOXIC
|
||||
coldmod = 6 // = 3x cold damage
|
||||
heatmod = 0.5 // = 1/4x heat damage
|
||||
burnmod = 0.5 // = 1/2x generic burn damage
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 50
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
grind_results = list(/datum/reagent/cellulose = 2)
|
||||
|
||||
var/info //What's actually written on the paper.
|
||||
var/info_links //A different version of the paper which includes html links at fields and EOF
|
||||
|
||||
@@ -942,7 +942,41 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of bungo juice"
|
||||
glass_desc = "Exotic! You feel like you are on vacation already."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/aloejuice
|
||||
name = "Aloe Juice"
|
||||
color = "#A3C48B"
|
||||
description = "A healthy and refreshing juice."
|
||||
taste_description = "vegetable"
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of aloe juice"
|
||||
glass_desc = "A healthy and refreshing juice."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M)
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(-1, 0)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/banana_peel
|
||||
name = "Pulped Banana Peel"
|
||||
description = "Okay, so you put a banana peel in a grinder... Why, exactly?"
|
||||
color = "#863333" // rgb: 175, 175, 0
|
||||
reagent_state = SOLID
|
||||
taste_description = "stringy, bitter pulp"
|
||||
glass_name = "glass of banana peel pulp"
|
||||
glass_desc = "Okay, so you put a banana peel in a grinder... Why, exactly?"
|
||||
|
||||
/datum/reagent/consumable/baked_banana_peel
|
||||
name = "Baked Banana Peel Powder"
|
||||
description = "You took a banana peel... pulped it... baked it... Where are you going with this?"
|
||||
color = "#863333" // rgb: 175, 175, 0
|
||||
reagent_state = SOLID
|
||||
taste_description = "bitter powder"
|
||||
glass_name = "glass of banana peel powder"
|
||||
description = "You took a banana peel... pulped it... baked it... Where are you going with this?"
|
||||
|
||||
/datum/reagent/consumable/wockyslush
|
||||
name = "Wocky Slush"
|
||||
|
||||
@@ -789,7 +789,7 @@
|
||||
|
||||
/datum/reagent/consumable/secretsauce
|
||||
name = "secret sauce"
|
||||
description = "What could it be."
|
||||
description = "What could it be?"
|
||||
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||
color = "#792300"
|
||||
taste_description = "indescribable"
|
||||
@@ -817,5 +817,13 @@
|
||||
description = "Sweet, Smokey, Savory, and gets everywhere. Perfect for Grilling."
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#78280A" // rgb: 120 40, 10
|
||||
taste_mult = 2.5 //sugar's 1.5, capsacin's 1.5, so a good middle ground.
|
||||
taste_mult = 2.25 //sugar's 1.5, capsacin's 1.5, so a good middle ground.
|
||||
taste_description = "smokey sweetness"
|
||||
|
||||
/datum/reagent/consumable/laughsyrup
|
||||
name = "Laughin' Syrup"
|
||||
description = "The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!"
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#803280"
|
||||
taste_mult = 2
|
||||
taste_description = "fizzy sweetness"
|
||||
|
||||
@@ -1464,3 +1464,58 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/coagulant
|
||||
name = "Sanguirite"
|
||||
description = "A proprietary coagulant used to help bleeding wounds clot faster."
|
||||
reagent_state = LIQUID
|
||||
color = "#bb2424"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 20
|
||||
/// How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound
|
||||
var/clot_rate = 0.25
|
||||
/// If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting)
|
||||
var/clot_coeff_per_wound = 0.9
|
||||
|
||||
/* //Residue from porting citadel's botany things. We don't have wounds yet (i think); uncomment this when it becomes a thing
|
||||
/datum/reagent/medicine/coagulant/on_mob_life(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!M.blood_volume || !M.all_wounds)
|
||||
return
|
||||
|
||||
var/effective_clot_rate = clot_rate
|
||||
|
||||
for(var/i in M.all_wounds)
|
||||
var/datum/wound/iter_wound = i
|
||||
if(iter_wound.blood_flow)
|
||||
effective_clot_rate *= clot_coeff_per_wound
|
||||
|
||||
for(var/i in M.all_wounds)
|
||||
var/datum/wound/iter_wound = i
|
||||
iter_wound.blood_flow = max(0, iter_wound.blood_flow - effective_clot_rate)
|
||||
*/
|
||||
|
||||
/datum/reagent/medicine/coagulant/overdose_process(mob/living/M)
|
||||
. = ..()
|
||||
if(!M.blood_volume)
|
||||
return
|
||||
|
||||
if(prob(15))
|
||||
M.losebreath += rand(2,4)
|
||||
M.adjustOxyLoss(rand(1,3))
|
||||
if(prob(30))
|
||||
to_chat(M, "<span class='danger'>You can feel your blood clotting up in your veins!</span>")
|
||||
else if(prob(10))
|
||||
to_chat(M, "<span class='userdanger'>You feel like your blood has stopped moving!</span>")
|
||||
if(prob(50))
|
||||
var/obj/item/organ/lungs/our_lungs = M.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
our_lungs.applyOrganDamage(1)
|
||||
else
|
||||
var/obj/item/organ/heart/our_heart = M.getorganslot(ORGAN_SLOT_HEART)
|
||||
our_heart.applyOrganDamage(1)
|
||||
|
||||
// can be synthesized on station rather than bought. made by grinding a banana peel, heating it up, then mixing the banana peel powder with salglu
|
||||
/datum/reagent/medicine/coagulant/weak
|
||||
name = "Synthi-Sanguirite"
|
||||
description = "A synthetic coagulant used to help bleeding wounds clot faster. Not quite as effective as name brand Sanguirite, especially on patients with lots of cuts."
|
||||
clot_coeff_per_wound = 0.8
|
||||
|
||||
@@ -172,6 +172,14 @@
|
||||
color = BLOOD_COLOR_BUG // Bug colored, I guess.
|
||||
pH = 7.25
|
||||
|
||||
/datum/reagent/blood/tomato
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
|
||||
name = "Tomato Blood"
|
||||
description = "This highly resembles blood, but it doesnt actually function like it, resembling more ketchup, with a more blood-like consistency."
|
||||
taste_description = "sap" //Like tree sap?
|
||||
pH = 7.45
|
||||
value = 0
|
||||
|
||||
|
||||
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(10))
|
||||
@@ -1612,16 +1620,21 @@
|
||||
tox_prob = 15
|
||||
pH = 1
|
||||
|
||||
/datum/reagent/plantnutriment/endurogrow
|
||||
name = "Enduro Grow"
|
||||
description = "A specialized nutriment, which decreases product quantity and potency, but strengthens the plants endurance."
|
||||
color = "#a06fa7" // RBG: 160, 111, 167
|
||||
tox_prob = 15
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/reagent/plantnutriment/liquidearthquake
|
||||
name = "Liquid Earthquake"
|
||||
description = "A specialized nutriment, which increases the plant's production speed, as well as its susceptibility to weeds."
|
||||
color = "#912e00" // RBG: 145, 46, 0
|
||||
tox_prob = 25
|
||||
|
||||
|
||||
// GOON OTHERS
|
||||
|
||||
|
||||
|
||||
/datum/reagent/oil
|
||||
name = "Oil"
|
||||
description = "Burns in a small smoky fire, mostly used to get Ash."
|
||||
@@ -2234,6 +2247,13 @@
|
||||
M.adjustArousalLoss(3)
|
||||
..()
|
||||
|
||||
/datum/reagent/cellulose
|
||||
name = "Cellulose Fibers"
|
||||
description = "A crystaline polydextrose polymer, plants swear by this stuff."
|
||||
reagent_state = SOLID
|
||||
color = "#E6E6DA"
|
||||
taste_mult = 0
|
||||
|
||||
// Adding new mutation toxin stuff from /code/modules/reagent/chemistry/recipes/slime_extracts.dm
|
||||
//Some other stuff like moth and felinid ( /datum/reagent/mutationtoxin/moth and /datum/reagent/mutationtoxin/felinid ) already exists. - Chemlight
|
||||
/datum/reagent/mutationtoxin/mammal
|
||||
|
||||
@@ -50,6 +50,20 @@
|
||||
results = list(/datum/reagent/medicine/salglu_solution = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1)
|
||||
|
||||
/datum/chemical_reaction/baked_banana_peel
|
||||
name = "Baked Banana Peel"
|
||||
results = list(/datum/reagent/consumable/baked_banana_peel = 1)
|
||||
required_temp = 413.15
|
||||
required_reagents = list(/datum/reagent/consumable/banana_peel = 1)
|
||||
mix_message = "The pulp dries up and takes on a powdery state!"
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/coagulant_weak
|
||||
name = "Weak Coagulant"
|
||||
results = list(/datum/reagent/medicine/coagulant/weak = 3)
|
||||
required_reagents = list(/datum/reagent/medicine/salglu_solution = 2, /datum/reagent/consumable/baked_banana_peel = 1)
|
||||
mob_react = FALSE
|
||||
|
||||
/datum/chemical_reaction/mine_salve
|
||||
name = "Miner's Salve"
|
||||
id = /datum/reagent/medicine/mine_salve
|
||||
|
||||
@@ -69,6 +69,11 @@
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/stack/sheet/mineral/gold(location)
|
||||
|
||||
/datum/chemical_reaction/cellulose_carbonization
|
||||
results = list(/datum/reagent/carbon = 1)
|
||||
required_reagents = list(/datum/reagent/cellulose = 1)
|
||||
required_temp = 512
|
||||
|
||||
/datum/chemical_reaction/capsaicincondensation
|
||||
name = "Capsaicincondensation"
|
||||
id = /datum/reagent/consumable/condensedcapsaicin
|
||||
@@ -235,7 +240,7 @@
|
||||
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
|
||||
if(D)
|
||||
D.Evolve(level_min, level_max)
|
||||
|
||||
|
||||
/datum/chemical_reaction/mix_virus/mix_virus_2
|
||||
|
||||
name = "Mix Virus 2"
|
||||
|
||||
@@ -310,5 +310,5 @@
|
||||
item_state = "plantbgone"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
|
||||
volume = 100
|
||||
list_reagents = list(/datum/reagent/toxin/plantbgone = 100)
|
||||
volume = 50
|
||||
list_reagents = list(/datum/reagent/toxin/plantbgone = 50)
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
///////Biogenerator Designs ///////
|
||||
///////////////////////////////////
|
||||
|
||||
//Please be wary to not add inorganic items to the results such as generic glass bottles and metal.
|
||||
//as they kind of defeat the design of this feature.
|
||||
|
||||
/datum/design/milk
|
||||
name = "10 Milk"
|
||||
name = "10u Milk"
|
||||
id = "milk"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 20)
|
||||
@@ -11,29 +14,13 @@
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/cream
|
||||
name = "10 Cream"
|
||||
name = "10u Cream"
|
||||
id = "cream"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
make_reagents = list(/datum/reagent/consumable/cream = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/milk_carton
|
||||
name = "Milk Carton"
|
||||
id = "milk_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 100)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/milk
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/cream_carton
|
||||
name = "Cream Carton"
|
||||
id = "cream_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/cream
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/black_pepper
|
||||
name = "10u Black Pepper"
|
||||
id = "black_pepper"
|
||||
@@ -42,13 +29,12 @@
|
||||
make_reagents = list(/datum/reagent/consumable/blackpepper = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/pepper_mill
|
||||
name = "Pepper Mill"
|
||||
id = "pepper_mill"
|
||||
/datum/design/enzyme
|
||||
name = "10u Universal Enzyme"
|
||||
id = "enzyme"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/peppermill
|
||||
make_reagents = list()
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
make_reagents = list(/datum/reagent/consumable/enzyme = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/monkey_cube
|
||||
@@ -68,52 +54,92 @@
|
||||
category = list("initial", "Food")
|
||||
|
||||
/datum/design/ez_nut
|
||||
name = "E-Z Nutrient"
|
||||
name = "10u E-Z Nutrient"
|
||||
id = "ez_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 10)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/ez
|
||||
materials = list(MAT_BIOMASS = 2)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/eznutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/l4z_nut
|
||||
name = "Left 4 Zed"
|
||||
name = "10u Left 4 Zed"
|
||||
id = "l4z_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 20)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/l4z
|
||||
materials = list(MAT_BIOMASS = 4)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/rh_nut
|
||||
name = "Robust Harvest"
|
||||
name = "10u Robust Harvest"
|
||||
id = "rh_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 5)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/ammonia
|
||||
name = "10u Ammonia"
|
||||
id = "ammonia_biogen"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 25)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh
|
||||
make_reagents = list(/datum/reagent/ammonia = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/saltpetre
|
||||
name = "10u Saltpetre"
|
||||
id = "saltpetre_biogen"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 75)
|
||||
make_reagents = list(/datum/reagent/saltpetre = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/end_gro
|
||||
name = "30u Enduro Grow"
|
||||
id = "end_gro"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/endurogrow = 30)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/liq_earth
|
||||
name = "30u Liquid Earthquake"
|
||||
id = "liq_earth"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/liquidearthquake = 30)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/mutagen //This is here because I'd like it if botany wouldn't completely rely on chemical dispensers to make fancy things
|
||||
name = "10u Unstable Mutagen"
|
||||
id = "fabricated_mutagen"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
make_reagents = list(/datum/reagent/toxin/mutagen = 10) //suffer
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/weed_killer
|
||||
name = "Weed Killer"
|
||||
name = "10u Weed Killer"
|
||||
id = "weed_killer"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller
|
||||
materials = list(MAT_BIOMASS = 10)
|
||||
make_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/pest_spray
|
||||
name = "Pest Killer"
|
||||
name = "10u Pest Killer"
|
||||
id = "pest_spray"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller
|
||||
materials = list(MAT_BIOMASS = 10)
|
||||
make_reagents = list(/datum/reagent/toxin/pestkiller = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/botany_bottle
|
||||
name = "Empty Bottle"
|
||||
id = "botany_bottle"
|
||||
/datum/design/empty_carton
|
||||
name = "Small Empty Carton Box"
|
||||
id = "empty_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 5)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty
|
||||
category = list("initial", "Botany Chemicals")
|
||||
materials = list(MAT_BIOMASS = 15)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/bio_carton
|
||||
category = list("initial", "Organic Materials")
|
||||
|
||||
/datum/design/cloth
|
||||
name = "Roll of Cloth"
|
||||
@@ -163,6 +189,14 @@
|
||||
build_path = /obj/item/storage/belt/janitor
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
/datum/design/plantbelt
|
||||
name = "Botanical Belt"
|
||||
id = "plantbelt"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
build_path = /obj/item/storage/belt/botany
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
/datum/design/s_holster
|
||||
name = "Shoulder Holster"
|
||||
id = "s_holster"
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
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"
|
||||
products = list(/obj/item/seeds/ambrosia = 3,
|
||||
/obj/item/seeds/apple = 3,
|
||||
/obj/item/seeds/banana = 3,
|
||||
/obj/item/seeds/berry = 3,
|
||||
products = list(/obj/item/seeds/aloe = 3,
|
||||
/obj/item/seeds/ambrosia = 3,
|
||||
/obj/item/seeds/apple = 3,
|
||||
/obj/item/seeds/banana = 3,
|
||||
/obj/item/seeds/berry = 3,
|
||||
/obj/item/seeds/cabbage = 3,
|
||||
/obj/item/seeds/carrot = 3,
|
||||
/obj/item/seeds/cherry = 3,
|
||||
/obj/item/seeds/chanter = 3,
|
||||
/obj/item/seeds/chanterelle = 3,
|
||||
/obj/item/seeds/chili = 3,
|
||||
/obj/item/seeds/cocoapod = 3,
|
||||
/obj/item/seeds/coconut = 3,
|
||||
@@ -19,7 +20,6 @@
|
||||
/obj/item/seeds/cotton = 3,
|
||||
/obj/item/seeds/corn = 3,
|
||||
/obj/item/seeds/eggplant = 3,
|
||||
/obj/item/seeds/garlic = 3,
|
||||
/obj/item/seeds/grape = 3,
|
||||
/obj/item/seeds/grass = 3,
|
||||
/obj/item/seeds/lemon = 3,
|
||||
@@ -28,6 +28,7 @@
|
||||
/obj/item/seeds/orange = 3,
|
||||
/obj/item/seeds/peach = 3,
|
||||
/obj/item/seeds/peanutseed = 3,
|
||||
/obj/item/seeds/peas = 3,
|
||||
/obj/item/seeds/pineapple = 3,
|
||||
/obj/item/seeds/potato = 3,
|
||||
/obj/item/seeds/poppy = 3,
|
||||
@@ -46,15 +47,21 @@
|
||||
/obj/item/seeds/watermelon = 3,
|
||||
/obj/item/seeds/wheat = 3,
|
||||
/obj/item/seeds/whitebeet = 3)
|
||||
contraband = list(/obj/item/seeds/amanita = 2,
|
||||
/obj/item/seeds/glowshroom = 2,
|
||||
/obj/item/seeds/liberty = 2,
|
||||
/obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2,
|
||||
/obj/item/seeds/reishi = 2,
|
||||
/obj/item/seeds/cannabis = 3,
|
||||
/obj/item/seeds/starthistle = 2,
|
||||
/obj/item/seeds/random = 2)
|
||||
|
||||
contraband=list(/obj/item/seeds/amanita = 2,
|
||||
/obj/item/seeds/glowshroom = 2,
|
||||
/obj/item/seeds/liberty = 2,
|
||||
/obj/item/seeds/nettle = 2,
|
||||
/obj/item/seeds/plump = 2,
|
||||
/obj/item/seeds/reishi = 2,
|
||||
/obj/item/seeds/cannabis = 3,
|
||||
/obj/item/seeds/starthistle = 2,
|
||||
/obj/item/seeds/random = 2)
|
||||
premium = list(/obj/item/reagent_containers/spray/waterflower = 1)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/vending_refill/hydroseeds
|
||||
|
||||
/obj/item/vending_refill/hydroseeds
|
||||
machine_name = "MegaSeed"
|
||||
icon_state = "refill_hydro"
|
||||
|
||||
@@ -18,3 +18,8 @@
|
||||
/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
refill_canister = /obj/item/vending_refill/hydronutrients
|
||||
|
||||
/obj/item/vending_refill/hydronutrients
|
||||
machine_name = "NutriMax"
|
||||
icon_state = "refill_hydro"
|
||||
|
||||
Reference in New Issue
Block a user