Skip to content

Commit 9f9d143

Browse files
committed
Ok sure
1 parent e401949 commit 9f9d143

8 files changed

Lines changed: 104 additions & 28 deletions

File tree

code/modules/hydroponics/grown/flowers.dm

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
growing_icon = 'icons/obj/service/hydroponics/growing_flowers.dmi'
1616
icon_grow = "poppy-grow"
1717
icon_dead = "poppy-dead"
18-
genes = list(/datum/plant_gene/trait/preserved)
18+
genes = list(/datum/plant_gene/trait/preserved, /datum/plant_gene/trait/scent)
1919
mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily)
2020
reagents_add = list(/datum/reagent/medicine/c2/libital = 0.2, /datum/reagent/consumable/nutriment = 0.05)
2121

@@ -33,16 +33,6 @@
3333
pickup_sound = 'maplestation_modules/sound/items/pickup/herb.ogg'
3434
juice_typepath = /datum/reagent/medicine/painkiller/oxycodone
3535

36-
/obj/item/food/grown/poppy/Initialize(mapload, obj/item/seeds/new_seed)
37-
. = ..()
38-
add_smell(category = "fragrance", smell = "flowers", intensity = SMELL_INTENSITY_WEAK, radius = 1)
39-
40-
/obj/item/food/grown/poppy/grind(datum/reagents/target_holder, mob/user)
41-
. = ..()
42-
if(!.)
43-
return
44-
target_holder.add_reagent(/datum/reagent/perfume, round(seed.potency * pick(0.01, 0.02, 0.03), CHEMICAL_VOLUME_ROUNDING))
45-
4636
// Lily
4737
/obj/item/seeds/poppy/lily
4838
name = "lily seed pack"
@@ -85,7 +75,7 @@
8575
icon_grow = "spacemanstrumpet-grow"
8676
icon_dead = "spacemanstrumpet-dead"
8777
mutatelist = null
88-
genes = list(/datum/plant_gene/reagent/preset/polypyr, /datum/plant_gene/trait/preserved)
78+
genes = list(/datum/plant_gene/reagent/preset/polypyr, /datum/plant_gene/trait/preserved, /datum/plant_gene/trait/scent/grass)
8979
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
9080
rarity = 30
9181
graft_gene = /datum/plant_gene/reagent/preset/polypyr
@@ -159,7 +149,7 @@
159149
potency = 30
160150
instability = 1
161151
growthstages = 4
162-
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/preserved)
152+
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/preserved, /datum/plant_gene/trait/scent)
163153
growing_icon = 'icons/obj/service/hydroponics/growing_flowers.dmi'
164154
reagents_add = list(/datum/reagent/consumable/nutriment = 0.04)
165155
graft_gene = /datum/plant_gene/trait/plant_type/weed_hardy
@@ -184,7 +174,7 @@
184174
species = "sunflower"
185175
plantname = "Sunflowers"
186176
product = /obj/item/food/grown/sunflower
187-
genes = list(/datum/plant_gene/trait/attack/sunflower_attack, /datum/plant_gene/trait/preserved)
177+
genes = list(/datum/plant_gene/trait/attack/sunflower_attack, /datum/plant_gene/trait/preserved, /datum/plant_gene/trait/scent)
188178
endurance = 20
189179
production = 2
190180
yield = 2
@@ -299,7 +289,7 @@
299289
potency = 15
300290
instability = 20 //Roses crossbreed easily, and there's many many species of them.
301291
growthstages = 3
302-
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/backfire/rose_thorns, /datum/plant_gene/trait/preserved)
292+
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/backfire/rose_thorns, /datum/plant_gene/trait/preserved, /datum/plant_gene/trait/scent)
303293
growing_icon = 'icons/obj/service/hydroponics/growing_flowers.dmi'
304294
icon_grow = "rose-grow"
305295
icon_dead = "rose-dead"
@@ -309,7 +299,7 @@
309299

310300
/obj/item/food/grown/rose
311301
seed = /obj/item/seeds/rose
312-
name = "\improper rose"
302+
name = "rose"
313303
desc = "The classic fleur d'amour - flower of love. Watch for its thorns!"
314304
base_icon_state = "rose"
315305
icon_state = "rose"
@@ -322,10 +312,6 @@
322312
bite_consumption_mod = 2
323313
foodtypes = VEGETABLES | GROSS
324314

