mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-26 22:46:15 +01:00
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user