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"