From 693d2b6dee428993b6fcd915266ac4fe1d8ccd41 Mon Sep 17 00:00:00 2001 From: Alphas00 <154434082+Alphas00@users.noreply.github.com> Date: Tue, 30 Apr 2024 22:17:29 +0200 Subject: [PATCH] Web Weaver webs and Genital Nutriment Web Weaver quirk now also adds an action to spin sticky webs where you stand. Characters with the Web Weaver quirk can freely move through webs. Added nutriment as an option for fluid for genitals --- GainStation13/code/mechanics/web_weaving.dm | 30 ++++++++++++++++++--- code/__DEFINES/traits.dm | 1 + code/__HELPERS/global_lists.dm | 2 +- code/game/objects/effects/spiders.dm | 2 +- code/modules/client/preferences.dm | 8 ++++++ 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/GainStation13/code/mechanics/web_weaving.dm b/GainStation13/code/mechanics/web_weaving.dm index e6c6904a..ef2b768c 100644 --- a/GainStation13/code/mechanics/web_weaving.dm +++ b/GainStation13/code/mechanics/web_weaving.dm @@ -5,15 +5,20 @@ gain_text = "You find yourself able to weave webs." lose_text = "You are no longer able to weave webs." category = CATEGORY_SEXUAL + mob_trait = TRAIT_WEB_WEAVER ///What action is linked with this quirk? - var/datum/action/innate/wrap_target/linked_action + var/datum/action/innate/wrap_target/linked_action1 + var/datum/action/innate/make_web/linked_action2 /datum/quirk/web_weaving/post_add() - linked_action = new - linked_action.Grant(quirk_holder) + linked_action1 = new + linked_action1.Grant(quirk_holder) + linked_action2 = new + linked_action2.Grant(quirk_holder) /datum/quirk/web_weaving/remove() - linked_action.Remove(quirk_holder) + linked_action1.Remove(quirk_holder) + linked_action2.Remove(quirk_holder) return ..() /datum/action/innate/wrap_target @@ -83,3 +88,20 @@ /obj/structure/spider/cocoon/quirk max_integrity = 20 + +/datum/action/innate/make_web + name = "weave" + desc = "spins a sticky web." + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "stickyweb1" + background_icon_state = "bg_alien" + +/datum/action/innate/make_web/Activate() + var/turf/T = get_turf(owner) + owner.visible_message("[owner] begins spinning a web!", "You begin spinning a web.") + if(!do_after(owner, 10 SECONDS, 1, null, 1)) + owner.visible_message("[owner] fails to spin a web!", "You fail to spin web.") + return FALSE + T.ChangeTurf(/obj/structure/spider/stickyweb) + owner.visible_message("[owner] spin a sticky web!", "You spin a sticky web.") + return TRUE diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 2b3f5934..1778d470 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -203,6 +203,7 @@ #define TRAIT_LIPOLICIDE_TOLERANCE "lipolicide_tolerance" #define TRAIT_WEAKLEGS "weak_legs" #define TRAIT_STRONGLEGS "strong_legs" +#define TRAIT_WEB_WEAVER "web_weaving" //Hyper #define TRAIT_MACROPHILE "macrophile" //likes the big diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index b20cc07d..c94989ca 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -55,7 +55,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) GLOB.breasts_size_list = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing. - GLOB.genital_fluids_list = list ("Milk", "Water", "Semen", "Femcum", "Honey", "Strawberry Milk") + GLOB.genital_fluids_list = list ("Milk", "Water", "Semen", "Femcum", "Honey", "Strawberry Milk", "Nutriment") GLOB.gentlemans_organ_names = list("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger") for(var/K in GLOB.breasts_shapes_list) var/datum/sprite_accessory/breasts/value = GLOB.breasts_shapes_list[K] diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index d53e7250..737247ac 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -36,7 +36,7 @@ . = ..() /obj/structure/spider/stickyweb/CanPass(atom/movable/mover, turf/target) - if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider)) + if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider) || HAS_TRAIT(mover, TRAIT_WEB_WEAVER)) return TRUE else if(isliving(mover)) if(istype(mover.pulledby, /mob/living/simple_animal/hostile/poison/giant_spider)) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a06e02b..8702b594 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -893,6 +893,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Femcum" if(/datum/reagent/consumable/alienhoney) dat += "Honey" + if(/datum/reagent/consumable/nutriment) + dat += "Nutriment" else dat += "Nothing?" //This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref, @@ -940,6 +942,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Honey" if(/datum/reagent/consumable/pinkmilk) dat += "Strawberry Milk" + if(/datum/reagent/consumable/nutriment) + dat += "Nutriment" else dat += "Nothing?" //This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref, @@ -2381,6 +2385,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["balls_fluid"] = /datum/reagent/consumable/alienhoney if("Strawberry Milk") features["balls_fluid"] = /datum/reagent/consumable/pinkmilk + if("Nutriment") + features["balls_fluid"] = /datum/reagent/consumable/nutriment if("egg_size") var/new_size @@ -2426,6 +2432,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["breasts_fluid"] = /datum/reagent/consumable/alienhoney if("Strawberry Milk") features["breasts_fluid"] = /datum/reagent/consumable/pinkmilk + if("Nutriment") + features["breasts_fluid"] = /datum/reagent/consumable/nutriment if("breasts_color") var/new_breasts_color = input(user, "Breast Color:", "Character Preference", "#"+features["breasts_color"]) as color|null