From 172a2be27dc228e2990fc9a6e55a3d02889b4356 Mon Sep 17 00:00:00 2001
From: Metis <100518708+sheepishgoat@users.noreply.github.com>
Date: Fri, 13 Sep 2024 16:53:30 -0400
Subject: [PATCH] under 50
---
.../code/datums/mutations/fatfang.dm | 16 ++++----
GainStation13/code/game/sound.dm | 8 ++--
GainStation13/code/mechanics/fatrousal.dm | 1 +
.../clothing/under/jobs/modcivilian.dm | 6 +--
.../code/modules/food_and_drinks/food.dm | 10 +++++
.../code/modules/mob/living/belly.dm | 39 +++++++++++++++++++
.../reagent_containers/barrel_tank.dm | 4 +-
GainStation13/code/obj/items/minor_items.dm | 1 -
code/__DEFINES/DNA.dm | 2 +
code/__DEFINES/misc.dm | 39 ++++++++++---------
tgstation.dme | 1 +
11 files changed, 91 insertions(+), 36 deletions(-)
create mode 100644 GainStation13/code/modules/mob/living/belly.dm
diff --git a/GainStation13/code/datums/mutations/fatfang.dm b/GainStation13/code/datums/mutations/fatfang.dm
index 718345c110..27f6ee6be0 100644
--- a/GainStation13/code/datums/mutations/fatfang.dm
+++ b/GainStation13/code/datums/mutations/fatfang.dm
@@ -30,27 +30,27 @@
catchphrase = null
icon = 'icons/mob/actions/bloodsucker.dmi'
icon_state = "power_feed"
-
+
var/starttime = 0
/obj/item/melee/touch_attack/fatfang/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || !iscarbon(target))
return FALSE
-
- if(!target || !user.dna.get_mutation(FATFANG).chem_to_add || !user.dna.get_mutation(FATFANG).chem_amount)
+ var/datum/mutation/human/fatfang/fang = user.dna.get_mutation(FATFANG)
+ if(!target || !istype(fang) || !fang.chem_to_add || !fang.chem_amount)
return FALSE
target.visible_message("[user] nibbles [target]!","[user] nibbles you!")
if(target == user.pulling && ishuman(user.pulling))
starttime = world.time
- user.dna.get_mutation(FATFANG).power.charge_max = 600 * GET_MUTATION_ENERGY(user.dna.get_mutation(FATFANG))
+ fang.power.charge_max = 600 * GET_MUTATION_ENERGY(fang)
while(starttime + 300 > world.time && in_range(user, target))
if(do_mob(user, target, 10, 0, 1))
- target.reagents.add_reagent(user.dna.get_mutation(FATFANG).chem_to_add, (user.dna.get_mutation(FATFANG).chem_amount * GET_MUTATION_POWER(user.dna.get_mutation(FATFANG))/2))
+ target.reagents.add_reagent(fang.chem_to_add, (fang.chem_amount * GET_MUTATION_POWER(fang)/2))
target.visible_message("[user] pumps some venom in [target]!","[user] pumps some venom in you!")
else
- user.dna.get_mutation(FATFANG).power.charge_max = 50 * GET_MUTATION_ENERGY(user.dna.get_mutation(FATFANG))
- target.reagents.add_reagent(user.dna.get_mutation(FATFANG).chem_to_add, user.dna.get_mutation(FATFANG).chem_amount * GET_MUTATION_POWER(user.dna.get_mutation(FATFANG)))
- user.changeNext_move(50)
+ fang.power.charge_max = 50 * GET_MUTATION_ENERGY(fang)
+ target.reagents.add_reagent(fang.chem_to_add, fang.chem_amount * GET_MUTATION_POWER(fang))
+ //user.changeNext_move(50)
/obj/item/dnainjector/antifang
name = "\improper DNA injector (Anti-The Nibble)"
diff --git a/GainStation13/code/game/sound.dm b/GainStation13/code/game/sound.dm
index 6c8cb7bb6d..5f7401e17e 100644
--- a/GainStation13/code/game/sound.dm
+++ b/GainStation13/code/game/sound.dm
@@ -9,7 +9,7 @@
return
//allocate a channel if necessary now so its the same for everyone
- channel = channel || open_sound_channel()
+ channel = channel //|| open_sound_channel()
// Looping through the player list has the added bonus of working for mobs inside containers
var/sound/S = sound(get_sfx(soundin))
@@ -18,12 +18,12 @@
var/list/listeners = SSmobs.clients_by_zlevel[z]
if(!ignore_walls) //these sounds don't carry through walls
listeners = listeners & hearers(maxdistance,turf_source)
-
+
for(var/P in listeners)
var/mob/M = P
if(!M.client)
continue
- if((!M.client?.prefs.cit_toggles & pref))
+ if(!(M.client?.prefs.cit_toggles & pref))
continue
if(get_dist(M, turf_source) <= maxdistance)
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry)
@@ -31,7 +31,7 @@
var/mob/M = P
if(!M.client)
continue
- if((!M.client?.prefs.cit_toggles & pref))
+ if(!(M.client?.prefs.cit_toggles & pref))
continue
if(get_dist(M, turf_source) <= maxdistance)
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry)
diff --git a/GainStation13/code/mechanics/fatrousal.dm b/GainStation13/code/mechanics/fatrousal.dm
index c0ddd6c3f6..7c62f9e0fe 100644
--- a/GainStation13/code/mechanics/fatrousal.dm
+++ b/GainStation13/code/mechanics/fatrousal.dm
@@ -20,6 +20,7 @@
if(iscarbon(quirk_holder))
var/mob/living/carbon/C = quirk_holder
return C.getArousalLoss()*35
+
return FALSE
///mob/living/adjust_arousal(amount, updating_arousal=1)
diff --git a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm
index 19a0e1bf9e..5669b66a5c 100644
--- a/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm
+++ b/GainStation13/code/modules/clothing/under/jobs/modcivilian.dm
@@ -34,7 +34,7 @@
. += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_[G.size]_d", GENITALS_UNDER_LAYER)
else
. += mutable_appearance('GainStation13/icons/mob/modclothes/chefmodular.dmi', "belly_9_d", GENITALS_UNDER_LAYER)
- if(istype(O, /obj/item/organ/genital/anus))
+ if(istype(O, /obj/item/organ/genital/butt))
G = O
if(suit_style == DIGITIGRADE_SUIT_STYLE)
if(G.size <= 10)
@@ -68,7 +68,7 @@
/obj/item/clothing/under/color/grey/modular
name = "grey modular jumpsuit" //change name from base clothes to distinguish them
desc = "A tasteful grey jumpsuit that reminds you of the good old days. Now adjusts to the match the wearer's size!" //description same as above
-
+
var/icon_location = 'GainStation13/icons/mob/modclothes/graymodular.dmi' //specify the file path where the modular overlays for those clothes are located
var/mob/living/carbon/U //instance a variable for keeping track of the user
@@ -148,7 +148,7 @@
/obj/item/clothing/under/color/grey/modular/bra
- name = "grey modular bra"
+ name = "grey modular bra"
desc = "A tasteful grey bra that reminds you of the good old days. Now adjusts to the match the wearer's size!"
icon_location = 'GainStation13/icons/mob/modclothes/graymodular_bra.dmi'
icon_state = "grey"
diff --git a/GainStation13/code/modules/food_and_drinks/food.dm b/GainStation13/code/modules/food_and_drinks/food.dm
index 5c88169a88..dc63593a92 100644
--- a/GainStation13/code/modules/food_and_drinks/food.dm
+++ b/GainStation13/code/modules/food_and_drinks/food.dm
@@ -139,3 +139,13 @@
tastes = list("eggs", "breakfast" = 1)
foodtype = GRAIN | SUGAR
+
+/obj/item/reagent_containers/food/snacks/soup/lavaland_stew
+ name = "lavaland stew"
+ desc = "A mixture of various lavaland mushrooms, turned into a bland but medicinal stew."
+ icon = 'GainStation13/icons/obj/food/ported_meals.dmi'
+ icon_state = "lavalandsoup"
+ trash = /obj/item/reagent_containers/glass/bowl/mushroom_bowl
+ list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 15) //Primarily here to let ashwalkers make medicine. Low nutrient content, high medicine content.
+ tastes = list("fresh pickings","extreme blandness" = 1)
+ foodtype = MEAT
diff --git a/GainStation13/code/modules/mob/living/belly.dm b/GainStation13/code/modules/mob/living/belly.dm
new file mode 100644
index 0000000000..549afa12ca
--- /dev/null
+++ b/GainStation13/code/modules/mob/living/belly.dm
@@ -0,0 +1,39 @@
+/obj/item/organ/genital/belly //I know, I know a belly aint a genital. but it is in the sake of code.
+ name = "belly"
+ desc = "You see a belly on their midsection."
+ icon_state = "belly"
+ icon = 'hyperstation/icons/obj/genitals/belly.dmi'
+ zone = "chest"
+ slot = "belly"
+ w_class = 3
+ size = 0
+ var/statuscheck = FALSE
+ shape = "Pair"
+ masturbation_verb = "massage"
+ var/sent_full_message = TRUE //defaults to 1 since they're full to start
+ var/inflatable = FALSE //For inflation connoisseurs
+
+
+/obj/item/organ/genital/belly/on_life()
+ if(QDELETED(src))
+ return
+ if(!owner)
+ return
+
+/obj/item/organ/genital/belly/update_appearance()
+ var/string
+ if(owner)
+ if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
+ if(ishuman(owner))
+ var/mob/living/carbon/human/H = owner
+ color = "#[SKINTONE2HEX(H.skin_tone)]"
+ else
+ color = "#[owner.dna.features["belly_color"]]"
+ if(ishuman(owner))
+ var/mob/living/carbon/human/H = owner
+ icon_state = sanitize_text(string)
+ H.update_genitals()
+
+ icon_state = sanitize_text(string)
+
+
diff --git a/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm b/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm
index 886c5a07d4..543c697a1d 100644
--- a/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm
+++ b/GainStation13/code/modules/reagents/reagent_containers/barrel_tank.dm
@@ -17,7 +17,9 @@
possible_transfer_amounts = list(0)
volume = 500
spillable = FALSE
- splashable = FALSE
+
+/datum/action/item_action/toggle_tube //GS13
+ name = "Toggle Tube"
/obj/item/reagent_containers/barrel_tank/ui_action_click(mob/user)
toggle_tube(user)
diff --git a/GainStation13/code/obj/items/minor_items.dm b/GainStation13/code/obj/items/minor_items.dm
index 1f399acfed..c8877414da 100644
--- a/GainStation13/code/obj/items/minor_items.dm
+++ b/GainStation13/code/obj/items/minor_items.dm
@@ -51,7 +51,6 @@
filling_color = "#001aff"
tastes = list("blueberry gum" = 1)
foodtype = FRUIT
- price = 5
//blueberry gum trash
diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm
index 35a1e15f91..99f151d6c7 100644
--- a/code/__DEFINES/DNA.dm
+++ b/code/__DEFINES/DNA.dm
@@ -187,6 +187,8 @@
#define ORGAN_SLOT_TESTICLES "testicles"
#define ORGAN_SLOT_BREASTS "breasts"
#define ORGAN_SLOT_BUTT "butt"
+// GS13 EDIT
+#define ORGAN_SLOT_BELLY "belly"
////organ defines
#define STANDARD_ORGAN_THRESHOLD 100
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 9379c8cf09..ea84f115a3 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -33,24 +33,25 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
//Human Overlays Indexes/////////
//LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS
-#define MUTATIONS_LAYER 34 //mutations. Tk headglows, cold resistance glow, etc
-#define ANTAG_LAYER 33 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up)
-#define GENITALS_BEHIND_LAYER 32 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer
-#define BODY_BEHIND_LAYER 31 //certain mutantrace features (tail when looking south) that must appear behind the body parts
-#define BODYPARTS_LAYER 30 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
-#define MARKING_LAYER 29 //Matrixed body markings because clashing with snouts?
-#define BODY_ADJ_LAYER 28 //certain mutantrace features (snout, body markings) that must appear above the body parts
-#define GENITALS_FRONT_LAYER 27 //Draws some genitalia above clothes and the TAUR body if need be.
-#define BODY_LAYER 26 //underwear, undershirts, socks, eyes, lips(makeup)
-#define BODY_ADJ_UPPER_LAYER 25
-#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
-#define DAMAGE_LAYER 23 //damage indicators (cuts and burns)
-#define UNIFORM_LAYER 22
-#define ID_LAYER 21
-#define HANDS_PART_LAYER 20
-#define SHOES_LAYER 19
-#define GLOVES_LAYER 18
-#define EARS_LAYER 17
+#define MUTATIONS_LAYER 35 //mutations. Tk headglows, cold resistance glow, etc
+#define ANTAG_LAYER 34 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up)
+#define GENITALS_BEHIND_LAYER 33 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer
+#define BODY_BEHIND_LAYER 32 //certain mutantrace features (tail when looking south) that must appear behind the body parts
+#define BODYPARTS_LAYER 31 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
+#define MARKING_LAYER 30 //Matrixed body markings because clashing with snouts?
+#define BODY_ADJ_LAYER 29 //certain mutantrace features (snout, body markings) that must appear above the body parts
+#define GENITALS_FRONT_LAYER 28 //Draws some genitalia above clothes and the TAUR body if need be.
+#define BODY_LAYER 27 //underwear, undershirts, socks, eyes, lips(makeup)
+#define BODY_ADJ_UPPER_LAYER 26
+#define FRONT_MUTATIONS_LAYER 25 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
+#define DAMAGE_LAYER 24 //damage indicators (cuts and burns)
+#define UNIFORM_LAYER 23
+#define ID_LAYER 22
+#define HANDS_PART_LAYER 21
+#define SHOES_LAYER 20
+#define GLOVES_LAYER 19
+#define EARS_LAYER 18
+#define GENITALS_UNDER_LAYER 17
#define SUIT_LAYER 16
#define GENITALS_EXPOSED_LAYER 15
#define GLASSES_LAYER 14
@@ -67,7 +68,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
#define HANDS_LAYER 3
#define BODY_FRONT_LAYER 2
#define FIRE_LAYER 1 //If you're on fire
-#define TOTAL_LAYERS 34 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
+#define TOTAL_LAYERS 35 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"
diff --git a/tgstation.dme b/tgstation.dme
index b2ecb3f9a9..814e2b9432 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3959,6 +3959,7 @@
#include "GainStation13\code\modules\hydroponics\munchies_weed.dm"
#include "GainStation13\code\modules\hydroponics\grown\berries.dm"
#include "GainStation13\code\modules\mapping\areas.dm"
+#include "GainStation13\code\modules\mob\living\belly.dm"
#include "GainStation13\code\modules\mob\living\emote.dm"
#include "GainStation13\code\modules\mob\living\emote_modular.dm"
#include "GainStation13\code\modules\mob\living\emote_ported.dm"