diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 5cb5159b53..7e567f6de2 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -115,7 +115,25 @@
now_pushing = 1
if (ismob(AM))
var/mob/tmob = AM
- if(tmob.a_intent == "help" && a_intent == "help" && tmob.canmove && canmove) // mutual brohugs all around!
+
+//BubbleWrap - Should stop you pushing a restrained person out of the way
+
+ if(istype(tmob, /mob/living/carbon/human))
+
+ for(var/mob/M in range(tmob, 1))
+ if( ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restrained, you cannot push past"
+ now_pushing = 0
+ return
+ if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restraining [M], you cannot push past"
+ now_pushing = 0
+ return
+
+ //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
+ if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
var/turf/oldloc = loc
loc = tmob.loc
tmob.loc = oldloc
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 8486397727..57c73b0698 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -119,14 +119,39 @@
visible_message("\red [M] has pushed [src]!")
return
+ var/talked = 0 // BubbleWrap
+
if(randn <= 60)
- drop_item()
+ //BubbleWrap: Disarming breaks a pull
+ if ( pulling )
+ visible_message("\red [M] has broken [src]'s grip on [pulling]!")
+ talked = 1
+ pulling = null
+
+ //BubbleWrap: Disarming also breaks a grab - this will also stop someone being choked, won't it?
+ var/obj/item/weapon/grab/lgrab = l_hand
+ var/obj/item/weapon/grab/rgrab = r_hand
+ if ( lgrab )
+ if ( lgrab.affecting )
+ visible_message("\red [M] has broken [src]'s grip on [lgrab.affecting]!")
+ talked = 1
+ spawn(1)
+ del(lgrab)
+ if ( rgrab )
+ if ( rgrab.affecting )
+ visible_message("\red [M] has broken [src]'s grip on [rgrab.affecting]!")
+ talked = 1
+ spawn(1)
+ del(rgrab)
+ //End BubbleWrap
+
+ if( !talked ) //BubbleWrap
+ drop_item()
+ visible_message("\red [M] has disarmed [src]!")
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
- visible_message("\red [M] has disarmed [src]!")
return
+
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
visible_message("\red [M] attempted to disarm [src]!")
- return
-
-
+ return
\ No newline at end of file
diff --git a/html/changelog.html b/html/changelog.html
index 3fc942d8dc..1cc35d7e3f 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -59,6 +59,15 @@
Stuff which is in development and not yet visible to players or just code related
(ie. code improvements for expandability, etc.) should not be listed here. They
should be listed in the changelog upon commit tho. Thanks. -->
+
+28 January 2012
+
+ - BubbleWrap updated:
+
+ - Arresting buff!
+ - A person in handcuffs being pulled cannot be bumped out of the way, nor can the person pulling them. They can still push through a crowd (they get bumped back to behind the person being pulled, or pushed ahead depending on intent).
+
+
27 January 2012
@@ -81,8 +90,10 @@ oxygen tanks, and breath masks.
- Lattice is now removed when you create plating or floor (credit Donkieyo).
- Monkeys now take damage while in crit (credit Nodrak).
- The warden now has his own jacket. (credit Shiftyeyesshady).
- - Spectacular new dice that will display the proper side when rolled!! (credit TedJustice)
-
+ Spectacular new dice that will display the proper side when rolled!! (credit TedJustice)
+Spectacular new dice that will display the proper side when rolled!! (credit TedJustice)
+
+Borg RCDs can no longer take down R-walls. (headcoder orders)
19 January 2012
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index a7435baf4b..32acc89d76 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