- Ported cable restraints from Bay12. You make them by using a verb on cable coils. Takes 15 lengths to make, applied the same way as handcuffs, they have the same effects as handcuffs, but only take 30s to remove if you resist. They can also be removed by using wirecutters on a handcuffed mob.

- Added 4 new cable colors. Pink (ported from Bay12), orange, cyan and white.
- Engineer tool belts can now also spawn with orange wire, in addition to yellow and red.
- Tool closets and electrical toolboxes can now spawn with cables in any of the 8 colors.
- Added cablecuff.ogg from bay12, played when you apply cable cuffs on someone
- Added this stuff to the changelog

So yeah, some stuff is credited to bay12, tho some of it was nearly enough completely recoded.

Screenshots: 
http://www.kamletos.si/wire%20colors.png
http://www.kamletos.si/cuff%20restraints.png


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3770 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
baloh.matevz
2012-06-09 07:29:12 +00:00
parent 2c2002214a
commit e47f25ee09
19 changed files with 169 additions and 41 deletions

View File

@@ -544,6 +544,22 @@
color="blue"
icon = 'power_cond_blue.dmi'
/obj/structure/cable/pink
color="pink"
icon = 'power_cond_pink.dmi'
/obj/structure/cable/orange
color="orange"
icon = 'power_cond_orange.dmi'
/obj/structure/cable/cyan
color="cyan"
icon = 'power_cond_cyan.dmi'
/obj/structure/cable/white
color="white"
icon = 'power_cond_white.dmi'
/obj/effect/manifest
name = "manifest"
icon = 'screen1.dmi'

View File

@@ -573,8 +573,24 @@
color = "green"
icon_state = "coil_green"
/obj/item/weapon/cable_coil/pink
color = "pink"
icon_state = "coil_pink"
/obj/item/weapon/cable_coil/orange
color = "orange"
icon_state = "coil_orange"
/obj/item/weapon/cable_coil/cyan
color = "cyan"
icon_state = "coil_cyan"
/obj/item/weapon/cable_coil/white
color = "white"
icon_state = "coil_white"
/obj/item/weapon/cable_coil/random/New()
color = pick("red","yellow","green","blue")
color = pick("red","yellow","green","blue","pink")
icon_state = "coil_[color]"
..()
@@ -753,6 +769,37 @@
m_amt = 500
origin_tech = "materials=1"
var/dispenser = 0
var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
/obj/item/weapon/handcuffs/cable
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_red"
breakouttime = 300 //Deciseconds = 30s
/obj/item/weapon/handcuffs/cable/red
icon_state = "cuff_red"
/obj/item/weapon/handcuffs/cable/yellow
icon_state = "cuff_yellow"
/obj/item/weapon/handcuffs/cable/blue
icon_state = "cuff_blue"
/obj/item/weapon/handcuffs/cable/green
icon_state = "cuff_green"
/obj/item/weapon/handcuffs/cable/pink
icon_state = "cuff_pink"
/obj/item/weapon/handcuffs/cable/orange
icon_state = "cuff_orange"
/obj/item/weapon/handcuffs/cable/cyan
icon_state = "cuff_cyan"
/obj/item/weapon/handcuffs/cable/white
icon_state = "cuff_white"
/obj/item/weapon/handcuffs/cyborg
dispenser = 1

View File

@@ -60,11 +60,11 @@
if(prob(20))
new /obj/item/weapon/storage/belt/utility(src)
if(prob(30))
new /obj/item/weapon/cable_coil(src)
new /obj/item/weapon/cable_coil/random(src)
if(prob(30))
new /obj/item/weapon/cable_coil(src)
new /obj/item/weapon/cable_coil/random(src)
if(prob(30))
new /obj/item/weapon/cable_coil(src)
new /obj/item/weapon/cable_coil/random(src)
if(prob(20))
new /obj/item/device/multitool(src)
if(prob(5))

View File

