Index: AE/packages/31000GlassBreakingMoves/patches/common/level0_Final/TRAM-blownup-.oni-patch
===================================================================
--- AE/packages/31000GlassBreakingMoves/patches/common/level0_Final/TRAM-blownup-.oni-patch	(revision 959)
+++ AE/packages/31000GlassBreakingMoves/patches/common/level0_Final/TRAM-blownup-.oni-patch	(revision 965)
@@ -3,43 +3,62 @@
 @CUSTOM_CODE
 <code>
-	function contains(fullStringOrArray, subString){
-		return fullStringOrArray.indexOf(subString)!=-1;
-	}
-	
-	function removeFromArray(_array, _value){
-		_array.splice(_array.indexOf(_value), 1);
-	}
-
 	var myBuilder = new JSXMLBuilder();
 	myBuilder.load($xmlData);
 
 	var elements = myBuilder.elements[0];
+	var particles = elements.childElement("Animation").childElement("Particles");
+	var added_to_head = false, added_to_feet = false;
 	
-	var particles = elements.childElement("Animation").childElement("Particles");
-						
-	// Check if any of the existing particles contains a head bone
-	for (var i=0; (particles.childElement(i)); i++){ // the condition is to check if the child element exists (!= undefined)
-		var currElement=particles.childElement(i);
-
-		if(currElement.childElement("Bone").text=="Head"){
-			if(currElement.childElement("Name").text=="glass_break"){
-				return; // not necessary to add
-			}
-			else{
-				// gather all the necessary info
-				var int_start=currElement.childElement("Start").text;
-				var int_end=currElement.childElement("End").text;
-				
-				// Insert the new glass particle (for when he touches glass with head
-				myBuilder.addElementAt("Particle","",
-				"<Start>"+int_start+"</Start>\
-                <End>"+int_end+"</End>\
-                <Bone>Head</Bone>\
-                <Name>glass_break</Name>",particles.index+1,particles.level+1);
-				break;
-			}
+	// Check if glass_break is assigned to Head and one of the feet;
+	// remove it from any other bones if present
+	for (var i = 0; (particles.childElement(i)); i++)
+	{
+		var particle = particles.childElement(i);
+		var bone = particle.childElement("Bone").text;
+		var name = particle.childElement("Name").text;
+		if (name == "glass_break")
+		{
+			if (bone == "Head")
+				added_to_head = true;
+			else if (bone == "RightFoot")
+				added_to_feet = true;
+			else
+				myBuilder.removeElement(particle.index);
 		}
 	}
+
+	// Exit if we are past Oni's limit on TRAM particles
+	if (particles.length >= 16)
+		return;
+
+	// Add the glass_break particle to the desired bones if it's not there already
+	var heights = elements.childElement("Animation").childElement("Heights");
+	var anim_length;
+	for (anim_length = 0; (heights.childElement(anim_length)); anim_length++) {;}
+	if (!added_to_head)
+		myBuilder.addElementAt("Particle",
+				       "",
+			 	       "<Start>0</Start>\
+                			<End>" + (anim_length-1) + "</End>\
+                			<Bone>Head</Bone>\
+                			<Name>glass_break</Name>",
+				       particles.index + 1,
+				       particles.level + 1);
+
+	// Exit if we are past Oni's limit on TRAM particles
+	if (particles.length >= 16)
+		return;
+
+	if (!added_to_feet)
+		myBuilder.addElementAt("Particle",
+				       "",
+			 	       "<Start>0</Start>\
+                			<End>" + (anim_length-1) + "</End>\
+                			<Bone>RightFoot</Bone>\
+                			<Name>glass_break</Name>",
+				       particles.index + 1,
+				       particles.level + 1);
  
-	$xmlData=myBuilder.generateXML(); // update the global variable with the new XML
+	// Update the global variable with the new XML
+	$xmlData = myBuilder.generateXML();
 </code>
