Merge pull request #13 from AlManiak/feature/small-bits-and-bob
Feature/small bits and bob
This commit is contained in:
@@ -5,3 +5,9 @@
|
||||
/datum/mood_event/fat_good
|
||||
description = "<span class='nicegreen'><B>I'm so fat!</B></span>\n"
|
||||
mood_change = 4
|
||||
|
||||
//GS13 Port
|
||||
/datum/mood_event/lewd_headpat
|
||||
description = "<span class='nicegreen'>I love headpats so much!</span>\n"
|
||||
mood_change = 3
|
||||
timeout = 2 MINUTES
|
||||
|
||||
@@ -94,3 +94,34 @@
|
||||
if(H)
|
||||
var/datum/species/species = H.dna.species
|
||||
species.disliked_food = initial(species.disliked_food)
|
||||
|
||||
//GS13 Port
|
||||
//Port from Shadow
|
||||
/datum/quirk/donotclone
|
||||
name = "DNC"
|
||||
desc = "You have filed a Do Not Clone order, stating that you do not wish to be cloned. You can still be revived by other means."
|
||||
value = -2
|
||||
mob_trait = TRAIT_NEVER_CLONE
|
||||
medical_record_text = "Patient has a DNC (Do not clone) order on file, and cannot be cloned as a result."
|
||||
|
||||
/datum/quirk/inheat
|
||||
name = "In Heat"
|
||||
desc = "Your system burns with the desire to be bred, your body will betray you and alert others' to your desire when examining you. Satisfying your lust will make you happy, but ignoring it may cause you to become sad and needy."
|
||||
value = 0
|
||||
mob_trait = TRAIT_HEAT
|
||||
gain_text = "<span class='notice'>You body burns with the desire to be bred.</span>"
|
||||
lose_text = "<span class='notice'>You feel more in control of your body and thoughts.</span>"
|
||||
|
||||
/datum/quirk/headpat_slut
|
||||
name = "Headpat Slut"
|
||||
desc = "You like headpats, alot, maybe even a little bit too much. Headpats give you a bigger mood boost and cause arousal"
|
||||
mob_trait = TRAIT_HEADPAT_SLUT
|
||||
value = 0
|
||||
medical_record_text = "Patient seems overly affectionate."
|
||||
|
||||
/datum/quirk/headpat_hater
|
||||
name = "Distant"
|
||||
desc = "You don't seem to show much care for being touched. Whether it's because you're reserved or due to self control, you won't wag your tail outside of your own control should you possess one."
|
||||
mob_trait = TRAIT_DISTANT
|
||||
value = 0
|
||||
medical_record_text = "Patient cares little with or dislikes being touched."
|
||||
|
||||
@@ -5,3 +5,43 @@
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
build_path = /obj/item/assembly/infra/fat
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/small_cup
|
||||
name = "Small Gulp Cup"
|
||||
id = "Small_Gulp"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/plastic=200)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/flask/paper_cup/small
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/medium_cup
|
||||
name = "Medium Gulp Cup"
|
||||
id = "Medium_Gulp"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/plastic=300)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/flask/paper_cup/medium
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/small_cup
|
||||
name = "Big Gulp Cup"
|
||||
id = "Big_Gulp"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/plastic=500)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/flask/paper_cup/big
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/extra_big_cup
|
||||
name = "Extra Big Gulp Cup"
|
||||
id = "Extra_Big_Gulp"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/plastic=600)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/flask/paper_cup/extra_big
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/super_extra_big_cup
|
||||
name = "Super Extra Big Gulp Cup"
|
||||
id = "Super_Extra_Big_Gulp"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/plastic=1000)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/flask/paper_cup/super_extra_big
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -171,3 +171,55 @@
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "datadisk0"
|
||||
desc = "A dusty disk, desconstruction will be needed to recover data."
|
||||
|
||||
//GS 13 Port - Big gulps in all sizes
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup
|
||||
name = "paper cup"
|
||||
icon = 'GainStation13/icons/obj/paper_cups.dmi'
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
|
||||
volume = 50
|
||||
reagent_flags = OPENCONTAINER
|
||||
spillable = TRUE
|
||||
container_HP = 5
|
||||
pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg'
|
||||
drop_sound = 'sound/items/handling/cardboardbox_drop.ogg'
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/small
|
||||
name = "Small Gulp Cup"
|
||||
desc = "A paper cup. It can hold up to 50 units. It's not very strong."
|
||||
icon_state = "small"
|
||||
custom_materials = list(/datum/material/plastic=200)
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/medium
|
||||
name = "Medium Gulp Cup"
|
||||
desc = "It's a paper cup, but you wouldn't call it 'medium' though. It can hold up to 75 units. It's not very strong."
|
||||
icon_state = "medium"
|
||||
volume = 75
|
||||
custom_materials = list(/datum/material/plastic=300)
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/big
|
||||
name = "Big Gulp Cup"
|
||||
desc = "A huge paper cup, a normal person would struggle to drink it all in one sitting. It can hold up to 120 units. It's not very strong."
|
||||
icon_state = "big"
|
||||
volume = 120
|
||||
custom_materials = list(/datum/material/plastic=500)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/extra_big
|
||||
name = "Extra Big Gulp Cup"
|
||||
desc = "A comically large paper cup. It can hold up to 160 units. It's not very strong."
|
||||
icon_state = "extra_big"
|
||||
volume = 160
|
||||
custom_materials = list(/datum/material/plastic=600)
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/super_extra_big
|
||||
name = "Super Extra Big Gulp Cup"
|
||||
desc = "Its called a paper 'cup', but it looks more like an oversized bucket to you. It can hold up to 250 units. It's not very strong."
|
||||
icon_state = "super_extra_big"
|
||||
volume = 250
|
||||
custom_materials = list(/datum/material/plastic=1000)
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
@@ -289,6 +289,13 @@
|
||||
#define TRAIT_WATER_SPONGE "water_sponge"
|
||||
#define TRAIT_FATROUSAL "fatrousal"
|
||||
|
||||
//GS13 Port
|
||||
#define TRAIT_HEADPAT_SLUT "headpat_slut"
|
||||
#define TRAIT_NEVER_CLONE "donotclone"
|
||||
#define TRAIT_HEAT "heat"
|
||||
#define TRAIT_DISTANT "headpat_hater"
|
||||
#define TRAIT_CUM_PLUS "cum_plus"
|
||||
|
||||
// mobility flag traits
|
||||
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
|
||||
// BUT FOR NOW, THESE ARE HOOKED TO DO update_mobility() VIA COMSIG IN living_mobility.dm
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1)
|
||||
mid_length = 2
|
||||
end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg'
|
||||
volume = 15
|
||||
volume = 5
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -65,12 +65,12 @@
|
||||
volume = 50
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
/datum/looping_sound/deep_fryer
|
||||
mid_length = 2
|
||||
mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1)
|
||||
volume = 30
|
||||
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/looping_sound/microwave
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
// Get targets
|
||||
var/obj/item/organ/eyes/old_eyes = quirk_holder.getorganslot(ORGAN_SLOT_EYES)
|
||||
var/obj/item/organ/eyes/robotic/glow/new_eyes = new
|
||||
|
||||
|
||||
// Replace eyes
|
||||
qdel(old_eyes)
|
||||
new_eyes.Insert(quirk_holder)
|
||||
|
||||
@@ -162,6 +162,7 @@
|
||||
gain_text = "<span class='notice'>You feel like munching on a can of soda.</span>"
|
||||
lose_text = "<span class='notice'>You no longer feel like you should be eating trash.</span>"
|
||||
mob_trait = TRAIT_TRASHCAN
|
||||
medical_record_text = "Patient has been observed eating inedible garbage."
|
||||
|
||||
// GS13 EDIT START
|
||||
/datum/quirk/trashcan/add()
|
||||
|
||||
@@ -410,6 +410,12 @@
|
||||
if(isbrain(mob_occupant))
|
||||
dna = B.stored_dna
|
||||
|
||||
//GS13 Port - DNC
|
||||
if(HAS_TRAIT(mob_occupant, TRAIT_NEVER_CLONE))
|
||||
scantemp = "Subject has an active DNC record on file. Unable to clone."
|
||||
playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0)
|
||||
return
|
||||
|
||||
if(!can_scan(dna, mob_occupant, FALSE, has_bank_account))
|
||||
return
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
zone = BODY_ZONE_PRECISE_GROIN
|
||||
slot = ORGAN_SLOT_TESTICLES
|
||||
size = BALLS_SIZE_MIN
|
||||
fluid_max_volume = 10
|
||||
arousal_verb = "Your balls ache a little"
|
||||
unarousal_verb = "Your balls finally stop aching, again"
|
||||
linked_organ_slot = ORGAN_SLOT_PENIS
|
||||
|
||||
@@ -3720,6 +3720,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(character.custom_body_size)
|
||||
character.resize(character.custom_body_size)
|
||||
|
||||
//GS13 Port - Add back arousal
|
||||
if(NOAROUSAL in pref_species.species_traits)
|
||||
character.canbearoused = FALSE
|
||||
else
|
||||
character.canbearoused = arousable
|
||||
|
||||
//speech stuff
|
||||
if(custom_tongue != "default")
|
||||
var/new_tongue = GLOB.roundstart_tongues[custom_tongue]
|
||||
|
||||
@@ -131,4 +131,3 @@
|
||||
reagents.reaction(target, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
return
|
||||
|
||||
|
||||
@@ -296,20 +296,40 @@
|
||||
|
||||
else if(check_zone(M.zone_selected) == BODY_ZONE_HEAD)
|
||||
var/datum/species/S
|
||||
S = dna.species
|
||||
if(ishuman(src))
|
||||
S = dna.species
|
||||
var/mob/living/carbon/human/H = src
|
||||
//GS13 Port - Headpat slut stuff
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT)) //No mood buff since you're not really liking it.
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem annoyed...</span>", \
|
||||
"<span class='warning'>You give [H] a pat on the head to make [p_them()] feel better! They seem annoyed as they're now glaring towards you...</span>")
|
||||
H.adjustArousal(-5) //Why are you touching me?
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[H] quickly twists [M]\'s arm!</span>", \
|
||||
"<span class='boldwarning'>Your arm gets twisted in [H]\'s grasp. Maybe you should have taken the hint...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
M.emote("scream")
|
||||
M.dropItemToGround(M.get_active_held_item())
|
||||
M.apply_damage(50, STAMINA, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
M.Knockdown(60)//STOP TOUCHING ME! For those spam head pat individuals
|
||||
else if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem incredibly pleased!</span>", \
|
||||
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better! They seem to like it way too much</span>")
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "lewd_headpat", /datum/mood_event/lewd_headpat)
|
||||
H.adjustArousal(5) //Headpats are hot af
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better!</span>", \
|
||||
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better!</span>")
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
|
||||
|
||||
M.visible_message("<span class='notice'>[M] gives [src] a pat on the head to make [p_them()] feel better!</span>", \
|
||||
"<span class='notice'>You give [src] a pat on the head to make [p_them()] feel better!</span>", target = src,
|
||||
target_message = "<span class='notice'>[M] gives you a pat on the head to make you feel better!</span>")
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat)
|
||||
friendly_check = TRUE
|
||||
if(!(client?.prefs.cit_toggles & NO_AUTO_WAG))
|
||||
if(S?.can_wag_tail(src) && !dna.species.is_wagging_tail())
|
||||
var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail")
|
||||
for(var/T in many_tails)
|
||||
if(S.mutant_bodyparts[T] && dna.features[T] != "None")
|
||||
emote("wag")
|
||||
if(!(HAS_TRAIT(src, TRAIT_DISTANT)))
|
||||
if(!(client?.prefs.cit_toggles & NO_AUTO_WAG))
|
||||
if(S?.can_wag_tail(src) && !dna.species.is_wagging_tail())
|
||||
var/static/list/many_tails = list("tail_human", "tail_lizard", "mam_tail")
|
||||
for(var/T in many_tails)
|
||||
if(S.mutant_bodyparts[T] && dna.features[T] != "None")
|
||||
emote("wag")
|
||||
|
||||
else if(check_zone(M.zone_selected) == BODY_ZONE_R_ARM || check_zone(M.zone_selected) == BODY_ZONE_L_ARM)
|
||||
if((pulling == M) && (grab_state == GRAB_PASSIVE))
|
||||
|
||||
@@ -107,6 +107,11 @@
|
||||
if(wear_id)
|
||||
. += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)]."
|
||||
|
||||
//GS13 Port
|
||||
//Heat Detection
|
||||
//if(breedable)
|
||||
if(HAS_TRAIT(src, TRAIT_HEAT))
|
||||
. += "<span class='love'>[t_He] [t_is] currently in heat.</span>"
|
||||
//Status effects
|
||||
var/effects_exam = status_effect_examines()
|
||||
if(!isnull(effects_exam))
|
||||
|
||||
@@ -546,13 +546,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species)
|
||||
|
||||
//GS13 Port - Add back arousal
|
||||
if(NOAROUSAL in species_traits)
|
||||
C.canbearoused = FALSE
|
||||
else
|
||||
if(C.client)
|
||||
C.canbearoused = C.client?.prefs?.arousable
|
||||
|
||||
/datum/species/proc/update_species_slowdown(mob/living/carbon/human/H)
|
||||
H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/species, TRUE, multiplicative_slowdown = speedmod)
|
||||
|
||||
|
||||
@@ -35,7 +35,11 @@
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/sol_dry = 8,
|
||||
/obj/item/reagent_containers/food/drinks/ice = 10,
|
||||
/obj/item/reagent_containers/food/drinks/flask = 3,
|
||||
/obj/item/reagent_containers/food/drinks/beer = 6)
|
||||
/obj/item/reagent_containers/food/drinks/beer = 6,
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/small = 20,
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/medium = 20,
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/big = 20,
|
||||
/obj/item/reagent_containers/food/drinks/flask/paper_cup/extra_big = 15)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/mug/tea = 12,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/fernet = 5)
|
||||
premium = list(/obj/item/reagent_containers/glass/bottle/ethanol = 4,
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
name = "Extra productive genitals"
|
||||
desc = "Your lower bits produce more and hold more than normal."
|
||||
value = 0
|
||||
category = CATEGORY_SEXUAL
|
||||
mob_trait = TRAIT_CUM_PLUS
|
||||
gain_text = "<span class='notice'>You feel pressure in your groin.</span>"
|
||||
lose_text = "<span class='notice'>You feel a weight lifted from your groin.</span>"
|
||||
@@ -16,14 +15,14 @@
|
||||
if(M?.getorganslot("testicles"))
|
||||
var/obj/item/organ/genital/testicles/T = M?.getorganslot("testicles")
|
||||
T?.fluid_mult = 1.5 //Base is 1
|
||||
T?.fluid_max_volume = 5
|
||||
T?.fluid_max_volume = 20
|
||||
|
||||
/datum/quirk/cum_plus/remove()
|
||||
var/mob/living/carbon/M = quirk_holder
|
||||
if(quirk_holder.getorganslot("testicles"))
|
||||
var/obj/item/organ/genital/testicles/T = M?.getorganslot("testicles")
|
||||
T?.fluid_mult = 1 //Base is 1
|
||||
T?.fluid_max_volume = 3 //Base is 3
|
||||
T?.fluid_max_volume = 10 //Base is 3
|
||||
|
||||
/datum/quirk/cum_plus/on_process()
|
||||
var/mob/living/carbon/M = quirk_holder //If you get balls later, then this will still proc
|
||||
@@ -31,4 +30,4 @@
|
||||
var/obj/item/organ/genital/testicles/T = M?.getorganslot("testicles")
|
||||
if(T?.fluid_max_volume <= 5 || T?.fluid_mult <= 0.2) //INVALID EXPRESSION?
|
||||
T?.fluid_mult = 1.5 //Base is 0.133
|
||||
T?.fluid_max_volume = 5
|
||||
T?.fluid_max_volume = 20
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -4077,6 +4077,7 @@
|
||||
#include "hyperstation\code\modules\resize\sizechems.dm"
|
||||
#include "hyperstation\code\modules\resize\sizegun.dm"
|
||||
#include "hyperstation\code\modules\surgery\organs\augments_arms.dm"
|
||||
#include "hyperstation\code\modules\traits.dm"
|
||||
#include "hyperstation\code\obj\ashtray.dm"
|
||||
#include "hyperstation\code\obj\decal.dm"
|
||||
#include "hyperstation\code\obj\fleshlight.dm"
|
||||
|
||||
Reference in New Issue
Block a user