@@ -62,7 +62,10 @@
O.place = "handcuff"
M.requests += O
spawn( 0 )
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
if(istype(src, /obj/item/weapon/handcuffs/cable))
playsound(src.loc, 'cablecuff.ogg', 30, 1, -2)
else
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
O.process()
return
else
@@ -76,7 +79,10 @@
O.place = "handcuff"
M.requests += O
spawn( 0 )
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
if(istype(src, /obj/item/weapon/handcuffs/cable))
playsound(src.loc, 'cablecuff.ogg', 30, 1, -2)
else
playsound(src.loc, 'handcuffs.ogg', 30, 1, -2)
O.process()
return
return

View File

@@ -372,4 +372,15 @@ WELDINGTOOOL
/obj/item/weapon/wirecutters/New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob)
if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable)))
M.visible_message("You cut \the [M]'s restraints with \the [src]!",\
"\The [usr] cuts \the [M]'s restraints with \the [src]!",\
"You hear cable being cut.")
M.handcuffed = null
M.update_clothing()
return
else
..()

View File

@@ -8,33 +8,33 @@
slot_flags = SLOT_BELT
proc/can_use()
if(!ismob(loc)) return 0
var/mob/M = loc
if(src in M.get_equipped_items())
return 1
/obj/item/weapon/storage/belt/proc/can_use()
if(!ismob(loc)) return 0
var/mob/M = loc
if(src in M.get_equipped_items())
return 1
else
return 0
/obj/item/weapon/storage/belt/MouseDrop(obj/over_object as obj, src_location, over_location)
var/mob/M = usr
if(!istype(over_object, /obj/screen))
return ..()
playsound(src.loc, "rustle", 50, 1, -5)
if (!M.restrained() && !M.stat && can_use())
if (over_object.name == "r_hand")
if (!( M.r_hand ))
M.u_equip(src)
M.r_hand = src
else
return 0
MouseDrop(obj/over_object as obj, src_location, over_location)
var/mob/M = usr
if(!istype(over_object, /obj/screen))
return ..()
playsound(src.loc, "rustle", 50, 1, -5)
if (!M.restrained() && !M.stat && can_use())
if (over_object.name == "r_hand")
if (!( M.r_hand ))
if (over_object.name == "l_hand")
if (!( M.l_hand ))
M.u_equip(src)
M.r_hand = src
else
if (over_object.name == "l_hand")
if (!( M.l_hand ))
M.u_equip(src)
M.l_hand = src
M.update_clothing()
src.add_fingerprint(usr)
return
M.l_hand = src
M.update_clothing()
src.add_fingerprint(usr)
return
@@ -63,7 +63,7 @@
new /obj/item/weapon/weldingtool(src)
new /obj/item/weapon/crowbar(src)
new /obj/item/weapon/wirecutters(src)
new /obj/item/weapon/cable_coil(src,30,pick("red","yellow"))
new /obj/item/weapon/cable_coil(src,30,pick("red","yellow","orange"))
/obj/item/weapon/storage/belt/utility/atmostech/New()

View File

@@ -23,7 +23,7 @@
/obj/item/weapon/storage/toolbox/electrical/New()
..()
var/color = pick("red","yellow","green","blue")
var/color = pick("red","yellow","green","blue","pink","orange","cyan","white")
new /obj/item/weapon/screwdriver(src)
new /obj/item/weapon/wirecutters(src)
new /obj/item/device/t_scanner(src)
@@ -37,7 +37,7 @@
/obj/item/weapon/storage/toolbox/syndicate/New()
..()
var/color = pick("red","yellow","green","blue")
var/color = pick("red","yellow","green","blue","pink","orange","cyan","white")
new /obj/item/weapon/screwdriver(src)
new /obj/item/weapon/wrench(src)
new /obj/item/weapon/weldingtool(src)

View File

