mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
Revert "Revert "Merge pull request #135 from SPLURT-Station/research-table""
This reverts commit 2a1ee13ad4.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
//Equipement slots
|
||||
//Equipment slots
|
||||
#define GENITAL_EQUIPEMENT_CONDOM "condom"
|
||||
#define GENITAL_EQUIPMENT_SOUNDING "sounding"
|
||||
#define GENITAL_EQUIPMENT_VIBRATOR "vibrator"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// /datum/component/container_item
|
||||
/// (atom/container, mob/user) - returns bool
|
||||
#define COMSIG_CONTAINER_TRY_ATTACH "container_try_attach"
|
||||
|
||||
#define COMSIG_MOB_CAME "mob_came"
|
||||
|
||||
@@ -117,9 +117,9 @@
|
||||
return
|
||||
|
||||
if(write_log_user)
|
||||
user.log_message("[write_log_user] [target]", INDIVIDUAL_ATTACK_LOG)
|
||||
user.log_message("[write_log_user] [target]", LOG_ATTACK)
|
||||
if(write_log_target)
|
||||
target.log_message("[write_log_target] [user]", INDIVIDUAL_ATTACK_LOG)
|
||||
target.log_message("[write_log_target] [user]", LOG_ATTACK)
|
||||
|
||||
display_interaction(user, target)
|
||||
post_interaction(user, target)
|
||||
|
||||
@@ -895,6 +895,7 @@
|
||||
else
|
||||
H.mob_climax(TRUE, "sex", partner, !cumin, target_gen)
|
||||
set_lust(0)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_CAME, target_orifice, partner)
|
||||
|
||||
/mob/living/proc/is_fucking(mob/living/partner, orifice)
|
||||
if(partner == last_partner && orifice == last_orifice)
|
||||
|
||||
99
modular_splurt/code/game/machinery/research_table.dm
Normal file
99
modular_splurt/code/game/machinery/research_table.dm
Normal file
@@ -0,0 +1,99 @@
|
||||
/obj/machinery/research_table
|
||||
name = "Sex Research Rack"
|
||||
desc = "The rack with silicone padding and plenty of straps for subject restraining.\
|
||||
\nA lot of sensors are connected to this device that record the state of the body during orgasm. Well, you know... For scientific purposes..."
|
||||
icon = 'modular_splurt/icons/obj/research_rack.dmi'
|
||||
icon_state = "rack"
|
||||
can_buckle = TRUE
|
||||
density = TRUE
|
||||
buckle_lying = TRUE
|
||||
layer = TABLE_LAYER
|
||||
obj_flags = CAN_BE_HIT|SHOVABLE_ONTO
|
||||
pass_flags = LETPASSTHROW //You can throw objects over this, despite it's density.")
|
||||
circuit = /obj/item/circuitboard/machine/research_table
|
||||
var/self_unbuckle_time = 3 MINUTES
|
||||
var/static/list/users = list()
|
||||
var/tier = 1
|
||||
var/multiplier = 100
|
||||
var/configured = FALSE
|
||||
|
||||
/obj/machinery/research_table/examine(mob/user)
|
||||
. = ..()
|
||||
if(!configured)
|
||||
. += "<span class='notice'>It's not configured yet, you could use a <b>multitool</b> to configure it.</span>"
|
||||
|
||||
/obj/machinery/research_table/multitool_act(mob/living/user, obj/item/I)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
if(do_after(user, 5 SECONDS, TRUE, src))
|
||||
configured = !configured
|
||||
to_chat(user, "<span class='notice'>The research table is now [configured ? "configured" : "not configured"].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to stand still and uninterrupted for 5 seconds!</span>")
|
||||
return STOP_ATTACK_PROC_CHAIN
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/research_table/MouseDrop_T(mob/living/M, mob/living/user)
|
||||
if(get_turf(M) != get_turf(src) && Adjacent(M) && Adjacent(user) && user.stat == CONSCIOUS)
|
||||
var/message = M == user ? "[M] climbs on the [src]." : "[user] puts [M] on the [src]."
|
||||
var/self_message = M == user ? "You climb on the [src]." : "You put [M] on the [src]."
|
||||
visible_message(message, self_message)
|
||||
M.forceMove(get_turf(src))
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/research_table/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
|
||||
if(!handle_unbuckling(buckled_mob, user))
|
||||
if(buckled_mob == user)
|
||||
to_chat(user, "<span class='warning'>You fail to unbuckle yourself.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to unbuckle [buckled_mob].</span>")
|
||||
return
|
||||
UnregisterSignal(buckled_mob, COMSIG_MOB_CAME)
|
||||
say("User left, resetting scanners.")
|
||||
return ..()
|
||||
|
||||
/obj/machinery/research_table/proc/handle_unbuckling(mob/living/buckled_mob, user)
|
||||
if(buckled_mob == user)
|
||||
if(do_after(user, self_unbuckle_time, FALSE, src))
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/research_table/buckle_mob(mob/living/buckled_mob, force, check_loc)
|
||||
RegisterSignal(buckled_mob, COMSIG_MOB_CAME, .proc/on_cum)
|
||||
say("New user detected, tracking data.")
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/research_table/RefreshParts()
|
||||
var/parts = 0
|
||||
tier = 0
|
||||
for(var/obj/item/stock_parts/part in component_parts)
|
||||
tier += part.rating
|
||||
parts++
|
||||
tier /= parts
|
||||
|
||||
/obj/machinery/research_table/proc/on_cum(mob/living/carbon/buckled_mob, obj/item/organ/genital/target_orifice, mob/living/partner)
|
||||
if(!configured)
|
||||
say("Failed to get any data, the table is not configured!")
|
||||
return
|
||||
if(!istype(buckled_mob))
|
||||
say("Failed to get any data from the subject, it is not a human.")
|
||||
return
|
||||
if(buckled_mob.last_partner == buckled_mob)
|
||||
say("Failed to get any data from the subject, two are needed for the experiment!")
|
||||
return
|
||||
if(users[buckled_mob.name] > 5)
|
||||
say("There is already too much data from this subject.")
|
||||
return
|
||||
users[buckled_mob.name] += 1
|
||||
var/points_awarded = 0
|
||||
for(var/obj/item/organ/genital/genital in buckled_mob.internal_organs)
|
||||
if(istype(genital, /obj/item/organ/genital/breasts))
|
||||
var/obj/item/organ/genital/breasts/breasts = genital
|
||||
points_awarded += breasts.fluid_rate + breasts.breast_values[breasts.size] // Breasts use letters instead of numbers!
|
||||
continue
|
||||
points_awarded += genital.fluid_rate + genital.size
|
||||
points_awarded *= tier
|
||||
points_awarded *= multiplier
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points_awarded))
|
||||
say("Obtained [points_awarded] point\s from the session.")
|
||||
@@ -0,0 +1,12 @@
|
||||
/obj/item/circuitboard/machine/research_table
|
||||
name = "Sex Research Rack (Machine Board)"
|
||||
build_path = /obj/machinery/research_table
|
||||
req_components = list(
|
||||
/obj/item/dildo = 1,
|
||||
/obj/item/stack/cable_coil = 15,
|
||||
/obj/item/stack/sheet/mineral/silver = 15,
|
||||
/obj/item/restraints/handcuffs = 1,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/scanning_module = 2,
|
||||
/obj/item/stock_parts/matter_bin = 1
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/design/board/sex_research
|
||||
name = "Machine Design (Sex Research Rack)"
|
||||
desc = "Allows for the construction of circuit boards used to build sex research racks"
|
||||
id = "sex_research"
|
||||
build_path = /obj/item/circuitboard/machine/research_table
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -0,0 +1,3 @@
|
||||
/datum/techweb_node/datatheory/New()
|
||||
design_ids += "sex_research"
|
||||
. = ..()
|
||||
BIN
modular_splurt/icons/obj/research_rack.dmi
Normal file
BIN
modular_splurt/icons/obj/research_rack.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 731 B |
@@ -4194,12 +4194,14 @@
|
||||
#include "modular_splurt\code\game\areas\shuttles.dm"
|
||||
#include "modular_splurt\code\game\gamemodes\objectives.dm"
|
||||
#include "modular_splurt\code\game\machinery\chem_alert.dm"
|
||||
#include "modular_splurt\code\game\machinery\research_table.dm"
|
||||
#include "modular_splurt\code\game\machinery\computer\slavery.dm"
|
||||
#include "modular_splurt\code\game\object\effects\landmarks.dm"
|
||||
#include "modular_splurt\code\game\object\items\cards_ids.dm"
|
||||
#include "modular_splurt\code\game\object\items\cosmetics.dm"
|
||||
#include "modular_splurt\code\game\object\items\mesmetron.dm"
|
||||
#include "modular_splurt\code\game\object\items\circuitboards\computer_circuitboards.dm"
|
||||
#include "modular_splurt\code\game\object\items\circuitboards\machine_circuitboards.dm"
|
||||
#include "modular_splurt\code\game\object\items\devices\radio\electropack.dm"
|
||||
#include "modular_splurt\code\game\object\items\implants\implant_slaver.dm"
|
||||
#include "modular_splurt\code\game\object\items\robot\robot_upgrades.dm"
|
||||
@@ -4285,7 +4287,9 @@
|
||||
#include "modular_splurt\code\modules\reagents\chemistry\recipes\lewd.dm"
|
||||
#include "modular_splurt\code\modules\research\designs\biogenerator_designs.dm"
|
||||
#include "modular_splurt\code\modules\research\designs\power_designs.dm"
|
||||
#include "modular_splurt\code\modules\research\designs\machine_designs\machine_designs_all_misc.dm"
|
||||
#include "modular_splurt\code\modules\research\techweb\nodes\bluespace_nodes.dm"
|
||||
#include "modular_splurt\code\modules\research\techweb\nodes\misc_nodes.dm"
|
||||
#include "modular_splurt\code\modules\ruins\objects_and_mobs\ash_walker_den.dm"
|
||||
#include "modular_splurt\code\modules\ruins\spaceruin_code\hilbertshotel.dm"
|
||||
#include "modular_splurt\code\modules\shuttle\slaver.dm"
|
||||
|
||||
Reference in New Issue
Block a user