325-
/obj/item/food/grown/rose/Initialize(mapload, obj/item/seeds/new_seed)
326-
. = ..()
327-
add_smell(category = "fragrance", smell = "roses", intensity = SMELL_INTENSITY_WEAK, radius = 1)
328-
329315
/obj/item/food/grown/rose/equipped(mob/user, slot, initial)
330316
. = ..()
331317
if(slot & ITEM_SLOT_MASK)

code/modules/hydroponics/grown/gatfruit.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
species = "gatfruit"
88
plantname = "Gatfruit Tree"
99
product = /obj/item/food/grown/shell/gatfruit
10-
genes = list(/datum/plant_gene/trait/repeated_harvest)
10+
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/scent/sulfur)
1111
lifespan = 20
1212
endurance = 20
1313
maturation = 40

code/modules/hydroponics/grown/grass_carpet.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
growthstages = 2
1616
icon_grow = "grass-grow"
1717
icon_dead = "grass-dead"
18-
genes = list(/datum/plant_gene/trait/repeated_harvest)
18+
genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/scent/grass)
1919
mutatelist = list(/obj/item/seeds/grass/carpet, /obj/item/seeds/grass/fairy)
2020
reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05)
2121

code/modules/hydroponics/grown/weeds/starthistle.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
plantname = "Corpse flower"
4141
production = 2
4242
growing_icon = 'icons/obj/service/hydroponics/growing_flowers.dmi'
43-
genes = list(/datum/plant_gene/trait/gas_production)
43+
genes = list(/datum/plant_gene/trait/gas_production, /datum/plant_gene/trait/scent/decay)
4444
mutatelist = null
4545
reagents_add = list(/datum/reagent/toxin/formaldehyde = 0.1, /datum/reagent/fluorine = 0.1)
4646

code/modules/hydroponics/plant_genes.dm

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,67 @@
921921
if(istype(grown_plant))
922922
grown_plant.preserved_food = TRUE
923923

924+
/// Plant result smells
925+
/datum/plant_gene/trait/scent
926+
name = "Distinct Scent"
927+
description = "This plant has a distinct scent."
928+
mutability_flags = PLANT_GENE_REMOVABLE
929+
icon = FA_ICON_WIND
930+
var/category = "fragrance"
931+
var/smell
932+
var/intensity_base = SMELL_INTENSITY_WEAK * 1.5
933+
var/radius = 1
934+
var/reagent_type = /datum/reagent/perfume
935+
936+
/datum/plant_gene/trait/scent/on_new_plant(obj/item/our_plant, newloc)
937+
. = ..()
938+
if(!.)
939+
return
940+
941+
our_plant.add_smell(
942+
category = category,
943+
smell = smell || our_plant.name, // "fragrance of poppy"
944+
intensity = max(intensity_base * (our_plant.get_plant_seed().potency / 100), SMELL_INTENSITY_FAINT),
945+
radius = radius,
946+
)
947+
RegisterSignal(our_plant, COMSIG_ITEM_ON_GRIND, PROC_REF(grinded))
948+
949+
/datum/plant_gene/trait/scent/proc/grinded(obj/item/our_plant)
950+
SIGNAL_HANDLER
951+
952+
if(!reagent_type || !our_plant.reagents)
953+
return
954+
955+
var/added_volume = round(our_plant.get_plant_seed().potency * pick(0.01, 0.02, 0.03), CHEMICAL_VOLUME_ROUNDING)
956+
our_plant.reagents.add_reagent(reagent_type, added_volume, list("perfume_smell" = list("[smell || our_plant.name]" = added_volume)))
957+
958+
/datum/plant_gene/trait/scent/on_new_seed(obj/item/seeds/new_seed)
959+
RegisterSignal(new_seed, COMSIG_SEED_ON_GROW, PROC_REF(on_grow))
960+
961+
/datum/plant_gene/trait/scent/on_removed(obj/item/seeds/old_seed)
962+
UnregisterSignal(old_seed, COMSIG_SEED_ON_GROW)
963+
964+
/datum/plant_gene/trait/scent/proc/on_grow(obj/item/seeds/our_seed, obj/machinery/hydroponics/our_tray)
965+
SIGNAL_HANDLER
966+
967+
if(our_tray.age <= our_seed.maturation * 0.5)
968+
return
969+
new /obj/effect/abstract/smell/plant(our_tray, LOWER_TEXT(smell || our_seed.plantname), category, max(intensity_base * (our_seed.potency / 100), SMELL_INTENSITY_FAINT), radius)
970+
971+
/datum/plant_gene/trait/scent/grass
972+
smell = "freshly cut grass"
973+
reagent_type = null
974+
975+
/datum/plant_gene/trait/scent/decay
976+
smell = "rotting vegetation"
977+
intensity_base = SMELL_INTENSITY_STRONG
978+
radius = 2
979+
980+
/datum/plant_gene/trait/scent/sulfur
981+
smell = "sulfur"
982+
intensity_base = SMELL_INTENSITY_STRONG
983+
reagent_type = null
984+
924985
/datum/plant_gene/trait/carnivory
925986
name = "Obligate Carnivory"
926987
description = "Pests have positive effect on the plant health."

