diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 0280698546..fb5ad3eee6 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -56662,6 +56662,7 @@ }, /area/maintenance/bar) "mqZ" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plating, /area/maintenance/bar) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7cff8514bc..d0db7b142a 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -126027,6 +126027,7 @@ /turf/open/floor/plating, /area/chapel/office) "ijB" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index 2a595d7136..ffc713b565 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -44383,6 +44383,7 @@ /turf/open/floor/plasteel/white, /area/hallway/primary/aft) "bFB" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ icon_state = "wood-broken5" diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 49f526a59e..8f220ac250 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -60065,6 +60065,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "tap" = ( +/obj/structure/reagent_dispensers/keg/aphro, /turf/open/floor/wood, /area/maintenance/department/crew_quarters/dorms) "taA" = ( diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index ac720a7fb4..880e7a16a8 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -50,17 +50,20 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/electronic_assembly/simple, /obj/item/electronic_assembly/hook, /obj/item/electronic_assembly/pda, + /obj/item/electronic_assembly/dildo, /obj/item/electronic_assembly/small/default, /obj/item/electronic_assembly/small/cylinder, /obj/item/electronic_assembly/small/scanner, /obj/item/electronic_assembly/small/hook, /obj/item/electronic_assembly/small/box, + /obj/item/electronic_assembly/small/dildo, /obj/item/electronic_assembly/medium/default, /obj/item/electronic_assembly/medium/box, /obj/item/electronic_assembly/medium/clam, /obj/item/electronic_assembly/medium/medical, /obj/item/electronic_assembly/medium/gun, /obj/item/electronic_assembly/medium/radio, + /obj/item/electronic_assembly/medium/dildo, /obj/item/electronic_assembly/large/default, /obj/item/electronic_assembly/large/scope, /obj/item/electronic_assembly/large/terminal, diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 6564a83729..8944b55cc4 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -380,6 +380,8 @@ name = "random keg spawner" lootcount = 1 loot = list(/obj/structure/reagent_dispensers/keg/mead = 5, + /obj/structure/reagent_dispensers/keg/aphro = 2, + /obj/structure/reagent_dispensers/keg/aphro/strong = 2, /obj/structure/reagent_dispensers/keg/gargle = 1) /obj/effect/spawner/lootdrop/coin diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index c6728831eb..65a20bb6c5 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -415,7 +415,8 @@ /obj/item/restraints/handcuffs/fake/kinky, /obj/item/clothing/head/kitty/genuine, // Why its illegal /obj/item/clothing/head/kitty/genuine, - /obj/item/storage/pill_bottle/penis_enlargement) + /obj/item/storage/pill_bottle/penis_enlargement, + /obj/structure/reagent_dispensers/keg/aphro) crate_name = "lewd kit" crate_type = /obj/structure/closet/crate diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8f83c97e1c..1b048c9a2e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -86,6 +86,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/gender = MALE //gender of character (well duh) var/age = 30 //age of character //SKYRAT CHANGES BEGIN + var/skyrat_ooc_notes = "" var/erppref = "Ask" var/nonconpref = "Ask" var/vorepref = "Ask" @@ -407,13 +408,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Set Silicon Examine Text
" if(length(features["silicon_flavor_text"]) <= 40) if(!length(features["silicon_flavor_text"])) - dat += "\[...\]" + dat += "\[...\]
" else - dat += "[features["silicon_flavor_text"]]" + dat += "[features["silicon_flavor_text"]]
" else dat += "[TextPreview(features["silicon_flavor_text"])]...
" dat += "

OOC notes

" - dat += "Set OOC notes
" + /*dat += "Set OOC notes
" var/ooc_notes_len = length(features["ooc_notes"]) if(ooc_notes_len <= 40) if(!ooc_notes_len) @@ -422,8 +423,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["ooc_notes"]]
" else dat += "[TextPreview(features["ooc_notes"])]...
" - + */ //SKYRAT EDIT + dat += "Set OOC Notes
" dat += "ERP : [erppref]
" dat += "Non-Con : [nonconpref]
" dat += "Vore : [vorepref]
" @@ -868,7 +870,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Jumpsuit:
[jumpsuit_style]
" if((HAS_FLESH in pref_species.species_traits) || (HAS_BONE in pref_species.species_traits)) dat += "
Temporal Scarring:
[(persistent_scars) ? "Enabled" : "Disabled"]" - dat += "Clear scar slots" + dat += "Clear scar slots
" dat += "Uplink Location:[uplink_spawn_loc]" dat += "" @@ -1195,6 +1197,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" + dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" //SKYRAT EDIT dat += "Extreme ERP verbs : [extremepref]
" // https://youtu.be/0YrU9ASVw6w @@ -1820,19 +1823,26 @@ GLOBAL_LIST_EMPTY(preferences_datums) medical_records = rec if("flavor_text") - var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", html_decode(features["flavor_text"]), MAX_FLAVOR_LEN, TRUE) + var/msg = input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", features["flavor_text"]) as message|null //Skyrat edit, removed stripped_multiline_input() if(!isnull(msg)) - features["flavor_text"] = msg + features["flavor_text"] = strip_html_simple(msg, MAX_FLAVOR_LEN, TRUE) //Skyrat edit, removed strip_html_simple() if("silicon_flavor_text") - var/msg = stripped_multiline_input(usr, "Set the silicon flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Silicon Flavor Text", html_decode(features["silicon_flavor_text"]), MAX_FLAVOR_LEN, TRUE) + var/msg = input(usr, "Set the silicon flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Silicon Flavor Text", features["silicon_flavor_text"]) as message|null //Skyrat edit, removed stripped_multiline_input() if(!isnull(msg)) - features["silicon_flavor_text"] = msg + features["silicon_flavor_text"] = strip_html_simple(msg, MAX_FLAVOR_LEN, TRUE) //Skyrat edit, uses strip_html_simple() + //SKYRAT CHANGES + if("skyrat_ooc_notes") + var/msg = input(usr, "Set your OOC Notes", "OOC Notes", skyrat_ooc_notes) as message|null + if(msg) + skyrat_ooc_notes = strip_html_simple(msg, MAX_FLAVOR_LEN, TRUE) + + /* Skyrat changes - do nothing here because we dont use this and this may be exploited if("ooc_notes") var/msg = stripped_multiline_input(usr, "Set always-visible OOC notes related to content preferences. THIS IS NOT FOR CHARACTER DESCRIPTIONS!", "OOC notes", html_decode(features["ooc_notes"]), MAX_FLAVOR_LEN, TRUE) if(!isnull(msg)) - features["ooc_notes"] = msg + features["ooc_notes"] = msg*/ if("hair") var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 16435bb154..7d68fe89e0 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -196,9 +196,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["horn_color"] >> features["horns_color"] if(current_version < 33) - features["flavor_text"] = html_encode(features["flavor_text"]) - features["silicon_flavor_text"] = html_encode(features["silicon_flavor_text"]) - features["ooc_notes"] = html_encode(features["ooc_notes"]) + features["flavor_text"] = strip_html_simple(features["flavor_text"], MAX_FLAVOR_LEN, TRUE) + features["silicon_flavor_text"] = strip_html_simple(features["silicon_flavor_text"], MAX_FLAVOR_LEN, TRUE) + features["ooc_notes"] = strip_html_simple(features["ooc_notes"], MAX_FLAVOR_LEN, TRUE) /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 13828a48a6..7d6c5c7986 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -157,9 +157,6 @@ else // Skyrat Change . += "[t_His] player has not allowed lewd verbs." // Skyrat Change - if(client && client.prefs) //what about a runtime for not having clients! - . += "[src]'s Prefs :
ERP : [client.prefs.erppref] | Non-Con : [client.prefs.nonconpref] | Vore : [client.prefs.vorepref]
" - var/list/missing = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) var/list/disabled = list() for(var/X in bodyparts) @@ -451,6 +448,11 @@ . += "Traits: [traitstring]" SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) //This also handles flavor texts now + + var/invisible_man = skipface || get_visible_name() == "Unknown" // SKYRAT EDIT -- BEGIN + if(!invisible_man) + if(client) + . += "OOC Notes: \[View\]" // SKYRAT EDIT -- END . += "*---------*" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bdaa8b6714..154fc067ee 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -44,7 +44,7 @@ AddComponent(/datum/component/combat_mode) AddElement(/datum/element/flavor_text/carbon, _name = "Flavor Text", _save_key = "flavor_text") AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!") - AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE) + //AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE) //Skyrat change - we have our own OOC notes /mob/living/carbon/human/Destroy() QDEL_NULL(physiology) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 63fb82082f..3c0032ea6b 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -61,6 +61,7 @@ client.perspective = EYE_PERSPECTIVE client.eye = card var/turf/T = drop_location() + release_vore_contents() card.forceMove(T) forceMove(card) density = FALSE diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index 6ac1d410eb..5e0b7a1fd4 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -48,6 +48,12 @@ . += "It doesn't seem to be responding." if(DEAD) . += "It looks like its system is corrupted and requires a reset." + + //SKYRAT EDIT - OOC NOTES! + if(client) + . += "OOC Notes: \[View\]" + //END SKYRAT EDIT + . += "*---------*" . += ..() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 7a9610fb53..36ab85e4f2 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -14,7 +14,6 @@ rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE speech_span = SPAN_ROBOT flags_1 = PREVENT_CONTENTS_EXPLOSION_1 | HEAR_1 - vore_flags = NO_VORE var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/last_lawchange_announce = 0 @@ -60,7 +59,7 @@ . = ..() AddElement(/datum/element/flavor_text, _name = "Silicon Flavor Text", _save_key = "silicon_flavor_text") AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!") - AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE) + //AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE) //Skyrat edit /mob/living/silicon/med_hud_set_health() return //we use a different hud diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index e1433eb64e..9257f4a50d 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -1044,6 +1044,12 @@ M.emote("nya") if(prob(20)) to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") + if(ishuman(M) && !(M.client?.prefs.cit_toggles & NO_APHRO)) + var/mob/living/carbon/human/H = M + var/list/adjusted = H.adjust_arousal(5,aphro = TRUE) + for(var/g in adjusted) + var/obj/item/organ/genital/G = g + to_chat(M, "You feel like playing with your [G.name]!") ..() /datum/reagent/consumable/monkey_energy diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index b6de7b2eab..c6d850ceac 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2197,6 +2197,12 @@ M.emote("nya") if(prob(20)) to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") + if(ishuman(M) && !(M.client?.prefs.cit_toggles & NO_APHRO)) + var/mob/living/carbon/human/H = M + var/list/adjusted = H.adjust_arousal(2,aphro = TRUE) + for(var/g in adjusted) + var/obj/item/organ/genital/G = g + to_chat(M, "You feel like playing with your [G.name]!") ..() /datum/reagent/preservahyde diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 09b7eabbc1..19bd14c813 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -687,7 +687,7 @@ name = "felinid mutation toxic" id = /datum/reagent/mutationtoxin/felinid results = list(/datum/reagent/mutationtoxin/felinid = 1) - required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/mutationtoxin = 1) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) // Maybe aphro+ if it becomes a shitty meme required_temp = 450 /datum/chemical_reaction/moff diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index dc4f4e9273..df8a4e8a96 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -36,10 +36,13 @@ /obj/item/clothing/under/misc/keyholesweater = 2, /obj/item/clothing/under/misc/stripper/mankini = 2, /obj/item/clothing/under/costume/jabroni = 2, - /obj/item/dildo/flared/huge = 3 + /obj/item/dildo/flared/huge = 3, + /obj/item/reagent_containers/glass/bottle/crocin = 5, + /obj/item/reagent_containers/glass/bottle/camphor = 5 ) premium = list( /obj/item/clothing/accessory/skullcodpiece/fake = 3, + /obj/item/reagent_containers/glass/bottle/hexacrocin = 10, /obj/item/clothing/under/pants/chaps = 5 ) refill_canister = /obj/item/vending_refill/kink diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 0e971d4ced..4fa2a51fac 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -583,6 +583,16 @@ C.Stun(60) to_chat(owner, "Your muscles seize up, then start spasming wildy!") + //wah intensifies wah-rks + else if (lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + if (lewd) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + H.mob_climax(forced_climax=TRUE) + C.SetStun(10)//We got your stun effects in somewhere, Kev. + else + C.throw_at(get_step_towards(hearing_args[HEARING_SPEAKER],C), 3, 1) //cut this if it's too hard to get working + //kneel (knockdown) else if (lowertext(customTriggers[trigger]) == "kneel")//as close to kneeling as you can get, I suppose. to_chat(owner, "You drop to the ground unsurreptitiously.") @@ -664,6 +674,15 @@ deltaResist *= 1.25 if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) deltaResist *= 1.5 + if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && lewd) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) + deltaResist *= 1.5 + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) + deltaResist *= 2 + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac)) + deltaResist *= 0.75 + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus)) + deltaResist *= 0.5 //Antag resistance //cultists are already brainwashed by their god if(iscultist(owner)) diff --git a/modular_citadel/code/modules/client/preferences_savefile.dm b/modular_citadel/code/modules/client/preferences_savefile.dm index e3af277025..7b304dd113 100644 --- a/modular_citadel/code/modules/client/preferences_savefile.dm +++ b/modular_citadel/code/modules/client/preferences_savefile.dm @@ -14,10 +14,11 @@ features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 6, FALSE) features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 6, FALSE) - //Skyrat + // SKYRAT CHANGE START S["enable_personal_chat_color"] >> enable_personal_chat_color S["personal_chat_color"] >> personal_chat_color - //skyrat begin + skyrat_ooc_notes = sanitize_text(S["skyrat_ooc_notes"]) + skyrat_ooc_notes = strip_html_simple(skyrat_ooc_notes, MAX_FLAVOR_LEN, TRUE) erppref = sanitize_text(S["erp_pref"], "Ask") if(!length(erppref)) erppref = "Ask" nonconpref = sanitize_text(S["noncon_pref"], "Ask") @@ -30,10 +31,13 @@ extremeharm = sanitize_text(S["extremeharm"], "No") if(!length(extremeharm) || (extremepref = "No")) extremeharm = "No" - //skyrat end - //skyrat extras enable_personal_chat_color = sanitize_integer(enable_personal_chat_color, 0, 1, initial(enable_personal_chat_color)) personal_chat_color = sanitize_hexcolor(personal_chat_color, 6, 1, "#FFFFFF") + //Moves over the previous OOC notes to our ooc notes + if(length(features["ooc_notes"]) > length(skyrat_ooc_notes)) + skyrat_ooc_notes = features["ooc_notes"] + features["ooc_notes"] = "" + //END OF SKYRAT CHANGES /datum/preferences/proc/cit_character_pref_save(savefile/S) //ipcs @@ -58,6 +62,7 @@ WRITE_FILE(S["silicon_feature_flavor_text"], features["silicon_flavor_text"]) //skyrat stuff + WRITE_FILE(S["skyrat_ooc_notes"], skyrat_ooc_notes) WRITE_FILE(S["erp_pref"], erppref) WRITE_FILE(S["noncon_pref"], nonconpref) WRITE_FILE(S["vore_pref"], vorepref) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 39ba69bd61..4e6e0fa153 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -178,7 +178,7 @@ name = "Sucubus milk" id = /datum/reagent/fermi/breast_enlarger results = list(/datum/reagent/fermi/breast_enlarger = 8) - required_reagents = list(/datum/reagent/medicine/salglu_solution = 2, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 5) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -218,7 +218,7 @@ name = "Incubus draft" id = /datum/reagent/fermi/penis_enlarger results = list(/datum/reagent/fermi/penis_enlarger = 8) - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 5, /datum/reagent/medicine/salglu_solution = 2) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -384,7 +384,7 @@ name = "Furranium" id = /datum/reagent/fermi/furranium results = list(/datum/reagent/fermi/furranium = 5) - required_reagents = list(/datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 2) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 diff --git a/sandcode/code/modules/cargo/packs/misc.dm b/sandcode/code/modules/cargo/packs/misc.dm new file mode 100644 index 0000000000..7dbcf545f3 --- /dev/null +++ b/sandcode/code/modules/cargo/packs/misc.dm @@ -0,0 +1,9 @@ +/datum/supply_pack/misc/lewdkeg + name = "Lewd Deluxe Keg" + desc = "That other stuff not getting you ready? Well I have a Chemslut making tons of the good stuff." + cost = 7500 //It can be a weapon + contraband = TRUE + contains = list(/obj/structure/reagent_dispensers/keg/aphro/strong) + crate_name = "deluxe keg" + crate_type = /obj/structure/closet/crate + diff --git a/sandcode/code/modules/integrated_electronics/core/assemblies.dm b/sandcode/code/modules/integrated_electronics/core/assemblies.dm new file mode 100644 index 0000000000..e986b936df --- /dev/null +++ b/sandcode/code/modules/integrated_electronics/core/assemblies.dm @@ -0,0 +1,14 @@ +/obj/item/electronic_assembly/small/dildo + name = "type-f electronic device" + icon_state = "setup_dildo_small" + desc = "It's a case, for building tiny-sized electronics with. This one has a phallic design." + +/obj/item/electronic_assembly/dildo + name = "type-g electronic assembly" + icon_state = "setup_dildo_medium" + desc = "It's a case, for building small electronics with. This one has a phallic design." + +/obj/item/electronic_assembly/medium/dildo + name = "type-g electronic mechanism" + icon_state = "setup_dildo_large" + desc = "It's a case, for building medium-sized electronics with. This one has a phallic design." diff --git a/sandcode/code/modules/mob/living/carbon/human/human.dm b/sandcode/code/modules/mob/living/carbon/human/human.dm new file mode 100644 index 0000000000..d797abb637 --- /dev/null +++ b/sandcode/code/modules/mob/living/carbon/human/human.dm @@ -0,0 +1,12 @@ +/mob/living/carbon/human/Topic(href, href_list) + . = ..() + if(href_list["skyrat_ooc_notes"]) + if(client) + var/str = "[src]'s OOC Notes :
ERP : [client.prefs.erppref] | Non-Con : [client.prefs.nonconpref] | Vore : [client.prefs.vorepref]" + if(client.prefs.extremepref == "Yes") + str += "
Extreme content : [client.prefs.extremepref] | Extreme content harm : [client.prefs.extremeharm]" + str += "
[html_encode(client.prefs.skyrat_ooc_notes)]" + var/datum/browser/popup = new(usr, "[name]'s ooc info", "[name]'s OOC Information", 500, 200) + popup.set_content(text("[][]", "[name]'s OOC information", replacetext(str, "\n", "
"))) + popup.open() + return diff --git a/sandcode/code/modules/mob/living/silicon/silicon.dm b/sandcode/code/modules/mob/living/silicon/silicon.dm new file mode 100644 index 0000000000..ff32f5810b --- /dev/null +++ b/sandcode/code/modules/mob/living/silicon/silicon.dm @@ -0,0 +1,17 @@ +/mob/living/silicon/Topic(href, href_list) + . = ..() + if(href_list["skyrat_ooc_notes"]) + if(client) + var/str = "[src]'s OOC Notes :
ERP : [client.prefs.erppref] | Non-Con : [client.prefs.nonconpref] | Vore : [client.prefs.vorepref]
[client.prefs.skyrat_ooc_notes]" + usr << browse(text("[][]", "[name]'s OOC information", replacetext(str, "\n", "
")), text("window=[];size=500x200", "[name]'s ooc info")) + onclose(usr, "[name]'s ooc info") + +/mob/living/silicon/verb/robot_nom(var/mob/living/T in oview(1)) + set name = "Eat Mob" + set category = "Vore" + set desc = "Allows you to eat someone." + + if(!CHECK_BITFIELD(T.vore_flags,DEVOURABLE)) + to_chat(src, "System error: Unauthorized operation.") + return + return feed_grabbed_to_self(src,T) diff --git a/sandcode/code/modules/reagents/chemistry/reagents/drugs_reagents.dm b/sandcode/code/modules/reagents/chemistry/reagents/drugs_reagents.dm new file mode 100644 index 0000000000..eb531e789e --- /dev/null +++ b/sandcode/code/modules/reagents/chemistry/reagents/drugs_reagents.dm @@ -0,0 +1,126 @@ +//aphrodisiac & anaphrodisiac + +/datum/reagent/drug/aphrodisiac + name = "Crocin" + description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." + taste_description = "strawberries" + color = "#FFADFF"//PINK, rgb(255, 173, 255) + can_synth = FALSE + +/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if((prob(min(current_cycle/2,5)))) + M.emote(pick("moan","blush")) + if(prob(min(current_cycle/4,10))) + var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") + to_chat(M, "[aroused_message]") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(current_cycle, aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus + name = "Hexacrocin" + 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')." + taste_description = "liquid desire" + color = "#FF2BFF"//dark pink + addiction_threshold = 20 + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(prob(5)) + if(prob(current_cycle)) + M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...")) + else + M.emote(pick("moan","blush")) + if(prob(5)) + var/aroused_message + if(current_cycle>25) + aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") + else + 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.") + to_chat(M, "[aroused_message]") + REMOVE_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(100, aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2) + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3) + + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) + ..() + +/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) + if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) + if(!HAS_TRAIT(M,TRAIT_PERMABONER)) + to_chat(M, "Your libido is going haywire!") + ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + ..() + +/datum/reagent/drug/anaphrodisiac + name = "Camphor" + 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." + taste_description = "dull bitterness" + taste_mult = 2 + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && prob(16) && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + ..() + +/datum/reagent/drug/anaphrodisiacplus + name = "Hexacamphor" + description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." + taste_description = "tranquil celibacy" + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + REMOVE_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + + ..() + +/datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && prob(5)) + to_chat(M, "You feel like you'll never feel aroused again...") + ADD_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + ..() + +//If the ##badword## thing already had a check how did it even prefbreak, you guys are geniouses. If it were for me, you wouldn't be able to opt-out. diff --git a/sandcode/code/modules/reagents/chemistry/recipes/drugs.dm b/sandcode/code/modules/reagents/chemistry/recipes/drugs.dm new file mode 100644 index 0000000000..0672e67925 --- /dev/null +++ b/sandcode/code/modules/reagents/chemistry/recipes/drugs.dm @@ -0,0 +1,31 @@ +/datum/chemical_reaction/aphro + name = "crocin" + id = /datum/reagent/drug/aphrodisiac + results = list(/datum/reagent/drug/aphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/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 = /datum/reagent/drug/aphrodisiacplus + results = list(/datum/reagent/drug/aphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) + required_temp = 400 + mix_message = "The mixture rapidly condenses and darkens in color..." + +/datum/chemical_reaction/anaphro + name = "camphor" + id = /datum/reagent/drug/anaphrodisiac + results = list(/datum/reagent/drug/anaphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/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 = /datum/reagent/drug/anaphrodisiacplus + results = list(/datum/reagent/drug/anaphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) + required_temp = 300 + mix_message = "The mixture thickens and heats up slighty..." diff --git a/sandcode/code/modules/reagents/chemistry/recipes/fermi.dm b/sandcode/code/modules/reagents/chemistry/recipes/fermi.dm new file mode 100644 index 0000000000..073091a0a0 --- /dev/null +++ b/sandcode/code/modules/reagents/chemistry/recipes/fermi.dm @@ -0,0 +1,3 @@ +/datum/chemical_reaction/fermi/furranium/organic + id = "furranium_organic" + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) diff --git a/sandcode/code/modules/reagents/reagent_containers/bottle.dm b/sandcode/code/modules/reagents/reagent_containers/bottle.dm new file mode 100644 index 0000000000..c187ccfa27 --- /dev/null +++ b/sandcode/code/modules/reagents/reagent_containers/bottle.dm @@ -0,0 +1,21 @@ +//Lewd Stuff + +/obj/item/reagent_containers/glass/bottle/crocin + name = "Crocin bottle" + desc = "A bottle of mild aphrodisiac. Increases libido." + list_reagents = list(/datum/reagent/drug/aphrodisiac = 30) + +/obj/item/reagent_containers/glass/bottle/hexacrocin + name = "Hexacrocin bottle" + desc = "A bottle of strong aphrodisiac. Increases libido." + list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30) + +/obj/item/reagent_containers/glass/bottle/camphor + name = "Camphor bottle" + desc = "A bottle of mild anaphrodisiac. Reduces libido." + list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30) + +/obj/item/reagent_containers/glass/bottle/hexacamphor + name = "Hexacamphor bottle" + desc = "A bottle of strong anaphrodisiac. Reduces libido." + list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) diff --git a/sandcode/code/modules/reagents/reagent_dispenser.dm b/sandcode/code/modules/reagents/reagent_dispenser.dm new file mode 100644 index 0000000000..08d436c427 --- /dev/null +++ b/sandcode/code/modules/reagents/reagent_dispenser.dm @@ -0,0 +1,12 @@ +/obj/structure/reagent_dispensers/keg/aphro + name = "keg of aphrodisiac" + desc = "A keg of aphrodisiac." + icon_state = "pinkkeg" + reagent_id = /datum/reagent/drug/aphrodisiac + tank_volume = 150 + +/obj/structure/reagent_dispensers/keg/aphro/strong + name = "keg of strong aphrodisiac" + desc = "A keg of strong and addictive aphrodisiac." + reagent_id = /datum/reagent/drug/aphrodisiacplus + tank_volume = 120 diff --git a/tgstation.dme b/tgstation.dme index 17b3dffb30..f715a9e84e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3598,6 +3598,7 @@ #include "sandcode\code\interactions\lewd\objects.dm" #include "sandcode\code\modules\atmospherics\machinery\pipes\bluespace.dm" #include "sandcode\code\modules\cargo\packs\emergency.dm" +#include "sandcode\code\modules\cargo\packs\misc.dm" #include "sandcode\code\modules\client\asset_cache.dm" #include "sandcode\code\modules\clothing\refactor.dm" #include "sandcode\code\modules\clothing\head\misc.dm" @@ -3607,6 +3608,7 @@ #include "sandcode\code\modules\clothing\spacesuits\hardsuit.dm" #include "sandcode\code\modules\crafting\recipes\recipes_misc.dm" #include "sandcode\code\modules\hydroponics\grown\misc.dm" +#include "sandcode\code\modules\integrated_electronics\core\assemblies.dm" #include "sandcode\code\modules\integrated_electronics\subtypes\output.dm" #include "sandcode\code\modules\keybindings\keybind\carbon.dm" #include "sandcode\code\modules\language\dragon.dm" @@ -3626,6 +3628,8 @@ #include "sandcode\code\modules\mob\living\typing_indicator_overrides.dm" #include "sandcode\code\modules\mob\living\carbon\give.dm" #include "sandcode\code\modules\mob\living\carbon\show.dm" +#include "sandcode\code\modules\mob\living\carbon\human\human.dm" +#include "sandcode\code\modules\mob\living\silicon\silicon.dm" #include "sandcode\code\modules\mob\living\simple_animal\friendly\doges.dm" #include "sandcode\code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm" #include "sandcode\code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" @@ -3662,7 +3666,12 @@ #include "sandcode\code\modules\power\port_gen.dm" #include "sandcode\code\modules\projectiles\guns\ballistic\pistol.dm" #include "sandcode\code\modules\projectiles\guns\energy\kinetic_accelerator.dm" +#include "sandcode\code\modules\reagents\reagent_dispenser.dm" +#include "sandcode\code\modules\reagents\chemistry\reagents\drugs_reagents.dm" #include "sandcode\code\modules\reagents\chemistry\reagents\other_reagents.dm" +#include "sandcode\code\modules\reagents\chemistry\recipes\drugs.dm" +#include "sandcode\code\modules\reagents\chemistry\recipes\fermi.dm" +#include "sandcode\code\modules\reagents\reagent_containers\bottle.dm" #include "sandcode\code\modules\reagents\reagent_containers\spray.dm" #include "sandcode\code\modules\research\designs\autolathe_designs.dm" #include "sandcode\code\modules\research\designs\biogenerator_designs.dm"