From 868d3c106271d0b98d4731abb9895d2c781230ea Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Thu, 15 Jun 2023 11:46:22 -0300 Subject: [PATCH 1/9] Commit so i can change branch --- code/__DEFINES/misc.dm | 85 +++++++++--------- code/__DEFINES/traits.dm | 1 + code/_globalvars/traits.dm | 1 + .../modules/spell/spell_types/eyes_of_lust.dm | 0 .../code/modules/spell/spell_types/groping.dm | 72 +++++++++++++++ .../modules/spell/spell_types/penis_spells.dm | 79 ++++++++++++++++ modular_splurt/icons/effects/sex_spells.dmi | Bin 0 -> 5127 bytes tgstation.dme | Bin 289340 -> 294470 bytes 8 files changed, 196 insertions(+), 42 deletions(-) create mode 100644 modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm create mode 100644 modular_splurt/code/modules/spell/spell_types/groping.dm create mode 100644 modular_splurt/code/modules/spell/spell_types/penis_spells.dm create mode 100644 modular_splurt/icons/effects/sex_spells.dmi diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index a8ea04665739..7eeba1bf11e5 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -33,48 +33,49 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 41 //mutations. Tk headglows, cold resistance glow, etc -#define ANTAG_LAYER 40 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up) -#define GENITALS_BEHIND_LAYER 39 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer -#define BODY_BEHIND_LAYER 38 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 37 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define MARKING_LAYER 36 //Matrixed body markings because clashing with snouts? -#define BODY_ADJ_LAYER 35 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define GENITALS_FRONT_LAYER 34 //Draws some genitalia above clothes and the TAUR body if need be. -#define BODY_LAYER 33 //underwear, undershirts, socks, eyes, lips(makeup) -#define BODY_ADJ_UPPER_LAYER 32 -#define FRONT_MUTATIONS_LAYER 31 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define UNDERWEAR_LAYER 30 -#define SOCKS_LAYER 29 -#define SHIRT_LAYER 28 -#define UNIFORM_LAYER 27 -#define ID_LAYER 26 -#define HANDS_PART_LAYER 25 -#define DAMAGE_LAYER 24 //damage indicators (cuts and burns) -#define LOWER_MEDICINE_LAYER 23 //Medicine, like gauze and tourniquets -#define MEDICINE_LAYER 22 //Medicine, like gauze and tourniquets -#define SHOES_LAYER 21 -#define GLOVES_LAYER 20 -#define WRISTS_LAYER 19 -#define EAR_RIGHT_LAYER 18 -#define EAR_LEFT_LAYER 17 -#define SUIT_LAYER 16 -#define GENITALS_EXPOSED_LAYER 15 -#define GLASSES_LAYER 14 -#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt? -#define SUIT_STORE_LAYER 12 -#define NECK_LAYER 11 -#define BACK_LAYER 10 -#define HAIR_LAYER 9 //TODO: make part of head layer? -#define HORNS_LAYER 8 -#define FACEMASK_LAYER 7 -#define HEAD_LAYER 6 -#define HANDCUFF_LAYER 5 -#define LEGCUFF_LAYER 4 -#define HANDS_LAYER 3 -#define BODY_FRONT_LAYER 2 -#define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 41 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define MUTATIONS_LAYER 42 //mutations. Tk headglows, cold resistance glow, etc +#define ANTAG_LAYER 41 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up) +#define GENITALS_BEHIND_LAYER 40 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer +#define BODY_BEHIND_LAYER 39 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 38 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define MARKING_LAYER 37 //Matrixed body markings because clashing with snouts? +#define BODY_ADJ_LAYER 36 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define GENITALS_FRONT_LAYER 35 //Draws some genitalia above clothes and the TAUR body if need be. +#define BODY_LAYER 34 //underwear, undershirts, socks, eyes, lips(makeup) +#define BODY_ADJ_UPPER_LAYER 33 +#define FRONT_MUTATIONS_LAYER 32 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define UNDERWEAR_LAYER 31 +#define SOCKS_LAYER 30 +#define SHIRT_LAYER 29 +#define UNIFORM_LAYER 28 +#define ID_LAYER 27 +#define HANDS_PART_LAYER 26 +#define DAMAGE_LAYER 25 //damage indicators (cuts and burns) +#define LOWER_MEDICINE_LAYER 24 //Medicine, like gauze and tourniquets +#define MEDICINE_LAYER 23 //Medicine, like gauze and tourniquets +#define SHOES_LAYER 22 +#define GLOVES_LAYER 21 +#define WRISTS_LAYER 20 +#define EAR_RIGHT_LAYER 19 +#define EAR_LEFT_LAYER 18 +#define SUIT_LAYER 17 +#define GENITALS_EXPOSED_LAYER 16 +#define GLASSES_LAYER 15 +#define BELT_LAYER 14 //Possible make this an overlay of somethign required to wear a belt? +#define SUIT_STORE_LAYER 13 +#define NECK_LAYER 12 +#define BACK_LAYER 11 +#define HAIR_LAYER 10 //TODO: make part of head layer? +#define HORNS_LAYER 9 +#define FACEMASK_LAYER 8 +#define HEAD_LAYER 7 +#define HANDCUFF_LAYER 6 +#define LEGCUFF_LAYER 5 +#define HANDS_LAYER 4 +#define BODY_FRONT_LAYER 3 +#define FIRE_LAYER 2 //If you're on fire +#define GROPING_LAYER 1 +#define TOTAL_LAYERS 42 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index dbacbcbda59c..7d244fc06485 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -210,6 +210,7 @@ #define TRAIT_TAGGER "tagger" #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" +#define TRAIT_SEXSPELLS "sexspells" #define TRAIT_PERMABONER "permanent_arousal" #define TRAIT_NEVERBONER "never_aroused" #define TRAIT_NYMPHO "nymphomaniac" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 709d558a4203..3afd1d4ac2aa 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -121,6 +121,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_TAGGER" = TRAIT_TAGGER, "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, "TRAIT_MUSICIAN" = TRAIT_MUSICIAN, + "TRAIT_SEXSPELLS" = TRAIT_SEXSPELLS, "TRAIT_MASO" = TRAIT_MASO, "TRAIT_HIGH_BLOOD" = TRAIT_HIGH_BLOOD, "TRAIT_EMPATH" = TRAIT_EMPATH, diff --git a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm new file mode 100644 index 000000000000..17d1aa5de595 --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -0,0 +1,72 @@ + + +/obj/effect/proc_holder/spell/grope + name = "Grope" + desc = "Spawns magical hands of groping." + charge_max = 1200 //variable + cooldown_min = 0 + level_max = 1 + clothes_req = NONE + antimagic_allowed = TRUE + action_icon_state = "grope" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + var/mob/living/carbon/human/victim + +/obj/effect/proc_holder/spell/grope/choose_targets(mob/user = usr) + perform(user=user) + +/obj/effect/proc_holder/spell/grope/perform(list/targets, recharge = 1, mob/user = usr) + var/list/possible = list() + for(var/mob/living/carbon/human/H in view(7, user)) + possible.Add(H) + victim = input(user, "Choose the one to be groped", "Command") in possible + if(QDELETED(src) || QDELETED(user)) + return + if(!victim) + revert_cast(user) + return + ..() + +/obj/effect/proc_holder/spell/grope/cast(list/targets, mob/user = usr) + victim.be_groped() + +/mob/living/carbon/human + var/is_being_groped = 0 + +/mob/living/carbon/human/proc/be_groped() + is_being_groped = 1 + update_groped_icon() + +/mob/living/carbon/human/proc/update_groped_icon() + if(is_being_groped) + var/mutable_appearance/new_groping_overlay = mutable_appearance('modular_splurt/icons/effects/sex_spells.dmi', "grope overlay", -GROPING_LAYER) + overlays_standing[GROPING_LAYER] = new_groping_overlay + apply_overlay(GROPING_LAYER) + else + overlays_standing[GROPING_LAYER] = null + return 0 + + + + + +/datum/quirk/sex_magician + name = "Sex Magician" + desc = "You can cast sexual spells into others." + value = 1 + mob_trait = TRAIT_SEXSPELLS + gain_text = "You can cast sexual spells." + lose_text = "You forget how to cast sexual spells." + medical_record_text = "Patient brain scans show a highly-developed into sexual spells." + +/datum/quirk/sex_magician/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + var/obj/effect/proc_holder/spell/grope/S = new /obj/effect/proc_holder/spell/grope + H.mind.AddSpell(S) + + + + + + + diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm new file mode 100644 index 000000000000..c77a2f078beb --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -0,0 +1,79 @@ + +/obj/effect/proc_holder/spell/targeted/touch/penis_max + name = "Disintegrate" + desc = "This spell charges your hand with vile energy that can be used to violently explode victims." + hand_path = /obj/item/melee/touch_attack/penis_max + school = "evocation" + charge_max = 600 + cooldown_min = 200 //100 deciseconds reduction per rank + action_icon_state = "penis-increased" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + +/obj/item/melee/touch_attack/penis_max + name = "\improper penis increase touch" + desc = "This hand of mine glows with an erotic power!" + catchphrase = "Dicogrand!!" + on_use_sound = 'sound/magic/disintegrate.ogg' + icon_state = "disintegrate" + item_state = "disintegrate" + +/obj/item/melee/touch_attack/penis_max/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad + return + if(!user.can_speak_vocal()) + to_chat(user, "You can't get the words out!") + return + var/mob/M = target + do_sparks(4, FALSE, M.loc) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + P.modify_size(30) + spawn(15 MINUTES) + P.modify_size(-30) + return ..() + + + + + + + +/obj/effect/proc_holder/spell/targeted/touch/penis + name = "Disintegrate" + desc = "This spell charges your hand with vile energy that can be used to violently explode victims." + hand_path = /obj/item/melee/touch_attack/penis + school = "evocation" + charge_max = 600 + cooldown_min = 200 //100 deciseconds reduction per rank + action_icon_state = "penis-increase" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + + +/obj/item/melee/touch_attack/penis + name = "\improper penis increase touch" + desc = "This hand of mine glows with an erotic power!" + catchphrase = "Dicogrand!!" + on_use_sound = 'sound/magic/disintegrate.ogg' + icon_state = "disintegrate" + item_state = "disintegrate" + +/obj/item/melee/touch_attack/penis/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad + return + if(!user.can_speak_vocal()) + to_chat(user, "You can't get the words out!") + return + var/mob/M = target + do_sparks(4, FALSE, M.loc) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + P.modify_size(10) + spawn(15 MINUTES) + P.modify_size(-10) + return ..() + + + + diff --git a/modular_splurt/icons/effects/sex_spells.dmi b/modular_splurt/icons/effects/sex_spells.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8d709e267ce87f5ccbf2f69722c8f2703e6b1aea GIT binary patch literal 5127 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 df0iy8;zi6xw1QV_9{{k1t*gF6K literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index a3772ade3f9a92fc3e1c5df7b3f9b5310763514d..d9ed05f3bb49c3a27f02435fc517de7cd4a6dccc 100644 GIT binary patch literal 294470 zcmeIuF#!Mo0K%a4Pi+c6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ H1HXX*eu4l2 literal 289340 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 jZ5h~9H*B&FM)n{7@$dim=U?)F`}4p2=|6w@ Date: Thu, 15 Jun 2023 12:25:11 -0300 Subject: [PATCH 2/9] aye --- .../code/modules/spell/spell_types/groping.dm | 19 +++++++++++++----- tgstation.dme | Bin 294470 -> 289554 bytes 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index 17d1aa5de595..a543a3d19c67 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -28,13 +28,13 @@ ..() /obj/effect/proc_holder/spell/grope/cast(list/targets, mob/user = usr) - victim.be_groped() + victim.be_groped(user) /mob/living/carbon/human var/is_being_groped = 0 -/mob/living/carbon/human/proc/be_groped() - is_being_groped = 1 +/mob/living/carbon/human/proc/be_groped(var/mob/living/carbon/human/H) + is_being_groped = H update_groped_icon() /mob/living/carbon/human/proc/update_groped_icon() @@ -46,8 +46,17 @@ overlays_standing[GROPING_LAYER] = null return 0 - - +/mob/living/carbon/human/Life() + . = ..() + if(is_being_groped) + if(prob(50)) + var/datum/interaction/lewd/titgrope/TG = new + TG.do_action(is_being_groped, src) + qdel(TG) + else + var/datum/interaction/lewd/finger/FI = new + FI.do_action(is_being_groped, src) + qdel(FI) /datum/quirk/sex_magician diff --git a/tgstation.dme b/tgstation.dme index d9ed05f3bb49c3a27f02435fc517de7cd4a6dccc..149f5f0e466ae5d10696296b21587776bb80ffe3 100644 GIT binary patch literal 289554 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 Tf64#t&;RnL|NP~TfA{|Zj=8v9 literal 294470 zcmeIuF#!Mo0K%a4Pi+c6h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ H1HXX*eu4l2 From 407f32deff3c65c45f0ef8f7cd7767a9db4c9de4 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Fri, 23 Jun 2023 20:40:11 -0300 Subject: [PATCH 3/9] aye --- code/__DEFINES/rendering/atom_hud.dm | 2 + code/_rendering/atom_huds/atom_hud.dm | 1 + .../mob/living/carbon/human/human_defines.dm | 2 +- icons/mob/hud.dmi | Bin 23737 -> 23950 bytes .../mob/living/carbon/human/human_defines.dm | 1 + .../modules/spell/spell_types/aoe_lust.dm | 19 ++++++ .../modules/spell/spell_types/eyes_of_lust.dm | 58 ++++++++++++++++++ .../code/modules/spell/spell_types/groping.dm | 9 ++- .../modules/spell/spell_types/hypnotize.dm | 35 +++++++++++ .../modules/spell/spell_types/penis_spells.dm | 8 +-- .../code/modules/spell/spell_types/uncover.dm | 42 +++++++++++++ modular_splurt/icons/effects/sex_spells.dmi | Bin 5127 -> 5126 bytes tgstation.dme | 3 + 13 files changed, 173 insertions(+), 7 deletions(-) create mode 100644 modular_splurt/code/modules/spell/spell_types/aoe_lust.dm create mode 100644 modular_splurt/code/modules/spell/spell_types/hypnotize.dm create mode 100644 modular_splurt/code/modules/spell/spell_types/uncover.dm diff --git a/code/__DEFINES/rendering/atom_hud.dm b/code/__DEFINES/rendering/atom_hud.dm index 8fb5aa6784be..ebbcca857efb 100644 --- a/code/__DEFINES/rendering/atom_hud.dm +++ b/code/__DEFINES/rendering/atom_hud.dm @@ -28,6 +28,7 @@ //for antag huds. these are used at the /mob level #define ANTAG_HUD "24" #define ANTAGTARGET_HUD "25" // Which players consent via their game settings to be a target for antagonists +#define AROUSAL_HUD "26" //by default everything in the hud_list of an atom is an image //a value in hud_list with one of these will change that behavior @@ -69,5 +70,6 @@ // Which players consent via their game settings to be a target for antagonists #define DATA_HUD_ANTAGTARGET 30 +#define DATA_HUD_AROUSAL 31 #define ADD_HUD_TO_COOLDOWN 20 //cooldown for being shown the images for any particular data hud diff --git a/code/_rendering/atom_huds/atom_hud.dm b/code/_rendering/atom_huds/atom_hud.dm index 9cdf277c5f52..827a2e4e0503 100644 --- a/code/_rendering/atom_huds/atom_hud.dm +++ b/code/_rendering/atom_huds/atom_hud.dm @@ -34,6 +34,7 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_GANGSTER = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_SLAVER = new/datum/atom_hud/antag(), DATA_HUD_ANTAGTARGET = new/datum/atom_hud/data/human/antagtarget(), + DATA_HUD_AROUSAL = new/datum/atom_hud/data/human/arousal(), )) /datum/atom_hud diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index ab36cebd34cf..0ad718829342 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,RAD_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,RAD_HUD,AROUSAL_HUD) hud_type = /datum/hud/human possible_a_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, INTENT_HARM) pressure_resistance = 25 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 1580c7605fe1fa5dac8e48747d0cfc02bf08c075..7de5e90eb900e8c715442e1f229b9ba3c022ccd5 100644 GIT binary patch delta 3287 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 V2ur>2a}xjn002ovPDHLkV1gshf@S~! delta 3049 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 diff --git a/modular_splurt/code/modules/mob/living/carbon/human/human_defines.dm b/modular_splurt/code/modules/mob/living/carbon/human/human_defines.dm index 93880806ee20..114995e55037 100644 --- a/modular_splurt/code/modules/mob/living/carbon/human/human_defines.dm +++ b/modular_splurt/code/modules/mob/living/carbon/human/human_defines.dm @@ -5,5 +5,6 @@ /mob/living/carbon/human/Initialize() LAZYADD(hud_possible, ANTAGTARGET_HUD) + LAZYADD(hud_possible, AROUSAL_HUD) . = ..() RegisterSignal(src, COMSIG_MOB_CLIMAX, .proc/check_orgasm) diff --git a/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm new file mode 100644 index 000000000000..12853148317a --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm @@ -0,0 +1,19 @@ +/obj/effect/proc_holder/spell/aoe_lust + name = "Eyes of Lust" + desc = "Watch the lust." + charge_max = 600 //variable + cooldown_min = 0 + level_max = 1 + clothes_req = NONE + antimagic_allowed = TRUE + action_icon_state = "aoe_lust" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + var/activated = 0 + +/obj/effect/proc_holder/spell/aoe_lust/cast(list/targets, mob/user = usr) + if(!ishuman(user)) + return 0 + var/mob/living/carbon/human/H = user + for(var/mob/living/carbon/human/HH in view(5, H)) + HH.add_lust(50) + diff --git a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm index e69de29bb2d1..b66c363f694c 100644 --- a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm +++ b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm @@ -0,0 +1,58 @@ +/datum/atom_hud/data/human/arousal + hud_icons = list(AROUSAL_HUD) + +/mob/living/carbon/human/proc/add_arousal_hud() + var/datum/atom_hud/data/human/arousal/hud = GLOB.huds[DATA_HUD_AROUSAL] + hud.add_hud_to(src) + arousal_hud_update() + for(var/mob/living/carbon/human/H in view(7, src)) + hud.add_to_hud(H) + +/mob/living/carbon/human/proc/remove_arousal_hud() + var/datum/atom_hud/data/human/arousal/hud = GLOB.huds[DATA_HUD_AROUSAL] + hud.remove_hud_from(src) + +/mob/living/carbon/human/Life() + . = ..() + if(has_quirk(/datum/quirk/sex_magician)) + arousal_hud_update() + +/mob/living/carbon/human/proc/arousal_hud_update() + var/image/holder = hud_list[AROUSAL_HUD] + var/icon/I = icon(icon, icon_state, dir) + holder.pixel_y = I.Height() - world.icon_size + var/arousal = getPercentAroused() + switch(arousal) + if(0 to 25) + holder.icon_state = "hudarousal1" + if(25 to 50) + holder.icon_state = "hudarousal2" + if(50 to 75) + holder.icon_state = "hudarousal3" + if(75 to INFINITY) + holder.icon_state = "hudarousal4" + +/obj/effect/proc_holder/spell/eyes_of_lust + name = "Eyes of Lust" + desc = "Watch the lust." + charge_max = 1200 //variable + cooldown_min = 0 + level_max = 1 + clothes_req = NONE + antimagic_allowed = TRUE + action_icon_state = "eyes_of_lust" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + var/activated = 0 + +/obj/effect/proc_holder/spell/eyes_of_lust/cast(list/targets, mob/user = usr) + if(!ishuman(user)) + return 0 + var/mob/living/carbon/human/H = user + if(!activated) + H.add_arousal_hud() + activated = 1 + else + H.remove_arousal_hud() + activated = 0 + + diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index a543a3d19c67..5c42586f8192 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -71,9 +71,14 @@ /datum/quirk/sex_magician/on_spawn() var/mob/living/carbon/human/H = quirk_holder var/obj/effect/proc_holder/spell/grope/S = new /obj/effect/proc_holder/spell/grope + var/obj/effect/proc_holder/spell/targeted/touch/penis_max/P = new /obj/effect/proc_holder/spell/targeted/touch/penis_max + var/obj/effect/proc_holder/spell/targeted/touch/penis/PP = new /obj/effect/proc_holder/spell/targeted/touch/penis + var/obj/effect/proc_holder/spell/eyes_of_lust/eol = new /obj/effect/proc_holder/spell/eyes_of_lust H.mind.AddSpell(S) - - + H.mind.AddSpell(P) + H.mind.AddSpell(PP) + H.mind.AddSpell(eol) + //H.add_arousal_hud() diff --git a/modular_splurt/code/modules/spell/spell_types/hypnotize.dm b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm new file mode 100644 index 000000000000..b8ef028b3707 --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm @@ -0,0 +1,35 @@ + + +/obj/effect/proc_holder/spell/hypno + name = "Hypnotize" + desc = "Hypnotize someone with a phrase." + charge_max = 1200 //variable + cooldown_min = 0 + level_max = 1 + clothes_req = NONE + antimagic_allowed = TRUE + action_icon_state = "hypno" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + var/mob/living/carbon/human/victim + var/hypnophrase + +/obj/effect/proc_holder/spell/hypno/choose_targets(mob/user = usr) + perform(user=user) + +/obj/effect/proc_holder/spell/hypno/perform(list/targets, recharge = 1, mob/user = usr) + var/list/possible = list() + for(var/mob/living/carbon/human/H in view(7, user)) + possible.Add(H) + victim = input(user, "Choose the one to be hypnotized", "Command") in possible + hypnophrase = input(user, "Choose the phrase", "Command") as text + if(QDELETED(src) || QDELETED(user)) + return + if(!victim) + revert_cast(user) + return + ..() + +/obj/effect/proc_holder/spell/hypno/cast(list/targets, mob/user = usr) + addtimer(CALLBACK(victim, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hypnophrase), 10) + + diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm index c77a2f078beb..87a8a68d8a73 100644 --- a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -1,7 +1,7 @@ /obj/effect/proc_holder/spell/targeted/touch/penis_max - name = "Disintegrate" - desc = "This spell charges your hand with vile energy that can be used to violently explode victims." + name = "Penis Grower" + desc = "This spell charges your hand with vile energy that can be used to grow penises." hand_path = /obj/item/melee/touch_attack/penis_max school = "evocation" charge_max = 600 @@ -40,8 +40,8 @@ /obj/effect/proc_holder/spell/targeted/touch/penis - name = "Disintegrate" - desc = "This spell charges your hand with vile energy that can be used to violently explode victims." + name = "Penis Grower" + desc = "This spell charges your hand with vile energy that can be used to grow penises." hand_path = /obj/item/melee/touch_attack/penis school = "evocation" charge_max = 600 diff --git a/modular_splurt/code/modules/spell/spell_types/uncover.dm b/modular_splurt/code/modules/spell/spell_types/uncover.dm new file mode 100644 index 000000000000..ef17678afe83 --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/uncover.dm @@ -0,0 +1,42 @@ +/mob/living/carbon/human + var/uncovered = 0 + +/obj/effect/proc_holder/spell/targeted/touch/Uncover + name = "Uncover" + desc = "This spell charges your hand with vile energy that can be used to uncover victims." + hand_path = /obj/item/melee/touch_attack/penis_max + school = "evocation" + charge_max = 600 + cooldown_min = 200 //100 deciseconds reduction per rank + action_icon_state = "uncover" + action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + +/obj/item/melee/touch_attack/uncover + name = "\improper uncover touch" + desc = "This hand of mine glows with an erotic power!" + catchphrase = "Dicogrand!!" + on_use_sound = 'sound/magic/disintegrate.ogg' + icon_state = "disintegrate" + item_state = "disintegrate" + +/obj/item/melee/touch_attack/uncover/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad + return + if(!user.can_speak_vocal()) + to_chat(user, "You can't get the words out!") + return + var/mob/M = target + do_sparks(4, FALSE, M.loc) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/W in src) + H.dropItemToGround(W, 1) + H.uncovered = 1 + spawn(10 MINUTES) + H.uncovered = 0 + return ..() + + + + + diff --git a/modular_splurt/icons/effects/sex_spells.dmi b/modular_splurt/icons/effects/sex_spells.dmi index 8d709e267ce87f5ccbf2f69722c8f2703e6b1aea..458bf9240181d73b1bddbfa88af1f67ab53100de 100644 GIT binary patch delta 211 zcmV;^04)E9D26DIB!9koR9JLGWpiV4X>fFDZ*Bkpc$}5Yy9$Fq5QX8|eTqTrT)eb4 zK?xT63bN6OE|}eAW;OWsDTIVntKIqG<3w;P?^OduU5N#WmC=wxcD{<>t$H^?4rwBS z5!EodE!atikV80-u^5V=SHzG*EP^M=7jFBjENaCkr8`2&M@V_^^|&Ip=Gjg&J1?Gf zXBH%{lLq%4j;qzitEQP9JS0JU$@b&q2u_dSYzH35SOl{mO>+I|>`zBfHU$)QB|e7- NrmJ;yvoW#k8xwv5VVM8` delta 212 zcmV;_04x87D2FJJB!9npR9JLGWpiV4X>fFDZ*Bkpc$}5Yy$*sf7=_`vy^0f@@ekGx z8i-*Kuc68(G{Kg9Eg0_Jfkfj3Z0Aj$oDI(Tr6`eI3po&b<17@??OuwvsX_yV!KD3KUP;Y*8p*>w(e^&f;@&>o zKs@VCw>(~S*o>WZv#RZVz+E#AyL34|uEEI~oG!pMyN=)n;#QA8o&Ml+g!KVxqI diff --git a/tgstation.dme b/tgstation.dme index a4daadd634c8..6d1d918279b2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4889,10 +4889,13 @@ #include "modular_splurt\code\modules\smithing\anvil.dm" #include "modular_splurt\code\modules\smithing\finished_items.dm" #include "modular_splurt\code\modules\smithing\smithed_items.dm" +#include "modular_splurt\code\modules\spell\spell_types\aoe_lust.dm" #include "modular_splurt\code\modules\spell\spell_types\conjure.dm" #include "modular_splurt\code\modules\spell\spell_types\eyes_of_lust.dm" #include "modular_splurt\code\modules\spell\spell_types\groping.dm" +#include "modular_splurt\code\modules\spell\spell_types\hypnotize.dm" #include "modular_splurt\code\modules\spell\spell_types\penis_spells.dm" +#include "modular_splurt\code\modules\spell\spell_types\uncover.dm" #include "modular_splurt\code\modules\surgery\bodyparts\_bodyparts.dm" #include "modular_splurt\code\modules\surgery\organs\augments_arms.dm" #include "modular_splurt\code\modules\surgery\organs\augments_eyes.dm" From 9198a2528809fcc802edecaede5ff45e3ace7656 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Sat, 1 Jul 2023 20:16:24 -0300 Subject: [PATCH 4/9] aye --- code/modules/client/preferences.dm | 7 +++++++ .../mob/living/carbon/human/species.dm | 6 ++++++ .../code/modules/client/preferences.dm | 1 + .../modules/spell/spell_types/aoe_lust.dm | 18 ++++++++---------- .../modules/spell/spell_types/eyes_of_lust.dm | 19 ++++++++++--------- .../code/modules/spell/spell_types/groping.dm | 12 ++++++++++-- .../modules/spell/spell_types/hypnotize.dm | 4 +++- .../modules/spell/spell_types/penis_spells.dm | 12 ++++++++---- .../code/modules/spell/spell_types/uncover.dm | 19 ++++++++++++------- 9 files changed, 65 insertions(+), 33 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c915e13db287..a715916f092a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1523,6 +1523,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Edging : [(cit_toggles & EDGING) ? "Allowed" : "Disallowed"]
" dat += "? " dat += "Unholy ERP verbs : [unholypref]
" //https://www.youtube.com/watch?v=OHKARc-GObU + dat += "Magical ERP : [magicalpref]
" //https://www.youtube.com/watch?v=OHKARc-GObU //END OF SPLURT EDIT //SKYRAT EDIT dat += "? " //SPLURT Edit (wow! editception???) @@ -3511,6 +3512,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) unholypref = "No" if("No") unholypref = "Yes" + if("magicalpref") + switch(magicalpref) + if("Yes") + magicalpref = "No" + if("No") + magicalpref = "Yes" //Skyrat edit - *someone* offered me actual money for this shit if("extremepref") //i hate myself for doing this switch(extremepref) //why the fuck did this need to use cycling instead of input from a list diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 0c30c42a6552..1855f2a74ccd 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1297,6 +1297,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return /datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning) + + if(H.uncovered) + if(return_warning) + return_warning[1] = "I've been wicked!" + return FALSE + if(slot in no_equip) if(!I.species_exception || !is_type_in_list(src, I.species_exception)) return FALSE diff --git a/modular_splurt/code/modules/client/preferences.dm b/modular_splurt/code/modules/client/preferences.dm index 8aea699f1b26..25cf62cdbdf0 100644 --- a/modular_splurt/code/modules/client/preferences.dm +++ b/modular_splurt/code/modules/client/preferences.dm @@ -6,6 +6,7 @@ /datum/preferences max_save_slots = DEFAULT_SAVE_SLOTS var/unholypref = "No" //Goin 2 hell fo dis one + var/magicalpref = "No" //Goin 2 hell fo dis one var/list/gfluid_blacklist = list() //Stuff you don't want people to cum into you var/new_character_creator = TRUE // old/new character creator var/show_in_directory = 1 //Show in Character Directory diff --git a/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm index 12853148317a..7e10c5285a9d 100644 --- a/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm +++ b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm @@ -1,19 +1,17 @@ -/obj/effect/proc_holder/spell/aoe_lust - name = "Eyes of Lust" - desc = "Watch the lust." +/obj/effect/proc_holder/spell/self/aoe_lust + name = "Area Lust" + desc = "Make the people nearby horny." charge_max = 600 //variable cooldown_min = 0 - level_max = 1 clothes_req = NONE antimagic_allowed = TRUE action_icon_state = "aoe_lust" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' var/activated = 0 + clothes_req = NONE -/obj/effect/proc_holder/spell/aoe_lust/cast(list/targets, mob/user = usr) - if(!ishuman(user)) - return 0 - var/mob/living/carbon/human/H = user - for(var/mob/living/carbon/human/HH in view(5, H)) - HH.add_lust(50) +/obj/effect/proc_holder/spell/self/aoe_lust/cast(mob/living/carbon/human/user) + for(var/mob/living/carbon/human/HH in view(5, user)) + if(HH.client.prefs.magicalpref == "Yes") + HH.add_lust(50) diff --git a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm index b66c363f694c..cf7a2278b793 100644 --- a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm +++ b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm @@ -15,7 +15,10 @@ /mob/living/carbon/human/Life() . = ..() if(has_quirk(/datum/quirk/sex_magician)) - arousal_hud_update() + var/datum/atom_hud/data/human/arousal/hud = GLOB.huds[DATA_HUD_AROUSAL] + for(var/mob/living/carbon/human/H in view(7, src)) + hud.add_to_hud(H) + arousal_hud_update() /mob/living/carbon/human/proc/arousal_hud_update() var/image/holder = hud_list[AROUSAL_HUD] @@ -32,27 +35,25 @@ if(75 to INFINITY) holder.icon_state = "hudarousal4" -/obj/effect/proc_holder/spell/eyes_of_lust +/obj/effect/proc_holder/spell/self/eyes_of_lust name = "Eyes of Lust" desc = "Watch the lust." charge_max = 1200 //variable cooldown_min = 0 - level_max = 1 clothes_req = NONE antimagic_allowed = TRUE action_icon_state = "eyes_of_lust" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' var/activated = 0 + clothes_req = NONE + +/obj/effect/proc_holder/spell/self/eyes_of_lust/cast(mob/living/carbon/human/user) -/obj/effect/proc_holder/spell/eyes_of_lust/cast(list/targets, mob/user = usr) - if(!ishuman(user)) - return 0 - var/mob/living/carbon/human/H = user if(!activated) - H.add_arousal_hud() + user.add_arousal_hud() activated = 1 else - H.remove_arousal_hud() + user.remove_arousal_hud() activated = 0 diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index 5c42586f8192..9ee90b221413 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -11,6 +11,7 @@ action_icon_state = "grope" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' var/mob/living/carbon/human/victim + clothes_req = NONE /obj/effect/proc_holder/spell/grope/choose_targets(mob/user = usr) perform(user=user) @@ -18,7 +19,8 @@ /obj/effect/proc_holder/spell/grope/perform(list/targets, recharge = 1, mob/user = usr) var/list/possible = list() for(var/mob/living/carbon/human/H in view(7, user)) - possible.Add(H) + if(H.client.prefs.magicalpref == "Yes") + possible.Add(H) victim = input(user, "Choose the one to be groped", "Command") in possible if(QDELETED(src) || QDELETED(user)) return @@ -73,11 +75,17 @@ var/obj/effect/proc_holder/spell/grope/S = new /obj/effect/proc_holder/spell/grope var/obj/effect/proc_holder/spell/targeted/touch/penis_max/P = new /obj/effect/proc_holder/spell/targeted/touch/penis_max var/obj/effect/proc_holder/spell/targeted/touch/penis/PP = new /obj/effect/proc_holder/spell/targeted/touch/penis - var/obj/effect/proc_holder/spell/eyes_of_lust/eol = new /obj/effect/proc_holder/spell/eyes_of_lust + var/obj/effect/proc_holder/spell/self/eyes_of_lust/eol = new /obj/effect/proc_holder/spell/self/eyes_of_lust + var/obj/effect/proc_holder/spell/hypno/hyp = new /obj/effect/proc_holder/spell/hypno + var/obj/effect/proc_holder/spell/self/aoe_lust/aoe = new /obj/effect/proc_holder/spell/self/aoe_lust + var/obj/effect/proc_holder/spell/targeted/touch/uncover/unc = new /obj/effect/proc_holder/spell/targeted/touch/uncover H.mind.AddSpell(S) H.mind.AddSpell(P) H.mind.AddSpell(PP) H.mind.AddSpell(eol) + H.mind.AddSpell(hyp) + H.mind.AddSpell(aoe) + H.mind.AddSpell(unc) //H.add_arousal_hud() diff --git a/modular_splurt/code/modules/spell/spell_types/hypnotize.dm b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm index b8ef028b3707..2024779ce072 100644 --- a/modular_splurt/code/modules/spell/spell_types/hypnotize.dm +++ b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm @@ -12,6 +12,7 @@ action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' var/mob/living/carbon/human/victim var/hypnophrase + clothes_req = NONE /obj/effect/proc_holder/spell/hypno/choose_targets(mob/user = usr) perform(user=user) @@ -19,7 +20,8 @@ /obj/effect/proc_holder/spell/hypno/perform(list/targets, recharge = 1, mob/user = usr) var/list/possible = list() for(var/mob/living/carbon/human/H in view(7, user)) - possible.Add(H) + if(H.client.prefs.magicalpref == "Yes") + possible.Add(H) victim = input(user, "Choose the one to be hypnotized", "Command") in possible hypnophrase = input(user, "Choose the phrase", "Command") as text if(QDELETED(src) || QDELETED(user)) diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm index 87a8a68d8a73..cdc97aaea237 100644 --- a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -8,6 +8,7 @@ cooldown_min = 200 //100 deciseconds reduction per rank action_icon_state = "penis-increased" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + clothes_req = NONE /obj/item/melee/touch_attack/penis_max name = "\improper penis increase touch" @@ -27,10 +28,11 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - P.modify_size(30) - spawn(15 MINUTES) - P.modify_size(-30) + if(H.client.prefs.magicalpref == "Yes") + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + P.modify_size(30) + spawn(15 MINUTES) + P.modify_size(-30) return ..() @@ -48,6 +50,7 @@ cooldown_min = 200 //100 deciseconds reduction per rank action_icon_state = "penis-increase" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + clothes_req = NONE /obj/item/melee/touch_attack/penis @@ -68,6 +71,7 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M + if(H.client.prefs.magicalpref == "Yes") var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) P.modify_size(10) spawn(15 MINUTES) diff --git a/modular_splurt/code/modules/spell/spell_types/uncover.dm b/modular_splurt/code/modules/spell/spell_types/uncover.dm index ef17678afe83..cfda320009b6 100644 --- a/modular_splurt/code/modules/spell/spell_types/uncover.dm +++ b/modular_splurt/code/modules/spell/spell_types/uncover.dm @@ -1,15 +1,16 @@ /mob/living/carbon/human var/uncovered = 0 -/obj/effect/proc_holder/spell/targeted/touch/Uncover +/obj/effect/proc_holder/spell/targeted/touch/uncover name = "Uncover" desc = "This spell charges your hand with vile energy that can be used to uncover victims." - hand_path = /obj/item/melee/touch_attack/penis_max + hand_path = /obj/item/melee/touch_attack/uncover school = "evocation" charge_max = 600 cooldown_min = 200 //100 deciseconds reduction per rank action_icon_state = "uncover" action_icon = 'modular_splurt/icons/effects/sex_spells.dmi' + clothes_req = NONE /obj/item/melee/touch_attack/uncover name = "\improper uncover touch" @@ -29,11 +30,15 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M - for(var/obj/item/W in src) - H.dropItemToGround(W, 1) - H.uncovered = 1 - spawn(10 MINUTES) - H.uncovered = 0 + if(H.client.prefs.magicalpref == "Yes") + for(var/obj/item/W in H) + H.dropItemToGround(W, 1) + if(!H.uncovered) + H.uncovered = 1 + else + H.uncovered = 0 + spawn(10 MINUTES) + H.uncovered = 0 return ..() From c46efb60d3c69dc49eb8df9409772d9963e4c157 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Sat, 1 Jul 2023 20:40:28 -0300 Subject: [PATCH 5/9] a --- modular_sand/code/datums/interactions/_interaction.dm | 4 ++-- modular_splurt/code/modules/spell/spell_types/groping.dm | 4 ++-- .../code/modules/spell/spell_types/penis_spells.dm | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modular_sand/code/datums/interactions/_interaction.dm b/modular_sand/code/datums/interactions/_interaction.dm index 5ba1efe8e84c..cda7e3e7ceed 100644 --- a/modular_sand/code/datums/interactions/_interaction.dm +++ b/modular_sand/code/datums/interactions/_interaction.dm @@ -99,12 +99,12 @@ return TRUE /// Actually doing the action, has a few checks to see if it's valid, usually overwritten to be make things actually happen and what-not -/datum/interaction/proc/do_action(mob/living/user, mob/living/target) +/datum/interaction/proc/do_action(mob/living/user, mob/living/target, var/ignore_distance=FALSE) if(!user_is_target) if(user == target) //tactical href fix to_chat(user, span_warning("You cannot target yourself.")) return - if(get_dist(user, target) > max_distance) + if(get_dist(user, target) > max_distance && !ignore_distance) to_chat(user, span_warning("They are too far away.")) return if(needs_physical_contact && !(user.Adjacent(target) && target.Adjacent(user))) diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index 9ee90b221413..aa0f7c1b442f 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -53,11 +53,11 @@ if(is_being_groped) if(prob(50)) var/datum/interaction/lewd/titgrope/TG = new - TG.do_action(is_being_groped, src) + TG.do_action(is_being_groped, src, TRUE) qdel(TG) else var/datum/interaction/lewd/finger/FI = new - FI.do_action(is_being_groped, src) + FI.do_action(is_being_groped, src, TRUE) qdel(FI) diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm index cdc97aaea237..743a0ff34d5f 100644 --- a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -72,10 +72,10 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.client.prefs.magicalpref == "Yes") - var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - P.modify_size(10) - spawn(15 MINUTES) - P.modify_size(-10) + var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) + P.modify_size(10) + spawn(15 MINUTES) + P.modify_size(-10) return ..() From bc6a7da803175e46b309ef020d9ce352054ba9dc Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Tue, 4 Jul 2023 07:17:18 +0300 Subject: [PATCH 6/9] hehehehaw --- modular_sand/code/datums/interactions/_interaction.dm | 2 +- modular_splurt/code/modules/spell/spell_types/aoe_lust.dm | 5 +++-- modular_splurt/code/modules/spell/spell_types/groping.dm | 5 +++-- .../code/modules/spell/spell_types/hypnotize.dm | 5 +++-- .../code/modules/spell/spell_types/penis_spells.dm | 8 ++++++-- modular_splurt/code/modules/spell/spell_types/uncover.dm | 2 +- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/modular_sand/code/datums/interactions/_interaction.dm b/modular_sand/code/datums/interactions/_interaction.dm index cda7e3e7ceed..81911393e5cc 100644 --- a/modular_sand/code/datums/interactions/_interaction.dm +++ b/modular_sand/code/datums/interactions/_interaction.dm @@ -107,7 +107,7 @@ if(get_dist(user, target) > max_distance && !ignore_distance) to_chat(user, span_warning("They are too far away.")) return - if(needs_physical_contact && !(user.Adjacent(target) && target.Adjacent(user))) + if(needs_physical_contact && !(user.Adjacent(target) && target.Adjacent(user)) && !ignore_distance) to_chat(user, span_warning("You cannot get to them.")) return if(!evaluate_user(user, silent = FALSE)) diff --git a/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm index 7e10c5285a9d..1bb6cb9c41aa 100644 --- a/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm +++ b/modular_splurt/code/modules/spell/spell_types/aoe_lust.dm @@ -12,6 +12,7 @@ /obj/effect/proc_holder/spell/self/aoe_lust/cast(mob/living/carbon/human/user) for(var/mob/living/carbon/human/HH in view(5, user)) - if(HH.client.prefs.magicalpref == "Yes") - HH.add_lust(50) + if(HH?.client?.prefs?.magicalpref == "No") + continue + HH.add_lust(50) diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index aa0f7c1b442f..e941aa2ce83c 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -19,8 +19,9 @@ /obj/effect/proc_holder/spell/grope/perform(list/targets, recharge = 1, mob/user = usr) var/list/possible = list() for(var/mob/living/carbon/human/H in view(7, user)) - if(H.client.prefs.magicalpref == "Yes") - possible.Add(H) + if(H?.client?.prefs?.magicalpref == "No") + continue + possible.Add(H) victim = input(user, "Choose the one to be groped", "Command") in possible if(QDELETED(src) || QDELETED(user)) return diff --git a/modular_splurt/code/modules/spell/spell_types/hypnotize.dm b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm index 2024779ce072..ee785fede0f0 100644 --- a/modular_splurt/code/modules/spell/spell_types/hypnotize.dm +++ b/modular_splurt/code/modules/spell/spell_types/hypnotize.dm @@ -20,8 +20,9 @@ /obj/effect/proc_holder/spell/hypno/perform(list/targets, recharge = 1, mob/user = usr) var/list/possible = list() for(var/mob/living/carbon/human/H in view(7, user)) - if(H.client.prefs.magicalpref == "Yes") - possible.Add(H) + if(H?.client?.prefs?.magicalpref == "No") + continue + possible.Add(H) victim = input(user, "Choose the one to be hypnotized", "Command") in possible hypnophrase = input(user, "Choose the phrase", "Command") as text if(QDELETED(src) || QDELETED(user)) diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm index 743a0ff34d5f..d91dee5d0ed2 100644 --- a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -28,7 +28,9 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.client.prefs.magicalpref == "Yes") + if(H?.client?.prefs?.magicalpref == "No") + return + else var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) P.modify_size(30) spawn(15 MINUTES) @@ -71,7 +73,9 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.client.prefs.magicalpref == "Yes") + if(H?.client?.prefs?.magicalpref == "No") + return + else var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) P.modify_size(10) spawn(15 MINUTES) diff --git a/modular_splurt/code/modules/spell/spell_types/uncover.dm b/modular_splurt/code/modules/spell/spell_types/uncover.dm index cfda320009b6..37c5a44707e2 100644 --- a/modular_splurt/code/modules/spell/spell_types/uncover.dm +++ b/modular_splurt/code/modules/spell/spell_types/uncover.dm @@ -30,7 +30,7 @@ do_sparks(4, FALSE, M.loc) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.client.prefs.magicalpref == "Yes") + if(H?.client?.prefs?.magicalpref == "Yes") for(var/obj/item/W in H) H.dropItemToGround(W, 1) if(!H.uncovered) From 86286a96b3a5d7bcd7bb2d85f0046932e18b2317 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:18:51 -0300 Subject: [PATCH 7/9] Updating to master --- modular_splurt/code/modules/spell/spell_types/groping.dm | 4 ++-- tgstation.dme | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index e941aa2ce83c..7a1462869c29 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -53,11 +53,11 @@ . = ..() if(is_being_groped) if(prob(50)) - var/datum/interaction/lewd/titgrope/TG = new + var/datum/interaction/lewd/titgrope_self/TG = new TG.do_action(is_being_groped, src, TRUE) qdel(TG) else - var/datum/interaction/lewd/finger/FI = new + var/datum/interaction/lewd/fingerass_self/FI = new FI.do_action(is_being_groped, src, TRUE) qdel(FI) diff --git a/tgstation.dme b/tgstation.dme index f9bd7252c8ff..732b89348751 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4514,8 +4514,8 @@ #include "modular_splurt\code\game\objects\items\armor_kits.dm" #include "modular_splurt\code\game\objects\items\cards_ids.dm" #include "modular_splurt\code\game\objects\items\cosmetics.dm" -#include "modular_splurt\code\game\objects\items\gift.dm" #include "modular_splurt\code\game\objects\items\fluff.dm" +#include "modular_splurt\code\game\objects\items\gift.dm" #include "modular_splurt\code\game\objects\items\granters.dm" #include "modular_splurt\code\game\objects\items\holy_weapons.dm" #include "modular_splurt\code\game\objects\items\manuals.dm" From 06a9764f7d784e9064a87e5c1b62cd8bfd03d7a5 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Thu, 11 Jan 2024 20:27:18 -0300 Subject: [PATCH 8/9] Brug --- modular_sand/code/datums/interactions/_interaction.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modular_sand/code/datums/interactions/_interaction.dm b/modular_sand/code/datums/interactions/_interaction.dm index de8143d8b0ad..074eb8961d03 100644 --- a/modular_sand/code/datums/interactions/_interaction.dm +++ b/modular_sand/code/datums/interactions/_interaction.dm @@ -106,14 +106,16 @@ return TRUE /// Actually doing the action, has a few checks to see if it's valid, usually overwritten to be make things actually happen and what-not + /datum/interaction/proc/do_action(mob/living/user, mob/living/target) if(!(interaction_flags & INTERACTION_FLAG_USER_IS_TARGET)) if(user == target) //tactical href fix to_chat(user, span_warning("You cannot target yourself.")) return - if(get_dist(user, target) > max_distance && !ignore_distance) + if(get_dist(user, target) > max_distance) to_chat(user, span_warning("They are too far away.")) return + if(interaction_flags & INTERACTION_FLAG_ADJACENT && !(user.Adjacent(target) && target.Adjacent(user))) to_chat(user, span_warning("You cannot get to them.")) return From 96cf674d2c8cb4cb0e192ef219eb9deb9ea3ebb0 Mon Sep 17 00:00:00 2001 From: Comicao1 <33708588+Comicao1@users.noreply.github.com> Date: Sun, 10 Mar 2024 08:42:42 -0300 Subject: [PATCH 9/9] Done --- modular_sand/code/datums/interactions/_interaction.dm | 6 +++--- modular_splurt/code/modules/mob/living/living.dm | 8 +++++++- .../code/modules/spell/spell_types/eyes_of_lust.dm | 4 ---- .../code/modules/spell/spell_types/groping.dm | 11 +++++------ .../code/modules/spell/spell_types/penis_spells.dm | 3 +-- .../code/modules/spell/spell_types/uncover.dm | 8 ++++++-- 6 files changed, 22 insertions(+), 18 deletions(-) diff --git a/modular_sand/code/datums/interactions/_interaction.dm b/modular_sand/code/datums/interactions/_interaction.dm index 074eb8961d03..e85ddd6d2410 100644 --- a/modular_sand/code/datums/interactions/_interaction.dm +++ b/modular_sand/code/datums/interactions/_interaction.dm @@ -107,16 +107,16 @@ /// Actually doing the action, has a few checks to see if it's valid, usually overwritten to be make things actually happen and what-not -/datum/interaction/proc/do_action(mob/living/user, mob/living/target) +/datum/interaction/proc/do_action(mob/living/user, mob/living/target, var/ignore_distance=0) //ignore distance for magic if(!(interaction_flags & INTERACTION_FLAG_USER_IS_TARGET)) if(user == target) //tactical href fix to_chat(user, span_warning("You cannot target yourself.")) return - if(get_dist(user, target) > max_distance) + if(get_dist(user, target) > max_distance && !ignore_distance) to_chat(user, span_warning("They are too far away.")) return - if(interaction_flags & INTERACTION_FLAG_ADJACENT && !(user.Adjacent(target) && target.Adjacent(user))) + if(interaction_flags & INTERACTION_FLAG_ADJACENT && !(user.Adjacent(target) && target.Adjacent(user)) && !ignore_distance) to_chat(user, span_warning("You cannot get to them.")) return if(!evaluate_user(user, silent = FALSE)) diff --git a/modular_splurt/code/modules/mob/living/living.dm b/modular_splurt/code/modules/mob/living/living.dm index 2638d8e6c6a1..2a458868c016 100644 --- a/modular_splurt/code/modules/mob/living/living.dm +++ b/modular_splurt/code/modules/mob/living/living.dm @@ -36,7 +36,7 @@ if("Toggle Penis") has_penis = !has_penis if("Toggle Pussy") - has_vagina = !has_vagina + has_vagina = !has_vagina if("Toggle Balls") has_balls = !has_balls @@ -89,3 +89,9 @@ set desc = "Switch sharp/fuzzy scaling for current mob." appearance_flags ^= PIXEL_SCALE fuzzy = !fuzzy + +/mob/living/Initialize(mapload) + . = ..() + for(var/datum/atom_hud/data/human/arousal/arousal_hud in GLOB.huds) + arousal_hud.add_to_hud(src) + diff --git a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm index cf7a2278b793..5a837abc42ce 100644 --- a/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm +++ b/modular_splurt/code/modules/spell/spell_types/eyes_of_lust.dm @@ -14,10 +14,6 @@ /mob/living/carbon/human/Life() . = ..() - if(has_quirk(/datum/quirk/sex_magician)) - var/datum/atom_hud/data/human/arousal/hud = GLOB.huds[DATA_HUD_AROUSAL] - for(var/mob/living/carbon/human/H in view(7, src)) - hud.add_to_hud(H) arousal_hud_update() /mob/living/carbon/human/proc/arousal_hud_update() diff --git a/modular_splurt/code/modules/spell/spell_types/groping.dm b/modular_splurt/code/modules/spell/spell_types/groping.dm index 7a1462869c29..d302c75edaf5 100644 --- a/modular_splurt/code/modules/spell/spell_types/groping.dm +++ b/modular_splurt/code/modules/spell/spell_types/groping.dm @@ -52,14 +52,13 @@ /mob/living/carbon/human/Life() . = ..() if(is_being_groped) + var/datum/interaction/I if(prob(50)) - var/datum/interaction/lewd/titgrope_self/TG = new - TG.do_action(is_being_groped, src, TRUE) - qdel(TG) + I = SSinteractions.interactions["/datum/interaction/lewd/titgrope_self"] + I.do_action(is_being_groped, src, TRUE) else - var/datum/interaction/lewd/fingerass_self/FI = new - FI.do_action(is_being_groped, src, TRUE) - qdel(FI) + I = SSinteractions.interactions["/datum/interaction/lewd/fingerass_self"] + I.do_action(is_being_groped, src, TRUE) /datum/quirk/sex_magician diff --git a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm index d91dee5d0ed2..12c450253491 100644 --- a/modular_splurt/code/modules/spell/spell_types/penis_spells.dm +++ b/modular_splurt/code/modules/spell/spell_types/penis_spells.dm @@ -78,8 +78,7 @@ else var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) P.modify_size(10) - spawn(15 MINUTES) - P.modify_size(-10) + addtimer(CALLBACK(P, /obj/item/organ/genital/proc/modify_size, -10), 10 MINUTES) return ..() diff --git a/modular_splurt/code/modules/spell/spell_types/uncover.dm b/modular_splurt/code/modules/spell/spell_types/uncover.dm index 37c5a44707e2..972f8965f286 100644 --- a/modular_splurt/code/modules/spell/spell_types/uncover.dm +++ b/modular_splurt/code/modules/spell/spell_types/uncover.dm @@ -19,6 +19,11 @@ on_use_sound = 'sound/magic/disintegrate.ogg' icon_state = "disintegrate" item_state = "disintegrate" + var/mob/living/carbon/user_saved = null + +/mob/living/carbon/human/proc/remove_uncovered() //would be problematic adding it to the touch attack since it is deleted right after the hit. + if(uncovered) + uncovered = 0 /obj/item/melee/touch_attack/uncover/afterattack(atom/target, mob/living/carbon/user, proximity) if(!proximity || target == user || !ismob(target) || !iscarbon(user) || user.lying || user.handcuffed) //exploding after touching yourself would be bad @@ -37,8 +42,7 @@ H.uncovered = 1 else H.uncovered = 0 - spawn(10 MINUTES) - H.uncovered = 0 + addtimer(CALLBACK(H, /mob/living/carbon/human/proc/remove_uncovered), 10 MINUTES) return ..()