diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
index 4a9f793f7ea..b718453f2ef 100644
--- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
@@ -224,7 +224,7 @@
has_items = list(
/obj/item/weapon/rig/nikki,
/obj/item/clothing/head/fluff/nikki,
- /obj/item/clothing/under/fluff/nikki,
+ /obj/item/clothing/under/skirt/outfit/fluff/nikki,
/obj/item/clothing/shoes/fluff/nikki)
/*
diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
index 31216ae374a..77ba696f2b1 100644
--- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
@@ -2008,15 +2008,24 @@ Departamental Swimsuits, for general use
desc = "A special hat, removed from its owner."
//Ryumi: Nikki Yumeno
-/obj/item/clothing/under/skirt/outfit/fluff/nikki
+/obj/item/clothing/under/skirt/outfit/fluff/nikki
name = "dorky outfit"
- desc = "A little witch costume that looks like it's been worn as ordinary clothes. Who in their right mind would(n't)...??"
+ desc = "A little witch costume that looks like it's been worn as ordinary clothes. Who in their right mind would...??"
icon = 'icons/vore/custom_clothes_vr.dmi'
- item_icons = list(slot_w_uniform_str = 'icons/vore/custom_onmob_vr.dmi')
+ icon_override = 'icons/vore/custom_onmob_vr.dmi'
icon_state = "nikki_outfit"
item_state = "nikki_outfit"
+ item_icons = list()
sensor_mode = 3 // I'm a dumbass and forget these all the time please understand :(
+/obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
+ if(..())
+ if (M.ckey == "ryumi")
+ return 1
+ else if (M.get_active_hand() == src)
+ to_chat(M, "What the heck? \The [src] doesn't fit!")
+ return 0
+
/obj/item/clothing/shoes/fluff/nikki
name = "non-magical boots"
desc = "Boots optimally built for a dork. They don't sparkle or anything, but you can imagine them doing that when you click the heels together."
@@ -2025,6 +2034,14 @@ Departamental Swimsuits, for general use
icon_state = "nikki_boots"
item_state = "nikki_boots"
+/obj/item/clothing/shoes/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
+ if(..())
+ if (M.ckey == "ryumi")
+ return 1
+ else if (M.get_active_hand() == src)
+ to_chat(M, "What the heck? \The [src] doesn't fit!")
+ return 0
+
/obj/item/clothing/suit/fluff/nikki //see /obj/item/weapon/rig/nikki
name = "cape"
desc = "Snazzy!"
@@ -2055,7 +2072,6 @@ Departamental Swimsuits, for general use
w_class = ITEMSIZE_LARGE // THIS HAT IS FUCKIN HUGE YO
var/owner = "ryumi"
var/obj/item/device/perfect_tele/translocator = null // The translocator installed inside, if there is one. Gotta go out and get it first!
- var/disaster_chance = 75 // The % chance that, if someone who isn't Nikki puts on the hat, they will be involuntarily teleported to... well, where the hat normally leads to.
/obj/item/clothing/head/fluff/nikki/verb/verb_translocator_unequip()
set category = "Object"
@@ -2083,13 +2099,40 @@ Departamental Swimsuits, for general use
playsound(src, 'sound/machines/click.ogg', 30, 1)
/obj/item/clothing/head/fluff/nikki/proc/teleport_fail(mob/user, mob/target)
- if (target)
+ if (target != user)
user.visible_message("[user] harmlessly bops [target] with \the [src].", \
"\The [src] harmlessly bops [target]. The hat seems... unwilling?")
else
user.visible_message("\The [src] flops over [user]'s' head for a moment, but they seem alright.", \
"\The [src] flops over your head for a moment, but you correct it without issue. There we go!")
+/obj/item/clothing/head/fluff/nikki/proc/hat_warp_checks(var/mob/living/target, mob/user, proximity_flag)
+ if (!proximity_flag)
+ return 0
+
+ if (!translocator)
+ to_chat(user, "\The [src] doesn't have a translocator inside it yet, you goof!")
+ return 0
+
+ if (target.ckey == owner && target != user) // ur not getting me that easy sonny jim......
+ to_chat(user, "You think to turn \the [src] on its creator?! FOOOOOOOOL.")
+ to_chat(user, "From seemingly nowhere you hear echoing, derisive laughter, accompanied by a stock laugh track and... Are those bike horns?")
+ return 0
+
+ if (!istype(target))
+ to_chat(user, "\The [src] isn't a valid target!")
+ return 0
+
+ // Because other mobs (i.e. monkeys) apparently have dropnom prey set to 0, we check SPECIFICALLY for humans' dropnom setting.
+ if (target.type == /mob/living/carbon/human && !target.can_be_drop_prey)
+ teleport_fail(user, target)
+ return 0
+
+ if (!translocator.teleport_checks(target, user))
+ return 0
+
+ else return 1
+
/obj/item/clothing/head/fluff/nikki/attackby(obj/item/weapon/I as obj, mob/user as mob)
if (istype(I, /obj/item/device/perfect_tele) && user.get_inactive_hand() == src)
if (translocator)
@@ -2142,46 +2185,30 @@ Departamental Swimsuits, for general use
/obj/item/clothing/head/fluff/nikki/equipped(mob/living/carbon/human/user, slot)
..()
- if (slot == slot_head)
- if (user.can_be_drop_prey && translocator && user.ckey != owner)
- // hey, is our translocator actually able to teleport this poor person?
- if (translocator.beacons && translocator.teleport_checks(user, user))
- // YOU FOOL! YOU HAVE ACTIVATED MY STAND, 「VORE BY HAT」!
- src.visible_message("\The [src] falls over [user]'s head... and somehow falls over the rest of their body, causing them to vanish inside. Where did they go?!", \
- "The hat falls over your head as you put it on, enveloping you in a bright green light! Uh oh.")
- var/uh_oh = pick(translocator.beacons)
- user.remove_from_mob(src, get_turf(user))
- translocator.destination = translocator.beacons[uh_oh]
- translocator.afterattack(user, user, proximity = 1, ignore_fail_chance = 1)
- add_attack_logs(user, user, "Tried to put on \the [src] and was involuntarily teleported by it (via \the [translocator]) within!")
- return
- // understandable have a nice day
- else teleport_fail(user)
+ if (slot == slot_head && translocator) // This way we don't spam the poor person's chat
+ // hey, are we actually able to teleport this poor person?
+ if (hat_warp_checks(user, user, proximity_flag = 1))
+ // YOU FOOL! YOU HAVE ACTIVATED MY STAND, 「VORE BY HAT」!
+ src.visible_message("\The [src] falls over [user]'s head... and somehow falls over the rest of their body, causing them to vanish inside. Where did they go?!", \
+ "The hat falls over your head as you put it on, enveloping you in a bright green light! Uh oh.")
+ var/uh_oh = pick(translocator.beacons)
+ user.remove_from_mob(src, get_turf(user))
+ translocator.destination = translocator.beacons[uh_oh]
+ translocator.afterattack(user, user, proximity = 1, ignore_fail_chance = 1)
+ add_attack_logs(user, user, "Tried to put on \the [src] and was involuntarily teleported by it (via \the [translocator]) within!")
+ return
/obj/item/clothing/head/fluff/nikki/afterattack(var/mob/living/target, mob/user, proximity_flag, click_parameters)
- if (!proximity_flag)
- return
-
- if (!translocator)
- to_chat(user, "\The [src] doesn't have a translocator inside it yet, you goof!")
- return
-
- if (istype(target) && translocator.teleport_checks(target, user)) // If the translocator inside actually has enough charge to do the warp thing
- if (target.ckey != owner && (target.type == mob/living/carbon/human && target.can_be_drop_prey)) // ur not getting me that easily sonny jim....
- // Silly fluffed up styles of teleporting people based on user intent.
- switch (user.a_intent)
- if (I_HURT)
- user.visible_message("[user] swipes \the [src] over \the [target]!")
+ // If the hat is willing to cooperate with the holder...
+ if (hat_warp_checks(target, user, proximity_flag))
+ // Silly fluffed up styles of teleporting people based on user intent.
+ switch (user.a_intent)
+ if (I_HURT)
+ user.visible_message("[user] swipes \the [src] over \the [target]!")
+ translocator.afterattack(target, user, proximity_flag)
+ if (I_GRAB)
+ user.visible_message("[user] begins stuffing [target] into \the [src]!")
+ if (do_after(user, 5 SECONDS, target))
translocator.afterattack(target, user, proximity_flag)
- if (I_GRAB)
- user.visible_message("[user] begins stuffing [target] into \the [src]!")
- if (do_after(user, 5 SECONDS, target))
- translocator.afterattack(target, user, proximity_flag)
-
- add_attack_logs(user, target, "Teleported [target] with \the [src] (via the hat's [translocator])!")
- return
- else
- teleport_fail(user, target)
- return
-
- else return
\ No newline at end of file
+
+ add_attack_logs(user, target, "Teleported [target] with via \the [src]'s [translocator]!")