mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-11 07:04:01 +01:00
Shibari! (#18514)
* Shibari! Added a new scene item, shibari bindings! These by default only cover the torso, but by clicking on them in your hands, they can also be set to bind arms and legs, acting in a similar way to handcuffs. They are worn in the suit slot. They can be found in the costume vendors, maint and the restraints crate from cargo. They have sprites for humanoid mobs and digitigrade legs, but not tesh yet. * Fix mistake Fixes error in previous commit * Update code/game/objects/items/weapons/handcuffs.dm Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com> * Update code/modules/mob/living/carbon/human/human.dm Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com> * Make these defines to prevent copy paste errors --------- Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
// Behaves similar to straight jackets but the effects can be varied easily.
|
||||
#define SHIBARI_NONE "None"
|
||||
#define SHIBARI_ARMS "Arms"
|
||||
#define SHIBARI_LEGS "Legs"
|
||||
#define SHIBARI_BOTH "Arms and Legs"
|
||||
|
||||
/obj/item/clothing/suit/shibari
|
||||
name = "shibari bindings"
|
||||
desc = "A set of ropes that designed to be tied around another person to restrain them."
|
||||
icon_state = "shibari_None"
|
||||
|
||||
var/resist_time = 1 MINUTE
|
||||
|
||||
var/rope_mode = SHIBARI_NONE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/shibari/attack_hand(mob/living/user as mob)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(src == H.wear_suit)
|
||||
to_chat(H, span_notice("You need help taking this off!"))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/shibari/attack_self(mob/living/user)
|
||||
rope_mode = tgui_input_list(user, "Which limbs would you like to restrain with the bindings?", "Shibari", list(SHIBARI_NONE, SHIBARI_ARMS, SHIBARI_LEGS, SHIBARI_BOTH))
|
||||
if(!rope_mode)
|
||||
rope_mode = SHIBARI_NONE
|
||||
if(rope_mode == SHIBARI_BOTH)
|
||||
icon_state = "shibari_Both"
|
||||
else
|
||||
icon_state = "shibari_[rope_mode]"
|
||||
|
||||
/obj/item/clothing/suit/shibari/equipped(var/mob/living/user,var/slot)
|
||||
. = ..()
|
||||
if((rope_mode == SHIBARI_ARMS) || (rope_mode == SHIBARI_BOTH))
|
||||
if(slot == slot_wear_suit)
|
||||
if(user.get_left_hand() != src)
|
||||
user.drop_l_hand()
|
||||
if(user.get_right_hand() != src)
|
||||
user.drop_r_hand()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.drop_from_inventory(H.handcuffed)
|
||||
if((rope_mode == SHIBARI_LEGS) || (rope_mode == SHIBARI_BOTH))
|
||||
if(slot == slot_wear_suit)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.drop_from_inventory(H.legcuffed)
|
||||
H.legcuffed = src
|
||||
if(user.m_intent != I_WALK)
|
||||
user.m_intent = I_WALK
|
||||
if(user.hud_used && user.hud_used.move_intent)
|
||||
user.hud_used.move_intent.icon_state = "walking"
|
||||
|
||||
/obj/item/clothing/suit/shibari/dropped(var/mob/living/user)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.legcuffed == src)
|
||||
H.legcuffed = FALSE
|
||||
|
||||
/obj/item/clothing/suit/shibari/red
|
||||
color = "#ff0000"
|
||||
|
||||
/obj/item/clothing/suit/shibari/blue
|
||||
color = "#006aff"
|
||||
|
||||
/obj/item/clothing/suit/shibari/green
|
||||
color = "#00ff0d"
|
||||
|
||||
/obj/item/clothing/suit/shibari/yellow
|
||||
color = "#f6ff00"
|
||||
|
||||
/obj/item/clothing/suit/shibari/black
|
||||
color = "#000000"
|
||||
|
||||
/obj/item/clothing/suit/shibari/pink
|
||||
color = "#ff00bf"
|
||||
|
||||
#undef SHIBARI_NONE
|
||||
#undef SHIBARI_ARMS
|
||||
#undef SHIBARI_LEGS
|
||||
#undef SHIBARI_BOTH
|
||||
@@ -1515,7 +1515,8 @@
|
||||
/obj/item/clothing/under/reverse_bunnytop_maid = 3,
|
||||
/obj/item/clothing/head/rabbitears = 3,
|
||||
/obj/item/clothing/accessory/bunny_tail = 3,
|
||||
/obj/item/clothing/suit/shrine_maiden = 3)
|
||||
/obj/item/clothing/suit/shrine_maiden = 3,
|
||||
/obj/item/clothing/suit/shibari = 5)
|
||||
prices = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 200,
|
||||
/obj/item/clothing/suit/storage/hooded/costume/carp = 200,
|
||||
/obj/item/clothing/suit/chickensuit = 200,
|
||||
@@ -1600,7 +1601,8 @@
|
||||
/obj/item/clothing/under/reverse_bunnytop_maid = 50,
|
||||
/obj/item/clothing/head/rabbitears = 25,
|
||||
/obj/item/clothing/accessory/bunny_tail = 25,
|
||||
/obj/item/clothing/suit/shrine_maiden = 200)
|
||||
/obj/item/clothing/suit/shrine_maiden = 200,
|
||||
/obj/item/clothing/suit/shibari = 50)
|
||||
premium = list(/obj/item/clothing/suit/imperium_monk = 3,
|
||||
/obj/item/clothing/suit/barding/agatha = 2,
|
||||
/obj/item/clothing/suit/barding/alt_agatha = 2,
|
||||
|
||||
@@ -269,6 +269,10 @@
|
||||
return 1
|
||||
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
|
||||
return 1
|
||||
if (istype(wear_suit, /obj/item/clothing/suit/shibari))
|
||||
var/obj/item/clothing/suit/shibari/s = wear_suit
|
||||
if(s.rope_mode == "Arms" || s.rope_mode == "Arms and Legs")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/var/co2overloadtime = null
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/carbon/human/resist_restraints()
|
||||
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
|
||||
if(wear_suit && (istype(wear_suit, /obj/item/clothing/suit/straight_jacket) || istype(wear_suit, /obj/item/clothing/suit/shibari)))
|
||||
return escape_straight_jacket()
|
||||
return ..()
|
||||
|
||||
@@ -14,10 +14,16 @@
|
||||
break_straight_jacket()
|
||||
return
|
||||
|
||||
var/breakouttime
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/clothing/suit/straight_jacket/SJ = H.wear_suit
|
||||
if(istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
|
||||
var/obj/item/clothing/suit/straight_jacket/S = H.wear_suit
|
||||
breakouttime = S.resist_time
|
||||
if(istype(wear_suit, /obj/item/clothing/suit/shibari))
|
||||
var/obj/item/clothing/suit/shibari/S = H.wear_suit
|
||||
breakouttime = S.resist_time
|
||||
|
||||
var/breakouttime = SJ.resist_time // Configurable per-jacket!
|
||||
var/obj/item/clothing/suit/SJ = wear_suit
|
||||
|
||||
var/attack_type = RESIST_ATTACK_DEFAULT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user