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