Tweaks Electric Stimulator + Adds Bonermeter

This commit is contained in:
BurgerLua
2019-04-16 11:55:54 -07:00
parent 05acb8c7a9
commit dba2b6deaf
3 changed files with 73 additions and 17 deletions
@@ -0,0 +1,29 @@
/obj/item/integrated_circuit/input/bonermeter
name = "bonermeter"
desc = "Detects the target's arousal and various statistics about the target's arousal levels. Invasive!"
icon_state = "medscan"
complexity = 4
inputs = list("target" = IC_PINTYPE_REF)
outputs = list(
"current arousal" = IC_PINTYPE_NUMBER,
"minimum arousal" = IC_PINTYPE_NUMBER,
"maximum arousal" = IC_PINTYPE_NUMBER,
"can be aroused" = IC_PINTYPE_BOOLEAN
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
power_draw_per_use = 40
/obj/item/integrated_circuit/input/bonermeter/do_work()
var/mob/living/L = get_pin_data_as_type(IC_INPUT, 1, /mob/living)
if(!istype(L) || !L.Adjacent(get_turf(src)) ) //Invalid input
return
set_pin_data(IC_OUTPUT, 1, L.getArousalLoss())
set_pin_data(IC_OUTPUT, 2, L.min_arousal)
set_pin_data(IC_OUTPUT, 3, L.max_arousal)
set_pin_data(IC_OUTPUT, 4, L.canbearoused)
push_data()
activate_pin(2)
@@ -1,33 +1,59 @@
/obj/item/integrated_circuit/manipulation/electric_stimulator
name = "electronic stimulation module"
desc = "Used to induce sexual stimulation with electricity."
desc = "Used to induce a target with sexual stimulation with electricity."
icon_state = "power_relay"
extended_desc = "The circuit accepts a reference to a person and upon activation, attempts to stimulate them to orgasm."
complexity = 10
size = 3
inputs = list("target" = IC_PINTYPE_REF)
outputs = list()
activators = list("fire" = IC_PINTYPE_PULSE_IN)
extended_desc = "The circuit accepts a reference to a person, as well as a number representing the strength of the shock, and upon activation, attempts to stimulate them to orgasm. The number ranges from -100 to 100, with negative numbers reducing arousal and positive numbers increasing it."
complexity = 15
size = 2
inputs = list("target" = IC_PINTYPE_REF, "strength" = IC_PINTYPE_NUMBER)
outputs = list("arousal gain"=IC_PINTYPE_NUMBER)
activators = list("fire" = IC_PINTYPE_PULSE_IN, "on success" = IC_PINTYPE_PULSE_OUT, "on fail" = IC_PINTYPE_PULSE_OUT, "on orgasm" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
power_draw_per_use = 500
cooldown_per_use = 50
ext_cooldown = 25
/obj/item/integrated_circuit/manipulation/electric_stimulator/do_work()
..()
set_pin_data(IC_OUTPUT, 1, 0)
var/mob/living/M = get_pin_data_as_type(IC_INPUT, 1, /mob/living)
if(!check_target(M))
return
if(ismob(M) && M.canbearoused)
if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna())
var/mob/living/carbon/human/H = M
var/orgasm_message = pick("A sharp pulse of electricity pushes you to orgasm!", "You feel a jolt of electricity force you into orgasm!")
H.visible_message("<span class='warning'>\The [assembly] electrodes shock [H]!</span>", "<span class='warning'>[orgasm_message]</span>")
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
H.mob_climax(forced_climax=TRUE)
var/arousal_gain = CLAMP(get_pin_data(IC_INPUT, 2)*(35/100),-35,35)
set_pin_data(IC_OUTPUT, 1, arousal_gain)
if(ismob(M) && M.canbearoused && arousal_gain != 0)
var/orgasm = FALSE
if(arousal_gain > 0)
if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna())
var/mob/living/carbon/human/H = M
var/orgasm_message = pick("A sharp pulse of electricity pushes you to orgasm!", "You feel a jolt of electricity force you into orgasm!")
H.visible_message("<span class='warning'>\The [assembly] electrodes shock [H]!</span>", "<span class='warning'>[orgasm_message]</span>")
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
H.mob_climax(forced_climax=TRUE)
orgasm = TRUE
else
M.adjustArousalLoss(arousal_gain)
var/stimulate_message = pick("You feel a sharp warming tingle of electricity through your body!", "A burst of arousing electricity flows through your body!")
M.visible_message("<span class='warning'>\The [assembly] electrodes shock [M]!</span>", "<span class='warning'>[stimulate_message]</span>")
else
M.adjustArousalLoss(35)
var/stimulate_message = pick("You feel a sharp warming tingle of electricity through your body!", "A burst of arousing electricity flows through your body!")
var/stimulate_message = pick("You feel a dull prickle of electricity through your body!", "A burst of dull electricity flows through your body!")
M.visible_message("<span class='warning'>\The [assembly] electrodes shock [M]!</span>", "<span class='warning'>[stimulate_message]</span>")
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
M.adjustArousalLoss(arousal_gain)
playsound(src, "sound/effects/light_flicker.ogg", 30, 1)
push_data()
activate_pin(2)
if(orgasm) activate_pin(4)
else
visible_message("<span class='warning'>\The [assembly] electrodes fail to shock [M]!</span>")
push_data()
activate_pin(3)
/*
{"assembly":{"type":"type-a electronic mechanism"},"components":[{"type":"bonermeter"},{"type":"electronic stimulation module"},{"type":"number pad"},{"type":"local locator"},{"type":"text-to-speech circuit","inputs":[[1,0,"Orgasm"]]},{"type":"text-to-speech circuit","inputs":[[1,0,"Scanned"]]},{"type":"text-to-speech circuit"}],"wires":[[[1,"I",1],[4,"O",1]],[[1,"A",1],[2,"A",2]],[[1,"A",2],[6,"A",1]],[[2,"I",1],[4,"O",1]],[[2,"I",2],[3,"O",1]],[[2,"A",1],[4,"A",2]],[[2,"A",4],[5,"A",1]],[[3,"A",1],[4,"A",1]]]}
/*
+1
View File
@@ -2897,6 +2897,7 @@
#include "modular_citadel\code\modules\events\blob.dm"
#include "modular_citadel\code\modules\events\wizard\magicarp.dm"
#include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm"
#include "modular_citadel\code\modules\integrated_electronics\subtypes\input.dm"
#include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm"
#include "modular_citadel\code\modules\jobs\dresscode_values.dm"
#include "modular_citadel\code\modules\jobs\job_types\captain.dm"