From 26dda611f6bf7ac7f54abc76a5a9f78597550b2c Mon Sep 17 00:00:00 2001 From: Enric Gabriel <43283559+SandPoot@users.noreply.github.com> Date: Fri, 17 Jul 2020 22:35:41 -0300 Subject: [PATCH] oh no Skyrat/#2861 --- sandcode/code/interactions/_interaction.dm | 36 +++++++++---------- .../interactions/interaction_definitions.dm | 2 +- .../interactions/interaction_interface.dm | 31 ++++++++++++---- sandcode/code/interactions/lewd/_lewd.dm | 6 ++++ .../interactions/lewd/lewd_interactions.dm | 10 +++--- 5 files changed, 55 insertions(+), 30 deletions(-) diff --git a/sandcode/code/interactions/_interaction.dm b/sandcode/code/interactions/_interaction.dm index 0236ec0e59..8be4d21e95 100644 --- a/sandcode/code/interactions/_interaction.dm +++ b/sandcode/code/interactions/_interaction.dm @@ -1,4 +1,4 @@ -/********************************** +/********************************* *******Interactions code by HONKERTRON feat TestUnit******** **Contains a lot ammount of ERP and MEHANOYEBLYA** **CREDIT TO ATMTA STATION FOR MOST OF THIS CODE, I ONLY MADE IT WORK IN /vg/ - Matt @@ -19,7 +19,7 @@ var/list/interactions var/datum/interaction/I = new itype() interactions[I.command] = I -/mob/living/carbon/human/proc/list_interaction_attributes() +/mob/living/proc/list_interaction_attributes() var/dat = "" if(has_hands()) dat += "...have hands." @@ -49,24 +49,24 @@ var/list/interactions var/user_is_target = FALSE //Boolean. Pretty self explanatory. -/datum/interaction/proc/evaluate_user(mob/living/carbon/human/user, silent = TRUE) +/datum/interaction/proc/evaluate_user(mob/living/user, silent = TRUE) if(user.get_refraction_dif()) if(!silent) //bye spam to_chat(user, "You're still exhausted from the last time. You need to wait [DisplayTimeText(user.get_refraction_dif(), TRUE)] until you can do that!") return FALSE if(require_user_mouth) - if(!user.has_mouth()) + if(!user.has_mouth() && !issilicon(user)) //Again, silicons do not have the required parts normally. if(!silent) to_chat(user, "You don't have a mouth.") return FALSE - if(!user.mouth_is_free()) + if(!user.mouth_is_free() && !issilicon(user)) //Borgs cannot wear mouthgear, bypassing the check. if(!silent) to_chat(user, "Your mouth is covered.") return FALSE - if(require_user_hands && !user.has_hands()) + if(require_user_hands && !user.has_hands() && !issilicon(user)) //Edited to allow silicons to interact. if(!silent) to_chat(user, "You don't have hands.") return FALSE @@ -75,32 +75,32 @@ var/list/interactions return TRUE return FALSE -/datum/interaction/proc/evaluate_target(mob/living/carbon/human/user, mob/living/carbon/human/target, silent = TRUE) +/datum/interaction/proc/evaluate_target(mob/living/user, mob/living/target, silent = TRUE) if(!user_is_target) if(user == target) if(!silent) to_chat(user, "You can't do that to yourself.") return FALSE - + if(require_target_mouth) if(!target.has_mouth()) if(!silent) to_chat(user, "They don't have a mouth.") return FALSE - if(!target.mouth_is_free()) + if(!target.mouth_is_free() && !issilicon(target)) if(!silent) to_chat(user, "Their mouth is covered.") return FALSE - if(require_target_hands && !target.has_hands()) + if(require_target_hands && !target.has_hands() && !issilicon(target)) if(!silent) to_chat(user, "They don't have hands.") return FALSE return TRUE -/datum/interaction/proc/get_action_link_for(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/proc/get_action_link_for(mob/living/user, mob/living/target) return "[description]
" /datum/interaction/Topic(href, href_list) @@ -111,7 +111,7 @@ var/list/interactions return TRUE return FALSE -/datum/interaction/proc/do_action(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/proc/do_action(mob/living/user, mob/living/target) if(!user_is_target) if(user == target) //tactical href fix to_chat(user, "You cannot target yourself.") @@ -144,38 +144,38 @@ var/list/interactions //add_logs(target, user, "fucked2") //target.attack_log += text("\[[time_stamp()]\] [write_log_target] [user.name] ([user.ckey])") -/datum/interaction/proc/display_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/proc/display_interaction(mob/living/user, mob/living/target) if(simple_message) var/use_message = replacetext(simple_message, "USER", "\the [user]") use_message = replacetext(use_message, "TARGET", "\the [target]") user.visible_message("[capitalize(use_message)]") -/datum/interaction/proc/post_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/proc/post_interaction(mob/living/user, mob/living/target) user.last_interaction_time = world.time + 6 if(interaction_sound) playsound(get_turf(user), interaction_sound, 50, 1, -1) return /* -/atom/movable/attack_hand(mob/living/carbon/human/user) +/atom/movable/attack_hand(mob/living/user) . = ..() if(can_buckle && buckled_mob) if(user_unbuckle_mob(user)) return TRUE -/atom/movable/MouseDrop_T(mob/living/carbon/human/M, mob/living/carbon/human/user) +/atom/movable/MouseDrop_T(mob/living/M, mob/living/user) . = ..() if(can_buckle && istype(M) && !buckled_mob) if(user_buckle_mob(M, user)) return TRUE -/atom/movable/attack_hand(mob/living/carbon/human/user) +/atom/movable/attack_hand(mob/living/user) . = ..() if(can_buckle && buckled_mob) if(user_unbuckle_mob(user)) return TRUE -/atom/movable/MouseDrop_T(mob/living/carbon/human/M, mob/living/carbon/human/user) +/atom/movable/MouseDrop_T(mob/living/carbon/human/M, mob/living/user) . = ..() if(can_buckle && istype(M) && !buckled_mob) if(user_buckle_mob(M, user)) diff --git a/sandcode/code/interactions/interaction_definitions.dm b/sandcode/code/interactions/interaction_definitions.dm index 040e63d1f8..9e966dd137 100644 --- a/sandcode/code/interactions/interaction_definitions.dm +++ b/sandcode/code/interactions/interaction_definitions.dm @@ -65,7 +65,7 @@ command = "holdhand" description = "Hold their hand." require_user_hands = 1 - simple_message = "USER holds TARGET's hand." + simple_message = "USER holds TARGET's hand. Degenerate." max_distance = 25 needs_physical_contact = 1 max_distance = 25 diff --git a/sandcode/code/interactions/interaction_interface.dm b/sandcode/code/interactions/interaction_interface.dm index 9d73cd8092..d0a98824b9 100644 --- a/sandcode/code/interactions/interaction_interface.dm +++ b/sandcode/code/interactions/interaction_interface.dm @@ -9,27 +9,46 @@ return ..() */ -/mob/living/carbon/human/MouseDrop_T(mob/M as mob, mob/living/carbon/human/user as mob) +/mob/living/MouseDrop_T(mob/M as mob, mob/living/user as mob) . = ..() if(M == src || src == usr || M != usr) return if(usr.restrained()) return - if(!ishuman(src)) - return user.try_interaction(src) -/mob/living/carbon/human/verb/interact_with() +/mob/living/verb/interact_with() set name = "Interact With" set desc = "Perform an interaction with someone." set category = "IC" set src in view() - if(!usr.restrained() && ishuman(src)) + if(!usr.restrained()) usr.try_interaction(src) -/mob/living/carbon/human/try_interaction(mob/living/carbon/human/partner) +/mob/living/silicon/robot/verb/toggle_gender() //Change to add silicon genderchanges. Experimental. + set category = "IC" + set name = "Set Gender" + set desc = "Allows you to set your gender." + + if(stat != CONSCIOUS) + to_chat(usr, "You cannot toggle your gender while unconcious!") + return + + var/choice = alert(src, "Select Gender.", "Gender", "Both", "Male", "Female") + switch(choice) + if("Both") + src.has_penis = TRUE + src.has_vagina = TRUE + if("Male") + src.has_penis = TRUE + src.has_vagina = FALSE + if("Female") + src.has_penis = FALSE + src.has_vagina = TRUE + +/mob/living/try_interaction(mob/living/partner) var/dat if(partner != src) dat = "
Interacting with \the [partner]...

