Merge pull request #6 from quotefox/master

a
This commit is contained in:
shellspeed1
2019-11-12 21:26:54 -08:00
committed by GitHub
45 changed files with 685 additions and 476 deletions
+1
View File
@@ -11,6 +11,7 @@
#define GROSS (1<<10)
#define TOXIC (1<<11)
#define PINEAPPLE (1<<12)
#define CLOTH (1<<14)
#define DRINK_NICE 1
#define DRINK_GOOD 2
+2
View File
@@ -57,8 +57,10 @@
#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent))
#define iszombie(A) (is_species(A, /datum/species/zombie))
#define ismoth(A) (is_species(A, /datum/species/moth))
#define ismoth(A) (is_species(A, /datum/species/insect))
#define ishumanbasic(A) (is_species(A, /datum/species/human))
#define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) )
#define isvampire(A) (is_species(A,/datum/species/vampire))
//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
+4
View File
@@ -99,3 +99,7 @@
#define NUKE_OFF_UNLOCKED 1
#define NUKE_ON_TIMING 2
#define NUKE_ON_EXPLODING 3
//these flags are used to tell the DNA modifier if a plant gene cannot be extracted or modified.
#define PLANT_GENE_REMOVABLE (1<<0)
#define PLANT_GENE_EXTRACTABLE (1<<1)
+12 -7
View File
@@ -1784,35 +1784,40 @@
"back_key" = TOOL_SCREWDRIVER,
"desc" = "Capacitor is secured."
),
//14
list(
"key" = TOOL_SCREWDRIVER,
"back_key" = TOOL_CROWBAR,
"desc" = "The power cell is installed."
//15
),
list(
"key" = /obj/item/stack/sheet/metal,
"amount" = 5,
"back_key" = TOOL_SCREWDRIVER,
"desc" = "The power cell is secured."
),
//15
//16
list(
"key" = TOOL_SCREWDRIVER,
"back_key" = TOOL_CROWBAR,
"desc" = "The power cell is installed."
),
//16
//17
list(
"key" = TOOL_WRENCH,
"back_key" = TOOL_CROWBAR,
"desc" = "Internal armor is installed."
),
//17
//18
list(
"key" = TOOL_WELDER,
"back_key" = TOOL_WRENCH,
"desc" = "Internal armor is wrenched."
),
//18
//19
list(
"key" = /obj/item/stack/sheet/plasteel,
"amount" = 5,
@@ -1820,14 +1825,14 @@
"desc" = "Internal armor is welded."
),
//19
//20
list(
"key" = TOOL_WRENCH,
"back_key" = TOOL_CROWBAR,
"desc" = "External armor is installed."
),
//20
//21
list(
"key" = TOOL_WELDER,
"back_key" = TOOL_WRENCH,
@@ -35,6 +35,10 @@
icon_state = "oxygen_fr"
dog_fashion = null
/obj/item/tank/internals/oxygen/empty/New()
..()
air_contents.gases[/datum/gas/oxygen] = (0*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/*
* Anesthetic
@@ -105,6 +109,10 @@
air_contents.gases[/datum/gas/plasma] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/tank/internals/plasma/empty/New()
..()
air_contents.gases[/datum/gas/plasma] = (0*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/*
* Plasmaman Plasma Tank
@@ -164,6 +172,11 @@
air_contents.gases[/datum/gas/oxygen] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/tank/internals/emergency_oxygen/empty/New()
..()
air_contents.gases[/datum/gas/oxygen] = (0*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
/obj/item/tank/internals/emergency_oxygen/engi
name = "extended-capacity emergency oxygen tank"
icon_state = "emergency_engi"
@@ -173,3 +186,8 @@
name = "double emergency oxygen tank"
icon_state = "emergency_double"
volume = 10
/obj/item/tank/internals/emergency_oxygen/double/empty/New()
..()
air_contents.gases[/datum/gas/oxygen] = (0*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
return
@@ -202,10 +202,10 @@
/datum/antagonist/rev/farewell()
if(ishuman(owner.current))
owner.current.visible_message("<span class='deconversion_message'>[owner.current] looks like [owner.current.p_theyve()] just remembered [owner.current.p_their()] real allegiance!</span>", null, null, null, owner.current)
to_chat(owner, "<span class='userdanger'>You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel... You don't seem to be able to recall the names of your comrades, not even your leaders...</span>")
to_chat(owner, "<span class='deconversion_message bold'>You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel... You don't seem to be able to recall the names of your comrades, not even your leaders...</span>")
else if(issilicon(owner.current))
owner.current.visible_message("<span class='deconversion_message'>The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.</span>", null, null, null, owner.current)
to_chat(owner, "<span class='userdanger'>The frame's firmware detects and deletes your neural reprogramming! You remember nothing of your time spent reprogrammed, you can't even remember the names or identities of anyone involved...</span>")
to_chat(owner, "<span class='deconversion_message bold'>The frame's firmware detects and deletes your neural reprogramming! You remember nothing of your time spent reprogrammed, you can't even remember the names or identities of anyone involved...</span>")
//blunt trauma deconversions call this through species.dm spec_attacked_by()
/datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter)
+1
View File
@@ -75,6 +75,7 @@
desc = "If you're reading this it means I messed up. This is related to moths eating clothes and I didn't know a better way to do it than making a new food object."
list_reagents = list("nutriment" = 1)
tastes = list("dust" = 1, "lint" = 1)
foodtype = CLOTH
/obj/item/clothing/attack(mob/M, mob/user, def_zone)
if(user.a_intent != INTENT_HARM && ismoth(M))
@@ -227,6 +227,12 @@
item_state = "coffee"
spillable = TRUE
/datum/chemical_reaction/catnip_tea
name = "Catnip Tea"
id = "catnip_tea"
results = list("catnip_tea" = 3)
required_reagents = list("tea" = 5, "catnip" = 2)
/obj/item/reagent_containers/food/drinks/mug/on_reagent_change(changetype)
if(reagents.total_volume)
icon_state = "tea"
@@ -178,6 +178,18 @@
tastes = list("bread" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/garlicbread
name = "garlic bread"
desc = "Alas, it is limited."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "garlicbread"
item_state = "garlicbread"
bonus_reagents = list("nutriment" = 5, "vitamin" = 2)
list_reagents = list("nutriment" = 5, "vitamin" = 4, "garlic" = 2)
bitesize = 3
tastes = list("bread" = 1, "garlic" = 1, "butter" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/deepfryholder
name = "Deep Fried Foods Holder Obj"
desc = "If you can see this description the code for the deep fryer fucked up."
@@ -144,7 +144,7 @@
else
O.forceMove(src)
return TRUE
///Really simple proc, just moves the object "O" into the hands of mob "M" if able, done so I could modify the proc a little for the organ fridge
/obj/machinery/smartfridge/proc/dispense(obj/item/O, var/mob/M)
if(!M.put_in_hands(O))
@@ -441,7 +441,7 @@
return TRUE
if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted
return FALSE
if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray))
if(istype(O, /obj/item/reagent_containers/syringe) || istype(O, /obj/item/reagent_containers/glass/bottle) || istype(O, /obj/item/reagent_containers/glass/beaker) || istype(O, /obj/item/reagent_containers/spray) || istype(O, /obj/item/reagent_containers/medspray|| istype(O, /obj/item/reagent_containers/chem_pack)))
return TRUE
return FALSE
@@ -84,6 +84,16 @@
result = /obj/item/reagent_containers/food/snacks/butteredtoast
subcategory = CAT_BREAD
/datum/crafting_recipe/food/garlicbread
name = "Garlic Bread"
time = 40
reqs = list(/obj/item/reagent_containers/food/snacks/grown/garlic = 1,
/obj/item/reagent_containers/food/snacks/breadslice/plain = 1,
/obj/item/reagent_containers/food/snacks/butter = 1
)
result = /obj/item/reagent_containers/food/snacks/garlicbread
subcategory = CAT_BREAD
/datum/crafting_recipe/food/butterbiscuit
name = "Butter Biscuit"
reqs = list(
@@ -113,6 +113,7 @@
name = "Raw Khinkali"
reqs = list(
/obj/item/reagent_containers/food/snacks/doughslice = 1,
/obj/item/reagent_containers/food/snacks/grown/garlic = 1,
/obj/item/reagent_containers/food/snacks/faggot = 1
)
result = /obj/item/reagent_containers/food/snacks/rawkhinkali
+5 -4
View File
@@ -201,9 +201,9 @@
if(!G)
continue
dat += "<tr><td width='260px'>[G.get_name()]</td><td>"
if(can_extract)
if(can_extract && G.mutability_flags & PLANT_GENE_EXTRACTABLE)
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=extract'>Extract</a>"
if(can_insert && istype(disk.gene, G.type))
if(can_insert && istype(disk.gene, G.type) && G.mutability_flags & PLANT_GENE_REMOVABLE)
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=replace'>Replace</a>"
dat += "</td></tr>"
dat += "</table></div>"
@@ -215,9 +215,10 @@
for(var/a in reagent_genes)
var/datum/plant_gene/G = a
dat += "<tr><td width='260px'>[G.get_name()]</td><td>"
if(can_extract)
if(can_extract && G.mutability_flags & PLANT_GENE_EXTRACTABLE)
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=extract'>Extract</a>"
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=remove'>Remove</a>"
if(G.mutability_flags & PLANT_GENE_REMOVABLE)
dat += "<a href='?src=[REF(src)];gene=[REF(G)];op=remove'>Remove</a>"
dat += "</td></tr>"
dat += "</table>"
else
+1 -1
View File
@@ -131,7 +131,7 @@
..()
/obj/item/reagent_containers/food/snacks/grown/generate_trash(atom/location)
if(trash && ispath(trash, /obj/item/grown))
if(trash && (ispath(trash, /obj/item/grown) || ispath(trash, /obj/item/reagent_containers/food/snacks/grown)))
. = new trash(location, seed)
trash = null
return
@@ -15,7 +15,7 @@
icon_grow = "cocoapod-grow"
icon_dead = "cocoapod-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/cocoapod/vanillapod)
mutatelist = list(/obj/item/seeds/cocoapod/vanillapod,/obj/item/seeds/cocoapod/bungotree)
reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1)
/obj/item/reagent_containers/food/snacks/grown/cocoapod
@@ -50,3 +50,52 @@
foodtype = FRUIT
tastes = list("vanilla" = 1)
distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it.
/obj/item/seeds/cocoapod/bungotree
name = "pack of bungo tree seeds"
desc = "These seeds grow into bungo trees. They appear to be heavy and almost perfectly spherical."
icon_state = "seed-bungotree"
species = "bungotree"
plantname = "Bungo Tree"
product = /obj/item/reagent_containers/food/snacks/grown/bungofruit
lifespan = 30
maturation = 4
yield = 3
production = 7
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list()
reagents_add = list(/datum/reagent/consumable/enzyme = 0.1, /datum/reagent/consumable/nutriment = 0.1)
growthstages = 4
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "bungotree-grow"
icon_dead = "bungotree-dead"
rarity = 15
/obj/item/reagent_containers/food/snacks/grown/bungofruit
seed = /obj/item/seeds/cocoapod/bungotree
name = "bungo fruit"
desc = "A strange fruit, tough leathery skin protects its juicy flesh and large poisonous seed."
icon_state = "bungo"
trash = /obj/item/reagent_containers/food/snacks/grown/bungopit
filling_color = "#E8C22F"
foodtype = FRUIT
tastes = list("bungo" = 2, "tropical fruitiness" = 1)
distill_reagent = null
/obj/item/reagent_containers/food/snacks/grown/bungopit
seed = /obj/item/seeds/cocoapod/bungotree
name = "bungo pit"
icon_state = "bungopit"
desc = "A large seed, it is said to be potent enough to be able to stop a mans heart."
w_class = WEIGHT_CLASS_TINY
throwforce = 5
throw_speed = 3
throw_range = 7
foodtype = TOXIC
tastes = list("acrid bitterness" = 1)
/obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize()
. =..()
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)
+97 -1
View File
@@ -37,7 +37,7 @@
species = "lily"
plantname = "Lily Plants"
product = /obj/item/reagent_containers/food/snacks/grown/poppy/lily
mutatelist = list()
mutatelist = list(/obj/item/seeds/bee_balm,/obj/item/seeds/poppy/lily/trumpet)
/obj/item/reagent_containers/food/snacks/grown/poppy/lily
seed = /obj/item/seeds/poppy/lily
@@ -47,6 +47,44 @@
tastes = list("pelts " = 1)
filling_color = "#FFA500"
//Spacemans's Trumpet
/obj/item/seeds/poppy/lily/trumpet
name = "pack of spaceman's trumpet seeds"
desc = "A plant sculped by extensive genetic engineering. The spaceman's trumpet is said to bear no resemblance to its wild ancestors. Inside NT AgriSci circles it is better known as NTPW-0372."
icon_state = "seed-trumpet"
species = "spacemanstrumpet"
plantname = "Spaceman's Trumpet Plant"
product = /obj/item/reagent_containers/food/snacks/grown/trumpet
lifespan = 80
production = 5
endurance = 10
maturation = 12
yield = 4
potency = 20
growthstages = 4
weed_rate = 2
weed_chance = 10
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
icon_grow = "spacemanstrumpet-grow"
icon_dead = "spacemanstrumpet-dead"
mutatelist = list()
genes = list(/datum/plant_gene/reagent/polypyr)
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
rarity = 30
/obj/item/seeds/poppy/lily/trumpet/Initialize()
..()
unset_mutability(/datum/plant_gene/reagent/polypyr, PLANT_GENE_EXTRACTABLE)
/obj/item/reagent_containers/food/snacks/grown/trumpet
seed = /obj/item/seeds/poppy/lily/trumpet
name = "spaceman's trumpet"
desc = "A vivid flower that smells faintly of freshly cut grass. Touching the flower seems to stain the skin some time after contact, yet most other surfaces seem to be unaffected by this phenomenon."
icon_state = "spacemanstrumpet"
filling_color = "#FF6347"
bitesize_mod = 3
foodtype = VEGETABLES
// Geranium
/obj/item/seeds/poppy/geranium
name = "pack of geranium seeds"
@@ -221,3 +259,61 @@
if(!user.gloves)
to_chat(user, "<span class='danger'>The [name] burns your bare hand!</span>")
user.adjustFireLoss(rand(1, 5))
// Beebalm
/obj/item/seeds/bee_balm
name = "pack of Bee Balm seeds"
desc = "These seeds grow into Bee Balms."
icon_state = "seed-bee_balm"
species = "bee_balm"
plantname = "Bee Balm Buds"
product = /obj/item/reagent_containers/food/snacks/grown/bee_balm
endurance = 10
maturation = 8
yield = 3
potency = 30
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
icon_grow = "bee_balm-grow"
icon_dead = "bee_balm-dead"
mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/bee_balm/honey) //Lower odds of becoming honey
reagents_add = list("spaceacillin" = 0.1, "sterilizine" = 0.05)
/obj/item/reagent_containers/food/snacks/grown/bee_balm
seed = /obj/item/seeds/bee_balm
name = "bee balm"
desc = "A flower used for medical antiseptic in history."
icon_state = "bee_balm"
filling_color = "#FF6347"
bitesize_mod = 8
tastes = list("strong antiseptic " = 1)
foodtype = GROSS
// Beebalm
/obj/item/seeds/bee_balm/honey
name = "pack of Honey Balm seeds"
desc = "These seeds grow into Honey Balms."
icon_state = "seed-bee_balmalt"
species = "seed-bee_balm_alt"
plantname = "Honey Balm Pods"
product = /obj/item/reagent_containers/food/snacks/grown/bee_balm/honey
endurance = 1
maturation = 10
yield = 1
potency = 1
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
icon_grow = "bee_balmalt-grow"
icon_dead = "bee_balmalt-dead"
reagents_add = list("honey" = 0.1, "lye" = 0.3) //To make wax
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/bee_balm/honey
seed = /obj/item/seeds/bee_balm/honey
name = "honey balm"
desc = "A large honey filled pod of a flower."
icon_state = "bee_balmalt"
filling_color = "#FF6347"
bitesize_mod = 8
tastes = list("wax" = 1)
foodtype = SUGAR
+22
View File
@@ -0,0 +1,22 @@
/obj/item/seeds/garlic
name = "pack of garlic seeds"
desc = "A packet of extremely pungent seeds."
icon_state = "seed-garlic"
species = "garlic"
plantname = "Garlic Sprouts"
product = /obj/item/reagent_containers/food/snacks/grown/garlic
yield = 6
potency = 25
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
reagents_add = list("garlic" = 0.15, "nutriment" = 0.1)
/obj/item/reagent_containers/food/snacks/grown/garlic
seed = /obj/item/seeds/garlic
name = "garlic"
desc = "Delicious, but with a potentially overwhelming odor."
icon_state = "garlic"
filling_color = "#C0C9A0"
bitesize_mod = 2
tastes = list("garlic" = 1)
wine_power = 10
+71 -1
View File
@@ -14,7 +14,9 @@
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
mutatelist = list(/obj/item/seeds/harebell)
mutatelist = list()//add /obj/item/seeds/starthistle/corpse_flower when corpse flowers work.
T.assume_air(stank)
T.air_update_turf()
/obj/item/seeds/starthistle/harvest(mob/user)
var/obj/machinery/hydroponics/parent = loc
@@ -27,6 +29,74 @@
harvestseeds.forceMove(output_loc)
parent.update_tray()
/*
// Corpse flower
/obj/item/seeds/starthistle/corpse_flower
name = "pack of corpse flower seeds"
desc = "A species of plant that emits a horrible odor. The odor stops being produced in difficult atmospheric conditions."
icon_state = "seed-corpse-flower"
species = "corpse-flower"
plantname = "Corpse flower"
production = 2
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
genes = list()
mutatelist = list()
/obj/item/seeds/starthistle/corpse_flower/pre_attack(obj/machinery/hydroponics/I)
if(istype(I, /obj/machinery/hydroponics))
if(!I.myseed)
START_PROCESSING(SSobj, src)
return ..()
/obj/item/seeds/starthistle/corpse_flower/process()
var/obj/machinery/hydroponics/parent = loc
if(parent.age < maturation) // Start a little before it blooms
return
var/turf/open/T = get_turf(parent)
if(abs(ONE_ATMOSPHERE - T.return_air().return_pressure()) > (potency/10 + 10)) // clouds can begin showing at around 50-60 potency in standard atmos
return
var/datum/gas_mixture/stank = new
ADD_GAS(/datum/gas/miasma, stank.gases)
stank.gases[/datum/gas/miasma][MOLES] = (yield + 6)*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
*/
//commented out until it can be fixed.
//Galaxy Thistle
/obj/item/seeds/galaxythistle
name = "pack of galaxythistle seeds"
desc = "An impressive species of weed that is thought to have evolved from the simple milk thistle. Contains flavolignans that can help repair a damaged liver."
icon_state = "seed-galaxythistle"
species = "galaxythistle"
plantname = "Galaxythistle"
product = /obj/item/reagent_containers/food/snacks/grown/galaxythistle
lifespan = 70
endurance = 40
maturation = 3
production = 2
yield = 2
potency = 25
growthstages = 3
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive)
mutatelist = list()
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/silibinin = 0.1)
/obj/item/seeds/galaxythistle/Initialize()
..()
unset_mutability(/datum/plant_gene/trait/invasive, PLANT_GENE_REMOVABLE)
/obj/item/reagent_containers/food/snacks/grown/galaxythistle
seed = /obj/item/seeds/galaxythistle
name = "galaxythistle flower head"
desc = "This spiny cluster of florets reminds you of the highlands."
icon_state = "galaxythistle"
filling_color = "#1E7549"
bitesize_mod = 3
foodtype = VEGETABLES
wine_power = 35
tastes = list("thistle" = 2, "artichoke" = 1)
// Cabbage
/obj/item/seeds/cabbage
+29 -1
View File
@@ -172,7 +172,6 @@
qdel(src)
to_chat(user, "<span class='notice'>You plant the walking mushroom.</span>")
// Chanterelle
/obj/item/seeds/chanter
name = "pack of chanterelle mycelium"
@@ -191,6 +190,7 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list("nutriment" = 0.1)
mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle
seed = /obj/item/seeds/chanter
@@ -199,6 +199,34 @@
icon_state = "chanterelle"
filling_color = "#FFA500"
//Jupiter Cup
/obj/item/seeds/chanterelle/jupitercup
name = "pack of jupiter cup mycelium"
desc = "This mycelium grows into jupiter cups. Zeus would be envious at the power at your fingertips."
icon_state = "mycelium-jupitercup"
species = "jupitercup"
plantname = "Jupiter Cups"
product = /obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup
lifespan = 40
production = 4
endurance = 8
yield = 4
growthstages = 2
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/liquidelectricity, /datum/plant_gene/trait/plant_type/carnivory)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
/obj/item/seeds/chanterelle/jupitercup/Initialize()
..()
unset_mutability(/datum/plant_gene/reagent/liquidelectricity, PLANT_GENE_EXTRACTABLE)
unset_mutability(/datum/plant_gene/trait/plant_type/carnivory, PLANT_GENE_REMOVABLE)
/obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup
seed = /obj/item/seeds/chanterelle/jupitercup
name = "jupiter cup"
desc = "A strange red mushroom, its surface is moist and slick. You wonder how many tiny worms have met their fate inside."
icon_state = "jupitercup"
filling_color = "#B5003D"
// Glowshroom
/obj/item/seeds/glowshroom
+27
View File
@@ -0,0 +1,27 @@
// Peach
/obj/item/seeds/peach
name = "pack of peach seeds"
desc = "These seeds grow into peach trees."
icon_state = "seed-peach"
species = "peach"
plantname = "Peach Tree"
product = /obj/item/reagent_containers/food/snacks/grown/peach
lifespan = 65
endurance = 40
yield = 3
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "peach-grow"
icon_dead = "peach-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
/obj/item/reagent_containers/food/snacks/grown/peach
seed = /obj/item/seeds/peach
name = "peach"
desc = "It's fuzzy!"
icon_state = "peach"
filling_color = "#FF4500"
bitesize = 25
foodtype = FRUIT
juice_results = list("peachjuice" = 0)
tastes = list("peach" = 1)
+18 -1
View File
@@ -33,7 +33,7 @@
species = "teaastra"
plantname = "Tea Astra Plant"
product = /obj/item/reagent_containers/food/snacks/grown/tea/astra
mutatelist = list()
mutatelist = list(/obj/item/seeds/tea/catnip)
reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1)
rarity = 20
@@ -45,6 +45,23 @@
grind_results = list("teapowder" = 0, "salglu_solution" = 0)
// Kitty drugs
/obj/item/seeds/tea/catnip
name = "pack of catnip seeds"
icon_state = "seed-catnip"
desc = "Long stocks with flowering tips that has a chemical to make feline attracted to it."
species = "catnip"
plantname = "Catnip Plant"
product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip
reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3)
rarity = 50
/obj/item/reagent_containers/food/snacks/grown/tea/catnip
seed = /obj/item/seeds/tea/catnip
name = "Catnip buds"
icon_state = "catnip"
filling_color = "#4582B4"
grind_results = list("catnp" = 2, "water" = 1)
// Coffee
/obj/item/seeds/coffee
name = "pack of coffee arabica seeds"
+27 -2
View File
@@ -169,8 +169,27 @@
//Pests & Weeds//////////////////////////////////////////////////////////
else if(pestlevel >= 5)
adjustHealth(-1 / rating)
if(pestlevel >= 8)
if(!myseed.get_gene(/datum/plant_gene/trait/plant_type/carnivory))
adjustHealth(-2 / rating)
else
adjustHealth(2 / rating)
adjustPests(-1 / rating)
else if(pestlevel >= 4)
if(!myseed.get_gene(/datum/plant_gene/trait/plant_type/carnivory))
adjustHealth(-1 / rating)
else
adjustHealth(1 / rating)
if(prob(50))
adjustPests(-1 / rating)
else if(pestlevel < 4 && myseed.get_gene(/datum/plant_gene/trait/plant_type/carnivory))
adjustHealth(-2 / rating)
if(prob(5))
adjustPests(-1 / rating)
// If it's a weed, it doesn't stunt the growth
if(weedlevel >= 5 && !myseed.get_gene(/datum/plant_gene/trait/plant_type/weed_hardy))
@@ -210,6 +229,12 @@
needs_update = 1
if (needs_update)
update_icon()
if(myseed && prob(5 * (11-myseed.production)))
for(var/g in myseed.genes)
if(istype(g, /datum/plant_gene/trait))
var/datum/plant_gene/trait/selectedtrait = g
selectedtrait.on_grow(src)
return
/obj/machinery/hydroponics/proc/nutrimentMutation()
+62 -3
View File
@@ -1,8 +1,18 @@
/datum/plant_gene
var/name
var/mutability_flags = PLANT_GENE_EXTRACTABLE | PLANT_GENE_REMOVABLE ///These flags tells the genemodder if we want the gene to be extractable, only removable or neither.
/datum/plant_gene/proc/get_name() // Used for manipulator display and gene disk name.
return name
var/formatted_name
if(!(mutability_flags & PLANT_GENE_REMOVABLE && mutability_flags & PLANT_GENE_EXTRACTABLE))
if(mutability_flags & PLANT_GENE_REMOVABLE)
formatted_name += "Fragile "
else if(mutability_flags & PLANT_GENE_EXTRACTABLE)
formatted_name += "Essential "
else
formatted_name += "Immutable "
formatted_name += name
return formatted_name
/datum/plant_gene/proc/can_add(obj/item/seeds/S)
return !istype(S, /obj/item/seeds/sample) // Samples can't accept new genes
@@ -101,7 +111,16 @@
var/rate = 0.04
/datum/plant_gene/reagent/get_name()
return "[name] production [rate*100]%"
var/formatted_name
if(!(mutability_flags & PLANT_GENE_REMOVABLE && mutability_flags & PLANT_GENE_EXTRACTABLE))
if(mutability_flags & PLANT_GENE_REMOVABLE)
formatted_name += "Fragile "
else if(mutability_flags & PLANT_GENE_EXTRACTABLE)
formatted_name += "Essential "
else
formatted_name += "Immutable "
formatted_name += "[name] production [rate*100]%"
return formatted_name
/datum/plant_gene/reagent/proc/set_reagent(reag_id)
reagent_id = reag_id
@@ -132,8 +151,17 @@
return FALSE
return TRUE
/datum/plant_gene/reagent/polypyr
name = "Polypyrylium Oligomers"
reagent_id = /datum/reagent/medicine/polypyr
rate = 0.15
// Various traits affecting the product. Each must be somehow useful.
/datum/plant_gene/reagent/liquidelectricity
name = "Liquid Electricity"
reagent_id = "liquidelectricity"
rate = 0.1
// Various traits affecting the product.
/datum/plant_gene/trait
var/rate = 0.05
var/examine_line = ""
@@ -173,6 +201,10 @@
/datum/plant_gene/trait/proc/on_throw_impact(obj/item/reagent_containers/food/snacks/grown/G, atom/target)
return
///This proc triggers when the tray processes and a roll is sucessful, the success chance scales with production.
/datum/plant_gene/trait/proc/on_grow(obj/machinery/hydroponics/H)
return
/datum/plant_gene/trait/squash
// Allows the plant to be squashed when thrown or slipped on, leaving a colored mess and trash type item behind.
// Also splashes everything in target turf with reagents and applies other trait effects (teleporting, etc) to the target by on_squash.
@@ -400,6 +432,30 @@
if(!(G.resistance_flags & FIRE_PROOF))
G.resistance_flags |= FIRE_PROOF
///Invasive spreading lets the plant jump to other trays, the spreadinhg plant won't replace plants of the same type.
/datum/plant_gene/trait/invasive
name = "Invasive Spreading"
/datum/plant_gene/trait/invasive/on_grow(obj/machinery/hydroponics/H)
for(var/step_dir in GLOB.alldirs)
var/obj/machinery/hydroponics/HY = locate() in get_step(H, step_dir)
if(HY && prob(15))
if(HY.myseed) // check if there is something in the tray.
if(HY.myseed.type == H.myseed.type && HY.dead != 0)
continue //It should not destroy its owm kind.
qdel(HY.myseed)
HY.myseed = null
HY.myseed = H.myseed.Copy()
HY.age = 0
HY.dead = 0
HY.plant_health = HY.myseed.endurance
HY.lastcycle = world.time
HY.harvest = 0
HY.weedlevel = 0 // Reset
HY.pestlevel = 0 // Reset
HY.update_icon()
HY.visible_message("<span class='warning'>The [H.myseed.plantname] spreads!</span>")
/datum/plant_gene/trait/plant_type // Parent type
name = "you shouldn't see this"
trait_id = "plant_type"
@@ -412,3 +468,6 @@
/datum/plant_gene/trait/plant_type/alien_properties
name ="?????"
/datum/plant_gene/trait/plant_type/carnivory
name = "Obligate Carnivory"
+13
View File
@@ -67,6 +67,7 @@
for(var/reag_id in reagents_add)
genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id])
reagents_from_genes() //quality coding
/obj/item/seeds/proc/Copy()
var/obj/item/seeds/S = new type(null, 1)
@@ -94,6 +95,18 @@
for(var/datum/plant_gene/reagent/R in genes)
reagents_add[R.reagent_id] = R.rate
///This proc adds a mutability_flag to a gene
/obj/item/seeds/proc/set_mutability(typepath, mutability)
var/datum/plant_gene/g = get_gene(typepath)
if(g)
g.mutability_flags |= mutability
///This proc removes a mutability_flag from a gene
/obj/item/seeds/proc/unset_mutability(typepath, mutability)
var/datum/plant_gene/g = get_gene(typepath)
if(g)
g.mutability_flags &= ~mutability
/obj/item/seeds/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25, wrmut = 2, wcmut = 5, traitmut = 0)
adjust_lifespan(rand(-lifemut,lifemut))
adjust_endurance(rand(-endmut,endmut))
@@ -1179,7 +1179,10 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/datum/species/proc/check_weakness(obj/item, mob/living/attacker)
return FALSE
////////
/datum/species/proc/check_species_weakness(obj/item, mob/living/attacker)
return 0 //This is not a boolean, it's the multiplier for the damage that the user takes from the item.It is added onto the check_weakness value of the mob, and then the force of the item is multiplied by this value
////////
//LIFE//
////////
@@ -11,7 +11,7 @@
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth
liked_food = VEGETABLES | DAIRY
liked_food = VEGETABLES | DAIRY| CLOTH
disliked_food = FRUIT | GROSS
toxic_food = MEAT | RAW
@@ -43,18 +43,19 @@
/datum/species/moth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
. = ..()
if(chem.id == "pestkiller")
if(chem.type == /datum/reagent/toxin/pestkiller)
H.adjustToxLoss(3)
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
/datum/species/moth/check_weakness(obj/item/weapon, mob/living/attacker)
/datum/species/moth/check_species_weakness(obj/item/weapon, mob/living/attacker)
if(istype(weapon, /obj/item/melee/flyswatter))
return 9 //flyswatters deal 10x damage to moths
return 0
/datum/species/moth/space_move(mob/living/carbon/human/H)
. = ..()
if(H.loc && !isspaceturf(H.loc) && H.dna.features["moth_wings"] != "Burnt Off")
var/datum/gas_mixture/current = H.loc.return_air()
if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible
return TRUE
return TRUE
@@ -92,6 +92,10 @@
to_chat(victim, "<span class='warning'>[H] tries to bite you, but stops before touching you!</span>")
to_chat(H, "<span class='warning'>[victim] is blessed! You stop just in time to avoid catching fire.</span>")
return
if(victim?.reagents?.has_reagent("garlic"))
to_chat(victim, "<span class='warning'>[H] tries to bite you, but recoils in disgust!</span>")
to_chat(H, "<span class='warning'>[victim] reeks of garlic! you can't bring yourself to drain such tainted blood.</span>")
return
if(!do_after(H, 30, target = victim))
return
var/blood_volume_difference = BLOOD_VOLUME_MAXIMUM - H.blood_volume //How much capacity we have left to absorb blood
@@ -537,6 +537,27 @@
color = "#00F0FF"
taste_description = "blue cherry"
/datum/reagent/consumable/garlic //NOTE: having garlic in your blood stops vampires from biting you.
name = "Garlic Juice"
id = "garlic"
description = "Crushed garlic. Chefs love it, but it can make you smell bad."
color = "#FEFEFE"
taste_description = "garlic"
metabolization_rate = 0.15 * REAGENTS_METABOLISM
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M)
if(isvampire(M)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit.
if(prob(min(25,current_cycle)))
to_chat(M, "<span class='danger'>You can't get the scent of garlic out of your nose! You can barely think...</span>")
M.Jitter(10)
else if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.job == "Cook")
if(prob(20)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
H.heal_bodypart_damage(1,1, 0)
. = 1
..()
/datum/reagent/consumable/rice
name = "Rice"
id = "rice"
@@ -271,7 +271,7 @@
pH = 10.7
/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M)
if(M.getFireLoss() > 50)
if(M.getFireLoss() > 25)
M.adjustFireLoss(-4*REM, 0) //Twice as effective as silver sulfadiazine for severe burns
else
M.adjustFireLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
@@ -545,7 +545,7 @@
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() > 50)
if(M.getBruteLoss() > 25)
M.adjustBruteLoss(-4*REM, 0) //Twice as effective as styptic powder for severe bruising
else
M.adjustBruteLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
@@ -1418,3 +1418,47 @@
M.adjustToxLoss(1, 0)
..()
. = 1
/datum/reagent/medicine/silibinin
name = "Silibinin"
description = "A thistle derrived hepatoprotective flavolignan mixture that help reverse damage to the liver."
reagent_state = SOLID
color = "#FFFFD0"
metabolization_rate = 1.5 * REAGENTS_METABOLISM
/datum/reagent/medicine/silibinin/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, -2)//Add a chance to cure liver trauma once implemented.
..()
. = 1
/datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems.
name = "Polypyrylium Oligomers"
description = "A?purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals."
reagent_state = SOLID
color = "#9423FF"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 50
taste_description = "numbing bitterness"
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I w?nted a collection of small positive effects, this is as hard to obtain as coniine after all.
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25)
M.adjustBruteLoss(-0.35, 0)
if(prob(50))
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.bleed_rate = max(H.bleed_rate - 1, 0)
..()
. = 1
/datum/reagent/medicine/polypyr/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(method == TOUCH || method == VAPOR)
if(M && ishuman(M) && reac_volume >= 0.5)
var/mob/living/carbon/human/H = M
H.hair_color = "92f"
H.facial_hair_color = "92f"
H.update_hair()
/datum/reagent/medicine/polypyr/overdose_process(mob/living/M)
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
..()
. = 1
@@ -2160,3 +2160,18 @@
/datum/reagent/changeling_string/Destroy()
qdel(original_dna)
return ..()
/datum/reagent/pax/catnip
name = "catnip"
id = "catnip"
taste_description = "grass"
description = "A colorless liquid that makes people more peaceful and felines more happy."
metabolization_rate = 1.75 * REAGENTS_METABOLISM
/datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M)
if(prob(20))
M.emote("nya")
if(prob(20))
to_chat(M, "<span class = 'notice'>[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]</span>")
M.adjustArousalLoss(2)
..()
@@ -9,6 +9,7 @@
taste_description = "bitterness"
taste_mult = 1.2
var/toxpwr = 1.5
var/silent_toxin = FALSE //won't produce a pain message when processed by liver/life() if there isn't another non-silent toxin present.
/datum/reagent/toxin/on_mob_life(mob/living/carbon/M)
if(toxpwr)
@@ -899,6 +900,24 @@
taste_description = "bone hurting"
overdose_threshold = 20
/datum/reagent/toxin/bungotoxin
name = "Bungotoxin"
description = "A horrible cardiotoxin that protects the humble bungo pit."
silent_toxin = TRUE
color = "#EBFF8E"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
toxpwr = 0
taste_description = "tannin"
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_HEART, 3)
M.confused = M.dizziness //add a tertiary effect here if this is isn't an effective poison.
if(current_cycle >= 12 && prob(8))
var/tox_message = pick("You feel your heart spasm in your chest.", "You feel faint.","You feel you need to catch your breath.","You feel a prickle of pain in your chest.")
to_chat(M, "<span class='notice'>[tox_message]</span>")
. = 1
..()
/datum/reagent/toxin/bonehurtingjuice/on_mob_add(mob/living/carbon/M)
M.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice)
@@ -307,3 +307,9 @@
id = "psicodine"
results = list("psicodine" = 5)
required_reagents = list( "mannitol" = 2, "water" = 2, "impedrezene" = 1)
/datum/chemical_reaction/prussian_blue
name = "Prussian Blue"
id = "prussian_blue"
results = list("prussian_blue" = 2)
required_reagents = list( "iron" = 1, "cyanide" = 6)
@@ -276,6 +276,50 @@
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/////////////////////////////////////////
//////////////Atmos Tanks////////////////
/////////////////////////////////////////
/datum/design/emergency_oxygen
name = "Emergency Oxygen Tank"
desc = "An empty emergency oxygen tank. Used for emergencies."
id = "emergency_oxygen"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1000)
build_path = /obj/item/tank/internals/emergency_oxygen
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ALL
/datum/design/emergency_oxygen_double
name = "Double Emergency Oxygen Tank"
desc = "An double emergency oxygen tank."
id = "double_emergency_oxygen"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1500, MAT_SILVER = 200)
build_path = /obj/item/tank/internals/emergency_oxygen/double/empty
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
/datum/design/oxygen_tank
name = "Oxygen Tank"
desc = "An empty oxygen tank."
id = "oxygen_tank"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/tank/internals/oxygen/empty
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/plasma_tank
name = "Plasma Tank"
desc = "An empty plasma tank."
id = "plasma_tank"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/tank/internals/plasma/empty
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
/////////////////////////////////////////
////////////Janitor Designs//////////////
/////////////////////////////////////////
+2 -2
View File
@@ -163,7 +163,7 @@
prereq_ids = list("base")
design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin",
"atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod",
"apc_control", "cell_charger", "power control", "airlock_board", "firelock_board", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine")
"apc_control", "cell_charger", "power control", "airlock_board", "firelock_board", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine", "emergency_oxygen", "oxygen_tank", "plasma_tank")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6000)
export_price = 5000
@@ -172,7 +172,7 @@
display_name = "Advanced Engineering"
description = "Pushing the boundaries of physics, one chainsaw-fist at a time."
prereq_ids = list("engineering", "emp_basic")
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "tray_goggles_prescription", "engine_goggles_prescription", "mesons_prescription")
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "tray_goggles_prescription", "engine_goggles_prescription", "mesons_prescription", "double_emergency_oxygen")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000)
export_price = 5000
+2
View File
@@ -18,12 +18,14 @@
/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,
/obj/item/seeds/lime = 3,
/obj/item/seeds/onion = 3,
/obj/item/seeds/orange = 3,
/obj/item/seeds/peach = 3,
/obj/item/seeds/peanutseed = 3,
/obj/item/seeds/pineapple = 3,
/obj/item/seeds/potato = 3,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 24 KiB

