diff --git a/code/defines/tanning/leather.dm b/code/defines/tanning/leather.dm index cb55d762c09..65281fc6aaf 100644 --- a/code/defines/tanning/leather.dm +++ b/code/defines/tanning/leather.dm @@ -5,6 +5,20 @@ icon_state = "sheet-hide" origin_tech = "" +/obj/item/stack/sheet/animalhide/corgi + name = "corgi hide" + desc = "The by-product of corgi farming." + singular_name = "corgi hide piece" + icon_state = "sheet-corgi" + origin_tech = "" + +/obj/item/stack/sheet/animalhide/cat + name = "cat hide" + desc = "The by-product of cat farming." + singular_name = "cat hide piece" + icon_state = "sheet-cat" + origin_tech = "" + /obj/item/stack/sheet/hairlesshide name = "hairless hide" desc = "This hide was stripped of it's hair, but still needs tanning." diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm index cb14a32ec71..3a440828abf 100644 --- a/code/game/objects/stacks/glass.dm +++ b/code/game/objects/stacks/glass.dm @@ -67,14 +67,16 @@ SHARDS user << "\red Can't let you do that." return 1 - var/dir_to_set = NORTH - for(var/obj/structure/window/WT in user.loc) - if (WT.dir == SOUTH) - dir_to_set = EAST - if (WT.dir == WEST) - dir_to_set = SOUTH - if (WT.dir == NORTH) - dir_to_set = WEST + //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. + var/dir_to_set = 2 + for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) + var/found = 0 + for(var/obj/structure/window/WT in user.loc) + if(WT.dir == direction) + found = 1 + if(!found) + dir_to_set = direction + break var/obj/structure/window/W W = new /obj/structure/window/basic( user.loc, 0 ) @@ -128,16 +130,17 @@ SHARDS if(!(win.ini_dir in cardinal)) user << "\red Can't let you do that." return 1 - var/dir_to_set = NORTH - for(var/obj/structure/window/WT in user.loc) - if (WT.dir == SOUTH) - dir_to_set = EAST - if (WT.dir == WEST) - dir_to_set = SOUTH - if (WT.dir == NORTH) - dir_to_set = WEST - /*else - dir_to_set stays NORTH*/ + + //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. + var/dir_to_set = 2 + for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) + var/found = 0 + for(var/obj/structure/window/WT in user.loc) + if(WT.dir == direction) + found = 1 + if(!found) + dir_to_set = direction + break var/obj/structure/window/W W = new /obj/structure/window/reinforced( user.loc, 1 ) diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index 976e52a4619..5e9a132f717 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -548,7 +548,11 @@ if(usr.next_move > world.time) return usr.next_move = world.time + 20 + world << "pass0" + + //resisting grabs (as if it helps anyone...) if ((!( usr.stat ) && usr.canmove && !( usr.restrained() ))) + world << "area1" var/resisting = 0 for(var/obj/O in usr.requests) del(O) @@ -572,7 +576,12 @@ if(resisting) for(var/mob/O in viewers(usr, null)) O.show_message(text("\red [] resists!", usr), 1) + + + + //breaking out of handcuffs if(usr:handcuffed && usr:canmove && (usr.last_special <= world.time)) + world << "area2" usr.next_move = world.time + 100 usr.last_special = world.time + 100 if(isalienadult(usr) || (HULK in usr.mutations) || (SUPRSTR in usr.augmentations))//Don't want to do a lot of logic gating here. @@ -603,21 +612,84 @@ 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 [] manages to remove the handcuffs!", usr), 1) + O.show_message("\red [usr] manages to remove the handcuffs!", 1) 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) + + //unbuckling yourself + else if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled) + world << "area3" usr.next_move = world.time + 100 usr.last_special = world.time + 100 usr << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)" for(var/mob/O in viewers(usr)) - O.show_message(text("\red [] attempts to unbuckle themself!", usr), 1) + O.show_message("\red [usr] attempts to unbuckle themself!", 1) spawn(0) if(do_after(usr, 1200)) if(!usr:buckled) return for(var/mob/O in viewers(usr)) - O.show_message(text("\red [] manages to unbuckle themself!", usr), 1) + O.show_message("\red [usr] manages to unbuckle themself!", 1) usr << "\blue You successfully unbuckle yourself." - usr:buckled.manual_unbuckle(usr) \ No newline at end of file + usr:buckled.manual_unbuckle(usr) + else if( src.loc && (istype(src.loc, /obj/structure/closet)) ) + world << "area4" + var/obj/structure/closet/C = usr.loc + world << "pass1" + if(C.opened) + return //Door's open... wait, why are you in it's contents then? + if(istype(usr.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = usr.loc + if(!SC.locked && !SC.welded) + return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist' + else + if(!C.welded) + return //closed but not welded... + world << "pass2" + + //okay, so the closet is either welded or locked... resist!!! + usr.next_move = world.time + 100 + usr.last_special = world.time + 100 + usr << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about 2 minutes)" + for(var/mob/O in viewers(usr.loc)) + O.show_message("\red The [usr.loc] begins to shake violently!", 1) + spawn(0) + if(do_after(usr, 50)) + world << "pass3" + if(!C || !usr || usr.loc != C || C.opened) //User, closet destroyed OR user no longer in closet OR closet opened + return + + //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... + if(istype(usr.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = usr.loc + if(!SC.locked && !SC.welded) + return + else + if(!C.welded) + return + world << "pass4" + + //Well then break it! + if(istype(usr.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = usr.loc + SC.desc = "It appears to be broken." + SC.icon_state = SC.icon_off + flick(SC.icon_broken, SC) + sleep(10) + flick(SC.icon_broken, SC) + sleep(10) + SC.broken = 1 + SC.locked = 0 + usr << "\red You successfully break out!" + for(var/mob/O in viewers(usr.loc)) + O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1) + SC.open() + else + C.welded = 0 + usr << "\red You successfully break out!" + for(var/mob/O in viewers(usr.loc)) + O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1) + C.open() + world << "pass5" + world << "area5" \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index 99e0f7edef1..0533cc47c62 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -51,11 +51,16 @@ should be listed in the changelog upon commit tho. Thanks. -->

Monday, June 11th

Donkie updated:

Xerux updated:

+

Errorage updated:

+ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index bcad12378d6..9904f624b91 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