mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
Makes fruit growing code on the Alraune organ based instead of implant based. Organizes the list to make it in alphabetical order.
This commit is contained in:
@@ -13,6 +13,9 @@
|
|||||||
#define O_ORCH "orchestrator"
|
#define O_ORCH "orchestrator"
|
||||||
#define O_FACT "refactory"
|
#define O_FACT "refactory"
|
||||||
|
|
||||||
|
//Alraune organs
|
||||||
|
#define A_FRUIT "fruit gland"
|
||||||
|
|
||||||
//species defines
|
//species defines
|
||||||
#define SPECIES_AKULA "Akula"
|
#define SPECIES_AKULA "Akula"
|
||||||
#define SPECIES_ALRAUNE "Alraune"
|
#define SPECIES_ALRAUNE "Alraune"
|
||||||
|
|||||||
@@ -7,28 +7,28 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
var/global/list/acceptable_fruit_types= list(
|
var/global/list/acceptable_fruit_types= list(
|
||||||
"chili",
|
|
||||||
"berry",
|
|
||||||
"tomato",
|
|
||||||
"eggplant",
|
|
||||||
"apple",
|
|
||||||
"ambrosia",
|
"ambrosia",
|
||||||
|
"apple",
|
||||||
|
"banana",
|
||||||
|
"berry",
|
||||||
|
"cabbage",
|
||||||
|
"carrot",
|
||||||
|
"cherry",
|
||||||
|
"chili",
|
||||||
|
"eggplant",
|
||||||
"grape",
|
"grape",
|
||||||
"greengrapes",
|
"greengrapes",
|
||||||
"peanut",
|
|
||||||
"cabbage",
|
|
||||||
"banana",
|
|
||||||
"potato",
|
|
||||||
"onion",
|
|
||||||
"soybean",
|
|
||||||
"wheat",
|
|
||||||
"rice",
|
|
||||||
"carrot",
|
|
||||||
"whitebeet",
|
|
||||||
"sugarcane",
|
|
||||||
"watermelon",
|
|
||||||
"pumpkin",
|
|
||||||
"lime",
|
|
||||||
"lemon",
|
"lemon",
|
||||||
|
"lime",
|
||||||
|
"onion",
|
||||||
"orange",
|
"orange",
|
||||||
"cherry")
|
"peanut",
|
||||||
|
"potato",
|
||||||
|
"pumpkin",
|
||||||
|
"rice",
|
||||||
|
"soybean",
|
||||||
|
"sugarcane",
|
||||||
|
"tomato",
|
||||||
|
"watermelon",
|
||||||
|
"wheat",
|
||||||
|
"whitebeet")
|
||||||
@@ -7,4 +7,4 @@
|
|||||||
var/flapping = 0
|
var/flapping = 0
|
||||||
var/vantag_pref = VANTAG_NONE //What's my status?
|
var/vantag_pref = VANTAG_NONE //What's my status?
|
||||||
var/impersonate_bodytype //For impersonating a bodytype
|
var/impersonate_bodytype //For impersonating a bodytype
|
||||||
var/fruit_type = "apple" // Decides the frruit type. Not used outside of Alraunes
|
var/fruit_type = "apple" // Decides the fruit type. Not used outside of Alraunes
|
||||||
@@ -50,7 +50,8 @@
|
|||||||
/mob/living/carbon/human/proc/succubus_drain,
|
/mob/living/carbon/human/proc/succubus_drain,
|
||||||
/mob/living/carbon/human/proc/succubus_drain_finalize,
|
/mob/living/carbon/human/proc/succubus_drain_finalize,
|
||||||
/mob/living/carbon/human/proc/succubus_drain_lethal,
|
/mob/living/carbon/human/proc/succubus_drain_lethal,
|
||||||
/mob/living/carbon/human/proc/bloodsuck) //Give them the voremodes related to wrapping people in vines and sapping their fluids
|
/mob/living/carbon/human/proc/bloodsuck,
|
||||||
|
/mob/living/carbon/human/proc/alraune_fruit_select) //Give them the voremodes related to wrapping people in vines and sapping their fluids
|
||||||
|
|
||||||
color_mult = 1
|
color_mult = 1
|
||||||
icobase = 'icons/mob/human_races/r_human_vr.dmi'
|
icobase = 'icons/mob/human_races/r_human_vr.dmi'
|
||||||
@@ -88,19 +89,9 @@
|
|||||||
O_KIDNEYS = /obj/item/organ/internal/kidneys/alraune,
|
O_KIDNEYS = /obj/item/organ/internal/kidneys/alraune,
|
||||||
O_BRAIN = /obj/item/organ/internal/brain/alraune,
|
O_BRAIN = /obj/item/organ/internal/brain/alraune,
|
||||||
O_EYES = /obj/item/organ/internal/eyes/alraune,
|
O_EYES = /obj/item/organ/internal/eyes/alraune,
|
||||||
|
A_FRUIT = /obj/item/organ/internal/fruitgland,
|
||||||
)
|
)
|
||||||
|
|
||||||
/datum/species/alraune/equip_survival_gear(var/mob/living/carbon/human/H)
|
|
||||||
..()
|
|
||||||
|
|
||||||
var/implanter = /obj/item/weapon/implanter/reagent_generator/fruit_implant
|
|
||||||
var/obj/item/weapon/implanter/reagent_generator/fruit_implant/implant = new implanter
|
|
||||||
|
|
||||||
if(H.backbag == 1)
|
|
||||||
H.equip_to_slot_or_del(implant, slot_r_hand)
|
|
||||||
else
|
|
||||||
H.equip_to_slot_or_del(implant, slot_in_backpack)
|
|
||||||
|
|
||||||
/datum/species/alraune/can_breathe_water()
|
/datum/species/alraune/can_breathe_water()
|
||||||
return TRUE //eh, why not? Aquatic plants are a thing.
|
return TRUE //eh, why not? Aquatic plants are a thing.
|
||||||
|
|
||||||
@@ -345,10 +336,121 @@
|
|||||||
/obj/item/organ/internal/liver/alraune
|
/obj/item/organ/internal/liver/alraune
|
||||||
icon = 'icons/mob/species/alraune/organs.dmi'
|
icon = 'icons/mob/species/alraune/organs.dmi'
|
||||||
icon_state = "phytoextractor"
|
icon_state = "phytoextractor"
|
||||||
name = "phytoextractor"
|
name = "enzoretector"
|
||||||
desc = "A bulbous gourd-like structure."
|
desc = "A bulbous gourd-like structure."
|
||||||
|
|
||||||
|
//Begin fruit gland and its code.
|
||||||
|
/obj/item/organ/internal/fruitgland //Amazing name, I know.
|
||||||
|
icon = 'icons/mob/species/alraune/organs.dmi'
|
||||||
|
icon_state = "phytoextractor"
|
||||||
|
name = "fruit gland"
|
||||||
|
desc = "A bulbous gourd-like structure."
|
||||||
|
organ_tag = A_FRUIT
|
||||||
|
var/generated_reagents = list("sugar" = 2) //This actually allows them. This could be anything, but sugar seems most fitting.
|
||||||
|
var/usable_volume = 250 //Five fruit.
|
||||||
|
var/transfer_amount = 50
|
||||||
|
var/empty_message = list("Your have no fruit on you.", "You have a distinct lack of fruit..")
|
||||||
|
var/full_message = list("You have a multitude of fruit that is ready for harvest!", "You have fruit that is ready to be picked!")
|
||||||
|
var/emote_descriptor = list("fruit right off of the Alraune!", "a fruit from the Alraune!")
|
||||||
|
var/verb_descriptor = list("grabs", "snatches", "picks")
|
||||||
|
var/self_verb_descriptor = list("grab", "snatch", "pick")
|
||||||
|
var/short_emote_descriptor = list("picks", "grabs")
|
||||||
|
var/self_emote_descriptor = list("grab", "pick", "snatch")
|
||||||
|
var/fruit_type = "apple"
|
||||||
|
var/mob/organ_owner = null
|
||||||
|
var/gen_cost = 0.5
|
||||||
|
|
||||||
|
/obj/item/organ/internal/fruitgland/New()
|
||||||
|
..()
|
||||||
|
create_reagents(usable_volume)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/organ/internal/fruitgland/process()
|
||||||
|
if(!owner) return
|
||||||
|
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
|
||||||
|
var/before_gen
|
||||||
|
if(parent && generated_reagents && organ_owner) //Is it in the chest/an organ, has reagents, and is 'activated'
|
||||||
|
before_gen = reagents.total_volume
|
||||||
|
if(reagents.total_volume < reagents.maximum_volume)
|
||||||
|
if(organ_owner.nutrition >= gen_cost)
|
||||||
|
do_generation()
|
||||||
|
|
||||||
|
if(reagents)
|
||||||
|
if(reagents.total_volume == reagents.maximum_volume * 0.05)
|
||||||
|
to_chat(organ_owner, "<span class='notice'>[pick(empty_message)]</span>")
|
||||||
|
else if(reagents.total_volume == reagents.maximum_volume && before_gen < reagents.maximum_volume)
|
||||||
|
to_chat(organ_owner, "<span class='warning'>[pick(full_message)]</span>")
|
||||||
|
|
||||||
|
/obj/item/organ/internal/fruitgland/proc/do_generation()
|
||||||
|
organ_owner.nutrition -= gen_cost
|
||||||
|
for(var/reagent in generated_reagents)
|
||||||
|
reagents.add_reagent(reagent, generated_reagents[reagent])
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/alraune_fruit_select() //So if someone doesn't want fruit/vegetables, they don't have to select one.
|
||||||
|
set name = "Select fruit"
|
||||||
|
set desc = "Select what fruit/vegetable you wish to grow."
|
||||||
|
set category = "Object"
|
||||||
|
var/obj/item/organ/internal/fruitgland/fruit_gland
|
||||||
|
for(var/F in contents)
|
||||||
|
if(istype(F, /obj/item/organ/internal/fruitgland))
|
||||||
|
fruit_gland = F
|
||||||
|
break
|
||||||
|
|
||||||
|
if(fruit_gland)
|
||||||
|
var/selection = input(src, "Choose your character's fruit type. Choosing nothing will result in a default of apples.", "Fruit Type", fruit_gland.fruit_type) as null|anything in acceptable_fruit_types
|
||||||
|
if(selection)
|
||||||
|
fruit_gland.fruit_type = selection
|
||||||
|
verbs |= /mob/living/carbon/human/proc/alraune_fruit_pick
|
||||||
|
verbs -= /mob/living/carbon/human/proc/alraune_fruit_select
|
||||||
|
fruit_gland.organ_owner = src
|
||||||
|
fruit_gland.emote_descriptor = list("fruit right off of [fruit_gland.organ_owner]!", "a fruit from [fruit_gland.organ_owner]!")
|
||||||
|
|
||||||
|
else
|
||||||
|
to_chat(src, "<span class='notice'>You lack the organ required to produce fruit.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/alraune_fruit_pick()
|
||||||
|
set name = "Pick Fruit"
|
||||||
|
set desc = "Pick fruit off of [src]."
|
||||||
|
set category = "Object"
|
||||||
|
set src in view(1)
|
||||||
|
|
||||||
|
//do_reagent_implant(usr)
|
||||||
|
if(!isliving(usr) || !usr.canClick())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(usr.incapacitated() || usr.stat > CONSCIOUS)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/obj/item/organ/internal/fruitgland/fruit_gland
|
||||||
|
for(var/I in contents)
|
||||||
|
if(istype(I, /obj/item/organ/internal/fruitgland))
|
||||||
|
fruit_gland = I
|
||||||
|
break
|
||||||
|
if (fruit_gland) //Do they have the gland?
|
||||||
|
if(fruit_gland.reagents.total_volume < fruit_gland.transfer_amount)
|
||||||
|
to_chat(src, "<span class='notice'>[pick(fruit_gland.empty_message)]</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/datum/seed/S = plant_controller.seeds["[fruit_gland.fruit_type]"]
|
||||||
|
S.harvest(usr,0,0,1)
|
||||||
|
|
||||||
|
var/index = rand(0,2)
|
||||||
|
|
||||||
|
if (usr != src)
|
||||||
|
var/emote = fruit_gland.emote_descriptor[index]
|
||||||
|
var/verb_desc = fruit_gland.verb_descriptor[index]
|
||||||
|
var/self_verb_desc = fruit_gland.self_verb_descriptor[index]
|
||||||
|
usr.visible_message("<span class='notice'>[usr] [verb_desc] [emote]</span>",
|
||||||
|
"<span class='notice'>You [self_verb_desc] [emote]</span>")
|
||||||
|
else
|
||||||
|
visible_message("<span class='notice'>[src] [pick(fruit_gland.short_emote_descriptor)] a fruit.</span>",
|
||||||
|
"<span class='notice'>You [pick(fruit_gland.self_emote_descriptor)] a fruit.</span>")
|
||||||
|
|
||||||
|
fruit_gland.reagents.remove_any(fruit_gland.transfer_amount)
|
||||||
|
|
||||||
|
//End of fruit gland code.
|
||||||
|
|
||||||
/datum/species/alraune/proc/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
|
/datum/species/alraune/proc/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
|
||||||
ASSERT(to_copy)
|
ASSERT(to_copy)
|
||||||
|
|||||||
@@ -2006,75 +2006,3 @@
|
|||||||
|
|
||||||
icon = 'icons/vore/custom_items_vr.dmi'
|
icon = 'icons/vore/custom_items_vr.dmi'
|
||||||
icon_state = "penlightlynn"
|
icon_state = "penlightlynn"
|
||||||
|
|
||||||
//Fruit Implants for Alraune
|
|
||||||
/obj/item/weapon/implant/reagent_generator/fruit_implant
|
|
||||||
name = "fruit enabling implant"
|
|
||||||
desc = "This is an implant that hastens Alraune's fruit production."
|
|
||||||
generated_reagents = list("sugar" = 2) //This actually allows them. This could be anything, but sugar seems most fitting.
|
|
||||||
usable_volume = 250 //Five fruit.
|
|
||||||
transfer_amount = 50
|
|
||||||
empty_message = list("Your have no fruit on you.", "You have a distinct lack of fruit..")
|
|
||||||
full_message = list("You have a multitude of fruit that is ready for harvest!", "You have fruit that is ready to be picked!")
|
|
||||||
emote_descriptor = list("fruit right off of the Alraune!", "a fruit from the Alraune!") //These are changed below
|
|
||||||
var/verb_descriptor = list("grabs", "snatches", "picks")
|
|
||||||
var/self_verb_descriptor = list("grab", "snatch", "pick")
|
|
||||||
var/short_emote_descriptor = list("picks", "grabs")
|
|
||||||
self_emote_descriptor = list("grab", "pick", "snatch")
|
|
||||||
assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_fruit_implant
|
|
||||||
|
|
||||||
/obj/item/weapon/implant/reagent_generator/fruit_implant/implanted(mob/living/carbon/human/source)
|
|
||||||
if(source.species.name != SPECIES_ALRAUNE)
|
|
||||||
to_chat(source, "<span class='notice'>Perhaps using this implant as a non Alraune was a bad idea...</span>") //You wasted it. Good job.
|
|
||||||
return 1
|
|
||||||
processing_objects += src
|
|
||||||
to_chat(source, "<span class='notice'>You implant [source] with \the [src].</span>")
|
|
||||||
emote_descriptor = list("fruit right off of [source]!", "a fruit from [source]!")
|
|
||||||
var/selection = input(source, "Choose your character's fruit type. Choosing nothing will result in a default of apples.", "Fruit Type", source.fruit_type) as null|anything in acceptable_fruit_types
|
|
||||||
if(selection)
|
|
||||||
source.fruit_type = selection
|
|
||||||
source.verbs |= assigned_proc
|
|
||||||
return 1
|
|
||||||
|
|
||||||
/obj/item/weapon/implanter/reagent_generator/fruit_implant
|
|
||||||
implant_type = /obj/item/weapon/implant/reagent_generator/fruit_implant
|
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/use_reagent_implant_fruit_implant()
|
|
||||||
set name = "Pick Fruit"
|
|
||||||
set desc = "Pick fruit off of [src]."
|
|
||||||
set category = "Object"
|
|
||||||
set src in view(1)
|
|
||||||
|
|
||||||
//do_reagent_implant(usr)
|
|
||||||
if(!isliving(usr) || !usr.canClick())
|
|
||||||
return
|
|
||||||
|
|
||||||
if(usr.incapacitated() || usr.stat > CONSCIOUS)
|
|
||||||
return
|
|
||||||
|
|
||||||
var/obj/item/weapon/implant/reagent_generator/fruit_implant/rimplant
|
|
||||||
for(var/I in contents)
|
|
||||||
if(istype(I, /obj/item/weapon/implant/reagent_generator))
|
|
||||||
rimplant = I
|
|
||||||
break
|
|
||||||
if (rimplant)
|
|
||||||
if(rimplant.reagents.total_volume < rimplant.transfer_amount)
|
|
||||||
to_chat(src, "<span class='notice'>[pick(rimplant.empty_message)]</span>")
|
|
||||||
return
|
|
||||||
|
|
||||||
var/datum/seed/S = plant_controller.seeds["[fruit_type]"] //crosses fingers EVEN HARDER than last one.
|
|
||||||
S.harvest(usr,0,0,1)
|
|
||||||
|
|
||||||
var/index = rand(0,2)
|
|
||||||
|
|
||||||
if (usr != src)
|
|
||||||
var/emote = rimplant.emote_descriptor[index]
|
|
||||||
var/verb_desc = rimplant.verb_descriptor[index]
|
|
||||||
var/self_verb_desc = rimplant.self_verb_descriptor[index]
|
|
||||||
usr.visible_message("<span class='notice'>[usr] [verb_desc] [emote]</span>",
|
|
||||||
"<span class='notice'>You [self_verb_desc] [emote]</span>")
|
|
||||||
else
|
|
||||||
visible_message("<span class='notice'>[src] [pick(rimplant.short_emote_descriptor)] a fruit.</span>",
|
|
||||||
"<span class='notice'>You [pick(rimplant.self_emote_descriptor)] a fruit.</span>")
|
|
||||||
|
|
||||||
rimplant.reagents.remove_any(rimplant.transfer_amount)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user