mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
Adds the Clicker (#5106)
## About The Pull Request I was surprised to see that no one had ever added a clicker item, so I decided to take the challenge and tried to add one myself. This little item can be found in the lustwish vendors. It makes a 'click' sound when interacted. The sprite is inspired by the flash, but remade with the lustwish 'theme'. Dominant characters who use this are also able to 'reward' submissive characters. The submissive characters will do an emote (which shares the cooldown with the *snap interaction, that being 10 seconds). They will also get a tiny mood buff that will last for two minutes, and doesn't stack. It works on cyborgs with the submissive module (without the mood buff, clearly), and cyborgs with the dominant module have access to the toy. It can be bought from the lustwish vendor. <img width="400" height="400" alt="clickerpreview" src="https://github.com/user-attachments/assets/9fbbecb7-74a7-46ed-a049-a33892237857" /> ## Why It's Good For The Game We've got an overwhelming amount of untrained bottoms. ## Proof Of Testing https://github.com/user-attachments/assets/72b15bf2-d468-4e72-ae64-7216a65cc12c Here's the borg module version.  </details> ## Changelog 🆑 add: Lustwish presents the Clicker! With this you will now finally be able to train and condition your pets. Visit any Lustwish vendor to buy your own. /🆑 --------- Co-authored-by: Alexis <catmc8565@gmail.com>
This commit is contained in:
@@ -331,4 +331,5 @@
|
||||
/obj/item/spanking_pad,
|
||||
/obj/item/tickle_feather,
|
||||
/obj/item/clothing/erp_leash,
|
||||
/obj/item/clicker
|
||||
)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
/obj/item/restraints/handcuffs/lewd,
|
||||
/obj/item/reagent_containers/cup/lewd_filter,
|
||||
/obj/item/assembly/signaler, //because it's used for several toys
|
||||
/obj/item/clicker,
|
||||
|
||||
//clothing
|
||||
/obj/item/clothing/mask/ballgag,
|
||||
|
||||
+5
@@ -232,3 +232,8 @@
|
||||
. = ..()
|
||||
if(CONFIG_GET(flag/disable_lewd_items))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/obj/item/clicker/Initialize(mapload)
|
||||
. = ..()
|
||||
if(CONFIG_GET(flag/disable_lewd_items))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
GLOBAL_LIST_INIT(erp_items, list(
|
||||
/obj/item/bdsm_candle,
|
||||
/obj/item/clicker,
|
||||
/obj/item/clothing/ears/kinky_headphones,
|
||||
/obj/item/clothing/erp_leash,
|
||||
/obj/item/clothing/glasses/blindfold/kinky,
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/obj/item/clicker
|
||||
name = "clicker"
|
||||
desc = "A small clicking toy that fits in the palm of your hand, typically used to condition pets into obedience. It makes a satisfying 'click' sound when pressed."
|
||||
icon = 'modular_zubbers/icons/obj/lewd.dmi'
|
||||
icon_state = "clicker_pink"
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/clicker/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/reskinable_item, /datum/atom_skin/clicker)
|
||||
|
||||
/datum/atom_skin/clicker
|
||||
abstract_type = /datum/atom_skin/clicker
|
||||
|
||||
/datum/atom_skin/clicker/pink
|
||||
preview_name = "Pink"
|
||||
new_icon_state = "clicker_pink"
|
||||
|
||||
/datum/atom_skin/clicker/teal
|
||||
preview_name = "Teal"
|
||||
new_icon_state = "clicker_teal"
|
||||
|
||||
/obj/item/clicker/proc/click(atom/source, mob/user)
|
||||
SIGNAL_HANDLER
|
||||
source.balloon_alert(user, "click!")
|
||||
playsound(source, "modular_zubbers/sound/lewd/clicker.ogg", 40, FALSE)
|
||||
|
||||
/obj/item/clicker/attack_self(mob/user)
|
||||
. = ..()
|
||||
click(src, user)
|
||||
|
||||
// If the user has the dominant aura quirk, nearby bottoms will react to the click.
|
||||
if(istype(user, /mob/living))
|
||||
var/mob/living/living_user = user
|
||||
if(living_user.has_quirk(/datum/quirk/dominant_aura) && TIMER_COOLDOWN_FINISHED(living_user, DOMINANT_COOLDOWN_SNAP))
|
||||
for(var/mob/living/carbon/human/sub in hearers(world.view / 2, living_user))
|
||||
if(!sub.has_quirk(/datum/quirk/well_trained) || sub == living_user || sub.stat == DEAD)
|
||||
continue
|
||||
|
||||
if(get_dist(sub, living_user) > world.view / 2)
|
||||
continue
|
||||
sub.dir = get_dir(sub, living_user)
|
||||
sub.emote("me", 1, "suddenly perks up in attention!", TRUE)
|
||||
to_chat(sub, span_purple("You perk up in attention hearing <b>[living_user]</b>'s click!"))
|
||||
// Short mood boost for flavour
|
||||
sub.add_mood_event("good_pet", /datum/mood_event/good_pet)
|
||||
// Shivering animation
|
||||
animate(sub, pixel_w = 1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
|
||||
for(var/i in 1 to 1 SECONDS / (0.2 SECONDS))
|
||||
animate(pixel_w = -2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE)
|
||||
animate(pixel_w = 2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE)
|
||||
animate(pixel_w = -1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE)
|
||||
|
||||
//For the borgs
|
||||
for(var/mob/living/silicon/robot/borg_sub in hearers(world.view / 2, living_user))
|
||||
if(!borg_sub.has_quirk(/datum/quirk/well_trained) || borg_sub == living_user || borg_sub.stat == DEAD)
|
||||
continue
|
||||
borg_sub.dir = get_dir(borg_sub, living_user)
|
||||
borg_sub.emote("me", 1, "suddenly perks up in attention!", TRUE)
|
||||
to_chat(borg_sub, span_purple("You perk up in attention hearing <b>[living_user]</b>'s click!"))
|
||||
// Shivering animation
|
||||
animate(borg_sub, pixel_w = 1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
|
||||
for(var/i in 1 to 1 SECONDS / (0.2 SECONDS))
|
||||
animate(pixel_w = -2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE)
|
||||
animate(pixel_w = 2, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE|ANIMATION_CONTINUE)
|
||||
animate(borg_sub, pixel_w = -1, time = 0.1 SECONDS, flags = ANIMATION_RELATIVE)
|
||||
|
||||
// Shares cooldown with the dominant aura snap
|
||||
TIMER_COOLDOWN_START(living_user, DOMINANT_COOLDOWN_SNAP, 10 SECONDS)
|
||||
|
||||
/datum/mood_event/good_pet
|
||||
description = span_nicegreen("Being obedient feels rewarding!")
|
||||
mood_change = 2
|
||||
timeout = 2 MINUTES
|
||||
@@ -22,9 +22,19 @@
|
||||
/obj/item/clothing/under/costume/loincloth/cloth/sensor = 6,
|
||||
/obj/item/clothing/shoes/jackboots/toeless = 6,
|
||||
)
|
||||
),
|
||||
|
||||
list(
|
||||
"name" = "Toys",
|
||||
"icon" = FA_ICON_MAGIC_WAND_SPARKLES,
|
||||
"products" = list(
|
||||
/obj/item/clicker = 6,
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
zubbers_premium = list(
|
||||
/obj/item/clothing/neck/kink_collar/locked/gps = 3,
|
||||
/obj/item/holosign_creator/sex = 6,
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 920 B |
Binary file not shown.
@@ -9463,6 +9463,7 @@
|
||||
#include "modular_zubbers\code\modules\languages\siikmaas.dm"
|
||||
#include "modular_zubbers\code\modules\languages\uncommon.dm"
|
||||
#include "modular_zubbers\code\modules\languages\vampiric.dm"
|
||||
#include "modular_zubbers\code\modules\lewd_machinery\clicker.dm"
|
||||
#include "modular_zubbers\code\modules\lewd_machinery\lustwish.dm"
|
||||
#include "modular_zubbers\code\modules\lewd_machinery\sex_barrier.dm"
|
||||
#include "modular_zubbers\code\modules\limbgrowncorpses\limbgrowerblanks.dm"
|
||||
|
||||
Reference in New Issue
Block a user