diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index a8cfa95f2c0..0be2ab3ecc4 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -85,6 +85,16 @@ /datum/trait/neutral/bloodsucker name = "Bloodsucker, Obligate" desc = "Makes you unable to gain nutrition from anything but blood. To compenstate, you get fangs that can be used to drain blood from prey." + tutorial = "This trait forces you to only consume blood - you cannot have normal food anymore. Vore is, of course, an exception!
\ + You can satisfy this by clicking bloodbags in your hand on harm intent, drinking from glasses, blood tomatoes \ + or finding a (un)willing donor for your appropriate appendage!

\ + Controls for taking blood from your victim can be changed at will by trying to drink from yourself.\ + Intent-based control scheme:
\ + HELP - Loud, No Bleeding
\ + DISARM - Subtle, Causes bleeding
\ + GRAB - Subtle, No Bleeding
\ + HARM - Loud, Causes Bleeding" + cost = 0 custom_only = FALSE var_changes = list("organic_food_coeff" = 0, "bloodsucker" = TRUE) @@ -97,6 +107,15 @@ /datum/trait/neutral/bloodsucker_freeform name = "Bloodsucker" desc = "You get fangs that can be used to drain blood from prey." + tutorial = "This trait allows you to consume blood on top of normal food!
\ + You can do this by clicking bloodbags in your hand on harm intent, drinking from glasses, blood tomatoes \ + or finding a (un)willing donor for your appropriate appendage!

\ + Controls for taking blood from your victim can be changed at will by trying to drink from yourself.\ + Intent-based control scheme:
\ + HELP - Loud, No Bleeding
\ + DISARM - Subtle, Causes bleeding
\ + GRAB - Subtle, No Bleeding
\ + HARM - Loud, Causes Bleeding" cost = 0 custom_only = FALSE var_changes = list("bloodsucker" = TRUE) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm index 0de5ae30974..5ec3b04cb79 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/trait.dm @@ -1,6 +1,7 @@ /datum/trait var/name var/desc = "Contact a developer if you see this trait." + var/tutorial = "This trait has no detailed tutorial yet. Suggest one at #Dev-Suggestions on the discord!" var/cost = 0 var/sort = TRAIT_SORT_NORMAL // Sort order, 1 before 2 before 3 etc. Alphabetical is used for same-group traits. diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/traits_tutorial.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/traits_tutorial.dm new file mode 100644 index 00000000000..b286021b601 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/traits_tutorial.dm @@ -0,0 +1,58 @@ +/* +A new Ability given to all human mobs + +This ability intends to retrieve all positive, neutral and negative traits chosen in the character set-up +then retrieve their relevant vars by assuming the character's species has the full list. This should always work. Should + +The ability is intended to be developed both as a to_chat() and a tgui window. +The user is given the ability to choose which they would like whenever they press the ability to better suit whatever scenario they find themselves +thirsty for knowledge. +*/ + + + + + +/mob/living/carbon/human/verb/trait_tutorial() + set name = "Explain Custom Traits" + set desc = "Click this verb to obtain a detailed tutorial on your selected traits. " + set category = "Abilities" + + var/list/list_of_traits = species.traits + if(!list_of_traits) + to_chat(usr, SPAN_NOTICE("You do not have any custom traits!")) + + + var/UI_choice = tgui_alert(src, "Would you like the tutorial text to be printed to chat?", "Choose preferred tutorial interface", list("To Chat", "Cancel")) + if(UI_choice == "Cancel") + return + + //Initializing associative lists + var/trait_names = list() //List of keys + var/trait_category = list() // name:category + var/trait_desc = list() // name:desc + var/trait_tutorial = list() //name:tutorial + for(var/trait in list_of_traits) + var/datum/trait/T = all_traits[trait] + to_world_log("##DEBUG [T.name] is of category [T.category]") + trait_names += T.name + trait_desc[T.name] = T.desc + trait_tutorial[T.name] = T.tutorial + switch(T.category) //Using magic numbers rather than the #defines because it did not work with defines and idk why + if(-1) //TRAIT_TYPE_NEGATIVE + trait_category[T.name] = "Negative Trait" + if(0) //TRAIT_TYPE_NEUTRAL + trait_category[T.name] = "Neutral Trait" + if(1) //TRAIT_TYPE_POSITIVE + trait_category[T.name] = "Positive Trait" + + + if(UI_choice == "To Chat") + var/to_chat_choice = tgui_input_list(usr, "Please choose the trait to be explained", "Print to Chat", trait_names, null) + if(to_chat_choice) + to_chat(usr,SPAN_NOTICE("Name: [to_chat_choice] \n Category: [trait_category[to_chat_choice]] \n Description: [trait_desc[to_chat_choice]] \n \ + Guide: \n [trait_tutorial[to_chat_choice]]")) + + +// else if(UI_choice == "TGUI") + to_chat(usr, SPAN_NOTICE("TGUI functionality is not yet implemented, sorry!")) diff --git a/vorestation.dme b/vorestation.dme index 96664be9087..4fe311b1277 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2926,6 +2926,7 @@ #include "code\modules\mob\living\carbon\human\species\station\traits_vr\neutral.dm" #include "code\modules\mob\living\carbon\human\species\station\traits_vr\positive.dm" #include "code\modules\mob\living\carbon\human\species\station\traits_vr\trait.dm" +#include "code\modules\mob\living\carbon\human\species\station\traits_vr\traits_tutorial.dm" #include "code\modules\mob\living\carbon\human\species\station\traits_vr\weaver_objs.dm" #include "code\modules\mob\living\carbon\human\species\station\traits_vr\weaver_recipies.dm" #include "code\modules\mob\living\carbon\human\species\virtual_reality\avatar.dm"