From cdea2c6766791032b9aab7bb1287ae2f89be10b7 Mon Sep 17 00:00:00 2001 From: TalkingCactus Date: Tue, 7 Feb 2017 00:57:29 -0500 Subject: [PATCH] Adds Arousal as a Damage Type (#204) * auto vote runtime error fix * part 1 * conflict resolution stop fighting, damnit * includes * species flags * toggleable * reagent recipes --- code/__DEFINES/DNA.dm | 3 + code/__DEFINES/citadel_defines.dm | 67 +++++++ code/__DEFINES/combat.dm | 4 + code/_onclick/hud/hud.dm | 2 + code/_onclick/hud/human.dm | 4 + code/citadel/_helpers.dm | 1 - code/citadel/cit_arousal.dm | 156 +++++++++++++++ code/citadel/cit_reagents.dm | 211 ++++++++++++++++++++ code/citadel/icons/effects.dmi | Bin 0 -> 10734 bytes code/citadel/icons/misc.dmi | Bin 0 -> 182 bytes code/citadel/icons/mobs.dmi | Bin 0 -> 182 bytes code/citadel/icons/objects.dmi | Bin 0 -> 1025 bytes code/citadel/icons/structures.dmi | Bin 0 -> 182 bytes code/citadel/kegs.dm | 41 ++++ code/datums/datumvars.dm | 2 + code/modules/client/preferences.dm | 34 ++++ code/modules/client/preferences_savefile.dm | 4 + code/modules/client/verbs/suicide.dm | 1 + code/modules/mob/living/damage_procs.dm | 15 +- icons/mob/screen_gen.dmi | Bin 115826 -> 119719 bytes interface/stylesheet.dm | 3 + tgstation.dme | 4 + 22 files changed, 549 insertions(+), 3 deletions(-) create mode 100644 code/__DEFINES/citadel_defines.dm create mode 100644 code/citadel/cit_arousal.dm create mode 100644 code/citadel/cit_reagents.dm create mode 100644 code/citadel/icons/effects.dmi create mode 100644 code/citadel/icons/misc.dmi create mode 100644 code/citadel/icons/mobs.dmi create mode 100644 code/citadel/icons/objects.dmi create mode 100644 code/citadel/icons/structures.dmi create mode 100644 code/citadel/kegs.dm diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index a58d7762a0..f732287cf8 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -130,4 +130,7 @@ #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define MUTCOLORS2 26 #define MUTCOLORS3 27 +//citadel code +#define NOAROUSAL 28//Stops all arousal effects +#define NOGENITALS 29//Cannot create, use, or otherwise have genitals //#define SUBSPECIES 28 \ No newline at end of file diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm new file mode 100644 index 0000000000..98153f06a4 --- /dev/null +++ b/code/__DEFINES/citadel_defines.dm @@ -0,0 +1,67 @@ +//Global defines for most of the unmentionables. +//Be sure to update the min/max of these if you do change them. +//Measurements are in imperial units. Inches, feet, yards, miles. Tsp, tbsp, cups, quarts, gallons, etc + +//arousal HUD location +#define ui_arousal "EAST-1:28,CENTER-3:11"//Below the health doll + + +//organ defines +#define COCK_SIZE_MIN 1 +#define COCK_SIZE_MAX 24 + +#define COCK_GIRTH_RATIO_MAX 1.25 +#define COCK_GIRTH_RATIO_DEF 0.75 +#define COCK_GIRTH_RATIO_MIN 0.5 + +#define KNOT_GIRTH_RATIO_MAX 3 +#define KNOT_GIRTH_RATIO_DEF 2.1 +#define KNOT_GIRTH_RATIO_MIN 1.25 + +#define BALLS_VOLUME_BASE 50 +#define BALLS_VOLUME_MULT 1 + +#define BALLS_SIZE_MIN 1 +#define BALLS_SIZE_SMALL 2 +#define BALLS_SIZE_NORMAL 3 +#define BALLS_SIZE_BIG 4 +#define BALLS_SIZE_BIGGER 5 +#define BALLS_SIZE_BIGGEST 6 +#define BALLS_SIZE_MAX 7 + +#define BALLS_SACK_SIZE_DEF 8 + +#define CUM_RATE 5 +#define CUM_RATE_MULT 1 +#define CUM_EFFICIENCY 1//amount of nutrition required per life() + +#define EGG_GIRTH_MIN 1//inches +#define EGG_GIRTH_DEF 6 +#define EGG_GIRTH_MAX 16 + +#define BREASTS_VOLUME_BASE 50 //base volume for the reagents in the breasts, multiplied by the size then multiplier. 50u for A cups, 850u for HH cups. +#define BREASTS_VOLUME_MULT 1 //global multiplier for breast volume. +#define BREASTS_SIZE_FLAT 0 +#define BREASTS_SIZE_A 1 +#define BREASTS_SIZE_AA 1.5 +#define BREASTS_SIZE_B 2 +#define BREASTS_SIZE_BB 2.5 +#define BREASTS_SIZE_C 3 +#define BREASTS_SIZE_CC 3.5 +#define BREASTS_SIZE_D 4 +#define BREASTS_SIZE_DD 4.5 +#define BREASTS_SIZE_E 5 +#define BREASTS_SIZE_EE 5.5 +#define BREASTS_SIZE_F 6 +#define BREASTS_SIZE_FF 6.5 +#define BREASTS_SIZE_G 7 +#define BREASTS_SIZE_GG 7.5//Are these even real sizes? The world may never know because cup sizes make no fucking sense. +#define BREASTS_SIZE_H 8 +#define BREASTS_SIZE_HH 8.5//Largest size, ever. For now. + +#define BREASTS_SIZE_MIN BREASTS_SIZE_A +#define BREASTS_SIZE_MAX BREASTS_SIZE_HH + +#define MILK_RATE 5 +#define MILK_RATE_MULT 1 +#define MILK_EFFICIENCY 1 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 90eef6c091..12810e8aba 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -9,6 +9,8 @@ #define OXY "oxy" #define CLONE "clone" #define STAMINA "stamina" +//citadel code +#define AROUSAL "arousal" //bitflag damage defines used for suicide_act #define BRUTELOSS 1 @@ -16,6 +18,8 @@ #define TOXLOSS 4 #define OXYLOSS 8 #define SHAME 16 +//citadel code +#define AROUSAL 32 #define STUN "stun" #define WEAKEN "weaken" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index cd1f0799f7..d81841fa54 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -50,6 +50,8 @@ var/obj/screen/healths var/obj/screen/healthdoll var/obj/screen/internals + //citadel code + var/obj/screen/arousal var/ui_style_icon = 'icons/mob/screen_midnight.dmi' diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 57df2b003a..c15dbf761c 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -293,6 +293,10 @@ healths = new /obj/screen/healths() infodisplay += healths + //citadel code + arousal = new /obj/screen/arousal() + infodisplay += arousal + healthdoll = new /obj/screen/healthdoll() infodisplay += healthdoll diff --git a/code/citadel/_helpers.dm b/code/citadel/_helpers.dm index 3879c0ec50..c0b0c0769b 100644 --- a/code/citadel/_helpers.dm +++ b/code/citadel/_helpers.dm @@ -1,6 +1,5 @@ //THIS FILE CONTAINS CONSTANTS, PROCS, DEFINES, AND OTHER THINGS// //////////////////////////////////////////////////////////////////// - /mob/proc/setClickCooldown(var/timeout) next_move = max(world.time + timeout, next_move) diff --git a/code/citadel/cit_arousal.dm b/code/citadel/cit_arousal.dm new file mode 100644 index 0000000000..ff77bb06e0 --- /dev/null +++ b/code/citadel/cit_arousal.dm @@ -0,0 +1,156 @@ +//Mob vars +/mob/living + var/arousalloss = 0 //How aroused the mob is. + var/min_arousal = 0 //The lowest this mobs arousal will get. default = 0 + var/max_arousal = 100 //The highest this mobs arousal will get. default = 100 + var/arousal_rate = 1 //The base rate that arousal will increase in this mob. + var/arousal_loss_rate = 1 //How easily arousal can be relieved for this mob. + var/canbearoused = FALSE //Mob-level disabler for arousal. Starts off and can be enabled as features are added for different mob types. + var/mb_cd_length = 100 //10 second cooldown for masturbating because fuck spam + var/mb_cd_timer = 0 //The timer itself + +/mob/living/carbon/human + canbearoused = TRUE + +//Species vars +/datum/species + var/arousal_gain_rate = 1 //Rate at which this species becomes aroused + var/arousal_lose_rate = 1 //Multiplier for how easily arousal can be relieved + +//Mob procs +/mob/living/Life() + if(stat != DEAD) + handle_arousal() + ..() + +/mob/living/proc/handle_arousal() + return + +/mob/living/carbon/handle_arousal() + ..() + var/datum/species/S + if(has_dna()) + S = dna.species + if(S && SSmob.times_fired%36==2 && getArousalLoss() < 100)//Totally stolen from breathing code. Do this every 36 ticks. + adjustArousalLoss(arousal_rate * S.arousal_gain_rate) + +/mob/living/proc/getArousalLoss() + return arousalloss + +/mob/living/proc/adjustArousalLoss(amount, updating_arousal=1) + if(status_flags & GODMODE || !canbearoused) + return 0 + arousalloss = Clamp(arousalloss + amount, min_arousal, max_arousal) + if(updating_arousal) + updatearousal() + +/mob/living/proc/setArousalLoss(amount, updating_arousal=1) + if(status_flags & GODMODE || !canbearoused) + return 0 + arousalloss = Clamp(amount, min_arousal, max_arousal) + if(updating_arousal) + updatearousal() + +/mob/living/proc/getPercentAroused() + return ((100 / max_arousal) * arousalloss) + +/mob/living/proc/isPercentAroused(percentage)//returns true if the mob's arousal (measured in a percent of 100) is greater than the arg percentage. + if(!isnum(percentage)) + return FALSE + if(getPercentAroused() >= percentage) + return TRUE + +/mob/living/proc/mob_masturbate()//This is just so I can test this shit without being forced to add actual content to get rid of arousal. Will be a very basic proc for a while. + set name = "Masturbate" + set category = "IC" + if(canbearoused && !restrained() && !stat) + if(mb_cd_timer <= world.time) + //start the cooldown even if it fails + mb_cd_timer = world.time + mb_cd_length + if(getArousalLoss() >= ((max_arousal / 100) * 33))//33% arousal or greater required + src.visible_message("[src] starts masturbating!", \ + "You start masturbating.") + if(do_after(src, 100, target = src)) + src.visible_message("[src] relieves themself!", \ + "You have relieved yourself.") + setArousalLoss(min_arousal) + /* + switch(gender) + if(MALE) + PoolOrNew(/obj/effect/decal/cleanable/semen, loc) + if(FEMALE) + PoolOrNew(/obj/effect/decal/cleanable/femcum, loc) + */ + else + src << "You aren't aroused enough for that." + +//H U D// +/mob/living/proc/updatearousal() + update_arousal_hud() + +/mob/living/proc/update_arousal_hud() + return 0 + +/datum/species/proc/update_arousal_hud(mob/living/carbon/human/H) + return 0 + +/mob/living/carbon/human/update_arousal_hud() + if(!client || !hud_used) + return 0 + if(dna.species.update_arousal_hud()) + return 0 + if(!canbearoused) + hud_used.arousal.icon_state = "arousal0" + return 0 + else + if(hud_used.arousal) + if(stat == DEAD) + hud_used.arousal.icon_state = "arousal0" + return 1 + if(getArousalLoss() == max_arousal) + hud_used.arousal.icon_state = "arousal100" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 90)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal90" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 80)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal80" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 70)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal70" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 60)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal60" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 50)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal50" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 40)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal40" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 30)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal30" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 20)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal10" + return 1 + if(getArousalLoss() >= (max_arousal / 100) * 10)//M O D U L A R , W O W + hud_used.arousal.icon_state = "arousal10" + return 1 + else + hud_used.arousal.icon_state = "arousal0" + +/obj/screen/arousal + name = "arousal" + icon_state = "arousal0" + screen_loc = ui_arousal + +/obj/screen/arousal/Click() + if(!isliving(usr)) + return 0 + var/mob/living/M = usr + if(M.canbearoused) + M.mob_masturbate() + return 1 + else + M << "Arousal is disabled. Feature is unavailable." diff --git a/code/citadel/cit_reagents.dm b/code/citadel/cit_reagents.dm new file mode 100644 index 0000000000..5b982656cc --- /dev/null +++ b/code/citadel/cit_reagents.dm @@ -0,0 +1,211 @@ +//body bluids +/datum/reagent/consumable/semen + name = "Semen" + id = "semen" + description = "Sperm from some animal. Useless for anything but insemination, really." + data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) + reagent_state = LIQUID + color = "#FFFFFF" // rgb: 255, 255, 255 + nutriment_factor = 0.5 * REAGENTS_METABOLISM + +/datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) + if(!istype(T)) + return + if(reac_volume < 3) + return + + var/obj/effect/decal/cleanable/semen/S = locate() in T + if(!S) + S = new(T) + S.reagents.add_reagent("semen", reac_volume) + if(data["blood_DNA"]) + S.blood_DNA[data["blood_DNA"]] = data["blood_type"] + +/obj/effect/decal/cleanable/semen + name = "semen" + desc = null + gender = PLURAL + density = 0 + layer = ABOVE_NORMAL_TURF_LAYER + icon = 'code/citadel/icons/effects.dmi' + icon_state = "semen1" + random_icon_states = list("semen1", "semen2", "semen3", "semen4") +// blood_state = BLOOD_STATE_SEMEN +// bloodiness = MAX_SHOE_BLOODINESS + +/obj/effect/decal/cleanable/semen/New() + dir = pick(1,2,4,8) + ..() + +/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) +// if(S.reagent_DNA["semen"]) +// reagent_DNA["semen"] |= S.reagent_DNA["semen"] + ..() + +/datum/reagent/consumable/femcum + name = "Female Ejaculate" + id = "femcum" + description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." + data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) + reagent_state = LIQUID + color = "#AAAAAA77" + nutriment_factor = 0.5 * REAGENTS_METABOLISM + +/obj/effect/decal/cleanable/femcum + name = "female ejaculate" + desc = null + gender = PLURAL + density = 0 + layer = ABOVE_NORMAL_TURF_LAYER + icon = 'code/citadel/icons/effects.dmi' + icon_state = "fem1" + random_icon_states = list("fem1", "fem2", "fem3", "fem4") + blood_DNA = list() + blood_state = null + bloodiness = null + +/obj/effect/decal/cleanable/femcum/New() + dir = pick(1,2,4,8) + ..() + +/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F) + if (F.blood_DNA) + blood_DNA |= F.blood_DNA.Copy() + ..() + +//aphrodisiac & anaphrodisiac + +/datum/reagent/aphrodisiac + name = "Crocin" + id = "aphro" + description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." + color = "#FFADFF"//PINK, rgb(255, 173, 255) + +/datum/reagent/aphrodisiac/on_mob_life(mob/living/M) + if(prob(33)) + M.adjustArousalLoss(2) + if(prob(5)) + M.emote(pick("moan","blush")) + if(prob(5)) + var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") + M << "[aroused_message]" + ..() + +/datum/reagent/aphrodisiacplus + name = "Hexacrocin" + id = "aphro+" + description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ + Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a\ + permanent increase in libido (commonly referred to as 'bimbofication')." + color = "#FF2BFF"//dark pink + addiction_threshold = 20 + overdose_threshold = 20 + +/datum/reagent/aphrodisiacplus/on_mob_life(mob/living/M) + if(prob(33)) + M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful. + if(prob(5)) + if(M.getArousalLoss() > 75) + M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...")) + else + M.emote(pick("moan","blush")) + if(prob(5)) + if(M.getArousalLoss() > 90) + var/aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") + M << "[aroused_message]" + else + var/aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") + M << "[aroused_message]" +// if(iscarbon(M) && has_dna(M)) +// M.force_ejaculation() + ..() +/datum/reagent/aphrodisiacplus/addiction_act_stage2(mob/living/M) + if(prob(30)) + M.adjustBrainLoss(2) + ..() +/datum/reagent/aphrodisiacplus/addiction_act_stage3(mob/living/M) + if(prob(30)) + M.adjustBrainLoss(3) + + ..() +/datum/reagent/aphrodisiacplus/addiction_act_stage4(mob/living/M) + if(prob(30)) + M.adjustBrainLoss(4) + ..() + +/datum/reagent/aphrodisiacplus/overdose_process(mob/living/M) + if(prob(66)) + if(M.min_arousal < 50) + M.min_arousal += 1 + if(M.max_arousal < 200) + M.max_arousal += 1 + M.adjustArousalLoss(2) + ..() + +/datum/reagent/anaphrodisiac + name = "Camphor" + id = "anaphro" + description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ + , reducing libido and calming them. Non-habit forming and not addictive." + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + +/datum/reagent/anaphrodisiac/on_mob_life(mob/living/M) + if(prob(33)) + M.adjustArousalLoss(-2) + ..() + +/datum/reagent/anaphrodisiacplus + name = "Hexacamphor" + id = "anaphro+" + description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + overdose_threshold = 20 + +/datum/reagent/anaphrodisiacplus/on_mob_life(mob/living/M) + if(prob(33)) + M.adjustArousalLoss(-4) + ..() + +/datum/reagent/anaphrodisiacplus/overdose_process(mob/living/M) + if(prob(33)) + if(M.min_arousal > 0) + M.min_arousal -= 1 + if(M.max_arousal > 75) + M.min_arousal -= 1 + M.adjustArousalLoss(-2) + ..() + +//recipes +/datum/chemical_reaction/aphro + name = "crocin" + id = "aphro" + results = list("aphro" = 6) + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + required_temp = 400 + mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin + +/datum/chemical_reaction/aphroplus + name = "hexacrocin" + id = "aphro+" + results = list("aphro+" = 1) + required_reagents = list("aphro" = 6, "phenol" = 1) + required_temp = 400 + mix_message = "The mixture rapidly condenses and darkens in color..." + +/datum/chemical_reaction/anaphro + name = "camphor" + id = "anaphro" + results = list("anaphro" = 6) + required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) + required_temp = 400 + mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor + +/datum/chemical_reaction/anaphroplus + name = "pentacamphor" + id = "anaphro+" + results = list("anaphro+" = 1) + required_reagents = list("anaphro" = 5, "acetone" = 1) + required_temp = 300 + mix_message = "The mixture thickens and heats up slighty..." \ No newline at end of file diff --git a/code/citadel/icons/effects.dmi b/code/citadel/icons/effects.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9a99bc085a7254076d24e3afdbefe625f1f2d047 GIT binary patch literal 10734 zcmZ8{cU)7;w{Jp`Ceow`77kgd#?iIeLt{BADEG z{FjId+wWwi#Is}ofEQq({osk;hfQl-0{4%k0VYvkY-bOnhMld(5P4$Gtb}eznq*zS>xaL)$E2; z$DZCwQs2!oed=3jgA|dSU#l)})PD&N|<&B<}^e zK##A?Ubge0?hVWFo=*v}QCP|f3R8^$Pvp!#FkBZtJ%vC>{lrHLH*95&R)B1g_&>^$^ z4S~Qr!#Rk68-F`ak{0cy+;&f-By`5~Sb2VRND~4K)Ka(A<!c~$#K%%epGT=+J4Po`mIa@|<+U4Ec+39~(4+|Itw^mLN*-`rE z37bnF_A+;dK2W@ighlV8Sk#EOSs7h}R!p&T(}GW&b{8_{{iO`$G+~7smgmuQ)^AuZ zV>&-!!g8v+ZzqV(DN&L7eAwiHL~xUIfNGR3JO+m3QRw_(I6&JgV0fpAUdedWh}+3# zzP3}Xo4LAnSTbiPdNl?H8ZKrEN%~f|6WCM;(&tG^sDpd@7F#gxoGp0z#W;F`L36G> z{(`QWc?*8vZ#uxZwmpY%VRYk8_r`;+ZdXNGW2XE?=gBtPpF3Y@0k_ouI633)NLZ4A za&f^-AmKMd($M-jmm}R!@+Chwp9;fq~{X1r{H#X9yp2T6_J_ z?Q9cW{!Qazpl>6Id13c*7rKO|bJ1pgQWKz`!eWo~xm|TTA7lBluX+9os$!bg?G&#L zn>SO7&@K;;h?)gQuh>_Q=kNYlct4izN^M79@qAZFI(_uX8QrmCN%5U{3H}Yn(^Ht!41IaOU0eGNa5 zmx63)(Mh>4An?zAU>=8$ZJYfXdoK_%R4BmcVehmiR3RgN%cn6tgRYE$n+!qgl|c4R zLAX=Z%?~nLus6{CkfG)6?S@g}jCa-w)b9CxhgYiwY2Vvut2h~uth|l;v*t_DLnZIN zQN{)3AMn`6)MD;=MIn~d6|Yy-DJ!qLi1EmC;_P`NZ3~W}lRGQJPXM4As534sr-sq; zWZ$i}f4Gf!>z~b`p+W$u?KXY!?s1Uw$;I8S97@MT)%e;G6!3)!&<;Z6atWgqxiCM^YMFj^0Pce7dR7b>+COB zm}DPm@|@0+?S$l#--yRTQY&xuQ^A~0ey+i~VQ`oIe0% zG59=G3@y+WwR*ZqlbM&k7-e8Ye0^2vf1{$)q71z3*vc}~5J{}{ba{ql|463)WTCUo zXw*2&hV2u8IfhI38>eJagFQ(g_=4jJ>J(1}taGstQxz)HT_t0Dz)?$?tXcd522{nmvVQA7rjE8?`erF^RIl6up^_^Os ziLcJ@H?D%fL?{JgsNxd3QWyc&kDHeI8*6@imF)_EN?tbmKy>a5bJ-vNP>>q$@ijV5 z2enJFE$&QmT{I9uAyD`tHzJs$|B8h{qdXpNv?0v#ZN25ICFS-U{?~Us2duBXn8XvZ z%=9<81!Jp{WZSyzo0+Cdyc?(~^t>4!WZNx7o1S~Cl|g1Rf7tt5+|xmU-N!GmQQsVF z_2PC}D0%7ic#v_q9QQw%i0p-&lu}}+JvNS$eaVTk8#lC#E%TU5X_%pRwhbzeKSkU^ zc9U6~x}g1!95#k`0&&Op?ZS%2Bhu4uJ#1sisk!VpVOl92|!or0I}RIp~VYqxWNQy)t!I*u99Wf zxt;pXbP@8}?EM2_4>*PMmMxIFbtr{odZOJCIx=IuV>4FB>8W` z9Y<42mngn+x2w4>e7t8;l9DS~uEu6Hs_`)6{lRQ

Q~AN5FVqV>rVBy-hB9%i;YnSOSOal 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 LqFteB_xk?;+WX~E literal 0 HcmV?d00001 diff --git a/code/citadel/icons/misc.dmi b/code/citadel/icons/misc.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/code/citadel/icons/mobs.dmi b/code/citadel/icons/mobs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf74d73796c8c6121c0818fdac74e4a7f0ab9a5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;m;-!5T!HlRD%)E?im@cfFPOpM z*^M-ilB$r15|`BC)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/code/citadel/icons/objects.dmi b/code/citadel/icons/objects.dmi new file mode 100644 index 0000000000000000000000000000000000000000..55a6867303789a9abcb73b63c6683e606bb60991 GIT binary patch literal 1025 zcmV+c1pfPpP)Dh!I_zvhK7c7b8}{9W}u*;czAfCqM~$kbeo%-g@uKUjg7>_ zKbDr3v9Yn8ot?;dLwL5xii(P|va*(LAi?A5q>5F)idFsm@tS~3&(F@afJ^7kd*s7j z$H&HBdE>oqAd`4Q?5((HL%Qwl?ZtN}(9qCKMpe7~&0004WQchCV=-0C=2@ z(aj2jFc1XbbMh2H@1=j&UW!sY)OUzDO%`pGO{}lqP@%_mZ!_>QENp46^{r`5b#L?w z9BB&XV$Qq0Rx9<%=W;q~lthEwxQHC17u~n;JcM|;C!>D9LC2-u%pEeh^%DlV zyA#jEza0?;@4l|*9Hin7`8r9{1e9gsnWmFogFS~Y8#w<4;tCE0%!hxc_YV*E@F($E zzk%ekyO#5*I07GXheUAlBzc_8X89xhPC5>Wf{W&2h>r8=yqNQZ4>;^Fg4MAs%NAJ% zA80rs3eMz~w46_idBGVUa8Z$_Fktb0@dN{4hYB9CPLYoDc~OV~L++4~*kSqO=da(T z*zvgEpyg55UdMSMR>T!tED_G1=lP#Jhb=6_euI{$sk{U&mshOd?JZGOE*8(vC0j04 z4dgY8OE`mziU@v031Z_g)bUnl@%D`bHBl(2=8a{=yP9`=C!(efcXIPfsOw^ zH6LjGy)8fL?``=}f4}Ga2tSq&_;j^esr>zcgN%H=UYqiP9H8*`2QCJfxEP?#2jK5l za)8$VcLTJ1EeB}x0sjk9`umQz0}T8h$dnKC{@#{b`~Oq(!TJ6l^8pHlLhXh50P_Ln z1Iz~($p`217k|ImZjJtbSM7|vZW?nw*lssQ|6joX6L0F;m=Ct%1P1?K?RJ%k*G=6R v^TB2VCouSb*idES(7(offcXH0db9om0)e_1!5cyiE*d|0 zq;uX!^CUx2Pwx&3;~?Y9#$F0CsjT7l;v3i)KHlcf^{%~V4K$R;)5S4_V`g%K#2p}S W0R!VxY5#RV7K5j&pUXO@geCygCOLEf literal 0 HcmV?d00001 diff --git a/code/citadel/kegs.dm b/code/citadel/kegs.dm new file mode 100644 index 0000000000..d7e4ac03b9 --- /dev/null +++ b/code/citadel/kegs.dm @@ -0,0 +1,41 @@ +/obj/structure/reagent_dispensers/keg + name = "keg" + desc = "A keg." + icon = 'code/citadel/icons/objects.dmi' + icon_state = "keg" + reagent_id = "water" + +/obj/structure/reagent_dispensers/keg/mead + name = "keg of mead" + desc = "A keg of mead." + icon_state = "orangekeg" + reagent_id = "mead" + +/obj/structure/reagent_dispensers/keg/aphro + name = "keg of aphrodisiac" + desc = "A keg of aphrodisiac." + icon_state = "pinkkeg" + reagent_id = "aphro" + +/obj/structure/reagent_dispensers/keg/aphro/strong + name = "keg of strong aphrodisiac" + desc = "A keg of strong and addictive aphrodisiac." + reagent_id = "aphro+" + +/obj/structure/reagent_dispensers/keg/milk + name = "keg of milk" + desc = "It's not quite what you were hoping for." + icon_state = "whitekeg" + reagent_id = "milk" + +/obj/structure/reagent_dispensers/keg/semen + name = "keg of semen" + desc = "Dear lord, where did this even come from?" + icon_state = "whitekeg" + reagent_id = "semen" + +/obj/structure/reagent_dispensers/keg/gargle + name = "keg of pan galactic gargleblaster" + desc = "A keg of... wow that's a long name." + icon_state = "bluekeg" + reagent_id = "gargleblaster" \ No newline at end of file diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 72e6f62a6b..6a4c85a9cd 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -80,6 +80,7 @@ if(A.dir) atomsnowflake += "
<< [dir2text(A.dir)] >>" var/mob/living/M = A + //citadel code atomsnowflake += {"
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]
@@ -90,6 +91,7 @@ CLONE:[M.getCloneLoss()] BRAIN:[M.getBrainLoss()] STAMINA:[M.getStaminaLoss()] + AROUSAL:[M.getArousalLoss()] "} else diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 90fa7c6fcf..6008a094e4 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -84,6 +84,9 @@ var/list/preferences_datums = list() var/job_engsec_med = 0 var/job_engsec_low = 0 + //citadel code + var/arousable = TRUE //Allows players to disable arousal from the character creation menu + // Want randomjob if preferences already filled - Donkie var/joblessrole = BERANDOMJOB //defaults to 1 for fewer assistants @@ -435,6 +438,24 @@ var/list/preferences_datums = list() dat += "" dat += "" + //citadel code + if(NOGENITALS in pref_species.species_traits) + dat += "

Your species ([pref_species.name]) does not support genitals!

" + else + dat += "

Genitals

" + + dat += "" + + + dat += "
" + + dat += "" + + dat += "

Options

" + dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" + dat += "

More Coming Soon(tm)

" + + dat += "
" if (1) // Game Preferences @@ -1301,6 +1322,17 @@ var/list/preferences_datums = list() else switch(href_list["preference"]) + + //citadel code + if("arousable") + switch(arousable) + if(TRUE) + arousable = FALSE + if(FALSE) + arousable = TRUE + else//failsafe + arousable = FALSE + if("publicity") if(unlock_content) toggles ^= MEMBER_PUBLIC @@ -1420,6 +1452,8 @@ var/list/preferences_datums = list() else if(firstspace == name_length) real_name += "[pick(last_names)]" + //citadel code + character.canbearoused = arousable character.real_name = real_name character.name = character.real_name diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 6c60de6a7c..accff361b1 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -175,6 +175,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["clientfps"] >> clientfps S["parallax"] >> parallax S["uplink_loc"] >> uplink_spawn_loc + //citadel code + S["arousable"] >> arousable //try to fix any outdated data if necessary if(needs_update >= 0) @@ -231,6 +233,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["uses_glasses_colour"]<< uses_glasses_colour S["clientfps"] << clientfps S["parallax"] << parallax + //citadel code + S["arousable"] << arousable return 1 diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 781f06b4ac..74bc234a5b 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -2,6 +2,7 @@ /mob/living/carbon/human/verb/suicide() set hidden = 1 + return if(!canSuicide()) return var/oldkey = ckey diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 5f748c42f4..6cb3adcc39 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -25,6 +25,9 @@ adjustCloneLoss(damage * hit_percent) if(STAMINA) adjustStaminaLoss(damage * hit_percent) + //citadel code + if(AROUSAL) + adjustArousalLoss(damage * hit_percent) return 1 /mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs @@ -41,6 +44,9 @@ return adjustCloneLoss(damage) if(STAMINA) return adjustStaminaLoss(damage) + //citadel code + if(AROUSAL) + return adjustArousalLoss(damage) /mob/living/proc/get_damage_amount(damagetype = BRUTE) switch(damagetype) @@ -56,9 +62,12 @@ return getCloneLoss() if(STAMINA) return getStaminaLoss() + //citadel code + if(AROUSAL) + return getArousalLoss() -/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = 0, stamina = 0) +/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = 0, stamina = 0, arousal = 0) if(blocked >= 100) return 0 if(brute) @@ -73,6 +82,9 @@ apply_damage(clone, CLONE, def_zone, blocked) if(stamina) apply_damage(stamina, STAMINA, def_zone, blocked) + //citadel code + if(arousal) + apply_damage(arousal, AROUSAL, def_zone, blocked) return 1 @@ -232,7 +244,6 @@ /mob/living/proc/setStaminaLoss(amount, updating_stamina = TRUE, forced = FALSE) return - // heal ONE external organ, organ gets randomly selected from damaged ones. /mob/living/proc/heal_bodypart_damage(brute, burn, updating_health = 1) adjustBruteLoss(-brute, 0) //zero as argument for no instant health update diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 40500e84a8339b037712f2088662ac9a5930d308..28c8385c566a43cfd0bcf7c8ed9df3d43db9e858 100644 GIT binary patch delta 15888 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 aY-vEnzV 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 lK5ue^{2Lb3*)I&il{1aryl#>*cG|MG|~() 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"} diff --git a/tgstation.dme b/tgstation.dme index fccf050e3d..4fb22b301f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -25,6 +25,7 @@ #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" #include "code\__DEFINES\callbacks.dm" +#include "code\__DEFINES\citadel_defines.dm" #include "code\__DEFINES\clockcult.dm" #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\construction.dm" @@ -143,7 +144,10 @@ #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\swarmer.dm" #include "code\citadel\_helpers.dm" +#include "code\citadel\cit_arousal.dm" +#include "code\citadel\cit_reagents.dm" #include "code\citadel\discordbot.dm" +#include "code\citadel\kegs.dm" #include "code\controllers\admin.dm" #include "code\controllers\configuration.dm" #include "code\controllers\controller.dm"