This commit is contained in:
DragonTrance
2021-02-11 20:02:40 -07:00
parent e00a0700b1
commit 58b69503e3
41 changed files with 495 additions and 159 deletions
+90 -72
View File
@@ -1,7 +1,7 @@
// Starthistle
/obj/item/seeds/starthistle
name = "pack of starthistle seeds"
desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots."
desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots. Grind down these seeds for a substitution of mustardgrind."
icon_state = "seed-starthistle"
species = "starthistle"
plantname = "Starthistle"
@@ -9,7 +9,7 @@
endurance = 50 // damm pesky weeds
maturation = 5
production = 1
yield = 2
yield = 6
potency = 10
growthstages = 3
grind_results = list(/datum/reagent/mustardgrind = 1)
@@ -58,7 +58,6 @@
var/datum/gas_mixture/stank = new
var/list/cached_gases = stank.gases
cached_gases[/datum/gas/miasma] += (yield + 5)*7*MIASMA_CORPSE_MOLES // this process is only being called about 2/7 as much as corpses so this is 12-32 times a corpses
stank.temperature = T20C // without this the room would eventually freeze and miasma mining would be easier
T.assume_air(stank)
@@ -225,14 +224,17 @@
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime()
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
icon_state = "cherry_bomb_lit"
playsound(src, 'sound/effects/fuse.ogg', seed.potency, 0)
addtimer(CALLBACK(src, /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate), rand(50, 100))
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/detonate()
reagents.chem_temp = 1000 //Sets off the black powder
reagents.handle_reactions()
// Lavaland cactus
// Lavaland Cactus
/obj/item/seeds/lavaland/cactus
name = "pack of fruiting cactus seeds"
desc = "These seeds grow into fruiting cacti."
@@ -243,6 +245,7 @@
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
growthstages = 2
// Coconut
/obj/item/seeds/coconut
name = "pack of coconut seeds"
@@ -286,8 +289,7 @@
/obj/item/reagent_containers/food/snacks/grown/coconut/Initialize(mapload, obj/item/seeds/new_seed)
. = ..()
var/newvolume
newvolume = 50 + round(seed.potency,10)
var/newvolume = 50 + round(seed.potency,10)
if (seed.get_gene(/datum/plant_gene/trait/maxchem))
newvolume = newvolume + 50
volume = newvolume
@@ -297,23 +299,27 @@
transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size?
/obj/item/reagent_containers/food/snacks/grown/coconut/attack_self(mob/user)
if (opened == TRUE)
if(possible_transfer_amounts.len)
var/i=0
for(var/A in possible_transfer_amounts)
i++
if(A == amount_per_transfer_from_this)
if(i<possible_transfer_amounts.len)
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
else
amount_per_transfer_from_this = possible_transfer_amounts[1]
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
return
if (!opened)
return
if(!possible_transfer_amounts.len)
return
var/i=0
for(var/A in possible_transfer_amounts)
i++
if(A != amount_per_transfer_from_this)
continue
if(i<possible_transfer_amounts.len)
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
else
amount_per_transfer_from_this = possible_transfer_amounts[1]
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
return
/obj/item/reagent_containers/food/snacks/grown/coconut/attackby(obj/item/W, mob/user, params)
//DEFUSING NADE LOGIC
if (W.tool_behaviour == TOOL_WIRECUTTER && fused == TRUE)
user.show_message("<span class='notice'>You cut the fuse!</span>", 1)
if (W.tool_behaviour == TOOL_WIRECUTTER && fused)
user.visible_message("<span class='notice'>[user] cuts something from the coconut.</span>", "<span class='notice'>You cut the fuse!</span>")
playsound(user, W.hitsound, 50, 1, -1)
icon_state = "coconut_carved"
desc = "A coconut. This one's got a hole in it."
@@ -325,14 +331,14 @@
set_light(0, 0.0)
return
//IGNITING NADE LOGIC
if(fusedactive == FALSE && fused == TRUE)
if(!fusedactive && fused)
var/lighting_text = W.ignition_effect(src, user)
if(lighting_text)
user.visible_message("<span class='warning'>[user] ignites [src]'s fuse!</span>", "<span class='userdanger'>You ignite the [src]'s fuse!</span>")
user.visible_message("<span class='warning'>[user] ignites a fuse from [src]!</span>", "<span class='userdanger'>You ignite the [src]'s fuse!</span>")
fusedactive = TRUE
defused = FALSE
playsound(src, 'sound/effects/fuse.ogg', 100, 0)
message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] "+ pretty_string_from_reagent_list(reagents.reagent_list))
message_admins("[ADMIN_LOOKUPFLW(user)] ignited a coconut bomb for detonation at [ADMIN_VERBOSEJMP(user)] [pretty_string_from_reagent_list(reagents.reagent_list)]")
log_game("[key_name(user)] primed a coconut grenade for detonation at [AREACOORD(user)].")
addtimer(CALLBACK(src, .proc/prime), 5 SECONDS)
icon_state = "coconut_grenade_active"
@@ -344,7 +350,7 @@
//ADDING A FUSE, NADE LOGIC
if (istype(W,/obj/item/stack/sheet/cloth) || istype(W,/obj/item/stack/sheet/durathread))
if (carved == TRUE && straw == FALSE && fused == FALSE)
if (carved && !straw && !fused)
user.show_message("<span class='notice'>You add a fuse to the coconut!</span>", 1)
W.use(1)
fused = TRUE
@@ -353,38 +359,31 @@
name = "coconut bomb"
return
//ADDING STRAW LOGIC
if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened == TRUE && straw == FALSE && fused == FALSE)
if (istype(W,/obj/item/stack/sheet/mineral/bamboo) && opened && !straw && fused)
user.show_message("<span class='notice'>You add a bamboo straw to the coconut!</span>", 1)
straw = TRUE
W.use(1)
icon_state += "_straw"
desc = "You can already feel like you're on a tropical vacation."
return
//OPENING THE NUT LOGIC
if (carved == FALSE && chopped == FALSE)
if(W.tool_behaviour == TOOL_SCREWDRIVER)
user.show_message("<span class='notice'>You make a hole in the coconut!</span>", 1)
if (!carved && !chopped)
var/screwdrivered = W.tool_behaviour == TOOL_SCREWDRIVER
if(screwdrivered || W.sharpness)
user.show_message("<span class='notice'>You [screwdrivered ? "make a hole in the coconut" : "slice the coconut open"]!</span>", 1)
carved = TRUE
opened = TRUE
spillable = !screwdrivered
reagent_flags = OPENCONTAINER
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
icon_state = "coconut_carved"
desc = "A coconut. This one's got a hole in it."
playsound(user, W.hitsound, 50, 1, -1)
return
else if(W.sharpness)
user.show_message("<span class='notice'>You slice the coconut open!</span>", 1)
chopped = TRUE
opened = TRUE
reagent_flags = OPENCONTAINER
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
spillable = TRUE
icon_state = "coconut_chopped"
desc = "A coconut. This one's sliced open, with all its delicious contents for your eyes to savour."
icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped"
desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]."
playsound(user, W.hitsound, 50, 1, -1)
return
return ..()
/obj/item/reagent_containers/food/snacks/grown/coconut/attack(mob/living/M, mob/user, obj/target)
if(M && user.a_intent == INTENT_HARM && spillable == FALSE)
if(M && user.a_intent == INTENT_HARM && !spillable)
var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at
if (affecting == BODY_ZONE_HEAD && prob(15))
//smash the nut open
@@ -399,11 +398,11 @@
//Display an attack message.
if(M != user)
M.visible_message("<span class='danger'>[user] has cracked open a [src.name] on [M]'s head!</span>", \
"<span class='userdanger'>[user] has cracked open a [src.name] on [M]'s head!</span>")
M.visible_message("<span class='danger'>[user] has cracked open a [name] on [M]'s head!</span>", \
"<span class='userdanger'>[user] has cracked open a [name] on [M]'s head!</span>")
else
user.visible_message("<span class='danger'>[M] cracks open a [src.name] on their [M.p_them()] head!</span>", \
"<span class='userdanger'>[M] cracks open a [src.name] on [M.p_their()] head!</span>")
user.visible_message("<span class='danger'>[M] cracks open a [name] on their [M.p_them()] head!</span>", \
"<span class='userdanger'>[M] cracks open a [name] on [M.p_their()] head!</span>")
//The coconut breaks open so splash its reagents
spillable = TRUE
@@ -418,7 +417,7 @@
if(fusedactive)
return
if(opened == FALSE)
if(!opened)
return
if(!canconsume(M, user))
@@ -453,21 +452,11 @@
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
log_combat(user, M, "fed", reagents.log_list())
else
if(M != user)
M.visible_message("<span class='danger'>[user] attempts to feed something to [M].</span>",
"<span class='userdanger'>[user] attempts to feed something to you.</span>")
if(!do_mob(user, M))
return
if(!reagents || !reagents.total_volume)
return // The drink might be empty after the delay, such as by spam-feeding
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
log_combat(user, M, "fed", reagents.log_list())
else
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
var/fraction = min(5/reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
var/fraction = min(5/reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity)
. = ..()
@@ -513,15 +502,13 @@
transform *= TRANSFORM_USING_VARIABLE(40, 100) + 0.5 //temporary fix for size?
/obj/item/reagent_containers/food/snacks/grown/coconut/proc/prime()
if (!defused)
var/turf/T = get_turf(src)
reagents.chem_temp = 1000
//Disable seperated contents when the grenade primes
if (seed.get_gene(/datum/plant_gene/trait/noreact))
DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT)
reagents.handle_reactions()
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
if (defused)
return
var/turf/T = get_turf(src)
reagents.chem_temp = 1000
reagents.handle_reactions()
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
qdel(src)
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
qdel(src)
@@ -531,3 +518,34 @@
prime()
if(!QDELETED(src))
qdel(src)
/obj/item/seeds/aloe
name = "pack of aloe seeds"
desc = "These seeds grow into aloe."
icon_state = "seed-aloe"
species = "aloe"
plantname = "Aloe"
product = /obj/item/reagent_containers/food/snacks/grown/aloe
lifespan = 60
endurance = 25
maturation = 4
production = 4
yield = 6
growthstages = 5
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/aloe
seed = /obj/item/seeds/aloe
name = "aloe"
desc = "Cut leaves from the aloe plant."
icon_state = "aloe"
filling_color = "#90EE90"
bitesize_mod = 5
foodtype = VEGETABLES
juice_results = list(/datum/reagent/consumable/aloejuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/tequila
/obj/item/reagent_containers/food/snacks/grown/aloe/microwave_act(obj/machinery/microwave/M)
new /obj/item/stack/medical/aloe(drop_location(), 2)
qdel(src)