" diff --git a/sandcode/code/interactions/lewd/_lewd.dm b/sandcode/code/interactions/lewd/_lewd.dm index 9e55d22568..5d98320956 100644 --- a/sandcode/code/interactions/lewd/_lewd.dm +++ b/sandcode/code/interactions/lewd/_lewd.dm @@ -99,6 +99,8 @@ /mob/living/proc/has_penis(var/nintendo = REQUIRE_ANY) var/mob/living/carbon/C = src + if(issilicon(src) && C.has_penis) + return TRUE if(istype(C)) var/obj/item/organ/genital/peepee = C.getorganslot(ORGAN_SLOT_PENIS) if(peepee) @@ -143,6 +145,8 @@ /mob/living/proc/has_vagina(var/nintendo = REQUIRE_ANY) var/mob/living/carbon/C = src + if(issilicon(src) && C.has_vagina) + return TRUE if(istype(C)) var/obj/item/organ/genital/peepee = C.getorganslot(ORGAN_SLOT_VAGINA) if(peepee) @@ -186,6 +190,8 @@ return FALSE /mob/living/proc/has_anus(var/nintendo = REQUIRE_ANY) + if(issilicon(src)) + return TRUE switch(nintendo) if(REQUIRE_EXPOSED) if(is_bottomless()) diff --git a/sandcode/code/interactions/lewd/lewd_interactions.dm b/sandcode/code/interactions/lewd/lewd_interactions.dm index 3546070a8b..9d16873ad9 100644 --- a/sandcode/code/interactions/lewd/lewd_interactions.dm +++ b/sandcode/code/interactions/lewd/lewd_interactions.dm @@ -68,7 +68,7 @@ var/user_refractory_cost var/target_refractory_cost -/datum/interaction/lewd/evaluate_user(mob/living/carbon/human/user, silent = TRUE) +/datum/interaction/lewd/evaluate_user(mob/living/user, silent = TRUE) if(..(user, silent)) if(user_not_tired && user.get_refraction_dif()) if(!silent) //bye spam @@ -284,7 +284,7 @@ return FALSE return FALSE -/datum/interaction/lewd/evaluate_target(mob/living/carbon/human/user, mob/living/carbon/human/target, silent = TRUE) +/datum/interaction/lewd/evaluate_target(mob/living/user, mob/living/target, silent = TRUE) if(..(user, target, silent)) if(target_not_tired && target.get_refraction_dif()) if(!silent) //same with this @@ -505,7 +505,7 @@ return FALSE return FALSE -/datum/interaction/lewd/post_interaction(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/lewd/post_interaction(mob/living/user, mob/living/target) if(user_refractory_cost) user.refractory_period = world.time + user_refractory_cost*10 if(target_refractory_cost) @@ -516,7 +516,7 @@ user.cleartimer = addtimer(CALLBACK(user, /mob/living/proc/clear_lewd_datum), 300, TIMER_STOPPABLE) return ..() -/datum/interaction/lewd/get_action_link_for(mob/living/carbon/human/user, mob/living/carbon/human/target) +/datum/interaction/lewd/get_action_link_for(mob/living/user, mob/living/target) if(user.stat == DEAD) to_chat(user, "You cannot do that while deceased!") return @@ -524,7 +524,7 @@ return "EXTREME: [..()]" return "LEWD: [..()]" -/mob/living/carbon/human/list_interaction_attributes(var/mob/living/LM) +/mob/living/list_interaction_attributes(var/mob/living/LM) var/dat = ..() if(get_refraction_dif()) dat += "
...are sexually exhausted for the time being."