Merge pull request #9333 from Tenryumi/nikki-fluff
Adds Nikki's Fluff Outfit For Nikki, + Rigsuit-Mounted Size Guns For Research
@@ -92,11 +92,11 @@
|
|||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/item/device/perfect_tele/proc/unload_ammo(mob/user)
|
/obj/item/device/perfect_tele/proc/unload_ammo(mob/user, var/ignore_inactive_hand_check = 0)
|
||||||
if(battery_lock)
|
if(battery_lock)
|
||||||
to_chat(user,"<span class='notice'>[src] does not have a battery port.</span>")
|
to_chat(user,"<span class='notice'>[src] does not have a battery port.</span>")
|
||||||
return
|
return
|
||||||
if(user.get_inactive_hand() == src && power_source)
|
if((user.get_inactive_hand() == src || ignore_inactive_hand_check) && power_source)
|
||||||
to_chat(user,"<span class='notice'>You eject \the [power_source] from \the [src].</span>")
|
to_chat(user,"<span class='notice'>You eject \the [power_source] from \the [src].</span>")
|
||||||
user.put_in_hands(power_source)
|
user.put_in_hands(power_source)
|
||||||
power_source = null
|
power_source = null
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/item/device/perfect_tele/attack_self(mob/user)
|
/obj/item/device/perfect_tele/attack_self(mob/user, var/radial_menu_anchor = src)
|
||||||
if(loc_network)
|
if(loc_network)
|
||||||
for(var/obj/item/device/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons)
|
for(var/obj/item/device/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons)
|
||||||
if(nb.tele_network == loc_network)
|
if(nb.tele_network == loc_network)
|
||||||
@@ -124,8 +124,7 @@
|
|||||||
and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
|
and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
|
||||||
going to use this device for ERP purposes. This device records all warnings given and teleport events for \
|
going to use this device for ERP purposes. This device records all warnings given and teleport events for \
|
||||||
admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
|
admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
|
||||||
|
var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
|
||||||
var/choice = show_radial_menu(user, src, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
|
|
||||||
|
|
||||||
if(!choice)
|
if(!choice)
|
||||||
return
|
return
|
||||||
@@ -281,7 +280,7 @@
|
|||||||
//Seems okay to me!
|
//Seems okay to me!
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity)
|
/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity, var/ignore_fail_chance = 0)
|
||||||
//No, you can't teleport people from over there.
|
//No, you can't teleport people from over there.
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
@@ -312,11 +311,12 @@
|
|||||||
R.force_dismount(rider)
|
R.force_dismount(rider)
|
||||||
|
|
||||||
//Failure chance
|
//Failure chance
|
||||||
if(prob(failure_chance) && beacons.len >= 2)
|
if (!ignore_fail_chance)
|
||||||
var/list/wrong_choices = beacons - destination.tele_name
|
if(prob(failure_chance) && beacons.len >= 2)
|
||||||
var/wrong_name = pick(wrong_choices)
|
var/list/wrong_choices = beacons - destination.tele_name
|
||||||
destination = beacons[wrong_name]
|
var/wrong_name = pick(wrong_choices)
|
||||||
to_chat(user,"<span class='warning'>\The [src] malfunctions and sends you to the wrong beacon!</span>")
|
destination = beacons[wrong_name]
|
||||||
|
to_chat(user,"<span class='warning'>\The [src] malfunctions and sends you to the wrong beacon!</span>")
|
||||||
|
|
||||||
//Destination beacon vore checking
|
//Destination beacon vore checking
|
||||||
var/turf/dT = get_turf(destination)
|
var/turf/dT = get_turf(destination)
|
||||||
|
|||||||
@@ -739,6 +739,12 @@
|
|||||||
character_name = list("Clara Mali")
|
character_name = list("Clara Mali")
|
||||||
cost = 1
|
cost = 1
|
||||||
|
|
||||||
|
/datum/gear/fluff/nikki_dorky_outfit
|
||||||
|
path = /obj/item/weapon/storage/box/fluff
|
||||||
|
display_name = "Nikki's Witchy Outfit"
|
||||||
|
ckeywhitelist = list("ryumi")
|
||||||
|
character_name = list("Nikki Yumeno")
|
||||||
|
|
||||||
// S CKEYS
|
// S CKEYS
|
||||||
/datum/gear/fluff/brynhild_medal
|
/datum/gear/fluff/brynhild_medal
|
||||||
path = /obj/item/clothing/accessory/medal/silver/valor
|
path = /obj/item/clothing/accessory/medal/silver/valor
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/obj/item/rig_module/mounted/sizegun
|
||||||
|
icon = 'icons/obj/rig_modules.dmi'
|
||||||
|
icon_state = "sizegun"
|
||||||
|
name = "mounted size gun"
|
||||||
|
desc = "A size gun to be mounted on a rig suit. Features interface-based target size adjustment for hands-free size-altering shenanigans."
|
||||||
|
|
||||||
|
engage_string = "Select Size"
|
||||||
|
|
||||||
|
interface_name = "mounted sizegun"
|
||||||
|
interface_desc = "A wrist-mounted, hardsuit cell-powered, size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
|
||||||
|
|
||||||
|
gun_type = /obj/item/weapon/gun/energy/sizegun/mounted
|
||||||
@@ -5,3 +5,11 @@
|
|||||||
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
|
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
|
||||||
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
|
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
|
||||||
build_path = /obj/item/rig_module/rescue_pharm
|
build_path = /obj/item/rig_module/rescue_pharm
|
||||||
|
|
||||||
|
/datum/design/item/mechfab/rigsuit/mounted_sizegun
|
||||||
|
name = "hardsuit mounted size gun"
|
||||||
|
desc = "A suit mounted size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
|
||||||
|
id = "rig_gun_sizegun"
|
||||||
|
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||||
|
materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
|
||||||
|
build_path = /obj/item/rig_module/mounted/sizegun
|
||||||
@@ -217,6 +217,16 @@
|
|||||||
/obj/item/weapon/melee/fluffstuff/wolfgirlsword,
|
/obj/item/weapon/melee/fluffstuff/wolfgirlsword,
|
||||||
/obj/item/weapon/shield/fluff/wolfgirlshield)
|
/obj/item/weapon/shield/fluff/wolfgirlshield)
|
||||||
|
|
||||||
|
// Ryumi: Nikki Yumeno
|
||||||
|
/obj/item/weapon/storage/box/fluff
|
||||||
|
name = "Nikki's Outfit Box"
|
||||||
|
desc = "Warning: Contains dangerous amounts of dork."
|
||||||
|
has_items = list(
|
||||||
|
/obj/item/weapon/rig/nikki,
|
||||||
|
/obj/item/clothing/head/fluff/nikki,
|
||||||
|
/obj/item/clothing/under/skirt/outfit/fluff/nikki,
|
||||||
|
/obj/item/clothing/shoes/fluff/nikki)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Swimsuits, for general use, to avoid arriving to work with your swimsuit.
|
Swimsuits, for general use, to avoid arriving to work with your swimsuit.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2007,4 +2007,222 @@ Departamental Swimsuits, for general use
|
|||||||
//BobOfBoblandia: Charles Gettler
|
//BobOfBoblandia: Charles Gettler
|
||||||
/obj/item/clothing/head/that/fluff/gettler
|
/obj/item/clothing/head/that/fluff/gettler
|
||||||
name = "Charles' Top-Hat"
|
name = "Charles' Top-Hat"
|
||||||
desc = "A special hat, removed from its owner."
|
desc = "A special hat, removed from its owner."
|
||||||
|
|
||||||
|
//Ryumi: Nikki Yumeno
|
||||||
|
/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...??"
|
||||||
|
icon = 'icons/vore/custom_clothes_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)
|
||||||
|
if(..())
|
||||||
|
if (M.ckey == "ryumi")
|
||||||
|
return 1
|
||||||
|
else if (M.get_active_hand() == src)
|
||||||
|
to_chat(M, "<span class='warning'>What the heck? \The [src] doesn't fit!</span>")
|
||||||
|
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."
|
||||||
|
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||||
|
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||||
|
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)
|
||||||
|
if(..())
|
||||||
|
if (M.ckey == "ryumi")
|
||||||
|
return 1
|
||||||
|
else if (M.get_active_hand() == src)
|
||||||
|
to_chat(M, "<span class='warning'>What the heck? \The [src] doesn't fit!</span>")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/fluff/nikki //see /obj/item/weapon/rig/nikki
|
||||||
|
name = "cape"
|
||||||
|
desc = "Snazzy!"
|
||||||
|
flags = null
|
||||||
|
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) // It's not armor, it's a dorky frickin cape
|
||||||
|
body_parts_covered = null // Cape ain't gonna cover a THING
|
||||||
|
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS // It will keep you toasty tho, it's more than big enough to help with that! Just wrap the thing around you when on the surface, idk
|
||||||
|
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||||
|
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||||
|
icon_state = "nikki"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki
|
||||||
|
// I have never tryharded so much just to accomplish something so stupid as "Vore By Hat" in my entire life, and I apologize to each and every one of you.
|
||||||
|
name = "oversized witch hat"
|
||||||
|
desc = "A dork-shaped hat. Its long, pointed tip reaches far more than most hats had ought to, its wide brim complementing \
|
||||||
|
this with its tendency to droop at the ends under its own weight."
|
||||||
|
description_fluff = "Despite what Nikki Yumeno may believe, her hat is not in fact a magical artifact of teleportation magicks. \
|
||||||
|
It is however the result of clever utilization of bluespace technology combined with style. Like a classic magician's trick, \
|
||||||
|
the power of this hat lies in the hidden compartment hidden on the inside, into which a personal translocation device can be \
|
||||||
|
snapped inside. Once installed, bluespace electronics inside the hat sync with the translocator and utilize its teleportation \
|
||||||
|
technology to create a localized bluespace portal within the hole of the hat. This tiny portal will warp anything or anyone \
|
||||||
|
who makes physical contact with it to whatever beacon the translocator within is locked onto."
|
||||||
|
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||||
|
icon_state = "nikki-hat"
|
||||||
|
item_state = "nikki-hat"
|
||||||
|
item_icons = list(
|
||||||
|
slot_l_hand_str = 'icons/vore/custom_clothes_left_hand_vr.dmi',
|
||||||
|
slot_r_hand_str = 'icons/vore/custom_clothes_right_hand_vr.dmi',
|
||||||
|
slot_head_str = 'icons/vore/custom_onmob_32x48_vr.dmi'
|
||||||
|
)
|
||||||
|
flags_inv = HIDEEARS
|
||||||
|
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!
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/verb/verb_translocator_unequip()
|
||||||
|
set category = "Object"
|
||||||
|
set name = "Nikki's Hat - Unequip Translocator"
|
||||||
|
set src in usr
|
||||||
|
translocator_unequip(translocator, usr)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/proc/translocator_equip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
|
||||||
|
if (do_after(user, 2 SECONDS, T))
|
||||||
|
user.unEquip(T)
|
||||||
|
translocator_unequip(translocator, user)
|
||||||
|
T.forceMove(src)
|
||||||
|
translocator = T
|
||||||
|
user.show_message("[bicon(src)]*click!*")
|
||||||
|
playsound(src, 'sound/machines/click.ogg', 30, 1)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/proc/translocator_unequip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
|
||||||
|
if (translocator)
|
||||||
|
if (user)
|
||||||
|
user.put_in_hands(T)
|
||||||
|
user.show_message("[bicon(src)]*click!*")
|
||||||
|
else
|
||||||
|
translocator.forceMove(get_turf(src))
|
||||||
|
translocator = null
|
||||||
|
playsound(src, 'sound/machines/click.ogg', 30, 1)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/proc/teleport_fail(mob/user, mob/target)
|
||||||
|
if (target != user)
|
||||||
|
user.visible_message("<span class='notice'>[user] harmlessly bops [target] with \the [src].</span>", \
|
||||||
|
"<span class='notice'>\The [src] harmlessly bops [target]. The hat seems... unwilling?</span>")
|
||||||
|
else
|
||||||
|
user.visible_message("<span class='notice'>\The [src] flops over [user]'s' head for a moment, but they seem alright.</span>", \
|
||||||
|
"<span class='notice'>\The [src] flops over your head for a moment, but you correct it without issue. There we go!</span>")
|
||||||
|
|
||||||
|
/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, "<span class='warning'>\The [src] doesn't have a translocator inside it yet, you goof!</span>")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if (target.ckey == owner && target != user) // ur not getting me that easy sonny jim......
|
||||||
|
to_chat(user, "<span class='warning'>You think to turn \the [src] on its creator?! <b>FOOOOOOOOL.</b></span>")
|
||||||
|
to_chat(user, "<span class='notice'>From seemingly nowhere you hear echoing, derisive laughter, accompanied by a stock laugh track and... Are those bike horns?</span>")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if (!istype(target))
|
||||||
|
to_chat(user, "<span class='warning'>\The [src] isn't a valid target!</span>")
|
||||||
|
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)
|
||||||
|
visible_message("<span class='notice'>[user] starts to pull \a [translocator] out of \the [src] to swap it out with \the [I]...</span>", \
|
||||||
|
"<span class='notice'>You start pulling \the [translocator] pops out of its compartment with a soft 'click' as you replace it with \the [I]....</span>")
|
||||||
|
else
|
||||||
|
visible_message("<span class='notice'>[user] begins slipping \the [I] into \the [src]...</span>", \
|
||||||
|
"<span class='notice'>You begin to snap \the [I] into a small, hidden compartment inside \the [src]...</span>")
|
||||||
|
// This works for both adding and replacing a translocator
|
||||||
|
translocator_equip(I, user)
|
||||||
|
return
|
||||||
|
else if (translocator)
|
||||||
|
translocator.attackby(I, user)
|
||||||
|
return
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/get_description_interaction()
|
||||||
|
. = ..()
|
||||||
|
if (translocator)
|
||||||
|
. += "It has \a [translocator] inside of it. Alt-click while holding it on your inactive hand to remove it."
|
||||||
|
. += "Otherwise, this hat functions exactly as the translocator it has inside while still being a sweet head accessory."
|
||||||
|
else
|
||||||
|
. += "A translocator can be placed inside of it! While holding the hat in your inactive hand, use a translocator on it to slip it inside."
|
||||||
|
. += "After doing this, it will function as both a head accessory and teleportation device."
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/attack_hand(mob/user)
|
||||||
|
if (translocator && (user.get_inactive_hand() == src))
|
||||||
|
translocator.unload_ammo(user, ignore_inactive_hand_check = 1)
|
||||||
|
return
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/AltClick(mob/user)
|
||||||
|
if (translocator && (user.get_inactive_hand() == src))
|
||||||
|
translocator_unequip(translocator, user)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/attack_self(mob/user)
|
||||||
|
..()
|
||||||
|
if (translocator)
|
||||||
|
translocator.attack_self(user, user)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
to_chat(user, "<span_class='warning'>\The [src] doesn't have a translocator inside it right now.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/examine(mob/user) // If it has a translocator installed, make it very obvious to viewers that something WEIRD is going on with this hat.
|
||||||
|
. = ..()
|
||||||
|
if (translocator)
|
||||||
|
. += "Weird... <span class='danger'>You can't see the bottom of the hole inside the hat...</span>"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/fluff/nikki/equipped(mob/living/carbon/human/user, slot)
|
||||||
|
. = ..()
|
||||||
|
if (slot == slot_head && translocator && user.ckey != owner) // This way we don't unnecessarily spam the chat with hat/translocator errors
|
||||||
|
// 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("<span class='danger'>\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?!</span>", \
|
||||||
|
"<span class='danger'>The hat falls over your head as you put it on, enveloping you in a bright green light! <b>Uh oh.</b></span>")
|
||||||
|
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 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_HELP)
|
||||||
|
user.visible_message("<span class='notice'>[user] guides \the [target] to the bottomless hole within \the [src]. They begin to climb inside...</span>")
|
||||||
|
if (do_after(user, 5 SECONDS, target))
|
||||||
|
translocator.afterattack(target, user, proximity_flag)
|
||||||
|
if (I_DISARM)
|
||||||
|
user.visible_message("<span class='danger'>[user] plops \the [src] onto \the [target]'s head!</span>")
|
||||||
|
translocator.afterattack(target, user, proximity_flag)
|
||||||
|
if (I_GRAB)
|
||||||
|
user.visible_message("<span class='danger'>[user] begins stuffing [target] into \the [src]!</span>")
|
||||||
|
if (do_after(user, 5 SECONDS, target))
|
||||||
|
translocator.afterattack(target, user, proximity_flag)
|
||||||
|
if (I_HURT)
|
||||||
|
user.visible_message("<span class='danger'>[user] swipes \the [src] over \the [target]!</span>")
|
||||||
|
translocator.afterattack(target, user, proximity_flag)
|
||||||
|
|
||||||
|
add_attack_logs(user, target, "Teleported [target] with via \the [src]'s [translocator]!")
|
||||||
|
else ..()
|
||||||
|
|||||||
@@ -1250,6 +1250,52 @@
|
|||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
//Ryumi - Nikki Yumeno
|
||||||
|
/obj/item/weapon/rig/nikki
|
||||||
|
name = "weird necklace"
|
||||||
|
desc = "A necklace with a brilliantly blue crystal encased in protective glass."
|
||||||
|
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||||
|
icon_override = 'icons/vore/custom_onmob_vr.dmi'
|
||||||
|
suit_type = "probably not magical"
|
||||||
|
icon_state = "nikki"
|
||||||
|
w_class = ITEMSIZE_SMALL // It is after all only a necklace
|
||||||
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) // this isn't armor, it's a dorky frickin cape
|
||||||
|
siemens_coefficient = 0.9
|
||||||
|
slowdown = 0
|
||||||
|
offline_slowdown = 0
|
||||||
|
offline_vision_restriction = 0
|
||||||
|
siemens_coefficient = 0.9
|
||||||
|
chest_type = /obj/item/clothing/suit/fluff/nikki
|
||||||
|
|
||||||
|
req_access = list()
|
||||||
|
req_one_access = list()
|
||||||
|
|
||||||
|
helm_type = null
|
||||||
|
glove_type = null
|
||||||
|
boot_type = null
|
||||||
|
|
||||||
|
allowed = list(
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/storage,
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/item/weapon/rig/nikki/attackby(obj/item/W, mob/living/user)
|
||||||
|
//This thing accepts ONLY mounted sizeguns. That's IT. Nothing else!
|
||||||
|
if(open && istype(W,/obj/item/rig_module) && !istype(W,/obj/item/rig_module/mounted/sizegun))
|
||||||
|
to_chat(user, "<span class='danger'>\The [src] only accepts mounted size gun modules.</span>")
|
||||||
|
return
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/weapon/rig/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, "<span class='warning'>For some reason, the necklace seems to never quite get past your head when you try to put it on... Weird, it looked like it would fit.</span>")
|
||||||
|
return 0
|
||||||
|
|
||||||
//Nickcrazy - Damon Bones Xrim
|
//Nickcrazy - Damon Bones Xrim
|
||||||
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
|
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
|
||||||
name = "Security Bomber Jacket"
|
name = "Security Bomber Jacket"
|
||||||
|
|||||||
@@ -82,3 +82,8 @@
|
|||||||
|
|
||||||
/obj/item/projectile/beam/sizelaser/grow
|
/obj/item/projectile/beam/sizelaser/grow
|
||||||
set_size = 2.0 //200% of current size
|
set_size = 2.0 //200% of current size
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/energy/sizegun/mounted
|
||||||
|
name = "mounted size gun"
|
||||||
|
self_recharge = 1
|
||||||
|
use_external_power = 1
|
||||||
BIN
icons/obj/rig_modules_vr.dmi
Normal file
|
After Width: | Height: | Size: 455 B |
BIN
icons/vore/custom_clothes_left_hand_vr.dmi
Normal file
|
After Width: | Height: | Size: 409 B |
BIN
icons/vore/custom_clothes_right_hand_vr.dmi
Normal file
|
After Width: | Height: | Size: 413 B |
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 215 KiB |
BIN
icons/vore/custom_onmob_32x48_vr.dmi
Normal file
|
After Width: | Height: | Size: 542 B |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 11 KiB |
@@ -2024,6 +2024,7 @@
|
|||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\jetpack.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\jetpack.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\metalfoam_launcher.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\metalfoam_launcher.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm"
|
||||||
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun_vr.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\pat_module_vr.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\pat_module_vr.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\powersink.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\powersink.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\rescue_pharm_vr.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\rescue_pharm_vr.dm"
|
||||||
|
|||||||