code/modules/hydroponics/seeds.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@
621621
* - returned seed CAN be null in weird cases but in all applications it SHOULD NOT be.
622622
* Returns null if it is not a plant.
623623
*/
624-
/obj/item/proc/get_plant_seed()
624+
/obj/item/proc/get_plant_seed() as /obj/item/seeds
625625
return null
626626

627627
/obj/item/food/grown/get_plant_seed()

maplestation_modules/code/game/objects/items/perfume.dm

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,29 @@
2424
taste_description = "perfume"
2525
ph = 6.5
2626
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
27-
/// What type of smell to produce when exposed
28-
var/obj/effect/abstract/smell/smell_type = /obj/effect/abstract/smell/reagent/perfume
27+
28+
/datum/reagent/perfume/on_new(list/new_data)
29+
if(!length(new_data) || !islist(new_data["perfume_smell"]))
30+
new_data ||= list()
31+
new_data["perfume_smell"] = list("perfume" = volume)
32+
33+
return ..()
34+
35+
/datum/reagent/perfume/on_merge(list/new_data, amount)
36+
if(!length(new_data) || !islist(new_data["perfume_smell"]))
37+
return
38+
39+
for(var/new_smell in new_data["perfume_smell"])
40+
data["perfume_smell"][new_smell] += amount
2941

3042
/datum/reagent/perfume/expose_turf(turf/exposed_turf, reac_volume)
3143
. = ..()
32-
new smell_type(exposed_turf, reac_volume)
44+
for(var/smell, smell_volume in data["perfume_smell"])
45+
new /obj/effect/abstract/smell/reagent/perfume(exposed_turf, smell_volume, smell)
3346

3447
/datum/reagent/perfume/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message=TRUE, touch_protection=0)
3548
. = ..()
3649
if(!(methods & (TOUCH|VAPOR)) || QDELETED(exposed_mob))
3750
return
38-
new smell_type(exposed_mob, reac_volume)
51+
for(var/smell, smell_volume in data["perfume_smell"])
52+
new /obj/effect/abstract/smell/reagent/perfume(exposed_mob, smell_volume, smell)

maplestation_modules/code/modules/smells/smell_holder.dm

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,21 @@
117117
volume_intensity_scale = 0.5
118118
volume_duration_scale = 0.5
119119

120+
/obj/effect/abstract/smell/reagent/perfume/Initialize(mapload, volume, smell = "perfume")
121+
src.smell = smell
122+
return ..()
123+
124+
// holder for a plant emitting a smell
125+
/obj/effect/abstract/smell/plant
126+
duration = 20 SECONDS
127+
128+
/obj/effect/abstract/smell/plant/Initialize(mapload, smell, category, intensity, radius)
129+
src.smell = smell
130+
src.category = category
131+
src.intensity = intensity
132+
src.radius = radius
133+
return ..()
134+
120135
/obj/effect/abstract/smell/oven
121136
intensity = SMELL_INTENSITY_MODERATE
122137
duration = 5 MINUTES

0 commit comments

Comments
 (0)