@@ -114,9 +114,14 @@
else if (src.blood_DNA)
msg += "<span class='warning'>[t_He] [t_has] blood-stained hands!</span>\n"
//handcuffed?
//handcuffed?
if (src.handcuffed)
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
if(istype(src.handcuffed, /obj/item/weapon/handcuffs/cable))
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] restrained with cable!</span>\n"
else
msg += "<span class='warning'>[t_He] [t_is] \icon[src.handcuffed] handcuffed!</span>\n"
//belt
if (src.belt)

View File

@@ -589,17 +589,23 @@
del(usr:handcuffed)
usr:handcuffed = null
else
usr << "\red You attempt to remove your handcuffs. (This will take around 2 minutes and you need to stand still)"
var/obj/item/weapon/handcuffs/HC = usr:handcuffed
var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
var/displaytime = 2 //Minutes to display in the "this will take X minutes."
if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
breakouttime = HC.breakouttime
displaytime = breakouttime / 600 //Minutes
usr << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to remove the handcuffs!</B>", usr), 1)
O.show_message( "\red <B>[usr] attempts to remove \the [HC]!</B>", 1)
spawn(0)
if(do_after(usr, 1200))
if(do_after(usr, breakouttime))
if(!usr:handcuffed || usr:buckled)
return // time leniency for lag which also might make this whole thing pointless but the server
for(var/mob/O in viewers(usr))// lags so hard that 40s isn't lenient enough - Quarxink
O.show_message(text("\red <B>[] manages to remove the handcuffs!</B>", usr), 1)
usr << "\blue You successfully remove your handcuffs."
usr:handcuffed:loc = usr:loc
usr << "\blue You successfully remove \the [usr:handcuffed]."
usr:handcuffed.loc = usr.loc
usr:handcuffed = null
if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
usr.next_move = world.time + 100

View File

@@ -242,6 +242,24 @@
else
usr << "A coil of power cable. There are [amount] lengths of cable in the coil."
/obj/item/weapon/cable_coil/verb/make_restraint()
set name = "Make Cable Restraints"
set category = "Object"
var/mob/M = usr
if(ishuman(M) && !M.restrained() && !M.stat && !M.paralysis && ! M.stunned)
if(!istype(usr.loc,/turf)) return
if(src.amount <= 14)
usr << "\red You need at least 15 lengths to make restraints!"
return
src.use(15)
var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc)
B.icon_state = "cuff_[color]"
usr << "\blue You wind some cable together to make some restraints."
else
usr << "\blue You cannot do that."
..()
/obj/item/weapon/cable_coil/attackby(obj/item/weapon/W, mob/user)
..()
if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1)
@@ -542,3 +560,11 @@ obj/structure/cable/proc/cableColor(var/colorC)
icon = 'power_cond_green.dmi'
if("blue")
icon = 'power_cond_blue.dmi'
if("pink")
icon = 'power_cond_pink.dmi'
if("orange")
icon = 'power_cond_orange.dmi'
if("cyan")
icon = 'power_cond_cyan.dmi'
if("white")
icon = 'power_cond_white.dmi'

View File

@@ -46,6 +46,16 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit tho. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">Saturday, June 9th</h2>
<h3 class="author">Errorage updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">You can now make restraints from cable. It takes 15 lengths of cable to make a pair of restraints, they are applied the same way as handcuffs and have the same effects. It however only takes 30s to remove them by using the resist verb or button. You can also remove them from someone by using wirecutters on the handcuffed person.</li>
<li class="rscadd">Added four new cable colors: pink, orange, cyan and white. Engineer belts spawn with yellow, red or orange cables while toolboxes and tool closets spawn with all 8 colors.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">Thursday, June 7st</h2>
<h3 class="author">Icarus updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
sound/weapons/cablecuff.ogg Normal file

Binary file not shown.

View File

@@ -180,6 +180,7 @@
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
#define FILE_DIR "maps/backup"
#define FILE_DIR "maps/RandomZLevels"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"