From 989b25dfbaecc17e969f0f48966244d0003d4a94 Mon Sep 17 00:00:00 2001
From: Pinta <124479862+deertools@users.noreply.github.com>
Date: Sat, 18 Feb 2023 18:07:20 -0500
Subject: [PATCH 1/6] Update spells.dm
---
GainStation13/code/mechanics/spells.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/GainStation13/code/mechanics/spells.dm b/GainStation13/code/mechanics/spells.dm
index 8a020396..7f9b5428 100644
--- a/GainStation13/code/mechanics/spells.dm
+++ b/GainStation13/code/mechanics/spells.dm
@@ -26,7 +26,7 @@
icon = 'GainStation13/icons/obj/spells/spell_items.dmi'
icon_state = "add-hand"
///How much weight is added?
- var/weight_to_add = 100
+ var/weight_to_add = 300
///What verb is used for the spell?
var/fattening_verb = "fattens"
///Is weight being transfered from the user to another mob?
From a23d92c1858db992a726ce51c49069ae2ebdaf32 Mon Sep 17 00:00:00 2001
From: Pinta <124479862+deertools@users.noreply.github.com>
Date: Sat, 18 Feb 2023 18:07:36 -0500
Subject: [PATCH 2/6] Update spells.dm
---
GainStation13/code/mechanics/spells.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/GainStation13/code/mechanics/spells.dm b/GainStation13/code/mechanics/spells.dm
index 7f9b5428..62e21dbc 100644
--- a/GainStation13/code/mechanics/spells.dm
+++ b/GainStation13/code/mechanics/spells.dm
@@ -67,7 +67,7 @@
name = "\improper weight theft touch"
desc = "Energy that is eager to take weight."
fattening_verb = "steals weight from"
- weight_to_add = -100
+ weight_to_add = -300
icon_state = "steal-hand"
/obj/item/melee/touch_attack/fattening/steal/afterattack(atom/target, mob/living/carbon/user, proximity)
From 7d1a80a8f841b5ecd4b023061b77bbd389c38647 Mon Sep 17 00:00:00 2001
From: Pinta <124479862+deertools@users.noreply.github.com>
Date: Sat, 18 Feb 2023 19:53:06 -0500
Subject: [PATCH 3/6] the deed is done
---
GainStation13/code/mechanics/wand.dm | 54 ++++++++++++++++++++++++++++
tgstation.dme | 1 +
2 files changed, 55 insertions(+)
create mode 100644 GainStation13/code/mechanics/wand.dm
diff --git a/GainStation13/code/mechanics/wand.dm b/GainStation13/code/mechanics/wand.dm
new file mode 100644
index 00000000..465959d6
--- /dev/null
+++ b/GainStation13/code/mechanics/wand.dm
@@ -0,0 +1,54 @@
+/obj/item/gun/magic/wand/food
+ name = "wand of gluttony"
+ desc = "summons delicious fattening foods"
+ max_charges = 15
+ ammo_type = /obj/item/ammo_casing/magic/food
+
+/obj/item/gun/magic/wand/food/overpowered //This is a more overpowered version of the item
+ name = "strong wand of gluttony"
+ max_charges = 100
+ ammo_type = /obj/item/ammo_casing/magic/food/strong
+
+/obj/item/ammo_casing/magic/food
+ projectile_type = /obj/item/projectile/magic/food
+
+/obj/item/ammo_casing/magic/food/strong
+ projectile_type = /obj/item/projectile/magic/food/strong
+
+/obj/item/projectile/magic/food
+ name = "bolt of food"
+ pass_flags = PASSGLASS|PASSDOOR|PASSGRILLE
+ ///What foods are able to be spawned by the wand?
+ var/list/spawnable_foods = list(
+ /obj/item/reagent_containers/food/snacks/burger/bigbite,
+ /obj/item/reagent_containers/food/snacks/donut/plain,
+ /obj/item/reagent_containers/food/snacks/donut/glaze,
+ /obj/item/reagent_containers/food/snacks/store/cake/cheese,
+ /obj/item/reagent_containers/food/snacks/store/cake/birthday,
+ /obj/item/reagent_containers/food/snacks/store/cake/chocolate,
+ /obj/item/reagent_containers/food/snacks/hotdog,
+ /obj/item/reagent_containers/food/snacks/pizza/margherita,
+ /obj/item/reagent_containers/food/snacks/pizza/meat,
+ )
+
+ ///How much Lipoifier should be added to the spawned in food? Keep this at 10 maximum.
+ var/lipoifier_to_add = 5
+
+/obj/item/projectile/magic/food/on_hit(atom/target, blocked)
+ . = ..()
+
+ var/turf/floor = get_turf(target)
+ if(!floor || iswallturf(floor))
+ return FALSE
+
+ var/food_to_spawn = pick(spawnable_foods)
+ var/obj/item/reagent_containers/food/snacks/spawned_food = new food_to_spawn(floor)
+ if(!spawned_food)
+ return FALSE
+
+ spawned_food.reagents.add_reagent(/datum/reagent/consumable/lipoifier, lipoifier_to_add)
+ return TRUE
+
+/obj/item/projectile/magic/food/strong
+ name = "strong bolt of food"
+ lipoifier_to_add = 10
diff --git a/tgstation.dme b/tgstation.dme
index 19e46c4d..a6dca764 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3075,6 +3075,7 @@
#include "GainStation13\code\machinery\feeding_tube.dm"
#include "GainStation13\code\mechanics\fatness.dm"
#include "GainStation13\code\mechanics\spells.dm"
+#include "GainStation13\code\mechanics\wand.dm"
#include "GainStation13\code\modules\client\preferences\preferences.dm"
#include "GainStation13\code\modules\mob\living\emote.dm"
#include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm"
From 9ad226e4de056ba5a6e3c63c895441088f0d8f6e Mon Sep 17 00:00:00 2001
From: Pinta <124479862+deertools@users.noreply.github.com>
Date: Sun, 19 Feb 2023 00:01:37 -0500
Subject: [PATCH 4/6] it's a start
---
GainStation13/code/mechanics/web_weaving.dm | 69 ++++++++++++++++++++
GainStation13/icons/mob/web.dmi | Bin 0 -> 798 bytes
GainStation13/icons/obj/clothing/web.dmi | Bin 0 -> 477 bytes
tgstation.dme | 1 +
4 files changed, 70 insertions(+)
create mode 100644 GainStation13/code/mechanics/web_weaving.dm
create mode 100644 GainStation13/icons/mob/web.dmi
create mode 100644 GainStation13/icons/obj/clothing/web.dmi
diff --git a/GainStation13/code/mechanics/web_weaving.dm b/GainStation13/code/mechanics/web_weaving.dm
new file mode 100644
index 00000000..aa0e9882
--- /dev/null
+++ b/GainStation13/code/mechanics/web_weaving.dm
@@ -0,0 +1,69 @@
+/datum/quirk/web_weaving
+ name = "Web Weaver"
+ desc = "for whatever reason, you are able to weave silk webs, albeit to a limited extent"
+ value = 0 //ERP quirk
+ gain_text = "You find yourself able to weave webs."
+ lose_text = "You are no longer able to weave webs."
+ category = CATEGORY_SEXUAL
+ ///What action is linked with this quirk?
+ var/datum/action/innate/wrap_target/linked_action
+
+/datum/quirk/web_weaving/post_add()
+ to_chat(quirk_holder, "Web Weaving is intended as an ERP mechanic. Please be responsible.")
+ linked_action = new
+ linked_action.Grant(quirk_holder)
+
+/datum/quirk/web_weaving/remove()
+ linked_action.Remove(quirk_holder)
+ return ..()
+
+/datum/action/innate/wrap_target
+ name = "wrap"
+ desc = "encases a humanoid in a web cocoon."
+ icon_icon = 'GainStation13/icons/obj/clothing/web.dmi'
+ button_icon_state = "web_bindings"
+ background_icon_state = "bg_alien"
+
+/datum/action/innate/wrap_target/Activate()
+ var/mob/living/carbon/user = owner
+ if(!user || !ishuman(user))
+ return FALSE
+
+ var/mob/living/carbon/human/target = user.pulling
+ if(!target || !ishuman(target) || user.grab_state < GRAB_AGGRESSIVE) //Add a check for a bondage pref whenever that gets added in.
+ to_chat(user, "You need to aggressively grab a humanoid to use this.")
+ return FALSE
+
+ if(target.wear_suit)
+ var/obj/item/clothing/suit = target.wear_suit
+ if(istype(suit, /obj/item/clothing/suit/straight_jacket/web))
+ //Code goes here :)
+ return TRUE
+
+ user.visible_message("[user] attempts to remove [target]'s [target.wear_suit]!", "You attempt to remove [target]'s [target.wear_suit].")
+ if(!do_after_mob(user, target, 10 SECONDS) || !target.dropItemToGround(suit))
+ return FALSE
+
+ var/obj/item/clothing/suit/straight_jacket/web/wrapping = new
+ if(!wrapping)
+ return FALSE
+
+ user.visible_message("[user] attempts to wrap [target] inside of [wrapping]!", "You attempt to wrap [target] inside of [wrapping].")
+ if(!do_after_mob(user, target, 20 SECONDS) || !target.equip_to_slot_if_possible(wrapping, SLOT_WEAR_SUIT, TRUE, TRUE))
+ user.visible_message("[user] fails to wrap [target] inside of [wrapping]!", "You fail to wrap [target] inside of [wrapping].")
+ return FALSE
+
+ user.visible_message("[user] successfully [target] inside of [wrapping]!", "You successfully wrap [target] inside of [wrapping].")
+ return TRUE
+
+/obj/item/clothing/suit/straight_jacket/web
+ name = "web bindings"
+ desc = "A mesh of sticky web that binds whoever is stuck inside of it"
+ icon = 'GainStation13/icons/obj/clothing/web.dmi'
+ alternate_worn_icon = 'GainStation13/icons/mob/web.dmi'
+ icon_state = "web_bindings"
+ item_state = "web_bindings"
+ breakouttime = 600 //1 minute is reasonable.
+ equip_delay_other = 0
+ equip_delay_self = 0
+ mutantrace_variation = NO_MUTANTRACE_VARIATION
diff --git a/GainStation13/icons/mob/web.dmi b/GainStation13/icons/mob/web.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..f5fbfed43224b0a59eb31ba1db226b36b3e2cf95
GIT binary patch
literal 798
zcmV+(1L6FMP)+=jZ3b!os_|yZ-+Eot>SmtgQ31
z!Z82<00DGTPE!Ct=GbNc0041%R9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`
zEh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KBSJT)mkDKjr6GcUbZ
ziHkEOv#1!Pmy0v4C^0t`#5UwoR&e!m0h)=%YWH=`^)0+YWo~YzH>^LvsbOBNFg>)Zg8{zHYoqPWGN|pU
z)FGZK)V>Es|61e-|HLPLPrM93H1Cs?8PgEshXDwbUgaCNfZ;R%5doZmV7W!JR8IrY
ze=#O(CIlz~g3|!>2?`0%NQr8!rvc~_*oqoeEG*$P0DS^44Udwka-Sfd2B4dO-Dq2z
z=H6<3CY%PKPk^N$xJDEa_26Xy`UHlb+cPOB;WPmK9xMwtQZHo)qNrGz@s6&OXW`CY0!h1dBv(g
z(;%h4hiLf{V-Q+qIYJe(S{zK|2`wo6q>ptDGb%jPc2jycTIE*P1gS{X+->4X=piG0
zyQ)_YBj7JR+-wB&x>EQYtFC@?FY$Pcg-a^FeEVUBeKft8^!%~JeVp7Y(~rbA1C0j*
T-G^;B00000NkvXXu0mjf$nV
Date: Sun, 19 Feb 2023 00:25:59 -0500
Subject: [PATCH 5/6] Update web_weaving.dm
---
GainStation13/code/mechanics/web_weaving.dm | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/GainStation13/code/mechanics/web_weaving.dm b/GainStation13/code/mechanics/web_weaving.dm
index aa0e9882..b3ac4266 100644
--- a/GainStation13/code/mechanics/web_weaving.dm
+++ b/GainStation13/code/mechanics/web_weaving.dm
@@ -37,7 +37,16 @@
if(target.wear_suit)
var/obj/item/clothing/suit = target.wear_suit
if(istype(suit, /obj/item/clothing/suit/straight_jacket/web))
- //Code goes here :)
+ user.visible_message("[user] begins to fully encase [target] in a cocoon!", "You begin to fully encase [target] in a cocoon.")
+ if(!do_after_mob(user, target, 30 SECONDS))
+ return FALSE
+
+ var/obj/structure/spider/cocoon/quirk/spawned_cocoon = new(target.loc)
+ if(!target.forceMove(spawned_cocoon))
+ qdel(spawned_cocoon)
+ return FALSE
+
+ spawned_cocoon.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3")
return TRUE
user.visible_message("[user] attempts to remove [target]'s [target.wear_suit]!", "You attempt to remove [target]'s [target.wear_suit].")
@@ -67,3 +76,6 @@
equip_delay_other = 0
equip_delay_self = 0
mutantrace_variation = NO_MUTANTRACE_VARIATION
+
+/obj/structure/spider/cocoon/quirk
+ max_integrity = 20
From 37b965f35e7b0c953745d0c5b3adc0ad5d681cb2 Mon Sep 17 00:00:00 2001
From: Pinta <124479862+deertools@users.noreply.github.com>
Date: Sun, 19 Feb 2023 03:42:45 -0500
Subject: [PATCH 6/6] Update web_weaving.dm
---
GainStation13/code/mechanics/web_weaving.dm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/GainStation13/code/mechanics/web_weaving.dm b/GainStation13/code/mechanics/web_weaving.dm
index b3ac4266..e6c6904a 100644
--- a/GainStation13/code/mechanics/web_weaving.dm
+++ b/GainStation13/code/mechanics/web_weaving.dm
@@ -9,7 +9,6 @@
var/datum/action/innate/wrap_target/linked_action
/datum/quirk/web_weaving/post_add()
- to_chat(quirk_holder, "Web Weaving is intended as an ERP mechanic. Please be responsible.")
linked_action = new
linked_action.Grant(quirk_holder)
@@ -77,5 +76,10 @@
equip_delay_self = 0
mutantrace_variation = NO_MUTANTRACE_VARIATION
+/obj/item/clothing/suit/straight_jacket/web/equipped(mob/user, slot)
+ . = ..()
+ if((user.get_item_by_slot(SLOT_WEAR_SUIT)) != src && !QDELETED(src))
+ qdel(src)
+
/obj/structure/spider/cocoon/quirk
max_integrity = 20