mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 00:23:29 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into construction
# Conflicts: # _maps/map_files/cyberiad/cyberiad.dmm
This commit is contained in:
@@ -61,7 +61,7 @@
|
||||
to_chat(user, "<span class='warning'> [src] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'> You fill [src] with [trans] units of the contents of [target].</span>")
|
||||
|
||||
else if(target.is_open_container()) //Something like a glass. Player probably wants to transfer TO it.
|
||||
@@ -332,7 +332,7 @@
|
||||
desc = "A cup with the british flag emblazoned on it."
|
||||
icon_state = "britcup"
|
||||
volume = 30
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/mushroom_bowl
|
||||
name = "mushroom bowl"
|
||||
desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point."
|
||||
|
||||
@@ -1213,7 +1213,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(O,/obj/structure/sink) && !wrapped)
|
||||
if(istype(O, /obj/structure/sink))
|
||||
to_chat(user, "<span class='notice'>You place [src] under a stream of water...</span>")
|
||||
user.drop_item()
|
||||
forceMove(get_turf(O))
|
||||
@@ -1222,22 +1222,16 @@
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = O
|
||||
X.monkeys++
|
||||
to_chat(user, "<span class='notice'>You feed [src] to the [X]. It now has [X.monkeys] monkey cubes stored.</span>")
|
||||
user.drop_item()
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user)
|
||||
if(wrapped)
|
||||
Unwrap(user)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/water_act(volume, temperature)
|
||||
if(volume >= 5)
|
||||
return Expand()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wash(mob/user, atom/source)
|
||||
if(wrapped)
|
||||
..()
|
||||
return
|
||||
if(do_after(user, 40, target = source))
|
||||
return 1
|
||||
|
||||
@@ -1247,49 +1241,22 @@
|
||||
new/mob/living/carbon/human(get_turf(src),monkey_type)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user)
|
||||
icon_state = "monkeycube"
|
||||
desc = "Just add water!"
|
||||
to_chat(user, "<span class='notice'>You unwrap the cube.</span>")
|
||||
wrapped = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped
|
||||
desc = "Still wrapped in some paper."
|
||||
icon_state = "monkeycubewrap"
|
||||
wrapped = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
name = "farwa cube"
|
||||
monkey_type = "Farwa"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube
|
||||
name = "farwa cube"
|
||||
monkey_type = "Farwa"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube
|
||||
name = "wolpin cube"
|
||||
monkey_type = "Wolpin"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube
|
||||
name = "wolpin cube"
|
||||
monkey_type = "Wolpin"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube
|
||||
name = "stok cube"
|
||||
monkey_type = "Stok"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube
|
||||
name = "stok cube"
|
||||
monkey_type = "Stok"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube
|
||||
name = "neaera cube"
|
||||
monkey_type = "Neara"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube
|
||||
name = "neaera cube"
|
||||
monkey_type = "Neara"
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spellburger
|
||||
name = "Spell Burger"
|
||||
|
||||
@@ -219,10 +219,10 @@
|
||||
var/S = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents)
|
||||
S += 5
|
||||
if(I.reagents.get_reagent_amount("nutriment") < 0.1)
|
||||
if(I.reagents.get_reagent_amount("nutriment")+I.reagents.get_reagent_amount("plantmatter") < 0.1)
|
||||
points += 1*productivity
|
||||
else
|
||||
points += I.reagents.get_reagent_amount("nutriment")*10*productivity
|
||||
points += (I.reagents.get_reagent_amount("nutriment")+I.reagents.get_reagent_amount("plantmatter"))*10*productivity
|
||||
qdel(I)
|
||||
if(S)
|
||||
processing = 1
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
icon_dead = "ambrosia-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/ambrosia/deus)
|
||||
reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05, "toxin" = 0.1)
|
||||
reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.05, "toxin" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris
|
||||
seed = /obj/item/seeds/ambrosia
|
||||
@@ -40,7 +40,7 @@
|
||||
plantname = "Ambrosia Deus"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
|
||||
mutatelist = list(/obj/item/seeds/ambrosia/gaia)
|
||||
reagents_add = list("weak_omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("weak_omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
rarity = 40
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
|
||||
@@ -80,7 +80,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/cruciatus
|
||||
potency = 10
|
||||
mutatelist = list()
|
||||
reagents_add = list("thc" = 0.15, "kelotane" = 0.15, "bicaridine" = 0.1, "bath_salts" = 0.20, "nutriment" = 0.05)
|
||||
reagents_add = list("thc" = 0.15, "kelotane" = 0.15, "bicaridine" = 0.1, "bath_salts" = 0.20, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/cruciatus
|
||||
seed = /obj/item/seeds/ambrosia/cruciatus
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_dead = "apple-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/apple/gold)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
|
||||
seed = /obj/item/seeds/apple
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/seeds/apple/poisoned
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
|
||||
mutatelist = list()
|
||||
reagents_add = list("cyanide" = 0.5, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("cyanide" = 0.5, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 50 // Source of cyanide, and hard (almost impossible) to obtain normally.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
|
||||
@@ -45,7 +45,7 @@
|
||||
maturation = 10
|
||||
production = 10
|
||||
mutatelist = list()
|
||||
reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 40 // Alchemy!
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_dead = "banana-dead"
|
||||
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace)
|
||||
reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
|
||||
reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.02)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana
|
||||
seed = /obj/item/seeds/banana
|
||||
@@ -92,7 +92,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("singulo" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
|
||||
reagents_add = list("singulo" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.02)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_dead = "soybean-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/soya/koi)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
|
||||
seed = /obj/item/seeds/soya
|
||||
@@ -36,7 +36,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
|
||||
potency = 10
|
||||
mutatelist = list()
|
||||
reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_dead = "berry-dead" // Same for the dead icon
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries
|
||||
seed = /obj/item/seeds/berry
|
||||
@@ -35,7 +35,7 @@
|
||||
plantname = "Poison-Berry Bush"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
|
||||
mutatelist = list(/obj/item/seeds/berry/death)
|
||||
reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 10 // Mildly poisonous berries are common in reality
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
|
||||
@@ -56,7 +56,7 @@
|
||||
lifespan = 30
|
||||
potency = 50
|
||||
mutatelist = list()
|
||||
reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/death
|
||||
@@ -78,7 +78,7 @@
|
||||
endurance = 25
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/glow/berry , /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow
|
||||
@@ -108,7 +108,7 @@
|
||||
icon_dead = "cherry-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/cherry/blue)
|
||||
reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
|
||||
reagents_add = list("plantmatter" = 0.07, "sugar" = 0.07)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
|
||||
seed = /obj/item/seeds/cherry
|
||||
@@ -128,7 +128,7 @@
|
||||
plantname = "Blue Cherry Tree"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
|
||||
mutatelist = list()
|
||||
reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
|
||||
reagents_add = list("plantmatter" = 0.07, "sugar" = 0.07)
|
||||
rarity = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
|
||||
@@ -158,7 +158,7 @@
|
||||
icon_dead = "grape-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/grape/green)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1, "sugar" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes
|
||||
seed = /obj/item/seeds/grape
|
||||
@@ -177,7 +177,7 @@
|
||||
species = "greengrape"
|
||||
plantname = "Green-Grape Vine"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
|
||||
reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
|
||||
reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1, "sugar" = 0.1)
|
||||
// No rarity: technically it's a beneficial mutant, but it's not exactly "new"...
|
||||
mutatelist = list()
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
potency = 15
|
||||
icon_dead = "wheat-dead"
|
||||
mutatelist = list(/obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/meat)
|
||||
reagents_add = list("nutriment" = 0.04)
|
||||
reagents_add = list("plantmatter" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat
|
||||
seed = /obj/item/seeds/wheat
|
||||
@@ -70,6 +70,7 @@
|
||||
plantname = "Meatwheat"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/meatwheat
|
||||
mutatelist = list()
|
||||
reagents_add = list("protein" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/meatwheat
|
||||
name = "meatwheat"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_dead = "chili-dead" // Same for the dead icon
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost)
|
||||
reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04)
|
||||
reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "plantmatter" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili
|
||||
seed = /obj/item/seeds/chili
|
||||
@@ -39,7 +39,7 @@
|
||||
production = 4
|
||||
rarity = 20
|
||||
mutatelist = list()
|
||||
reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02)
|
||||
reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "plantmatter" = 0.02)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
|
||||
seed = /obj/item/seeds/chili/ice
|
||||
@@ -64,7 +64,7 @@
|
||||
yield = 3
|
||||
rarity = 20
|
||||
mutatelist = list()
|
||||
reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04)
|
||||
reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "plantmatter" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili
|
||||
seed = /obj/item/seeds/chili/ghost
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/orange)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
|
||||
seed = /obj/item/seeds/lime
|
||||
@@ -47,7 +47,7 @@
|
||||
icon_dead = "lime-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/lime)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange
|
||||
seed = /obj/item/seeds/orange
|
||||
@@ -72,7 +72,7 @@
|
||||
icon_dead = "lime-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/firelemon)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon
|
||||
seed = /obj/item/seeds/lemon
|
||||
@@ -96,7 +96,7 @@
|
||||
lifespan = 55
|
||||
endurance = 45
|
||||
yield = 4
|
||||
reagents_add = list("nutriment" = 0.05)
|
||||
reagents_add = list("plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/firelemon
|
||||
seed = /obj/item/seeds/firelemon
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_dead = "cocoapod-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/cocoapod/vanillapod)
|
||||
reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1)
|
||||
reagents_add = list("cocoa" = 0.25, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
|
||||
seed = /obj/item/seeds/cocoapod
|
||||
@@ -36,7 +36,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list()
|
||||
reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1)
|
||||
reagents_add = list("vanilla" = 0.25, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
|
||||
seed = /obj/item/seeds/cocoapod/vanillapod
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes
|
||||
icon_dead = "corn-dead" // Same for the dead icon
|
||||
mutatelist = list(/obj/item/seeds/corn/snapcorn)
|
||||
reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn
|
||||
seed = /obj/item/seeds/corn
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_dead = "eggplant-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/eggplant/eggy)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
|
||||
seed = /obj/item/seeds/eggplant
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_grow = "poppy-grow"
|
||||
icon_dead = "poppy-dead"
|
||||
mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily)
|
||||
reagents_add = list("bicaridine" = 0.2, "nutriment" = 0.05)
|
||||
reagents_add = list("bicaridine" = 0.2, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
|
||||
seed = /obj/item/seeds/poppy
|
||||
@@ -78,7 +78,7 @@
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
reagents_add = list("nutriment" = 0.04)
|
||||
reagents_add = list("plantmatter" = 0.04)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
|
||||
seed = /obj/item/seeds/harebell
|
||||
@@ -106,7 +106,7 @@
|
||||
icon_grow = "sunflower-grow"
|
||||
icon_dead = "sunflower-dead"
|
||||
mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower)
|
||||
reagents_add = list("cornoil" = 0.08, "nutriment" = 0.04)
|
||||
reagents_add = list("cornoil" = 0.08, "plantmatter" = 0.04)
|
||||
|
||||
/obj/item/weapon/grown/sunflower // FLOWER POWER!
|
||||
seed = /obj/item/seeds/sunflower
|
||||
@@ -134,7 +134,7 @@
|
||||
plantname = "Moonflowers"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
|
||||
mutatelist = list()
|
||||
reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02)
|
||||
reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "plantmatter" = 0.02)
|
||||
rarity = 15
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
|
||||
@@ -155,7 +155,7 @@
|
||||
plantname = "Novaflowers"
|
||||
product = /obj/item/weapon/grown/novaflower
|
||||
mutatelist = list()
|
||||
reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0)
|
||||
reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "plantmatter" = 0)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/grown/novaflower
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_dead = "grass-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/grass/carpet)
|
||||
reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05)
|
||||
reagents_add = list("plantmatter" = 0.02, "hydrogen" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grass
|
||||
seed = /obj/item/seeds/grass
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
maturation = 3
|
||||
growthstages = 1
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
reagents_add = list("nutriment" = 0.1)
|
||||
reagents_add = list("styptic_powder" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/comfrey
|
||||
seed = /obj/item/seeds/comfrey
|
||||
@@ -35,7 +35,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/aloe
|
||||
yield = 2
|
||||
icon_dead = "ambrosia-dead"
|
||||
reagents_add = list("nutriment" = 0.1)
|
||||
reagents_add = list("silver_sulfadiazine" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/aloe
|
||||
seed = /obj/item/seeds/aloe
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
growthstages = 4
|
||||
rarity = 30
|
||||
var/list/mutations = list()
|
||||
reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02)
|
||||
reagents_add = list("charcoal" = 0.04, "plantmatter" = 0.02)
|
||||
|
||||
/obj/item/seeds/kudzu/Copy()
|
||||
var/obj/item/seeds/kudzu/S = ..()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
icon_dead = "watermelon-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/watermelon/holy)
|
||||
reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2)
|
||||
reagents_add = list("water" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
|
||||
seed = /obj/item/seeds/watermelon
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/replicapod)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
|
||||
seed = /obj/item/seeds/cabbage
|
||||
@@ -106,7 +106,7 @@
|
||||
plantname = "Cherry Bomb Tree"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb
|
||||
mutatelist = list()
|
||||
reagents_add = list("nutriment" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7)
|
||||
reagents_add = list("plantmatter" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7)
|
||||
rarity = 60 //See above
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherry_bomb
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
maturation = 10
|
||||
production = 1
|
||||
yield = 1
|
||||
reagents_add = list("nutriment" = 0.1)
|
||||
reagents_add = list("plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/nymph_pod
|
||||
seed = /obj/item/seeds/nymph
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
icon_grow = "potato-grow"
|
||||
icon_dead = "potato-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("nutriment" = 0.1)
|
||||
reagents_add = list("plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/peanuts
|
||||
seed = /obj/item/seeds/peanuts
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_dead = "potato-dead"
|
||||
genes = list(/datum/plant_gene/trait/battery)
|
||||
mutatelist = list(/obj/item/seeds/potato/sweet)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato
|
||||
seed = /obj/item/seeds/potato
|
||||
@@ -56,7 +56,7 @@
|
||||
plantname = "Sweet Potato Plants"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
|
||||
mutatelist = list()
|
||||
reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1)
|
||||
reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
|
||||
seed = /obj/item/seeds/potato/sweet
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_dead = "pumpkin-dead"
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/pumpkin/blumpkin)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
|
||||
seed = /obj/item/seeds/pumpkin
|
||||
@@ -42,7 +42,7 @@
|
||||
plantname = "Blumpkin Vines"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
|
||||
mutatelist = list()
|
||||
reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "nutriment" = 0.2)
|
||||
reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "plasma" = 0.1, "plantmatter" = 0.2)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
|
||||
|
||||
@@ -91,6 +91,8 @@
|
||||
podman.ckey = ckey_holder
|
||||
podman.gender = blood_gender
|
||||
podman.faction |= factions
|
||||
podman.faction |= "plants"
|
||||
podman.faction |= "vines" //Pod grown Diona are allied with plants and vines alike.
|
||||
|
||||
else //else, one packet of seeds. maybe two
|
||||
var/seed_count = 1
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
mutatelist = list(/obj/item/seeds/carrot/parsnip)
|
||||
reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "nutriment" = 0.05)
|
||||
reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot
|
||||
seed = /obj/item/seeds/carrot
|
||||
@@ -43,7 +43,7 @@
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
|
||||
icon_dead = "carrot-dead"
|
||||
mutatelist = list()
|
||||
reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.05, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
|
||||
seed = /obj/item/seeds/carrot/parsnip
|
||||
@@ -67,7 +67,7 @@
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
icon_dead = "whitebeet-dead"
|
||||
mutatelist = list(/obj/item/seeds/redbeet)
|
||||
reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet
|
||||
seed = /obj/item/seeds/whitebeet
|
||||
@@ -91,7 +91,7 @@
|
||||
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
||||
icon_dead = "whitebeet-dead"
|
||||
genes = list(/datum/plant_gene/trait/maxchem)
|
||||
reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05)
|
||||
reagents_add = list("vitamin" = 0.05, "plantmatter" = 0.05)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/redbeet
|
||||
seed = /obj/item/seeds/redbeet
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
growthstages = 3
|
||||
icon_dead = "tobacco-dead"
|
||||
mutatelist = list(/obj/item/seeds/tobacco/space)
|
||||
reagents_add = list("nicotine" = 0.03, "nutriment" = 0.03)
|
||||
reagents_add = list("nicotine" = 0.03, "plantmatter" = 0.03)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco
|
||||
seed = /obj/item/seeds/tobacco
|
||||
@@ -31,7 +31,7 @@
|
||||
plantname = "Space Tobacco Plant"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space
|
||||
mutatelist = list()
|
||||
reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "nutriment" = 0.03)
|
||||
reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "plantmatter" = 0.03)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
icon_grow = "tomato-grow"
|
||||
icon_dead = "tomato-dead"
|
||||
genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/repeated_harvest)
|
||||
mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood, /obj/item/seeds/tomato/killer)
|
||||
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood)
|
||||
reagents_add = list("vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato
|
||||
seed = /obj/item/seeds/tomato
|
||||
@@ -31,8 +31,8 @@
|
||||
species = "bloodtomato"
|
||||
plantname = "Blood-Tomato Plants"
|
||||
product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood
|
||||
mutatelist = list()
|
||||
reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
mutatelist = list(/obj/item/seeds/tomato/killer)
|
||||
reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood
|
||||
@@ -57,7 +57,7 @@
|
||||
icon_grow = "bluetomato-grow"
|
||||
mutatelist = list(/obj/item/seeds/tomato/blue/bluespace)
|
||||
genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue
|
||||
@@ -80,7 +80,7 @@
|
||||
yield = 2
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("lube" = 0.2, "singulo" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
reagents_add = list("lube" = 0.2, "singulo" = 0.2, "vitamin" = 0.04, "plantmatter" = 0.1)
|
||||
rarity = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace
|
||||
@@ -106,6 +106,7 @@
|
||||
icon_harvest = "killertomato-harvest"
|
||||
icon_dead = "killertomato-dead"
|
||||
mutatelist = list()
|
||||
reagents_add = list("vitamin" = 0.04, "protein" = 0.1)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer
|
||||
|
||||
@@ -521,6 +521,12 @@
|
||||
mutmod = 0
|
||||
adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 ))
|
||||
|
||||
|
||||
//Fish Water is both an excellent fertilizer and waters
|
||||
if(S.has_reagent("fishwater", 1))
|
||||
adjustNutri(round(S.get_reagent_amount("fishwater") * 0.75))
|
||||
adjustWater(round(S.get_reagent_amount("fishwater") * 1))
|
||||
|
||||
// Antitoxin binds shit pretty well. So the tox goes significantly down
|
||||
if(S.has_reagent("charcoal", 1))
|
||||
adjustToxic(-round(S.get_reagent_amount("charcoal") * 2))
|
||||
@@ -657,6 +663,10 @@
|
||||
adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount("nutriment") * 1))
|
||||
|
||||
if(S.has_reagent("plantmatter", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("plantmatter") * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount("plantmatter") * 1))
|
||||
|
||||
// Compost for EVERYTHING
|
||||
if(S.has_reagent("virusfood", 1))
|
||||
adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5))
|
||||
@@ -958,6 +968,30 @@
|
||||
var/mob/living/simple_animal/hostile/C = new chosen
|
||||
C.faction = list("plants")
|
||||
|
||||
///Diona Nymph Related Procs///
|
||||
/obj/machinery/hydroponics/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) //So nymphs can climb over top of trays.
|
||||
if(air_group || (height==0))
|
||||
return 1
|
||||
|
||||
if(istype(mover) && mover.checkpass(PASSTABLE))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/machinery/hydroponics/attack_animal(mob/living/user)
|
||||
if(istype(user, /mob/living/simple_animal/diona))
|
||||
if(weedlevel > 0)
|
||||
user.nutrition += weedlevel * 15
|
||||
adjustWeeds(-10)
|
||||
update_icon()
|
||||
visible_message("<span class='danger'>[user] begins rooting through [src], ripping out weeds and eating them noisily.</span>","<span class='danger'>You begin rooting through [src], ripping out weeds and eating them noisily.</span>")
|
||||
else if(nutrilevel < 10)
|
||||
user.nutrition -= ((10 - nutrilevel) * 5)
|
||||
adjustNutri(10)
|
||||
update_icon()
|
||||
visible_message("<span class='danger'>[user] secretes a trickle of green liquid from its tail, refilling [src]'s nutrient tray.</span>","<span class='danger'>You secrete a trickle of green liquid from your tail, refilling [src]'s nutrient tray.</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/obj/machinery/hydroponics/soil //Not actually hydroponics at all! Honk!
|
||||
|
||||
@@ -14,10 +14,6 @@
|
||||
/mob/camera/experience_pressure_difference()
|
||||
return
|
||||
|
||||
/mob/camera/Destroy()
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
/mob/camera/Login()
|
||||
..()
|
||||
update_interface()
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
/mob/living/Destroy()
|
||||
if(ranged_ability)
|
||||
ranged_ability.remove_ranged_ability(src)
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/ghostize(can_reenter_corpse = 1)
|
||||
var/prev_client = client
|
||||
if(..())
|
||||
@@ -48,14 +47,14 @@
|
||||
set category = "Object"
|
||||
|
||||
if(AM.Adjacent(src))
|
||||
src.start_pulling(AM)
|
||||
start_pulling(AM)
|
||||
return
|
||||
|
||||
//same as above
|
||||
/mob/living/pointed(atom/A as mob|obj|turf in view())
|
||||
if(incapacitated())
|
||||
return 0
|
||||
if(src.status_flags & FAKEDEATH)
|
||||
if(status_flags & FAKEDEATH)
|
||||
return 0
|
||||
if(!..())
|
||||
return 0
|
||||
@@ -78,7 +77,7 @@
|
||||
to_chat(src, "<span class='notice'>You have given up life and succumbed to death.</span>")
|
||||
|
||||
/mob/living/proc/InCritical()
|
||||
return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS)
|
||||
return (health < 0 && health > -95.0 && stat == UNCONSCIOUS)
|
||||
|
||||
/mob/living/ex_act(severity)
|
||||
..()
|
||||
@@ -114,7 +113,7 @@
|
||||
if(actual < desired)
|
||||
temperature = desired
|
||||
// if(istype(src, /mob/living/carbon/human))
|
||||
// to_chat(world, "[src] ~ [src.bodytemperature] ~ [temperature]")
|
||||
// to_chat(world, "[src] ~ [bodytemperature] ~ [temperature]")
|
||||
return temperature
|
||||
|
||||
|
||||
@@ -228,29 +227,31 @@
|
||||
|
||||
else
|
||||
|
||||
L += src.contents
|
||||
for(var/obj/item/weapon/storage/S in src.contents) //Check for storage items
|
||||
L += contents
|
||||
for(var/obj/item/weapon/storage/S in contents) //Check for storage items
|
||||
L += get_contents(S)
|
||||
for(var/obj/item/clothing/suit/storage/S in src.contents)//Check for labcoats and jackets
|
||||
for(var/obj/item/clothing/suit/storage/S in contents)//Check for labcoats and jackets
|
||||
L += get_contents(S)
|
||||
for(var/obj/item/clothing/accessory/storage/S in src.contents)//Check for holsters
|
||||
for(var/obj/item/clothing/accessory/storage/S in contents)//Check for holsters
|
||||
L += get_contents(S)
|
||||
for(var/obj/item/weapon/gift/G in src.contents) //Check for gift-wrapped items
|
||||
for(var/obj/item/weapon/implant/storage/I in contents) //Check for storage implants.
|
||||
L += I.get_contents()
|
||||
for(var/obj/item/weapon/gift/G in contents) //Check for gift-wrapped items
|
||||
L += G.gift
|
||||
if(istype(G.gift, /obj/item/weapon/storage))
|
||||
L += get_contents(G.gift)
|
||||
|
||||
for(var/obj/item/smallDelivery/D in src.contents) //Check for package wrapped items
|
||||
for(var/obj/item/smallDelivery/D in contents) //Check for package wrapped items
|
||||
L += D.wrapped
|
||||
if(istype(D.wrapped, /obj/item/weapon/storage)) //this should never happen
|
||||
L += get_contents(D.wrapped)
|
||||
for(var/obj/item/weapon/folder/F in src.contents)
|
||||
for(var/obj/item/weapon/folder/F in contents)
|
||||
L += F.contents //Folders can't store any storage items.
|
||||
|
||||
return L
|
||||
|
||||
/mob/living/proc/check_contents_for(A)
|
||||
var/list/L = src.get_contents()
|
||||
var/list/L = get_contents()
|
||||
|
||||
for(var/obj/B in L)
|
||||
if(B.type == A)
|
||||
@@ -273,27 +274,27 @@
|
||||
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
updatehealth()
|
||||
|
||||
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/take_organ_damage(var/brute, var/burn)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
updatehealth()
|
||||
|
||||
// heal MANY external organs, in random order
|
||||
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
updatehealth()
|
||||
|
||||
// damage MANY external organs, in random order
|
||||
/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
updatehealth()
|
||||
|
||||
/mob/living/proc/has_organic_damage()
|
||||
return (maxHealth - health)
|
||||
@@ -367,7 +368,7 @@
|
||||
if(buckled) //Unbuckle the mob and clear the alerts.
|
||||
buckled.buckled_mob = null
|
||||
buckled = null
|
||||
anchored = initial(src.anchored)
|
||||
anchored = initial(anchored)
|
||||
update_canmove()
|
||||
clear_alert("buckled")
|
||||
post_buckle_mob(src)
|
||||
@@ -655,7 +656,7 @@
|
||||
// The src mob is trying to place an item on someone
|
||||
// Override if a certain mob should be behave differently when placing items (can't, for example)
|
||||
/mob/living/stripPanelEquip(obj/item/what, mob/who, where, var/silent = 0)
|
||||
what = src.get_active_hand()
|
||||
what = get_active_hand()
|
||||
if(what && (what.flags & NODROP))
|
||||
to_chat(src, "<span class='warning'>You can't put \the [what.name] on [who], it's stuck to your hand!</span>")
|
||||
return
|
||||
|
||||
@@ -52,5 +52,7 @@
|
||||
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
|
||||
|
||||
var/gene_stability = DEFAULT_GENE_STABILITY
|
||||
|
||||
|
||||
var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override
|
||||
|
||||
var/list/say_log = list() //a log of what we've said, plain text, no spans or junk, essentially just each individual "message"
|
||||
|
||||
@@ -149,7 +149,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if(speaking && (speaking.flags & HIVEMIND))
|
||||
speaking.broadcast(src,trim(message))
|
||||
return 1
|
||||
|
||||
|
||||
if(message_mode == "cords")
|
||||
if(iscarbon(src))
|
||||
var/mob/living/carbon/C = src
|
||||
@@ -282,6 +282,9 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if(O) //It's possible that it could be deleted in the meantime.
|
||||
O.hear_talk(src, message, verb, speaking)
|
||||
|
||||
//Log of what we've said, plain message, no spans or junk
|
||||
say_log += message
|
||||
|
||||
log_say("[name]/[key] : [message]")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -47,17 +47,17 @@
|
||||
real_name = name
|
||||
|
||||
add_language("Rootspeak")
|
||||
src.verbs += /mob/living/simple_animal/diona/proc/merge
|
||||
verbs += /mob/living/simple_animal/diona/proc/merge
|
||||
|
||||
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M as mob)
|
||||
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M)
|
||||
//Let people pick the little buggers up.
|
||||
if(M.a_intent == I_HELP)
|
||||
if(M.species && M.species.name == "Diona")
|
||||
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
|
||||
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
|
||||
src.verbs += /mob/living/simple_animal/diona/proc/split
|
||||
src.verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
src.forceMove(M)
|
||||
verbs += /mob/living/simple_animal/diona/proc/split
|
||||
verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
forceMove(M)
|
||||
else
|
||||
get_scooped(M)
|
||||
|
||||
@@ -68,32 +68,34 @@
|
||||
set name = "Merge with gestalt"
|
||||
set desc = "Merge with another diona."
|
||||
|
||||
if(istype(src.loc,/mob/living/carbon))
|
||||
src.verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
if(iscarbon(loc))
|
||||
verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
for(var/mob/living/carbon/C in view(1,src))
|
||||
|
||||
if(!(src.Adjacent(C)) || !(C.client)) continue
|
||||
if(!(Adjacent(C)) || !(C.client))
|
||||
continue
|
||||
|
||||
if(istype(C,/mob/living/carbon/human))
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/D = C
|
||||
if(D.species && D.species.name == "Diona")
|
||||
choices += C
|
||||
|
||||
var/mob/living/M = input(src,"Who do you wish to merge with?") in null|choices
|
||||
|
||||
if(!M || !src || !(src.Adjacent(M))) return
|
||||
if(!M || !src || !(Adjacent(M)))
|
||||
return
|
||||
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
to_chat(M, "You feel your being twine with that of [src] as it merges with your biomass.")
|
||||
M.status_flags |= PASSEMOTES
|
||||
|
||||
to_chat(src, "You feel your being twine with that of [M] as you merge with its biomass.")
|
||||
src.loc = M
|
||||
src.verbs += /mob/living/simple_animal/diona/proc/split
|
||||
src.verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
forceMove(M)
|
||||
verbs += /mob/living/simple_animal/diona/proc/split
|
||||
verbs -= /mob/living/simple_animal/diona/proc/merge
|
||||
else
|
||||
return
|
||||
|
||||
@@ -102,61 +104,25 @@
|
||||
set name = "Split from gestalt"
|
||||
set desc = "Split away from your gestalt as a lone nymph."
|
||||
|
||||
if(!(istype(src.loc,/mob/living/carbon)))
|
||||
src.verbs -= /mob/living/simple_animal/diona/proc/split
|
||||
if(!(iscarbon(loc)))
|
||||
verbs -= /mob/living/simple_animal/diona/proc/split
|
||||
return
|
||||
|
||||
to_chat(src.loc, "You feel a pang of loss as [src] splits away from your biomass.")
|
||||
to_chat(src, "You wiggle out of the depths of [src.loc]'s biomass and plop to the ground.")
|
||||
to_chat(loc, "You feel a pang of loss as [src] splits away from your biomass.")
|
||||
to_chat(src, "You wiggle out of the depths of [loc]'s biomass and plop to the ground.")
|
||||
|
||||
var/mob/living/M = src.loc
|
||||
var/mob/living/M = loc
|
||||
|
||||
src.loc = get_turf(src)
|
||||
src.verbs -= /mob/living/simple_animal/diona/proc/split
|
||||
src.verbs += /mob/living/simple_animal/diona/proc/merge
|
||||
forceMove(get_turf(src))
|
||||
verbs -= /mob/living/simple_animal/diona/proc/split
|
||||
verbs += /mob/living/simple_animal/diona/proc/merge
|
||||
|
||||
if(istype(M))
|
||||
for(var/atom/A in M.contents)
|
||||
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
|
||||
if(istype(A, /mob/living/simple_animal/borer) || istype(A, /obj/item/weapon/holder))
|
||||
return
|
||||
M.status_flags &= ~PASSEMOTES
|
||||
|
||||
/mob/living/simple_animal/diona/verb/fertilize_plant()
|
||||
set category = "Diona"
|
||||
set name = "Fertilize plant"
|
||||
set desc = "Turn your food into nutrients for plants."
|
||||
|
||||
var/list/trays = list()
|
||||
for(var/obj/machinery/hydroponics/tray in range(1))
|
||||
if(tray.nutrilevel < 10)
|
||||
trays += tray
|
||||
|
||||
var/obj/machinery/hydroponics/target = input("Select a tray:") as null|anything in trays
|
||||
|
||||
if(!src || !target || target.nutrilevel == 10) return //Sanity check.
|
||||
|
||||
src.nutrition -= ((10-target.nutrilevel)*5)
|
||||
target.adjustNutri(10)
|
||||
src.visible_message("<span class='danger'>[src] secretes a trickle of green liquid from its tail, refilling [target]'s nutrient tray.","\red You secrete a trickle of green liquid from your tail, refilling [target]'s nutrient tray.</span>")
|
||||
|
||||
/mob/living/simple_animal/diona/verb/eat_weeds()
|
||||
set category = "Diona"
|
||||
set name = "Eat Weeds"
|
||||
set desc = "Clean the weeds out of soil or a hydroponics tray."
|
||||
|
||||
var/list/trays = list()
|
||||
for(var/obj/machinery/hydroponics/tray in range(1))
|
||||
if(tray.weedlevel > 0)
|
||||
trays += tray
|
||||
|
||||
var/obj/machinery/hydroponics/target = input("Select a tray:") as null|anything in trays
|
||||
|
||||
if(!src || !target || target.weedlevel == 0) return //Sanity check.
|
||||
|
||||
src.nutrition += target.weedlevel * 15
|
||||
target.adjustWeeds(-10)
|
||||
src.visible_message("<span class='danger'>[src] begins rooting through [target], ripping out weeds and eating them noisily.</span>","<span class='danger'>You begin rooting through [target], ripping out weeds and eating them noisily.</span>")
|
||||
|
||||
/mob/living/simple_animal/diona/verb/evolve()
|
||||
set category = "Diona"
|
||||
set name = "Evolve"
|
||||
@@ -170,15 +136,15 @@
|
||||
to_chat(src, "<span class='warning'>You need to binge on weeds in order to have the energy to grow...</span>")
|
||||
return
|
||||
|
||||
src.split()
|
||||
src.visible_message("<span class='danger'>[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.</span>","<span class='danger'>You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.</span>")
|
||||
split()
|
||||
visible_message("<span class='danger'>[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.</span>","<span class='danger'>You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.</span>")
|
||||
|
||||
var/mob/living/carbon/human/diona/adult = new(get_turf(src.loc))
|
||||
var/mob/living/carbon/human/diona/adult = new(get_turf(loc))
|
||||
adult.set_species("Diona")
|
||||
|
||||
if(istype(loc,/obj/item/weapon/holder/diona))
|
||||
if(istype(loc, /obj/item/weapon/holder/diona))
|
||||
var/obj/item/weapon/holder/diona/L = loc
|
||||
src.loc = L.loc
|
||||
forceMove(L.loc)
|
||||
qdel(L)
|
||||
|
||||
for(var/datum/language/L in languages)
|
||||
@@ -187,12 +153,12 @@
|
||||
|
||||
adult.name = "diona ([rand(100,999)])"
|
||||
adult.real_name = adult.name
|
||||
adult.ckey = src.ckey
|
||||
adult.ckey = ckey
|
||||
adult.real_name = pick(diona_names) //I hate this being here of all places but unfortunately dna is based on real_name!
|
||||
adult.rename_self("diona")
|
||||
|
||||
for(var/obj/item/W in src.contents)
|
||||
src.unEquip(W)
|
||||
for(var/obj/item/W in contents)
|
||||
unEquip(W)
|
||||
|
||||
qdel(src)
|
||||
|
||||
@@ -207,7 +173,8 @@
|
||||
|
||||
var/mob/living/carbon/human/M = input(src,"Who do you wish to take a sample from?") in null|choices
|
||||
|
||||
if(!M || !src) return
|
||||
if(!M || !src)
|
||||
return
|
||||
|
||||
if(M.species.flags & NO_BLOOD)
|
||||
to_chat(src, "<span class='warning'>That donor has no blood to take.</span>")
|
||||
@@ -217,7 +184,7 @@
|
||||
to_chat(src, "<span class='warning'>That donor offers you nothing new.</span>")
|
||||
return
|
||||
|
||||
src.visible_message("<span class='danger'>[src] flicks out a feeler and neatly steals a sample of [M]'s blood.</span>","<span class='danger'>You flick out a feeler and neatly steal a sample of [M]'s blood.</span>")
|
||||
visible_message("<span class='danger'>[src] flicks out a feeler and neatly steals a sample of [M]'s blood.</span>","<span class='danger'>You flick out a feeler and neatly steal a sample of [M]'s blood.</span>")
|
||||
donors += M.real_name
|
||||
for(var/datum/language/L in M.languages)
|
||||
if(!(L.flags & HIVEMIND))
|
||||
@@ -241,7 +208,7 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/diona/put_in_hands(obj/item/W)
|
||||
W.loc = get_turf(src)
|
||||
W.forceMove(get_turf(src))
|
||||
W.layer = initial(W.layer)
|
||||
W.plane = initial(W.plane)
|
||||
W.dropped()
|
||||
@@ -250,7 +217,7 @@
|
||||
to_chat(src, "<span class='warning'>You don't have any hands!</span>")
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/diona/emote(var/act, var/m_type=1, var/message = null)
|
||||
/mob/living/simple_animal/diona/emote(act, m_type=1, message = null)
|
||||
if(stat)
|
||||
return
|
||||
|
||||
|
||||
@@ -95,3 +95,29 @@
|
||||
|
||||
/mob/living/proc/update_stamina()
|
||||
return
|
||||
|
||||
/mob/living/on_varedit(modified_var)
|
||||
switch(modified_var)
|
||||
if("weakened")
|
||||
SetWeakened(weakened)
|
||||
if("stunned")
|
||||
SetStunned(stunned)
|
||||
if("paralysis")
|
||||
SetParalysis(paralysis)
|
||||
if("sleeping")
|
||||
SetSleeping(sleeping)
|
||||
if("eye_blind")
|
||||
SetEyeBlind(eye_blind)
|
||||
if("eye_blurry")
|
||||
SetEyeBlurry(eye_blurry)
|
||||
if("ear_deaf")
|
||||
SetEarDeaf(ear_deaf)
|
||||
if("ear_damage")
|
||||
SetEarDamage(ear_damage)
|
||||
if("druggy")
|
||||
SetDruggy(druggy)
|
||||
if("maxHealth")
|
||||
updatehealth()
|
||||
if("resize")
|
||||
update_transform()
|
||||
..()
|
||||
@@ -19,7 +19,8 @@
|
||||
for(var/datum/alternate_appearance/AA in viewing_alternate_appearances)
|
||||
AA.viewers -= src
|
||||
viewing_alternate_appearances = null
|
||||
return ..()
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
/mob/New()
|
||||
mob_list += src
|
||||
|
||||
@@ -160,6 +160,14 @@
|
||||
playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1)
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/weapon/gun/energy/on_varedit(modified_var)
|
||||
if(modified_var == "selfcharge")
|
||||
if(selfcharge)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/proc/robocharge()
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
|
||||
@@ -373,10 +373,17 @@
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
if (O.reagents != null && O.reagents.has_reagent("plantmatter"))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
O.reagents.remove_reagent("plantmatter", min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
else
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)), space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
if (O.reagents != null && O.reagents.has_reagent("plantmatter"))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("plantmatter")*abs(amount)), space))
|
||||
O.reagents.remove_reagent("plantmatter", min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
|
||||
|
||||
else
|
||||
O.reagents.trans_id_to(beaker, r_id, min(amount, space))
|
||||
|
||||
@@ -39,7 +39,8 @@
|
||||
/obj/machinery/smartfridge/,
|
||||
/obj/machinery/biogenerator,
|
||||
/obj/machinery/hydroponics,
|
||||
/obj/machinery/constructable_frame)
|
||||
/obj/machinery/constructable_frame,
|
||||
/obj/machinery/icemachine)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/New()
|
||||
..()
|
||||
@@ -62,7 +63,8 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
if(!is_open_container())
|
||||
return
|
||||
|
||||
@@ -94,16 +96,16 @@
|
||||
return
|
||||
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
|
||||
if(!target.reagents.total_volume && target.reagents)
|
||||
to_chat(user, "<span class='warning'>[target] is empty.</span>")
|
||||
if(target.reagents && !target.reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[target] is empty and can't be refilled!</span>")
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the contents of [target].</span>")
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] unit\s of the contents of [target].</span>")
|
||||
|
||||
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
||||
if(!reagents.total_volume)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = A.reagents.trans_to(src, A:amount_per_transfer_from_this)
|
||||
var/trans = A.reagents.trans_to(src, 50) //This is a static amount, otherwise, it'll take forever to fill.
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the contents of [A].</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#define AUTOIGNITION_WELDERFUEL 561.15
|
||||
|
||||
/obj/structure/reagent_dispensers
|
||||
name = "Dispenser"
|
||||
desc = "..."
|
||||
@@ -9,109 +7,97 @@
|
||||
anchored = 0
|
||||
pressure_resistance = 2*ONE_ATMOSPHERE
|
||||
|
||||
var/amount_per_transfer_from_this = 10
|
||||
var/possible_transfer_amounts = list(10,25,50,100)
|
||||
var/tank_volume = 1000 //In units, how much the dispenser can hold
|
||||
var/reagent_id = "water" //The ID of the reagent that the dispenser uses
|
||||
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/New()
|
||||
create_reagents(1000)
|
||||
if(!possible_transfer_amounts)
|
||||
verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT
|
||||
create_reagents(tank_volume)
|
||||
reagents.add_reagent(reagent_id, tank_volume)
|
||||
..()
|
||||
|
||||
/obj/structure/reagent_dispensers/examine(mob/user)
|
||||
if(!..(user, 2))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>It contains:</span>")
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
to_chat(user, "<span class='notice'>[R.volume] units of [R.name]</span>")
|
||||
if(reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>It has [reagents.total_volume] units left.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing.</span>")
|
||||
to_chat(user, "<span class='danger'>It's empty.</span>")
|
||||
|
||||
/obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this
|
||||
set name = "Set transfer amount"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
return
|
||||
var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts
|
||||
if(N)
|
||||
amount_per_transfer_from_this = N
|
||||
|
||||
/obj/structure/reagent_dispensers/proc/boom()
|
||||
visible_message("<span class='danger'>[src] ruptures!</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if(1)
|
||||
boom()
|
||||
if(2)
|
||||
if(prob(50))
|
||||
new /obj/effect/effect/water(loc)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
boom()
|
||||
if(3)
|
||||
if(prob(5))
|
||||
new /obj/effect/effect/water(loc)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/blob_act()
|
||||
if(prob(50))
|
||||
new /obj/effect/effect/water(loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
boom()
|
||||
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
name = "watertank"
|
||||
desc = "A watertank"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "watertank"
|
||||
amount_per_transfer_from_this = 10
|
||||
name = "water tank"
|
||||
desc = "A water tank."
|
||||
icon_state = "water"
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/New()
|
||||
/obj/structure/reagent_dispensers/watertank/boom()
|
||||
playsound(loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||
new /obj/effect/effect/water(loc)
|
||||
for(var/turf/simulated/T in view(5, loc))
|
||||
T.MakeSlippery()
|
||||
for(var/mob/living/L in T)
|
||||
L.adjust_fire_stacks(-20)
|
||||
..()
|
||||
reagents.add_reagent("water",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/high
|
||||
name = "high-capacity water tank"
|
||||
desc = "A highly-pressurized water tank made to hold gargantuan amounts of water.."
|
||||
icon_state = "water_high" //I was gonna clean my room...
|
||||
tank_volume = 100000
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank
|
||||
name = "fueltank"
|
||||
desc = "A fueltank"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "weldtank"
|
||||
amount_per_transfer_from_this = 10
|
||||
name = "fuel tank"
|
||||
desc = "A tank full of industrial welding fuel. Do not consume."
|
||||
icon_state = "fuel"
|
||||
reagent_id = "fuel"
|
||||
var/obj/item/device/assembly_holder/rig = null
|
||||
var/accepts_rig = 1
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/New()
|
||||
/obj/structure/reagent_dispensers/fueltank/Destroy()
|
||||
if(rig)
|
||||
qdel(rig)
|
||||
rig = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/P)
|
||||
..()
|
||||
reagents.add_reagent("fuel",1000)
|
||||
if(!qdeleted(src)) //wasn't deleted by the projectile's effects.
|
||||
if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE)))
|
||||
message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(P.firer)] triggered a fueltank explosion.")
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/Proj)
|
||||
..()
|
||||
if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)))
|
||||
message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(Proj.firer)] triggered a fueltank explosion.")
|
||||
boom()
|
||||
/obj/structure/reagent_dispensers/fueltank/boom()
|
||||
explosion(loc, 0, 1, 5, 7, 10, flame_range = 5)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/proc/boom()
|
||||
explosion(loc,0,1,5,7,10, flame_range = 5)
|
||||
if(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/blob_act(obj/effect/blob/B)
|
||||
/obj/structure/reagent_dispensers/fueltank/blob_act()
|
||||
boom()
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/ex_act()
|
||||
boom()
|
||||
|
||||
@@ -133,34 +119,53 @@
|
||||
usr.visible_message("<span class='notice'>[usr] begins to detach [rig] from [src].</span>", "<span class='notice'>You begin to detach [rig] from [src].</span>")
|
||||
if(do_after(usr, 20, target = src))
|
||||
usr.visible_message("<span class='notice'>[usr] detaches [rig] from [src].</span>", "<span class='notice'>You detach [rig] from [src].</span>")
|
||||
rig.loc = get_turf(usr)
|
||||
rig.forceMove(get_turf(usr))
|
||||
rig = null
|
||||
overlays = new/list()
|
||||
overlays.Cut()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W,/obj/item/device/assembly_holder) && accepts_rig)
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/device/assembly_holder) && accepts_rig)
|
||||
if(rig)
|
||||
to_chat(user, "<span class='warning'>There is another device in the way.</span>")
|
||||
return ..()
|
||||
user.visible_message("[user] begins rigging [W] to [src].", "You begin rigging [W] to [src]")
|
||||
user.visible_message("[user] begins rigging [I] to [src].", "You begin rigging [I] to [src]")
|
||||
if(do_after(user, 20, target = src))
|
||||
user.visible_message("<span class='notice'>[user] rigs [W] to [src].</span>", "<span class='notice'>You rig [W] to [src].</span>")
|
||||
user.visible_message("<span class='notice'>[user] rigs [I] to [src].</span>", "<span class='notice'>You rig [I] to [src].</span>")
|
||||
|
||||
var/obj/item/device/assembly_holder/H = W
|
||||
if(istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter))
|
||||
var/obj/item/device/assembly_holder/H = I
|
||||
if(istype(H.a_left, /obj/item/device/assembly/igniter) || istype(H.a_right, /obj/item/device/assembly/igniter))
|
||||
msg_admin_attack("[key_name_admin(user)] rigged a fueltank for explosion (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
log_game("[key_name(user)] rigged fueltank a fueltank for explosion at [loc.x], [loc.y], [loc.z]")
|
||||
|
||||
rig = W
|
||||
rig = H
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
H.forceMove(src)
|
||||
|
||||
var/icon/test = getFlatIcon(W)
|
||||
test.Shift(NORTH,1)
|
||||
test.Shift(EAST,6)
|
||||
var/icon/test = getFlatIcon(H)
|
||||
test.Shift(NORTH, 1)
|
||||
test.Shift(EAST, 6)
|
||||
overlays += test
|
||||
|
||||
return ..()
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
if(!reagents.has_reagent("fuel"))
|
||||
to_chat(user, "<span class='warning'>[src] is out of fuel!</span>")
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/W = I
|
||||
if(!W.welding)
|
||||
if(W.reagents.has_reagent("fuel", W.max_fuel))
|
||||
to_chat(user, "<span class='warning'>Your [W] is already full!</span>")
|
||||
return
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
user.visible_message("<span class='notice'>[user] refills \his [W].</span>", "<span class='notice'>You refill [W].</span>")
|
||||
playsound(src, 'sound/effects/refill.ogg', 50, 1)
|
||||
W.update_icon()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling \his [W]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.")
|
||||
boom()
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/Move()
|
||||
..()
|
||||
@@ -190,76 +195,65 @@
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/peppertank
|
||||
name = "Pepper Spray Refiller"
|
||||
desc = "Refill pepper spray canisters."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "peppertank"
|
||||
name = "pepper spray refiller"
|
||||
desc = "Contains condensed capsaicin for use in law \"enforcement.\""
|
||||
icon_state = "pepper"
|
||||
anchored = 1
|
||||
density = 0
|
||||
amount_per_transfer_from_this = 45
|
||||
|
||||
/obj/structure/reagent_dispensers/peppertank/New()
|
||||
..()
|
||||
reagents.add_reagent("condensedcapsaicin",1000)
|
||||
|
||||
reagent_id = "condensedcapsaicin"
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler
|
||||
name = "Water-Cooler"
|
||||
desc = "A machine that dispenses water to drink"
|
||||
amount_per_transfer_from_this = 5
|
||||
name = "liquid cooler"
|
||||
desc = "A machine that dispenses liquid to drink."
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "water_cooler"
|
||||
possible_transfer_amounts = null
|
||||
anchored = 1
|
||||
tank_volume = 500
|
||||
var/paper_cups = 25 //Paper cups left from the cooler
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/New()
|
||||
..()
|
||||
reagents.add_reagent("water",500)
|
||||
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
|
||||
if(!..(user, 2))
|
||||
return
|
||||
to_chat(user, "There are [paper_cups ? paper_cups : "no"] paper cups left.")
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user)
|
||||
if(!paper_cups)
|
||||
to_chat(user, "<span class='warning'>There aren't any cups left!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] takes a cup from [src].</span>", "<span class='notice'>You take a paper cup from [src].</span>")
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
|
||||
user.put_in_hands(S)
|
||||
paper_cups--
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg
|
||||
name = "beer keg"
|
||||
desc = "A beer keg"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "beertankTEMP"
|
||||
amount_per_transfer_from_this = 10
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/New()
|
||||
..()
|
||||
reagents.add_reagent("beer",1000)
|
||||
desc = "Beer is liquid bread, it's good for you..."
|
||||
icon_state = "beer"
|
||||
reagent_id = "beer"
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/blob_act()
|
||||
explosion(loc,0,3,5,7,10)
|
||||
explosion(loc, 0, 3, 5, 7, 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/virusfood
|
||||
name = "Virus Food Dispenser"
|
||||
desc = "A dispenser of virus food."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "virusfoodtank"
|
||||
amount_per_transfer_from_this = 10
|
||||
name = "virus food dispenser"
|
||||
desc = "A dispenser of low-potency virus mutagenic."
|
||||
icon_state = "virus_food"
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
/obj/structure/reagent_dispensers/virusfood/New()
|
||||
..()
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
reagent_id = "virusfood"
|
||||
|
||||
/obj/structure/reagent_dispensers/spacecleanertank
|
||||
name = "space cleaner refiller"
|
||||
desc = "Refills space cleaner bottles."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "spacecleanertank"
|
||||
icon_state = "cleaner"
|
||||
anchored = 1
|
||||
density = 0
|
||||
amount_per_transfer_from_this = 250
|
||||
|
||||
/obj/structure/reagent_dispensers/spacecleanertank/New()
|
||||
..()
|
||||
reagents.add_reagent("cleaner",5000)
|
||||
tank_volume = 5000
|
||||
reagent_id = "cleaner"
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/chem
|
||||
icon_state = "weldingtank_chem"
|
||||
icon_state = "fuel_chem"
|
||||
anchored = 1
|
||||
density = 0
|
||||
accepts_rig = 0
|
||||
@@ -9,43 +9,5 @@
|
||||
/obj/structure/reagent_dispensers/coolanttank
|
||||
name = "coolant tank"
|
||||
desc = "A tank of industrial coolant"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "coolanttank"
|
||||
amount_per_transfer_from_this = 10
|
||||
|
||||
/obj/structure/reagent_dispensers/coolanttank/New()
|
||||
..()
|
||||
reagents.add_reagent("coolant",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
if(!Proj.damage)
|
||||
explode()
|
||||
|
||||
/obj/structure/reagent_dispensers/coolanttank/blob_act()
|
||||
explode()
|
||||
|
||||
/obj/structure/reagent_dispensers/coolanttank/ex_act()
|
||||
explode()
|
||||
|
||||
/obj/structure/reagent_dispensers/coolanttank/proc/explode()
|
||||
var/datum/effect/system/harmless_smoke_spread/S = new /datum/effect/system/harmless_smoke_spread
|
||||
//S.attach(src)
|
||||
S.set_up(5, 0, src.loc)
|
||||
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
spawn(0)
|
||||
S.start()
|
||||
|
||||
var/datum/gas_mixture/env = src.loc.return_air()
|
||||
if(env)
|
||||
if(reagents.total_volume > 750)
|
||||
env.temperature = 0
|
||||
else if(reagents.total_volume > 500)
|
||||
env.temperature -= 100
|
||||
else
|
||||
env.temperature -= 50
|
||||
|
||||
sleep(10)
|
||||
if(src)
|
||||
qdel(src)
|
||||
reagent_id = "coolant"
|
||||
@@ -166,12 +166,36 @@
|
||||
shuttle_master.emergencyLastCallLoc = null
|
||||
emergency_shuttle_recalled.Announce("The emergency shuttle has been recalled.[shuttle_master.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]")
|
||||
|
||||
/*
|
||||
/obj/docking_port/mobile/emergency/findTransitDock()
|
||||
. = shuttle_master.getDock("emergency_transit")
|
||||
if(.) return .
|
||||
return ..()
|
||||
*/
|
||||
/obj/docking_port/mobile/emergency/proc/is_hijacked()
|
||||
for(var/mob/living/player in player_list)
|
||||
if(player.mind)
|
||||
if(player.stat != DEAD)
|
||||
if(issilicon(player)) //Borgs are technically dead anyways
|
||||
continue
|
||||
if(isanimal(player)) //Poly does not own the shuttle
|
||||
continue
|
||||
|
||||
var/special_role = player.mind.special_role
|
||||
if(special_role)
|
||||
if(special_role == SPECIAL_ROLE_TRAITOR) // traitors can hijack the shuttle
|
||||
continue
|
||||
|
||||
if(special_role == SPECIAL_ROLE_CHANGELING) // changelings as well
|
||||
continue
|
||||
|
||||
if(special_role == SPECIAL_ROLE_VAMPIRE || special_role == SPECIAL_ROLE_VAMPIRE_THRALL) // for traitorvamp
|
||||
continue
|
||||
|
||||
if(special_role == SPECIAL_ROLE_NUKEOPS) // so can nukeops, for the hell of it
|
||||
continue
|
||||
|
||||
if(special_role == SPECIAL_ROLE_SYNDICATE_DEATHSQUAD) // and the syndie deathsquad i guess
|
||||
continue
|
||||
|
||||
if(get_area(player) == areaInstance)
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/docking_port/mobile/emergency/check()
|
||||
@@ -232,10 +256,19 @@
|
||||
//move each escape pod to its corresponding escape dock
|
||||
for(var/obj/docking_port/mobile/pod/M in shuttle_master.mobile)
|
||||
M.dock(shuttle_master.getDock("[M.id]_away"))
|
||||
//now move the actual emergency shuttle to centcomm
|
||||
|
||||
for(var/area/shuttle/escape/E in world)
|
||||
E << 'sound/effects/hyperspace_end.ogg'
|
||||
dock(shuttle_master.getDock("emergency_away"))
|
||||
|
||||
// now move the actual emergency shuttle to centcomm
|
||||
// unless the shuttle is "hijacked"
|
||||
var/destination_dock = "emergency_away"
|
||||
if(is_hijacked())
|
||||
destination_dock = "emergency_syndicate"
|
||||
priority_announcement.Announce("Corruption detected in shuttle navigation protocols. Please contact your supervisor.")
|
||||
|
||||
dock_id(destination_dock)
|
||||
|
||||
mode = SHUTTLE_ENDGAME
|
||||
timer = 0
|
||||
open_dock()
|
||||
|
||||
@@ -489,8 +489,14 @@
|
||||
// Instead of spending a lot of time trying to work out where to place
|
||||
// our shuttle, just create it somewhere empty and send it to where
|
||||
// it should go
|
||||
var/obj/docking_port/stationary/D = findRoundstartDock()
|
||||
return dock(D)
|
||||
. = dock_id(roundstart_move)
|
||||
|
||||
/obj/docking_port/mobile/proc/dock_id(id)
|
||||
var/port = shuttle_master.getDock(id)
|
||||
if(port)
|
||||
. = dock(port)
|
||||
else
|
||||
. = null
|
||||
|
||||
/obj/effect/landmark/shuttle_import
|
||||
name = "Shuttle Import"
|
||||
|
||||
Reference in New Issue
Block a user