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