From cb83245b413a8d0193bc34e4be2c7f8da4c7ff10 Mon Sep 17 00:00:00 2001 From: Jay-Sparrow <66183917+Jay-Sparrow@users.noreply.github.com> Date: Sat, 30 May 2020 16:28:18 -0500 Subject: [PATCH 1/3] Rope code All the code for the rope object. Basically reskinned fake handcuffs with a few lewd effects added. --- hyperstation/code/obj/rope.dm | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 hyperstation/code/obj/rope.dm diff --git a/hyperstation/code/obj/rope.dm b/hyperstation/code/obj/rope.dm new file mode 100644 index 00000000..829257e4 --- /dev/null +++ b/hyperstation/code/obj/rope.dm @@ -0,0 +1,49 @@ +//Jay +//TODO: Better sprites +//Rope +/obj/item/restraints/handcuffs/rope/ //Fun + name = "soft rope" + desc = "A comfortable rope that would be easy to slip out of if you needed. Kinky." + breakouttime = 10 //Easy to break out. It's not for gaming. + icon = 'hyperstation/icons/obj/rope.dmi' + icon_state = "rope" + item_state = "rope_hands" //This sprite is in restraints.dmi until I figure out how to refrence somewhere else + cuffsound = 'sound/weapons/cablecuff.ogg' + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + +/mob/living/proc/rope_add(source) //Check to see if the rope is on, and then add effects + var/mob/living/carbon/M = source + if(M.handcuffed) + var/rope_message = pick("The rope is tightly tied onto you") + to_chat(M, "[rope_message]") + M.min_arousal = 33 + M.arousal_rate += 2 + update_stat() + +/mob/living/proc/rope_remove(list/sources, temp_min_arousal, temp_max_arousal, temp_arousal_rate) //Check to see it the rope is gone, and reset effects + var/mob/living/carbon/M = sources + if (!M.handcuffed) + var/rope_message = pick("The rope has been removed") + to_chat(M, "[rope_message]") + M.min_arousal = temp_min_arousal + M.max_arousal = temp_max_arousal + M.arousal_rate = temp_arousal_rate + update_stat() + +/obj/item/restraints/handcuffs/rope/attack(mob/living/carbon/C, mob/living/user) + . = ..() + var/temp_min_arousal = C.min_arousal //Temp variables to hold original arousal values + var/temp_max_arousal = C.max_arousal + var/temp_arousal_rate = C.arousal_rate + var/datum/callback/Cback = new(user, /mob/living/proc/rope_add, C)//Put the rope on + addtimer(Cback, 6, TIMER_UNIQUE)//We are going to call this proc six seconds after the click. The rope tying takes 5 seconds + var/datum/callback/Cback2 = new(user, /mob/living/proc/rope_remove, C, temp_min_arousal, temp_max_arousal, temp_arousal_rate) + while(1) //Loop until break - Because I can't figure out any better way to do it. + var/rope_emote = pick("moan", "blush") + sleep(50) //5 second wait + addtimer(Cback2, 1, TIMER_UNIQUE) //Just keep calling this timer proc + if (prob(10)) + C.emote(rope_emote) + if (!C.handcuffed) + return //Break when the rope is removed + From d4d0148293df2a9d850e3e4153339f609e457606 Mon Sep 17 00:00:00 2001 From: Jay-Sparrow <66183917+Jay-Sparrow@users.noreply.github.com> Date: Sat, 30 May 2020 16:29:19 -0500 Subject: [PATCH 2/3] Rope object sprite It's a placeholder sprite really. I'm not much of an artist. --- hyperstation/icons/obj/rope.dmi | Bin 0 -> 375 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hyperstation/icons/obj/rope.dmi diff --git a/hyperstation/icons/obj/rope.dmi b/hyperstation/icons/obj/rope.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9937b8eadc7e862014a0851bc2f1bd80977c4a5d GIT binary patch literal 375 zcmV--0f_#IP)x?~aki2~?c@0&*%UES5?FRuT|aeNz6S+Ean;!XE6$ZH^8~ Date: Sat, 30 May 2020 16:32:20 -0500 Subject: [PATCH 3/3] Add rope sprites Two sets of worn sprites for the rope restraint. One set is a placeholder for a full body rope restraint, that looks horrible. The other is simple wrist tying behind the back which looks alright. The code is set to use the behind the back variation for now. --- icons/mob/restraints.dmi | Bin 807 -> 1190 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/restraints.dmi b/icons/mob/restraints.dmi index fa7eb43aa3c0fbd3ca520604ba7111489cbe8520..5a44b749b843cfa4f8dd1156fef79a4b9145e6b0 100644 GIT binary patch delta 1161 zcmV;41a|wU2BrxmiBL{Q4GJ0x0000DNk~Le0002M0002M2m=5B0A&K4H2?qrPLU-p ze>*!nQBhGSC@45MI9XX)Ha0e!m6#ovvjf|&)|A|^4{|oUEhQ3gkl}57 z-~nctNv`|uB1A?>kIu&&CBpFuqTYPK5%qXqL_W|41fS$OgDMG~9rwPSxaOT&(5Ybf zw~;7g?03Q$3(49DweeIx7v!vLiq{98p2cw+E#M-h0009`NklpY?-BHY zj~TUgAv(9b9S4o$+rxTtO0q-dFYVd31ifnrdgsHPQ!&K)w&dK!_x?5*-?jw3AAhR* zX-RG0gY}Y*=DXF0!Ho6JN0ucAe^IsaA;~hyxoYRM9$$^-yVv`C#(Jj4WDn`%J5x0# z0{{R300000006)bX==Vg^?ixFJ-$Yt`}2&fR4x_oE%_`BQ!xW~ zKhGPpU9vc?y(Rzv0000000000@arhf>e5_Z)VYxK9zox_zF&M4g(__97keyhOVYc> zRNuV5@8;CSe)d`1&v&a2^BL<;;R*G9_Y?pC0000000000;31kCy-&^bzZ1mC{J|jk-ou$C_ zT9)Nz8I)i4@HH3Pz1589W4{Ixh)3zVTH1ONa4dq(@CnKv+6>!2L#?+*ckwOHSE5Hn~Me~Qnl+SvZH7S_9Q z;lD5gRfS~}8eEUgLht+Y(=mRD1l@-cY&y6xhUZFKf`v@2@m=Rk;V#te{F-1*;OM zw65ev6I<2YbQhJpe-cc)4Fv8yR^mc$_eS_FB=3PyM3V$+-Ns%k6J6C~o8~=fgiWCP zAtJjl`Wk&9c5wtmyMXLMnte^y6C8L0w3Gj;L@M_ta)0N>SF1MpLW4D!$Pgy*??glB zLnPw;37A+6?)?*xmwe{D^iwGMHEOlUx89N`uwep51w-8YTM5LMkO~gJ`4d?5jtM`Y zT_@nTaBv$N`6FX!@S<0001>2m=5B0K5^G9{>OVLXjmd zf55=NJ3Bj3QBf!;C^$GcSy@>&Ha44;ncIUKZvX%Q0d!JMQvg8b*k%9#0HAtQSad{X zb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1|g<*peTmuzxo4x;A-7yfyF$1(ok#?*1f2kBc z&M=)piE#B8H&lfB6)Wf-|R#S=V$~mpMxxKS#eN(*8 zFlY3Xd5JWm!m00000008j6 zi+gxBZj$M7+&POCi@iJZ1N(npSl{@#N#~`;sul6R_j6h4C-(n#)|YH$fAHrEzvrN~ z00000001~#+nIho?M>He`JIwyJyz1Gh1z_!wg1psv!;#j{6Z_zcAls)kS`SVe4P~gujeq4)R6Dj!FOk002ovPDHLk FV1nb@YsCNn