@@ -11,440 +11,3 @@
category = SLOT_IN_BACKPACK
path = /obj/item/bikehorn
geargroupID = list("DONORTEST") //This is a list mainly for the sake of testing, but geargroupID works just fine with ordinary strings
/datum/gear/kevhorn
name = "Airhorn"
category = SLOT_IN_BACKPACK
path = /obj/item/bikehorn/airhorn
ckeywhitelist = list("kevinz000")
/datum/gear/cebusoap
name = "Cebutris' soap"
category = SLOT_IN_BACKPACK
path = /obj/item/custom/ceb_soap
ckeywhitelist = list("cebutris")
/datum/gear/kiaracloak
name = "Kiara's cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaracollar
name = "Kiara's collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaramedal
name = "Insignia of Steele"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/accessory/medal/steele
ckeywhitelist = list("inferno707")
/datum/gear/hheart
name = "The Hollow Heart"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/hheart
ckeywhitelist = list("inferno707")
/datum/gear/engravedzippo
name = "Engraved zippo"
category = SLOT_HANDS
path = /obj/item/lighter/gold
ckeywhitelist = list("dirtyoldharry")
/datum/gear/geisha
name = "Geisha suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/geisha
ckeywhitelist = list("atiefling")
/datum/gear/specialscarf
name = "Special scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/zomb
ckeywhitelist = list("zombierobin")
/datum/gear/redmadcoat
name = "The Mad's labcoat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
ckeywhitelist = list("zombierobin")
/datum/gear/santahat
name = "Santa hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/reindeerhat
name = "Reindeer hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/hardhat/reindeer/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treeplushie
name = "Christmas tree plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/tree
ckeywhitelist = list("illotafv")
/datum/gear/santaoutfit
name = "Santa costume"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/space/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treecloak
name = "Christmas tree cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/festive
ckeywhitelist = list("illotafv")
/datum/gear/carrotplush
name = "Carrot plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/carrot
ckeywhitelist = list("improvedname")
/datum/gear/carrotcloak
name = "Carrot cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/carrot
ckeywhitelist = list("improvedname")
/datum/gear/albortorosamask
name = "Alborto Rosa mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/luchador/zigfie
ckeywhitelist = list("zigfie")
/datum/gear/mankini
name = "Mankini"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/mankini
ckeywhitelist = list("zigfie")
/datum/gear/pinkshoes
name = "Pink shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/pink
ckeywhitelist = list("zigfie")
/datum/gear/reecesgreatcoat
name = "Reece's Great Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/trenchcoat/green
ckeywhitelist = list("geemiesif")
/datum/gear/russianflask
name = "Russian flask"
category = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/russian
cost = 2
ckeywhitelist = list("slomka")
/datum/gear/stalkermask
name = "S.T.A.L.K.E.R. mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/stalker
ckeywhitelist = list("slomka")
/datum/gear/stripedcollar
name = "Striped collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/stripe
ckeywhitelist = list("jademanique")
/datum/gear/performersoutfit
name = "Bluish performer's outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/singery/custom
ckeywhitelist = list("killer402402")
/datum/gear/vermillion
name = "Vermillion clothing"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/suit/vermillion
ckeywhitelist = list("fractious")
/datum/gear/AM4B
name = "Foam Force AM4-B"
category = SLOT_IN_BACKPACK
path = /obj/item/gun/ballistic/automatic/AM4B
ckeywhitelist = list("zeronetalpha")
/datum/gear/carrotsatchel
name = "Carrot Satchel"
category = SLOT_HANDS
path = /obj/item/storage/backpack/satchel/carrot
ckeywhitelist = list("improvedname")
/datum/gear/naomisweater
name = "worn black sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/black/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/naomicollar
name = "worn pet collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/gladiator
name = "Gladiator Armor"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/gladiator
ckeywhitelist = list("aroche")
/datum/gear/bloodredtie
name = "Blood Red Tie"
category = SLOT_NECK
path = /obj/item/clothing/neck/tie/bloodred
ckeywhitelist = list("kyutness")
/datum/gear/puffydress
name = "Puffy Dress"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/puffydress
ckeywhitelist = list("stallingratt")
/datum/gear/labredblack
name = "Black and Red Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/labredblack
ckeywhitelist = list("blakeryan", "durandalphor")
/datum/gear/torisword
name = "Rainbow Zweihander"
category = SLOT_IN_BACKPACK
path = /obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/darksabre
name = "Dark Sabre"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/darksabre
ckeywhitelist = list("inferno707")
datum/gear/darksabresheath
name = "Dark Sabre Sheath"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/belt/sabre/darksabre
ckeywhitelist = list("inferno707")
/datum/gear/toriball
name = "Rainbow Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/izzyball
name = "Katlin's Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow/izzy
ckeywhitelist = list("izzyinbox")
/datum/gear/cloak
name = "Green Cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/green
ckeywhitelist = list("killer402402")
/datum/gear/steelflask
name = "Steel Flask"
category = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/steel
cost = 2
ckeywhitelist = list("nik707")
/datum/gear/paperhat
name = "Paper Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/paperhat
ckeywhitelist = list("kered2")
/datum/gear/cloakce
name = "Polychromic CE Cloak"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/neck/cloak/polychromic/polyce
ckeywhitelist = list("worksbythesea", "blakeryan")
/datum/gear/ssk
name = "Stun Sword Kit"
category = SLOT_IN_BACKPACK
path = /obj/item/ssword_kit
ckeywhitelist = list("phillip458")
/datum/gear/techcoat
name = "Techomancers Labcoat"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat
ckeywhitelist = list("wilchen")
/datum/gear/leechjar
name = "Jar of Leeches"
category = SLOT_IN_BACKPACK
path = /obj/item/custom/leechjar
ckeywhitelist = list("sgtryder")
/datum/gear/darkarmor
name = "Dark Armor"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/armor/vest/darkcarapace
ckeywhitelist = list("inferno707")
/datum/gear/devilwings
name = "Strange Wings"
category = SLOT_NECK
path = /obj/item/clothing/neck/devilwings
ckeywhitelist = list("kitsun")
/datum/gear/flagcape
name = "US Flag Cape"
category = SLOT_IN_BACKPACK
path = /obj/item/bedsheet/custom/flagcape
ckeywhitelist = list("darnchacha")
/datum/gear/luckyjack
name = "Lucky Jackboots"
category = SLOT_IN_BACKPACK
path = /obj/item/clothing/shoes/lucky
ckeywhitelist = list("donaldtrumpthecommunist")
/datum/gear/raiqbawks
name = "Miami Boombox"
category = SLOT_HANDS
cost = 2
path = /obj/item/boombox/raiq
ckeywhitelist = list("chefferz")
/datum/gear/m41
name = "Toy M41"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/gun/m41
ckeywhitelist = list("thalverscholen")
/datum/gear/Divine_robes
name = "Divine robes"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/lunasune
ckeywhitelist = list("invader4352")
/datum/gear/gothcoat
name = "Goth Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/gothcoat
ckeywhitelist = list("norko")
/datum/gear/corgisuit
name = "Corgi Suit"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/ian_costume
ckeywhitelist = list("cathodetherobot")
/datum/gear/sharkcloth
name = "Leon's Skimpy Outfit"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/leoskimpy
ckeywhitelist = list("spectrosis")
/datum/gear/mimemask
name = "Mime Mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/mime
ckeywhitelist = list("pireamaineach")
/datum/gear/mimeoveralls
name = "Mime's Overalls"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/mimeoveralls
ckeywhitelist = list("pireamaineach")
/datum/gear/soulneck
name = "Soul Necklace"
category = SLOT_NECK
path = /obj/item/clothing/neck/undertale
ckeywhitelist = list("twilightic")
/datum/gear/frenchberet
name = "French Beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/frenchberet
ckeywhitelist = list("notazoltan")
/datum/gear/zuliecloak
name = "Project: Zul-E"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/zuliecloak
ckeywhitelist = list("asky")
/datum/gear/blackredgold
name = "Black, Red, and Gold Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/blackredgold
ckeywhitelist = list("ttbnc")
/datum/gear/fritzplush
name = "Fritz Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/mammal/dog/fritz
ckeywhitelist = list("analwerewolf")
/datum/gear/kimono
name = "Kimono"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/kimono
ckeywhitelist = list("sfox63")
/datum/gear/commjacket
name = "Dusty Commisar's Cloak"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/commjacket
ckeywhitelist = list("sadisticbatter")
/datum/gear/mw2_russian_para
name = "Russian Paratrooper Jumper"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/mw2_russian_para
ckeywhitelist = list("investigator77")
/datum/gear/longblackgloves
name = "Luna's Gauntlets"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/longblackgloves
ckeywhitelist = list("bigmanclancy")
/datum/gear/trendy_fit
name = "Trendy Fit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trendy_fit
ckeywhitelist = list("midgetdragon")
/datum/gear/singery
name = "Yellow Performer Outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/singery
ckeywhitelist = list("maxlynchy")
/datum/gear/csheet
name = "NT Bedsheet"
category = SLOT_NECK
path = /obj/item/bedsheet/captain
ckeywhitelist = list("tikibomb")
/datum/gear/borgplush
name = "Robot Plush"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/borgplushie
ckeywhitelist = list("nicholaiavenicci")
/datum/gear/donorberet
name = "Atmos Beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/blueberet
ckeywhitelist = list("foxystalin")
@@ -154,8 +154,27 @@
attack_verb = "flutter" //wat?
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
liked_food = MEAT | FRUIT
disliked_food = TOXIC
liked_food = VEGETABLES | DAIRY| CLOTH
disliked_food = FRUIT | GROSS
toxic_food = MEAT | RAW
/datum/species/insect/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
. = ..()
if(chem.type == /datum/reagent/toxin/pestkiller)
H.adjustToxLoss(3)
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
/datum/species/insect/check_species_weakness(obj/item/weapon, mob/living/attacker)
if(istype(weapon, /obj/item/melee/flyswatter))
return 9 //flyswatters deal 10x damage to moths
return 0
/datum/species/insect/space_move(mob/living/carbon/human/H)
. = ..()
if(H.loc && !isspaceturf(H.loc) && H.dna.features["moth_wings"] != "Burnt Off")
var/datum/gas_mixture/current = H.loc.return_air()
if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible
return TRUE
/datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H)
if(H)
+2 -1
View File
@@ -14,7 +14,6 @@
// BEGIN_INCLUDE
#include "_maps\_basemap.dm"
#include "_maps\map_files\HyperStation\hyperstation.dmm"
#include "code\_compile_options.dm"
#include "code\world.dm"
#include "code\__DEFINES\_globals.dm"
@@ -1733,6 +1732,7 @@
#include "code\modules\hydroponics\grown\cotton.dm"
#include "code\modules\hydroponics\grown\eggplant.dm"
#include "code\modules\hydroponics\grown\flowers.dm"
#include "code\modules\hydroponics\grown\garlic.dm"
#include "code\modules\hydroponics\grown\grass_carpet.dm"
#include "code\modules\hydroponics\grown\kudzu.dm"
#include "code\modules\hydroponics\grown\melon.dm"
@@ -1740,6 +1740,7 @@
#include "code\modules\hydroponics\grown\mushrooms.dm"
#include "code\modules\hydroponics\grown\nettle.dm"
#include "code\modules\hydroponics\grown\onion.dm"
#include "code\modules\hydroponics\grown\peach.dm"
#include "code\modules\hydroponics\grown\peanuts.dm"
#include "code\modules\hydroponics\grown\pineapple.dm"
#include "code\modules\hydroponics\grown\potato.dm"