mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-29 18:40:42 +00:00
Speeds up gas movement significantly Documents the intent and finer details of the atmos system (Thanks dunc) Fixes excited groups constantly rebuilding, this broke 4 years ago Fixes superconductors just straight up not working Allows turfs to sleep while inside an excited group Adds a new subprocess to SSAir to support rebuilding in this state Most heat based behavior no longer relies on being inside a fire Adds a new element to support doing this cleanly Adds a new subprocess to SSAir to support doing this while a turf is asleep Refactors air_update_turf to allow for finer control Makes apcs take damage in heat to prevent infinite plasma fire diffs Cleans up immutable gas mixtures to make them work properly when the mix has gas in it Planetary turfs no longer create a new copy of themselves each time they process. We instead use a global immutable mix Cleans up a typed for loop in reactions Canisters will take damage from outside heat now Speeds up excited group dismantle Increases the superconductor threshold by 200k Cleans up some roundstart ATs on some ruins Uses /turf/open/var/excited to track if a turf is actively processing, preventing a |= Prevents openspace from trying to melt Tweaks a canister examine line Makes planetary turfs reset to base when broken down as part of an excited group Makes it impossible for planetary turfs to rebuild, just like space tiles Fixes closed turfs not activating their replacement when destroyed by moving closed -> open turf activation to the adjacent air subsystem. They were activating and then going back to sleep before adjacent air got a chance to tick. Fire alarms will trigger when the area gets too cold for humans
296 lines
9.7 KiB
Plaintext
296 lines
9.7 KiB
Plaintext
// Starthistle
|
|
/obj/item/seeds/starthistle
|
|
name = "pack of starthistle seeds"
|
|
desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots."
|
|
icon_state = "seed-starthistle"
|
|
species = "starthistle"
|
|
plantname = "Starthistle"
|
|
lifespan = 70
|
|
endurance = 50 // damm pesky weeds
|
|
maturation = 5
|
|
production = 1
|
|
yield = 2
|
|
potency = 10
|
|
instability = 35
|
|
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/starthistle/corpse_flower, /obj/item/seeds/galaxythistle)
|
|
graft_gene = /datum/plant_gene/trait/plant_type/weed_hardy
|
|
|
|
/obj/item/seeds/starthistle/harvest(mob/user)
|
|
var/obj/machinery/hydroponics/parent = loc
|
|
var/seed_count = yield
|
|
if(prob(getYield() * 20))
|
|
seed_count++
|
|
var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc
|
|
for(var/i in 1 to seed_count)
|
|
var/obj/item/seeds/starthistle/harvestseeds = Copy()
|
|
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(delta_time)
|
|
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)*3.5*MIASMA_CORPSE_MOLES*delta_time // this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses
|
|
stank.temperature = T20C // without this the room would eventually freeze and miasma mining would be easier
|
|
T.assume_air(stank)
|
|
T.air_update_turf(FALSE, FALSE)
|
|
|
|
//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/food/grown/galaxythistle
|
|
lifespan = 70
|
|
endurance = 40
|
|
maturation = 3
|
|
production = 2
|
|
yield = 2
|
|
potency = 25
|
|
instability = 35
|
|
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)
|
|
graft_gene = /datum/plant_gene/trait/invasive
|
|
|
|
/obj/item/seeds/galaxythistle/Initialize(mapload,nogenes)
|
|
. = ..()
|
|
if(!nogenes)
|
|
unset_mutability(/datum/plant_gene/trait/invasive, PLANT_GENE_REMOVABLE)
|
|
|
|
/obj/item/food/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"
|
|
bite_consumption_mod = 3
|
|
foodtypes = VEGETABLES
|
|
wine_power = 35
|
|
tastes = list("thistle" = 2, "artichoke" = 1)
|
|
|
|
// Cabbage
|
|
/obj/item/seeds/cabbage
|
|
name = "pack of cabbage seeds"
|
|
desc = "These seeds grow into cabbages."
|
|
icon_state = "seed-cabbage"
|
|
species = "cabbage"
|
|
plantname = "Cabbages"
|
|
product = /obj/item/food/grown/cabbage
|
|
lifespan = 50
|
|
endurance = 25
|
|
maturation = 3
|
|
production = 5
|
|
yield = 4
|
|
instability = 10
|
|
growthstages = 1
|
|
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(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
|
seed_flags = null
|
|
|
|
/obj/item/food/grown/cabbage
|
|
seed = /obj/item/seeds/cabbage
|
|
name = "cabbage"
|
|
desc = "Ewwwwwwwwww. Cabbage."
|
|
icon_state = "cabbage"
|
|
bite_consumption_mod = 2
|
|
foodtypes = VEGETABLES
|
|
wine_power = 20
|
|
|
|
// Sugarcane
|
|
/obj/item/seeds/sugarcane
|
|
name = "pack of sugarcane seeds"
|
|
desc = "These seeds grow into sugarcane."
|
|
icon_state = "seed-sugarcane"
|
|
species = "sugarcane"
|
|
plantname = "Sugarcane"
|
|
product = /obj/item/food/grown/sugarcane
|
|
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
|
lifespan = 60
|
|
endurance = 50
|
|
maturation = 3
|
|
yield = 4
|
|
instability = 15
|
|
growthstages = 2
|
|
reagents_add = list(/datum/reagent/consumable/sugar = 0.25)
|
|
mutatelist = list(/obj/item/seeds/bamboo)
|
|
|
|
/obj/item/food/grown/sugarcane
|
|
seed = /obj/item/seeds/sugarcane
|
|
name = "sugarcane"
|
|
desc = "Sickly sweet."
|
|
icon_state = "sugarcane"
|
|
bite_consumption_mod = 2
|
|
foodtypes = VEGETABLES | SUGAR
|
|
distill_reagent = /datum/reagent/consumable/ethanol/rum
|
|
|
|
// Gatfruit
|
|
/obj/item/seeds/gatfruit
|
|
name = "pack of gatfruit seeds"
|
|
desc = "These seeds grow into .357 revolvers."
|
|
icon_state = "seed-gatfruit"
|
|
species = "gatfruit"
|
|
plantname = "Gatfruit Tree"
|
|
product = /obj/item/food/grown/shell/gatfruit
|
|
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
|
lifespan = 20
|
|
endurance = 20
|
|
maturation = 40
|
|
production = 10
|
|
yield = 2
|
|
potency = 60
|
|
growthstages = 2
|
|
rarity = 60 // Obtainable only with xenobio+superluck.
|
|
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
|
|
reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05)
|
|
|
|
/obj/item/food/grown/shell/gatfruit
|
|
seed = /obj/item/seeds/gatfruit
|
|
name = "gatfruit"
|
|
desc = "It smells like burning."
|
|
icon_state = "gatfruit"
|
|
trash_type = /obj/item/gun/ballistic/revolver
|
|
bite_consumption_mod = 2
|
|
foodtypes = FRUIT
|
|
tastes = list("gunpowder" = 1)
|
|
wine_power = 90 //It burns going down, too.
|
|
|
|
//Cherry Bombs
|
|
/obj/item/seeds/cherry/bomb
|
|
name = "pack of cherry bomb pits"
|
|
desc = "They give you vibes of dread and frustration."
|
|
icon_state = "seed-cherry_bomb"
|
|
species = "cherry_bomb"
|
|
plantname = "Cherry Bomb Tree"
|
|
product = /obj/item/food/grown/cherry_bomb
|
|
mutatelist = list()
|
|
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/gunpowder = 0.7)
|
|
rarity = 60 //See above
|
|
|
|
/obj/item/food/grown/cherry_bomb
|
|
name = "cherry bombs"
|
|
desc = "You think you can hear the hissing of a tiny fuse."
|
|
icon_state = "cherry_bomb"
|
|
seed = /obj/item/seeds/cherry/bomb
|
|
bite_consumption_mod = 2
|
|
max_volume = 125 //Gives enough room for the gunpowder at max potency
|
|
max_integrity = 40
|
|
wine_power = 80
|
|
|
|
/obj/item/food/grown/cherry_bomb/attack_self(mob/living/user)
|
|
user.visible_message("<span class='warning'>[user] plucks the stem from [src]!</span>", "<span class='userdanger'>You pluck the stem from [src], which begins to hiss loudly!</span>")
|
|
log_bomber(user, "primed a", src, "for detonation")
|
|
detonate()
|
|
|
|
/obj/item/food/grown/cherry_bomb/deconstruct(disassembled = TRUE)
|
|
if(!disassembled)
|
|
detonate()
|
|
if(!QDELETED(src))
|
|
qdel(src)
|
|
|
|
/obj/item/food/grown/cherry_bomb/ex_act(severity)
|
|
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
|
|
|
|
/obj/item/food/grown/cherry_bomb/proc/detonate(mob/living/lanced_by)
|
|
icon_state = "cherry_bomb_lit"
|
|
playsound(src, 'sound/effects/fuse.ogg', seed.potency, FALSE)
|
|
reagents.chem_temp = 1000 //Sets off the gunpowder
|
|
reagents.handle_reactions()
|
|
|
|
// aloe
|
|
/obj/item/seeds/aloe
|
|
name = "pack of aloe seeds"
|
|
desc = "These seeds grow into aloe."
|
|
icon_state = "seed-aloe"
|
|
species = "aloe"
|
|
plantname = "Aloe"
|
|
product = /obj/item/food/grown/aloe
|
|
lifespan = 60
|
|
endurance = 25
|
|
maturation = 4
|
|
production = 4
|
|
yield = 6
|
|
growthstages = 5
|
|
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
|
|
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
|
|
|
|
/obj/item/food/grown/aloe
|
|
seed = /obj/item/seeds/aloe
|
|
name = "aloe"
|
|
desc = "Cut leaves from the aloe plant."
|
|
icon_state = "aloe"
|
|
bite_consumption_mod = 5
|
|
foodtypes = VEGETABLES
|
|
juice_results = list(/datum/reagent/consumable/aloejuice = 0)
|
|
distill_reagent = /datum/reagent/consumable/ethanol/tequila
|
|
|
|
/obj/item/food/grown/aloe/microwave_act(obj/machinery/microwave/M)
|
|
new /obj/item/stack/medical/aloe(drop_location(), 2)
|
|
qdel(src)
|
|
|
|
/obj/item/seeds/shrub
|
|
name = "pack of shrub seeds"
|
|
desc = "These seeds grow into hedge shrubs."
|
|
icon_state = "seed-shrub"
|
|
species = "shrub"
|
|
plantname = "Shrubbery"
|
|
product = /obj/item/grown/shrub
|
|
lifespan = 40
|
|
endurance = 30
|
|
maturation = 4
|
|
production = 6
|
|
yield = 2
|
|
instability = 10
|
|
growthstages = 3
|
|
reagents_add = list()
|
|
|
|
/obj/item/grown/shrub
|
|
seed = /obj/item/seeds/shrub
|
|
name = "shrub"
|
|
desc = "A shrubbery, it looks nice and it was only a few credits too. Plant it on the ground to grow a hedge, shrubbing skills not required."
|
|
icon_state = "shrub"
|
|
|
|
/obj/item/grown/shrub/attack_self(mob/user)
|
|
var/turf/player_turf = get_turf(user)
|
|
if(player_turf?.is_blocked_turf(TRUE))
|
|
return FALSE
|
|
user.visible_message("<span class='danger'>[user] begins to plant \the [src]...</span>")
|
|
if(do_after(user, 8 SECONDS, target = user.drop_location(), progress = TRUE))
|
|
new /obj/structure/fluff/hedge/opaque(user.drop_location())
|
|
to_chat(user, "<span class='notice'>You plant \the [src].</span>")
|
|
qdel(src)
|