Balls

These are the various ball types in the World of Goo.

[Note to Editors: we are only interested in documenting the "official" ball types here]

General info about the balls.xml(.xml/.bin) files and their elements and attributes can be found and collected here.

BlockHead

A square block. Useful for building barriers or nudging balls around.

Ball ID: 
BlockHead
<ball name="BlockHead"
      shape="rectangle,100,100"
      walkforce="0" 
      mass="600"
      towermass="200" 
      dragmass="100" 
	  autodisable="true" 
      strands="0" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
      detachable="true" 
      blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
      jump="0.0,0.0"
      collideattached="true"
      material="BlockBall"
      hingedrag="true" 
 
      attenuationselect="0, 1"
      attenuationdeselect="0, 1"
      attenuationdrop="0, 1"
      attenuationdrag="0, 1"
 
      stacking="true"
      collidewithattached="true"
	  suckable="false"
      >
 
  <marker drag="IMAGE_BALL_BLOCKHEAD_DRAGMARKER" 
          detach="IMAGE_BALL_BLOCKHEAD_DRAGMARKER" 
          rotspeed="-2"/>
 
	<shadow image="IMAGE_BALL_BLOCKHEAD_SHADOW"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <splat image="IMAGE_FX_SMOKEBLACK"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_BLOCKHEAD_BODY1,IMAGE_BALL_BLOCKHEAD_BODY2,IMAGE_BALL_BLOCKHEAD_BODY3"
        scale="0.82"
        />
 
	<part name="bodydrag"
        layer="1"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_BLOCKHEAD_BODYDRAG"
        scale="0.82"
		state="dragging"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13" 
        x="-30,-22" y="-30,22"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_BLOCKHEAD_EYE,IMAGE_BALL_BLOCKHEAD_EYE2"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.75"
        />
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="death"        id="SOUND_BALL_BLOCKHEAD_BREAK01,SOUND_BALL_BLOCKHEAD_BREAK02,SOUND_BALL_BLOCKHEAD_BREAK03"/>
 
  <sound event="collidegeom"  id="SOUND_BALL_BLOCKHEAD_BUMP01,SOUND_BALL_BLOCKHEAD_BUMP02,SOUND_BALL_BLOCKHEAD_BUMP03,SOUND_BALL_BLOCKHEAD_BUMP04,SOUND_BALL_BLOCKHEAD_BUMP05,SOUND_BALL_BLOCKHEAD_BUMP06"/>
  <sound event="collidesame"  id="SOUND_BALL_BLOCKHEAD_BUMP01,SOUND_BALL_BLOCKHEAD_BUMP02,SOUND_BALL_BLOCKHEAD_BUMP03,SOUND_BALL_BLOCKHEAD_BUMP04,SOUND_BALL_BLOCKHEAD_BUMP05,SOUND_BALL_BLOCKHEAD_BUMP06"/>
  <sound event="collidediff"  id="SOUND_BALL_BLOCKHEAD_BUMP01,SOUND_BALL_BLOCKHEAD_BUMP02,SOUND_BALL_BLOCKHEAD_BUMP03,SOUND_BALL_BLOCKHEAD_BUMP04,SOUND_BALL_BLOCKHEAD_BUMP05,SOUND_BALL_BLOCKHEAD_BUMP06"/>
</ball>

BombMini

BombMini

Used by

A small, non-interactive bomb, only used in Burning Man.

Ball ID: 
BombMini
<ball name="BombMini"
      shape="circle,60,0"
      walkforce="0" 
      mass="40"
      towermass="40.0" 
      strands="4" 
      walkspeed="0"
      climbspeed="0.0"
      speedvariance="0" 
      detachable="false" 
      jump="0,0"
 
	  collidewithattached="false"
	  collideattached="false"
 
	  suckable="false"
	  climber="false"
      draggable="false"
	  isbehindstrands="false"
	  grumpy="true"
	  invulnerable="true"
 
	  stickyattached="false"
	  stickyunattached="false"
	  stuckattachment="false"
 
      burntime="3.0"
      detonateforce="500"
      detonateradius="500"
 
      blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
 
	  explosionparticles="BallExplode_Bomb"
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_BOMBMINI_STRAND" 
          inactiveimage="IMAGE_BALL_BOMBMINI_STRAND" 
          springconstmin="10" springconstmax="10" 
          dampfac="0.9" 
          maxlen2="140"
          maxforce="800"
          minlen="130"
          thickness="40"
		  walkable="false"
 
		  ignitedelay="0"
          burnspeed="3"
          fireparticles="fireArmBurn"
          burntimage="IMAGE_BALL_BOMBMINI_STRAND_BURNT"
		  />
 
  <particles id="fireRobotHead" states="onfire" overball="true" />
 
 
 
  <part name="body"
        layer="2" 
        x="0" y="0" 
        image="IMAGE_BALL_BOMBMINI_BODY" 
        rotate="false"
        scale="0.5" />
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="ignite"       id="SOUND_BALL_BOMBMINI_IGNITE01,SOUND_BALL_BOMBMINI_IGNITE02,SOUND_BALL_BOMBMINI_IGNITE03,SOUND_BALL_BOMBMINI_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_BOMBMINI_DETONATE1"/>
 
</ball>

BombShaft

BombShaft

Used by

The huge, caged bomb in Upper Shaft.

Ball ID: 
BombShaft
<ball name="BombShaft"
      shape="circle,120,0"
      walkforce="0" 
      mass="20"
      towermass="20.0" 
      strands="4" 
      walkspeed="0"
      climbspeed="0.0"
      speedvariance="0" 
      detachable="false" 
      jump="0,0"
 
	  collidewithattached="false"
	  collideattached="false"
 
	  suckable="false"
	  climber="false"
      draggable="false"
	  isbehindstrands="false"
	  grumpy="true"
	  invulnerable="true"
 
	  stickyattached="false"
	  stickyunattached="false"
	  stuckattachment="false"
 
      burntime="3.0"
      detonateforce="500"
      detonateradius="350"
 
      blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
 
	  explosionparticles="BallExplode_Bomb" 
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_BOMBSHAFT_STRAND" 
          inactiveimage="IMAGE_BALL_BOMBSHAFT_STRAND" 
          springconstmin="10" springconstmax="10" 
          dampfac="0.9" 
          maxlen2="140"
          maxforce="800"
          minlen="130"
          thickness="40"
		  walkable="false"
 
		  ignitedelay="0"
          burnspeed="3"
          fireparticles="fireArmBurn"
          burntimage="IMAGE_BALL_BOMBSHAFT_STRAND_BURNT"
		  />
 
  <particles id="fireRobotHead" states="onfire" overball="true" />
 
 
 
  <part name="body"
        layer="2" 
        x="0" y="0" 
        image="IMAGE_BALL_BOMBSHAFT_BODY" 
        rotate="false"
        scale="1" />
 
	<part name="lefteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="10"
        x="-30" y="0,0" 
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1"
        scale="1.1"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="10"
        x="30" y="0,0"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1"
        scale="1.1"
        />
 
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="ignite"       id="SOUND_BALL_BOMBSHAFT_IGNITE01,SOUND_BALL_BOMBSHAFT_IGNITE02,SOUND_BALL_BOMBSHAFT_IGNITE03,SOUND_BALL_BOMBSHAFT_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_BOMBSHAFT_DETONATE1"/>
 
</ball>

BombSticky

A sticky bomb that will attach to any surface you put it on.

Ball ID: 
BombSticky
<ball name="BombSticky"
      shape="circle,60,0"
      walkforce="0" 
      mass="60"
      towermass="30.0" 
      strands="4" 
      walkspeed="0"
      climbspeed="0.0"
      speedvariance="0" 
      detachable="true" 
      jump="0,0"
      explosionparticles="BallExplode_Bomb" 
	  collidewithattached="false"
	  collideattached="false"
 
	  suckable="false"
	  climber="false"
      draggable="true"
	  material="rock"
	  isbehindstrands="false"
	  grumpy="false"
	  invulnerable="true"
 
	  stickyattached="true"
	  stickyunattached="true"
	  stuckattachment="false"
 
      burntime="3.0"
      detonateforce="500"
      detonateradius="350"
 
	  attenuationselect="0.05, 1.0, 1.2"
	  attenuationdeselect="0.05, 1.2, 1.0"
	  attenuationdrop="0.05, 1.2, 1.0"
	  attenuationdrag="0.05, 1.2, 1.0"
 
	  statescales="attached,1.25"
 
      blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
 
	  wakedist="30"
      >
 
  <marker drag="IMAGE_BALL_BOMBSTICKY_DRAGMARKER" 
          detach="IMAGE_BALL_BOMBSTICKY_DETACHMARKER" 
          rotspeed="2"/>
 
  <strand type="spring" 
          image="IMAGE_BALL_BOMBSTICKY_STRAND" 
          inactiveimage="IMAGE_BALL_BOMBSTICKY_STRAND" 
          springconstmin="10" springconstmax="10" 
          dampfac="0.9" 
          maxlen2="140"
          maxforce="800"
          minlen="130"
          thickness="40"
		  walkable="false"
 
		  ignitedelay="0"
          burnspeed="3"
          fireparticles="fireArmBurn"
          burntimage="IMAGE_BALL_BOMBSTICKY_STRAND_BURNT"
		  />
 
	<detachstrand image="IMAGE_BALL_BOMBSTICKY_STRAND" maxlen="60" />
 
	<shadow image="IMAGE_BALL_BOMBSTICKY_SHADOW"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
  <particles id="fireRobotHead" states="onfire" overball="true" />
 
  <splat image="IMAGE_FX_SMOKEBLACK"/>
 
  <part name="spikes"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_BOMBSTICKY_SPIKES" 
        rotate="true"
        scale="0.62"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
		/>
 
	<part name="spikesStuck"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_BOMBSTICKY_SPIKES" 
        rotate="true"
        scale="0.69"
		state="attached"
		/>
 
  <part name="body"
        layer="2" 
        x="0" y="0" 
        image="IMAGE_BALL_BOMBSTICKY_BODY" 
        rotate="false"
        scale="0.5" />
 
	<part name="valve"
        layer="3" 
        x="24" y="24" 
        image="IMAGE_BALL_BOMBSTICKY_VALVE" 
        rotate="true"
        scale="0.60" />
 
	<part name="eyeLid1"
        layer="4" 
        x="-19" y="-2.5" 
        image="IMAGE_BALL_BOMBSTICKY_EYELID1" 
        rotate="true"
        scale="0.50"
 
		state="sleeping"
		/>
 
	<part name="eyeLid2"
        layer="4" 
        x="22" y="-7.5" 
        image="IMAGE_BALL_BOMBSTICKY_EYELID2" 
        rotate="true"
        scale="0.50"
 
		state="sleeping"
		/>
 
	<part name="lefteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-18,-12" y="0,7"
        xrange="-20,-10" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.75"
		state="climbing,walking,falling,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="12,18" y="0,7"
        xrange="10,20" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.75"
		state="climbing,walking,falling,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
 
	<part name="lefteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-32,-32" y="0,0"
        xrange="-32,-22" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.95"
		state="attached"
        />
  <part name="righteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="32,32" y="0,0"
        xrange="22,32" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.95"
		state="attached"
        />
 
 
 
 
 
  <!-- attached -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="attached" type="scale" axis="x" freq="1.0" amp="0.025" shift="0" />
    <sinanim part="body" state="attached" type="scale" axis="y" freq="1.0" amp="0.025" shift="0" />
	<sinanim part="spikesStuck" state="attached" type="scale" axis="x" freq="1.0" amp="0.05" shift="0.1" />
    <sinanim part="spikesStuck" state="attached" type="scale" axis="y" freq="1.0" amp="0.05" shift="0.1" />
	<sinanim part="valve" state="attached" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
	<sinanim part="valve" state="attached" type="translate" axis="y" freq="1.0" amp="-1" shift="0" />
	<sinanim part="lefteyeStuck" state="attached" type="translate" axis="x" freq="1.0" amp="-0.75" shift="0" />
	<sinanim part="righteyeStuck" state="attached" type="translate" axis="x" freq="1.0" amp="0.75" shift="0" />
  </sinvariance>
 
  <!-- dragging -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="2.0" amp="0.05" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="2.0" amp="0.05" shift="0" />
	<sinanim part="spikes" state="dragging" type="scale" axis="x" freq="2.0" amp="0.075" shift="0.1" />
    <sinanim part="spikes" state="dragging" type="scale" axis="y" freq="2.0" amp="0.075" shift="0.1" />
	<sinanim part="valve" state="dragging" type="translate" axis="x" freq="2.0" amp="2" shift="0" />
	<sinanim part="valve" state="dragging" type="translate" axis="y" freq="2.0" amp="-2" shift="0" />
	<sinanim part="lefteye" state="dragging" type="translate" axis="x" freq="2.0" amp="-0.5" shift="0" />
	<sinanim part="righteye" state="dragging" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
  </sinvariance>
 
  <!-- falling -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="falling" type="scale" axis="x" freq="1.0" amp="0.075" shift="0" />
    <sinanim part="body" state="falling" type="scale" axis="y" freq="1.0" amp="0.075" shift="0" />
	<sinanim part="spikes" state="falling" type="scale" axis="x" freq="1.0" amp="0.1" shift="0.1" />
    <sinanim part="spikes" state="falling" type="scale" axis="y" freq="1.0" amp="0.1" shift="0.1" />
	<sinanim part="lefteye" state="falling" type="translate" axis="x" freq="1.0" amp="-0.5" shift="0" />
	<sinanim part="righteye" state="falling" type="translate" axis="x" freq="1.0" amp="0.5" shift="0" />
	<sinanim part="valve" state="falling" type="translate" axis="x" freq="1.0" amp="2" shift="0" />
	<sinanim part="valve" state="falling" type="translate" axis="y" freq="1.0" amp="-2" shift="0" />
  </sinvariance>
  <!-- walking -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="walking" type="scale" axis="x" freq="1.0" amp="0.05" shift="0" />
    <sinanim part="body" state="walking" type="scale" axis="y" freq="1.0" amp="0.05" shift="0" />
	<sinanim part="spikes" state="walking" type="scale" axis="x" freq="1.0" amp="0.1" shift="0.1" />
    <sinanim part="spikes" state="walking" type="scale" axis="y" freq="1.0" amp="0.1" shift="0.1" />
	<sinanim part="lefteye" state="walking" type="translate" axis="x" freq="1.0" amp="-0.5" shift="0" />
	<sinanim part="righteye" state="walking" type="translate" axis="x" freq="1.0" amp="0.5" shift="0" />
	<sinanim part="valve" state="walking" type="translate" axis="x" freq="1.0" amp="2" shift="0" />
	<sinanim part="valve" state="walking" type="translate" axis="y" freq="1.0" amp="-2" shift="0" />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="ignite"       id="SOUND_BALL_BOMBSTICKY_IGNITE01,SOUND_BALL_BOMBSTICKY_IGNITE02,SOUND_BALL_BOMBSTICKY_IGNITE03,SOUND_BALL_BOMBSTICKY_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_BOMBSTICKY_DETONATE1"/>
 
</ball>

Bone

The Bone Goo Ball is extremely resilient. It cannot be destroyed by spikes, so you can use it protect other balls.

Ball ID: 
Bone
<ball
  name="Bone"
  shape="rectangle,50,50"
  mass="60"
  towermass="4.0"
  strands="2" 
  walkspeed="0.1"
  walkforce="3000"
  climbspeed="0.9"
  speedvariance="0.2"
  jump="0.0,0.3"
  sticky="false"
  blinkcolor="0,0,0"
  invulnerable="true"
  grumpy="false"
  hingedrag="false"
 
  attenuationselect="0.05, 1.0, 1.2"
  attenuationdeselect="0.05, 1.2, 1.0"
  attenuationdrop="0.05, 1.2, 1.0"
  attenuationdrag="0.05, 1.2, 1.0"
 
  maxattachspeed="1000" 
  material="BoneBall"
 
  jumponwakeup="false"
  staticwhensleeping="true"
  >
 
  <marker drag="IMAGE_BALL_BONE_DRAGMARKER_P1" 
          detach="IMAGE_BALL_BONE_DETACHMARKER_P1" 
          rotspeed="2" />
 
  <shadow image="IMAGE_BALL_BONE_SHAD"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_BONE_STRAND" 
          inactiveimage="IMAGE_BALL_BONE_STRAND" 
          springconstmin="10" springconstmax="10" 
          dampfac="0.9" 
          maxlen2="120"
          maxforce="800"
          minlen="100"
          thickness="20"
		  walkable="false"
		  />
 
  <detachstrand image="IMAGE_BALL_BONE_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_BONE_SPLAT1,IMAGE_BALL_BONE_SPLAT2"/>
 
  <part name="jaw"
        layer="0"
        rotate="true"
        x="0" y="-25"
        image="IMAGE_BALL_BONE_JAW"
        stretch="24,1.5,0.75"
        scale="0.76"
        state="climbing,attached,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
        />
 
  <part name="body"
        layer="1"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_BONE_BODY1,IMAGE_BALL_BONE_BODY2"
        stretch="24,1.5,0.75"
        scale="0.75"
        />
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="bounce"    id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"      id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="marker"    id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"    id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
  <sound event="attach"    id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="detaching" id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"  id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="snap"      id="SOUND_BALL_GENERIC_SNAP1"/>
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
  <sound event="suction"   id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"      id=""/>
 
 
  <!-- climbing animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="jaw"  state="climbing" type="translate" axis="y" freq="4.0" amp="3"   shift="0"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="jaw"  state="dragging" type="translate" axis="y" freq="4.0" amp="10"   shift="0"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="jaw"  state="attached" type="translate" axis="y" freq="4.0" amp="3"   shift="0"   />
  </sinvariance>
 
  <!-- tank animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
	<sinanim part="jaw"  state="tank" type="translate" axis="y" freq="4.0" amp="3"   shift="0"   />
  </sinvariance>
 
</ball>

common

The standard black ball used in many levels. Can't be detached once you use it in a structure.

Ball ID: 
common
<ball name="common"
      shape="circle,30,0.25"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,0,0"
      jump="0.0,0.3"
      >
 
	<!-- For the marker, we need to be able to specify images for each player -->
  <marker	drag="IMAGE_BALL_COMMON_DRAGMARKER_P1"
			detach="IMAGE_BALL_COMMON_DRAGMARKER_P1"
			rotspeed="-2"/>
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW1"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_COMMON_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="1000"
          minlen="100"
          />
 
  <detachstrand image="IMAGE_BALL_COMMON_STRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_COMMON_SPLAT1,IMAGE_BALL_COMMON_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_COMMON_BODY" 
        stretch="16,2,0.5"
        scale="0.54984375"
        />
  <part name="hilite1" layer="2" 
        x="-5,0" y="6,10"
        image="IMAGE_BALL_GENERIC_HILITE1"
        state="attached"
        scale="0.5"
        />
  <part name="hilite2" layer="2" 
        x="-10,-6" y="0,5"
        image="IMAGE_BALL_GENERIC_HILITE2"
        state="attached"
        scale="0.5"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="12" 
        x="-12,-8" y="-5,5"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1" 
        pupilinset="12" 
        x="8,12" y="-5,5"
        xrange="0,18" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="body"             state="tank" type="scale"     axis="x" freq="1.0" amp="0.06" shift="0"   />
    <sinanim part="body"             state="tank" type="scale"     axis="y" freq="1.0" amp="0.06" shift="0.5" />
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="body,lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_COMMON_SQUEAK01,SOUND_BALL_COMMON_SQUEAK02,SOUND_BALL_COMMON_SQUEAK03,SOUND_BALL_COMMON_SQUEAK04,SOUND_BALL_COMMON_SQUEAK05,SOUND_BALL_COMMON_SQUEAK06,SOUND_BALL_COMMON_SQUEAK07,SOUND_BALL_COMMON_SQUEAK08,SOUND_BALL_COMMON_SQUEAK09,SOUND_BALL_COMMON_SQUEAK10,SOUND_BALL_COMMON_SQUEAK11,SOUND_BALL_COMMON_SQUEAK12,SOUND_BALL_COMMON_SQUEAK13,SOUND_BALL_COMMON_SQUEAK14,SOUND_BALL_COMMON_SQUEAK15,SOUND_BALL_COMMON_SQUEAK16"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
 
</ball>

common_albino

The standard albino ball used in a few levels. Uniquely, it has four arms.

Ball ID: 
common_albino
<ball name="common_albino"
      shape="circle,36,0.25"
      mass="40"
      towermass="7.5" 
      strands="4" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,0,0"
      jump="0,0.8"
      >
 
  <marker drag="IMAGE_BALL_COMMON_ALBINO_DRAGMARKER_P1" 
          detach="IMAGE_BALL_COMMON_ALBINO_DRAGMARKER_P1" 
          rotspeed="2"/>
 
  <shadow image="IMAGE_BALL_COMMON_ALBINO_SHADOWGLOW" additive="true"/>
 
  <strand type="spring" 
          image="IMAGE_BALL_COMMON_ALBINO_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="6" springconstmax="6" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="75"/>
 
  <detachstrand image="IMAGE_BALL_COMMON_ALBINO_STRAND" maxlen="60" />
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <splat image="IMAGE_BALL_COMMON_ALBINO_SPLAT1,IMAGE_BALL_COMMON_ALBINO_SPLAT2"/>
 
 
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_COMMON_ALBINO_BODY" 
        stretch="16,2,0.5"
        scale="0.65765625"/>
  <part name="hilite1" layer="2" 
        x="-5,0" y="6,10"
        image="IMAGE_BALL_GENERIC_HILITE1"
        state="attached"
        scale="0.5"
        />
  <part name="hilite2" layer="2" 
        x="-10,-6" y="0,5"
        image="IMAGE_BALL_GENERIC_HILITE2"
        state="attached"
        scale="0.5"
        />
  <part name="lefteye"
        layer="2"
        rotate="true" 
        x="-12,-8" y="-3,3"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_COMMON_ALBINO_EYEBLACK1,IMAGE_BALL_COMMON_ALBINO_EYEBLACK2,IMAGE_BALL_COMMON_ALBINO_EYEBLACK3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.85"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        x="8,12" y="-3,3"
        xrange="0,18" yrange="-12,12"
        image="IMAGE_BALL_COMMON_ALBINO_EYEBLACK1,IMAGE_BALL_COMMON_ALBINO_EYEBLACK2,IMAGE_BALL_COMMON_ALBINO_EYEBLACK3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.85"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="body"             state="tank" type="scale"     axis="x" freq="1.0" amp="0.06" shift="0"   />
    <sinanim part="body"             state="tank" type="scale"     axis="y" freq="1.0" amp="0.06" shift="0.5" />
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="body,lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_COMMON_ALBINO_SQUEAK01,SOUND_BALL_COMMON_ALBINO_SQUEAK02,SOUND_BALL_COMMON_ALBINO_SQUEAK03,SOUND_BALL_COMMON_ALBINO_SQUEAK04,SOUND_BALL_COMMON_ALBINO_SQUEAK05,SOUND_BALL_COMMON_ALBINO_SQUEAK06,SOUND_BALL_COMMON_ALBINO_SQUEAK07,SOUND_BALL_COMMON_ALBINO_SQUEAK08,SOUND_BALL_COMMON_ALBINO_SQUEAK09,SOUND_BALL_COMMON_ALBINO_SQUEAK10,SOUND_BALL_COMMON_ALBINO_SQUEAK11,SOUND_BALL_COMMON_ALBINO_SQUEAK12,SOUND_BALL_COMMON_ALBINO_SQUEAK13,SOUND_BALL_COMMON_ALBINO_SQUEAK14,SOUND_BALL_COMMON_ALBINO_SQUEAK15,SOUND_BALL_COMMON_ALBINO_SQUEAK16"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
</ball>

common_black

The standard black ball with a difference. This one is slightly less springy.

Ball ID: 
common_black
<ball name="common_black"
      shape="circle,35,0.25"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,0,0"
      jump="0.0,0.3"
 
	  jumponwakeup="true"
	  staticwhensleeping="true"
      >
 
  <marker drag="IMAGE_BALL_COMMON_BLACK_DRAGMARKER_P1" 
          detach="IMAGE_BALL_COMMON_BLACK_DRAGMARKER_P1" 
          rotspeed="2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_COMMON_BLACK_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"/>
 
  <detachstrand image="IMAGE_BALL_COMMON_BLACK_DSTRAND" maxlen="160" />
 
  <splat image="IMAGE_BALL_COMMON_BLACK_SPLAT1,IMAGE_BALL_COMMON_BLACK_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_COMMON_BLACK_BODY" 
        stretch="16,2,0.5"
        rotate="true"
        scale="0.646875" />
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13" 
        x="-12,-6" y="2,7"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1" 
        pupilinset="13" 
        x="6,12" y="2,7"
        xrange="0,18" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="body"             state="tank" type="scale"     axis="x" freq="1.0" amp="0.06" shift="0"   />
    <sinanim part="body"             state="tank" type="scale"     axis="y" freq="1.0" amp="0.06" shift="0.5" />
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="body,lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_COMMON_BLACK_SQUEAK01,SOUND_BALL_COMMON_BLACK_SQUEAK02,SOUND_BALL_COMMON_BLACK_SQUEAK03,SOUND_BALL_COMMON_BLACK_SQUEAK04,SOUND_BALL_COMMON_BLACK_SQUEAK05,SOUND_BALL_COMMON_BLACK_SQUEAK06,SOUND_BALL_COMMON_BLACK_SQUEAK07,SOUND_BALL_COMMON_BLACK_SQUEAK08,SOUND_BALL_COMMON_BLACK_SQUEAK09,SOUND_BALL_COMMON_BLACK_SQUEAK10,SOUND_BALL_COMMON_BLACK_SQUEAK11,SOUND_BALL_COMMON_BLACK_SQUEAK12,SOUND_BALL_COMMON_BLACK_SQUEAK13,SOUND_BALL_COMMON_BLACK_SQUEAK14,SOUND_BALL_COMMON_BLACK_SQUEAK15,SOUND_BALL_COMMON_BLACK_SQUEAK16"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
</ball>

Distant

Distant

Used by

  • MapWorldView

These are the tiny balls that appear in the distance on the main title screen. You can pick them up and throw them around!

Ball ID: 
Distant
<ball name="Distant"
      shape="circle,10,0.25"
      mass="30"
      towermass="7.5" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="true" 
      jump="0.4,1.2"
      >
 
  <marker drag="IMAGE_BALL_DISTANT_DRAGMARKER" 
          detach="IMAGE_BALL_DISTANT_DETACHMARKER" 
          rotspeed="2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_DISTANT_STRAND" 
          inactiveimage="IMAGE_BALL_DISTANT_STRAND" 
          springconstmin="6" springconstmax="6" 
          dampfac="1.9" 
          maxlen2="50" maxlen1="80" 
          maxforce="600"
          minlen="40"/>
 
  <detachstrand image="IMAGE_BALL_DISTANT_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_DISTANT_SPLAT1,IMAGE_BALL_DISTANT_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_DISTANT_BODY" 
        rotate="true" 
        scale="0.5625"
        stretch="12,2,0.5"/>
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
 
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
  </sinvariance>
 
 
 
 
  <!-- Sound FX -->
 
 
 
</ball>

Drained

Drained

Used by

  • No levels found

These are the balls that you use in the World of Goo Corporation. They have been "drained" of all their power. You can attach and detach them. They have 2 arms.

Ball ID: 
Drained
<ball name="Drained"
      shape="circle,30,0.25"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="true" 
      blinkcolor="0,0,0"
      jump="0.3,0.9"
      burntime="5"
      detonateforce="300"
      detonateradius="200"
			autobounds="true"
			autoboundsunattached="true"
      >
 
  <marker drag="IMAGE_BALL_DRAINED_DRAGMARKER_P1" 
          detach="IMAGE_BALL_DRAINED_DETACHMARKER_P1" 
          rotspeed="-2"/>
 
  <strand type="spring" 
          image="IMAGE_BALL_DRAINED_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          geom="false"
          />
 
  <detachstrand image="IMAGE_BALL_DRAINED_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_DRAINED_SPLAT1,IMAGE_BALL_DRAINED_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_DRAINED_BODY" 
        stretch="16,2,0.5"
        scale="1.031"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="12" 
        x="-12,-8" y="-5,5"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1" 
        pupilinset="12" 
        x="8,12" y="-5,5"
        xrange="0,18" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_DRAINED_SQUEAK01,SOUND_BALL_DRAINED_SQUEAK02,SOUND_BALL_DRAINED_SQUEAK03,SOUND_BALL_DRAINED_SQUEAK04,SOUND_BALL_DRAINED_SQUEAK05,SOUND_BALL_DRAINED_SQUEAK06,SOUND_BALL_DRAINED_SQUEAK07,SOUND_BALL_DRAINED_SQUEAK08,SOUND_BALL_DRAINED_SQUEAK09,SOUND_BALL_DRAINED_SQUEAK10,SOUND_BALL_DRAINED_SQUEAK11,SOUND_BALL_DRAINED_SQUEAK12,SOUND_BALL_DRAINED_SQUEAK13,SOUND_BALL_DRAINED_SQUEAK14,SOUND_BALL_DRAINED_SQUEAK15,SOUND_BALL_DRAINED_SQUEAK16"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
 
 
</ball>

BeautyProduct

When a Beauty ball hits a spike, it produces 16 of these (plus 2 BeautyProductEyes).

Ball ID: 
BeautyProduct
<ball name="BeautyProduct"
      shape="circle,32,0.2"
      mass="20"
      towermass="5"
      strands="0" 
      walkspeed="0.1"
      climbspeed="1.8"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0.0,0.0"
      grumpy="true"
	  invulnerable="false"
	  wakedist="30"
	  autoboundsunattached="true"
 
	  burntime="2.0"
	  detonateforce="0"
	  detonateradius="0"
 
	  jumponwakeup="true"
	  staticwhensleeping="true"
      >
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW0"/>
 
  <splat image="IMAGE_BALL_BEAUTYPRODUCT_SPLAT1,IMAGE_BALL_BEAUTYPRODUCT_SPLAT2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
  <particles id="poisonBallBurn" states="onfire" overball="false" />
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_BEAUTYPRODUCT_BODY"
        stretch="16,2,0.5"
        scale="0.6"
        />
 
  <part name="lips" layer="1" 
       x="-3,-3" y="-8,-4"
       image="IMAGE_BALL_BEAUTYPRODUCT_LIPS"
       scale="0.5"
       rotate="true"
       state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
 
  <sound event="bounce"    id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"      id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
 
  <!-- walking animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="walking" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="falling" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="falling" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="falling" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="falling" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="climbing" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
 
</ball>

BeautyProductEye

BeautyProductEye

Used by

  • No levels found

When a Beauty ball hits a spike, it produces 16 BeautyProducts, and 2 of these eyes.

Ball ID: 
BeautyProductEye
<ball name="BeautyProductEye"
      shape="circle,32,0.125"
      mass="20"
      towermass="5"
      strands="0" 
      walkspeed="0.1"
      climbspeed="1.8"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0.0,0.0"
      grumpy="true"
 
	  blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
 
	  invulnerable="false"
      >
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW0"/>
 
  <splat image="IMAGE_BALL_BEAUTYPRODUCTEYE_SPLAT1,IMAGE_BALL_BEAUTYPRODUCTEYE_SPLAT2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
  <particles id="poisonBallBurn" states="onfire" overball="false" />
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_BEAUTYPRODUCTEYE_BODY"
        stretch="16,2,0.5"
        scale="0.7"
		rotate="true"
 
		eye="true"
        pupil="IMAGE_BALL_BEAUTYPRODUCTEYE_PUPIL"
        pupilinset="24"
        />
 
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
 
  <!-- walking animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="walking" type="scale"     axis="x" freq="2.0" amp="0.05" shift="0"   />
    <sinanim part="body,lips"    state="walking" type="scale"     axis="y" freq="2.0" amp="0.05" shift="0.5" />
    <sinanim part="body"         state="walking" type="translate" axis="y" freq="2.0" amp="1"   shift="0"   />
    <sinanim part="lips"         state="walking" type="translate" axis="y" freq="2.0" amp="-2"  shift="0.5" />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="falling" type="scale"     axis="x" freq="2.0" amp="0.05" shift="0"   />
    <sinanim part="body,lips"    state="falling" type="scale"     axis="y" freq="2.0" amp="0.05" shift="0.5" />
    <sinanim part="body"         state="falling" type="translate" axis="y" freq="2.0" amp="1"   shift="0"   />
    <sinanim part="lips"         state="falling" type="translate" axis="y" freq="2.0" amp="-2"  shift="0.5" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="x" freq="2.0" amp="0.05" shift="0"   />
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="y" freq="2.0" amp="0.05" shift="0.5" />
    <sinanim part="body"         state="climbing" type="translate" axis="y" freq="2.0" amp="1"   shift="0"   />
    <sinanim part="lips"         state="climbing" type="translate" axis="y" freq="2.0" amp="-2"  shift="0.5" />
  </sinvariance>
 
 
</ball>

Bit

The standard ball in the "3D" World. Under certain circumstances (e.g. poisoned water) can turn into Pilot balls.

Ball ID: 
Bit
<ball name="Bit"
      shape="circle,30,0.25"
      walkforce="500" 
      mass="30"
      towermass="10.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,255,0"
      jump="0.0,0.3"
 
	  wakedist="60"
	  hideeyes="false"
 
	  fling="200,2.5"
 
	  burntime="2.0"
      detonateforce="1000"
      detonateradius="100"
 
	  contains="1,Pilot"
	  popduration="0.1"
	  popparticles="ish_bitPop"
	  popsound="SOUND_BALL_BIT_POP1"
 
	  explosionparticles="BallExplode_ISH"
      >
 
	<!-- For the marker, we need to be able to specify images for each player -->
  <marker	drag="IMAGE_BALL_BIT_DRAGMARKER_P1"
			detach="IMAGE_BALL_BIT_DRAGMARKER_P1"
			rotspeed="-2"/>
 
 
  <particles id="ish_sleepyZzz" states="sleeping" overball="true" />
  <particles id="ish_smallfire" states="onfire" overball="true" />
  <particles id="ish_FlingTrail" states="falling" overball="true" />
 
 
  <detachstrand image="IMAGE_BALL_BIT_ARM" maxlen="60" />
 
  <splat image="IMAGE_BALL_BIT_SPLAT1,IMAGE_BALL_BIT_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_BIT_BODY" 
        stretch="16,3.0,0.5"
        scale="0.5"
 
		eye="true"
        pupil="IMAGE_BALL_BIT_PUPIL"
        pupilinset="22"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5"   />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="body"             state="tank" type="scale"     axis="x" freq="1.0" amp="0.06" shift="0"   />
    <sinanim part="body"             state="tank" type="scale"     axis="y" freq="1.0" amp="0.06" shift="0.5" />
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="body,lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_BIT_CHIRP01,SOUND_BALL_BIT_CHIRP02,SOUND_BALL_BIT_CHIRP03,SOUND_BALL_BIT_CHIRP04,SOUND_BALL_BIT_CHIRP05,SOUND_BALL_BIT_CHIRP06,SOUND_BALL_BIT_CHIRP07,SOUND_BALL_BIT_CHIRP08,SOUND_BALL_BIT_CHIRP09,SOUND_BALL_BIT_CHIRP10,SOUND_BALL_BIT_CHIRP11,SOUND_BALL_BIT_CHIRP12" />
 
  <sound event="bounce"       id="SOUND_BALL_BIT_CHIRP01,SOUND_BALL_BIT_CHIRP02,SOUND_BALL_BIT_CHIRP03,SOUND_BALL_BIT_CHIRP04,SOUND_BALL_BIT_CHIRP05,SOUND_BALL_BIT_CHIRP06,SOUND_BALL_BIT_CHIRP07,SOUND_BALL_BIT_CHIRP08,SOUND_BALL_BIT_CHIRP09,SOUND_BALL_BIT_CHIRP10,SOUND_BALL_BIT_CHIRP11,SOUND_BALL_BIT_CHIRP12"/>
  <sound event="land"         id="SOUND_BALL_BIT_CHIRP01,SOUND_BALL_BIT_CHIRP02,SOUND_BALL_BIT_CHIRP03,SOUND_BALL_BIT_CHIRP04,SOUND_BALL_BIT_CHIRP05,SOUND_BALL_BIT_CHIRP06,SOUND_BALL_BIT_CHIRP07,SOUND_BALL_BIT_CHIRP08,SOUND_BALL_BIT_CHIRP09,SOUND_BALL_BIT_CHIRP10,SOUND_BALL_BIT_CHIRP11,SOUND_BALL_BIT_CHIRP12"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
 
  <sound event="snap"         id="SOUND_BALL_BIT_LAUNCH01,SOUND_BALL_BIT_LAUNCH02,SOUND_BALL_BIT_LAUNCH03,SOUND_BALL_BIT_LAUNCH04,SOUND_BALL_BIT_LAUNCH05,SOUND_BALL_BIT_LAUNCH06,SOUND_BALL_BIT_LAUNCH07"/>
 
  <sound event="death"        id="SOUND_BALL_BIT_PAIN01,SOUND_BALL_BIT_PAIN02,SOUND_BALL_BIT_PAIN03,SOUND_BALL_BIT_PAIN04"/>
  <sound event="deathfall"    id="SOUND_BALL_BIT_PAIN01,SOUND_BALL_BIT_PAIN02,SOUND_BALL_BIT_PAIN03,SOUND_BALL_BIT_PAIN04"/>
 
  <sound event="exit"         id=""/>
 
  <sound event="ignite"       id="SOUND_BALL_BIT_IGNITE01,SOUND_BALL_BIT_IGNITE02,SOUND_BALL_BIT_IGNITE03,SOUND_BALL_BIT_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_BIT_POP01,SOUND_BALL_BIT_POP02,SOUND_BALL_BIT_POP03,SOUND_BALL_BIT_POP04,SOUND_BALL_BIT_POP05,SOUND_BALL_BIT_POP06,SOUND_BALL_BIT_POP07"/>
 
</ball>

DrainedIsh

DrainedIsh

Used by

  • No levels found

These are the balls that you use in the World of Goo Corporation 3D. They have been "drained" of all their power. You can attach and detach them. They have 2 arms.

Ball ID: 
DrainedIsh
<ball name="DrainedIsh"
      shape="circle,30,0.25"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="true" 
      blinkcolor="0,0,0"
      jump="0.3,0.9"
      burntime="5"
      detonateforce="300"
      detonateradius="200"
			autobounds="true"
			autoboundsunattached="true"
      >
 
  <marker drag="IMAGE_BALL_DRAINEDISH_DRAGMARKER_P1" 
          detach="IMAGE_BALL_DRAINEDISH_DETACHMARKER_P1" 
          rotspeed="-2"/>
 
 
  <strand type="spring" 
          image="IMAGE_BALL_DRAINEDISH_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          geom="false"
          />
 
  <detachstrand image="IMAGE_BALL_DRAINEDISH_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_DRAINEDISH_SPLAT1,IMAGE_BALL_DRAINEDISH_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_DRAINEDISH_BODY" 
        stretch="16,2,0.5"
        scale="1.19"
        />
 
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_DRAINEDISH_CHIRP01,SOUND_BALL_DRAINEDISH_CHIRP02,SOUND_BALL_DRAINEDISH_CHIRP03,SOUND_BALL_DRAINEDISH_CHIRP04,SOUND_BALL_DRAINEDISH_CHIRP05,SOUND_BALL_DRAINEDISH_CHIRP06,SOUND_BALL_DRAINEDISH_CHIRP07,SOUND_BALL_DRAINEDISH_CHIRP08,SOUND_BALL_DRAINEDISH_CHIRP09,SOUND_BALL_DRAINEDISH_CHIRP10,SOUND_BALL_DRAINEDISH_CHIRP11,SOUND_BALL_DRAINEDISH_CHIRP12"/>
  <sound event="pickup"       id="SOUND_BALL_DRAINEDISH_SINCHIRP01,SOUND_BALL_DRAINEDISH_SINCHIRP02,SOUND_BALL_DRAINEDISH_SINCHIRP03,SOUND_BALL_DRAINEDISH_SINCHIRP04"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="attach"       id="SOUND_BALL_DRAINEDISH_SINCHIRPUP01,SOUND_BALL_DRAINEDISH_SINCHIRPUP02,SOUND_BALL_DRAINEDISH_SINCHIRPUP03,SOUND_BALL_DRAINEDISH_SINCHIRPUP04"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
</ball>

EvilEye

These balls are used in Regurgitation Pumping Station at the end of Chapter 1. They are lighter than air and will helpfully lift your ivy structure into the air, so you can see the the world around you.

They also make a brief appearance in the end-game movie, carrying an ivy structure through space.

Ball ID: 
EvilEye
<ball name="EvilEye" 
      shape="circle,70,0.25" 
      mass="30" 
      strands="1" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      antigrav="3" 
      dampening="0.1"
      grumpy="true"
      collideattached="true"
      invulnerable="true"
      autobounds="false" 
 
      attenuationselect="0.1, 1.0, 1.1"
      attenuationdeselect="0.1, 1.1, 1.0"
      attenuationdrop="0.1, 1.1, 1.0"
      attenuationdrag="0.1, 1.1, 1.0"
      maxattachspeed="1000" 
      hideeyes="false"
      >
 
  <marker drag="IMAGE_BALL_EVILEYE_DRAGMARKER" 
          detach="IMAGE_BALL_EVILEYE_DETACHMARKER" 
          rotspeed="2"/>
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW1"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="rope" 
          image="IMAGE_BALL_EVILEYE_ARM" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="2" springconstmax="2" 
          dampfac="0.002" 
          maxlen2="300" maxlen1="300" 
          maxforce="2000" 
          minlen="120"
          walkable="false"
          thickness="20"/>
 
  <detachstrand maxlen="70" />
 
  <splat image="IMAGE_BALL_EVILEYE_SPLAT1,IMAGE_BALL_EVILEYE_SPLAT2"/>
 
  <part name="body"
        layer="0"
        rotate="false"
        x="0" y="0"
        image="IMAGE_BALL_EVILEYE_BODY"
        stretch="24,1.1,0.9"
        scale="0.35"
 
        eye="true"
        pupil="IMAGE_BALL_EVILEYE_PUPIL"
        pupilinset="116"
        />
 
  <!--
  <part name="pupil"
       layer="1"
       rotate="false"
       x="0" y="0"
       image="IMAGE_BALL_EVILEYE_PUPIL"
       scale="0.35"
        />
  -->
 
  <part name="shine"
        layer="2"
        rotate="false"
        x="0" y="0"
        image="IMAGE_BALL_EVILEYE_SHINE"
        stretch="24,1.1,0.9"
        scale="0.35"
        />
 
  <!-- attached animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.8">
    <sinanim part="body,shine"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.2" shift="0"   />
    <sinanim part="body,shine"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.2" shift="0.1" />
  </sinvariance>
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body,shine"             state="walking" type="scale"     axis="x" freq=".20" amp="0.03" shift="0"   />
    <sinanim part="body,shine"             state="walking" type="scale"     axis="y" freq=".20" amp="0.03" shift="0.5" />
    <sinanim part="body,shine"             state="walking" type="translate" axis="y" freq=".20" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body,shine"             state="falling" type="scale"     axis="x" freq=".20" amp="0.03" shift="0"   />
    <sinanim part="body,shine"             state="falling" type="scale"     axis="y" freq=".20" amp="0.03" shift="0.5" />
    <sinanim part="body,shine"             state="falling" type="translate" axis="y" freq=".20" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body,shine"             state="dragging" type="scale"     axis="x" freq=".20" amp="0.03" shift="0"   />
    <sinanim part="body,shine"             state="dragging" type="scale"     axis="y" freq=".20" amp="0.03" shift="0.5" />
    <sinanim part="body,shine"             state="dragging" type="translate" axis="y" freq=".20" amp="2"   shift="0"   />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
 
</ball>

Fish

This rather unique ball is used in the final chapter of the epilogue. It is lighter than air, and is used to lift the telescope into space.

Ball ID: 
Fish
<ball name="Fish"
      shape="circle,80,0.25"
      mass="20"
      towermass="5"
      strands="1"
      walkspeed="0"
      climbspeed="0"
      speedvariance="0.2" 
      antigrav="14"
      dampening="0.115"
      grumpy="true"
      collideattached="true"
      statescales="attached,1.65, detaching,1.3"
      suckable="false"
      jump="0.0,0.4"
      maxattachspeed="1000"
 
	  climber="false"
 
	  jumponwakeup="true"
	  staticwhensleeping="true"
 
	  invulnerable="true"
 
	  hideeyes="false"
	  blinkcolor="0,0,0"
 
	  detachable="false"
      >
 
  <marker drag="IMAGE_BALL_FISH_DRAGMARKER_P1" 
          detach="IMAGE_BALL_FISH_DRAGMARKER_P1" 
          rotspeed="2"/>
 
  <strand type="rope" 
          image="IMAGE_BALL_FISH_STRING3" 
          inactiveimage="IMAGE_BALL_FISH_INACTIVE" 
          springconstmin="2" springconstmax="2" 
          dampfac="0.002" 
          maxlen2="380" maxlen1="500"
		  shrinklen="160"
          maxforce="800"
          minlen="150"
          walkable="false"
          thickness="10"/>
 
 
  <splat image="IMAGE_BALL_FISH_SPLAT1,IMAGE_BALL_FISH_SPLAT2"/>
 
 
  <part name="wingLeft" layer="0" 
        x="-64" y="0,0"
        image="IMAGE_BALL_TIMEBUG_WINGLEFT"
        scale="1"
        rotate="false"
		state="attached"
        />
  <part name="wingRight" layer="0" 
        x="64" y="0,0"
        image="IMAGE_BALL_TIMEBUG_WINGRIGHT"
        scale="1"
        rotate="false"
		state="attached"
        />
 
  <part name="body"
        layer="1"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_FISH_BODY"
        stretch="32,2,0.5"
        scale="1.15"
        />
 
 
 
	<part name="lefteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-18,-12" y="0,7"
        xrange="-20,-10" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        scale="0.6"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="12,18" y="0,7"
        xrange="10,20" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        scale="0.6"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
        />
 
	<part name="lefteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-54,-54" y="0,0"
        xrange="-64,-22" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="1.0"
		state="attached"
        />
  <part name="righteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="54,54" y="0,0"
        xrange="22,64" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="1.0"
		state="attached"
        />
 
 
  <!-- attached animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.8">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.2" amp="0.1" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq=".8" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="attached" type="translate" axis="y" freq="1.4" amp="2"   shift="0"   />
 
	<sinanim part="wingLeft" 	state="attached" type="translate" axis="y" freq="20.0" amp="12"   shift="0"   />
    <sinanim part="wingRight" 	state="attached" type="translate" axis="y" freq="22.0" amp="12"   shift="0"   />
 
	<sinanim part="lefteyeStuck,righteyeStuck" state="walking" type="translate" axis="y" freq="1.2" amp="4"   shift="0" />
    <sinanim part="righteyeStuck"         state="walking" type="translate" axis="x" freq="1.2" amp="1" shift="0" />
    <sinanim part="lefteyeStuck"          state="walking" type="translate" axis="x" freq="1.2" amp="1" shift="0.5" />
  </sinvariance>
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="1" amp="0.02" shift="0.5">
    <sinanim part="body"     state="falling" type="scale"     axis="x" freq="2.0" amp="0.2" shift="0.5" />
    <sinanim part="body"     state="falling" type="scale"     axis="y" freq="2.0" amp="0.2" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.05" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.05" shift="0" />
  </sinvariance>
 
 
  <!-- Sound FX -->
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_FISH_SQUAK1,SOUND_BALL_FISH_SQUAK2,SOUND_BALL_FISH_SQUAK3,SOUND_BALL_FISH_SQUAK4"/>
 
  <sound event="drop"         id="SOUND_BALL_FISH_SQUAK1,SOUND_BALL_FISH_SQUAK2,SOUND_BALL_FISH_SQUAK3,SOUND_BALL_FISH_SQUAK4"/>
  <sound event="throw"        id="SOUND_BALL_FISH_SQUAK1,SOUND_BALL_FISH_SQUAK2,SOUND_BALL_FISH_SQUAK3,SOUND_BALL_FISH_SQUAK4"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_FISH_WINGFLAP1,SOUND_BALL_FISH_WINGFLAP2,SOUND_BALL_FISH_WINGFLAP3"/>
  <sound event="attachcloser" id="SOUND_BALL_FISH_WINGFLAP1,SOUND_BALL_FISH_WINGFLAP2,SOUND_BALL_FISH_WINGFLAP3"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
 
</ball>

Fuse

These balls catch fire - and ignite any adjacent flammable balls. They are useful for building fuses towards a bomb.

Ball ID: 
Fuse
<ball name="Fuse"
      shape="circle,30,0.0"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,0,0"
      jump="0.0,0.3"
 
      burntime="2.0"
      detonateforce="0.01"
      detonateradius="100"
 
	  explosionparticles="BallExplode_Fuse"
      >
 
  <marker drag="IMAGE_BALL_FUSE_DRAGMARKER_P1" 
          detach="IMAGE_BALL_FUSE_DRAGMARKER_P1" 
          rotspeed="-2"/>
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW1"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
  <particles id="fireBallBurn" states="onfire" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_FUSE_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE"
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
 
		  burntimage="IMAGE_BALL_FUSE_STRAND_BURNT" 
          ignitedelay="0"
          burnspeed="2"
          fireparticles="fireArmBurn"
          />
 
  <detachstrand image="IMAGE_BALL_FUSE_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_FUSE_SPLAT1,IMAGE_BALL_FUSE_SPLAT2"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_FUSE_BODY" 
        stretch="16,2,0.5"
        scale="0.51"
		rotate="true" 
        />
  <part name="hilite1" layer="2" 
        x="-5,0" y="6,10"
        image="IMAGE_BALL_GENERIC_HILITE1"
        state="attached"
        scale="0.5"
        />
  <part name="hilite2" layer="2" 
        x="-10,-6" y="0,5"
        image="IMAGE_BALL_GENERIC_HILITE2"
        state="attached"
        scale="0.5"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="12" 
        x="-12,-8" y="-5,5"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1" 
        pupilinset="12" 
        x="8,12" y="-5,5"
        xrange="0,18" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.5"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="hilite1,hilite2"  state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5"   />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="body"             state="tank" type="scale"     axis="x" freq="1.0" amp="0.06" shift="0"   />
    <sinanim part="body"             state="tank" type="scale"     axis="y" freq="1.0" amp="0.06" shift="0.5" />
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="body,lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_FUSE_SIZZLE01,SOUND_BALL_FUSE_SIZZLE02,SOUND_BALL_FUSE_SIZZLE03"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
 
  <sound event="ignite"       id="SOUND_BALL_FUSE_IGNITE01,SOUND_BALL_FUSE_IGNITE02,SOUND_BALL_FUSE_IGNITE03,SOUND_BALL_FUSE_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_FUSE_POP01,SOUND_BALL_FUSE_POP02,SOUND_BALL_FUSE_POP03,SOUND_BALL_FUSE_POP04,SOUND_BALL_FUSE_POP05,SOUND_BALL_FUSE_POP06,SOUND_BALL_FUSE_POP07"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
 
</ball>

GooProduct

This is the standard black ball. Once you attach it, you can't detach it.

Ball ID: 
GooProduct
<ball name="GooProduct"
      shape="circle,24,0.25"
      mass="20"
      towermass="5"
      strands="2" 
      walkspeed="0.05"
      climbspeed="1.8"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0,0"
      grumpy="true"
 
	  wakedist="30"
	  autoboundsunattached="true"
      >
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW0"/>
 
  <splat image="IMAGE_BALL_GOOPRODUCT_SPLAT1,IMAGE_BALL_GOOPRODUCT_SPLAT2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_GOOPRODUCT_STRAND"
          inactiveimage="IMAGE_BALL_GOOPRODUCT_STRAND" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          />
 
  <part name="goop1"
        layer="0" 
        rotate="true"
        x="-4,4" y="-4,4" 
        xrange="-6,6" yrange="-6,6" 
        image="IMAGE_BALL_GOOPRODUCT_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
  <part name="goop2"
        layer="0" 
        rotate="true"
        x="-4,4" y="-4,4" 
        xrange="-6,6" yrange="-6,6" 
        image="IMAGE_BALL_GOOPRODUCT_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_GOOPRODUCT_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        />
  <part name="hilite1" layer="2" 
        x="-5,0" y="6,10"
        image="IMAGE_BALL_GENERIC_HILITE1"
        scale="0.5"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
         />
  <part name="hilite2" layer="2" 
        x="-10,-6" y="0,5"
        image="IMAGE_BALL_GENERIC_HILITE2"
        scale="0.5"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
         />
 
  <sound event="throw"     id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="drop"      id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="bounce"    id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"      id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="pickup"    id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
  <sound event="attach"    id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="detaching" id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"  id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="snap"      id="SOUND_BALL_GENERIC_SNAP1"/>
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
  <sound event="suction"   id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"      id=""/>
 
  <!-- walking animations -->
  <sinvariance freq="0.2" amp="0.1" shift="0.0">
    <sinanim part="body,hilite1,hilite2"    state="walking" type="scale"     axis="x" freq="1.0" amp="0.1" shift="0"   />
    <sinanim part="body,hilite1,hilite2"    state="walking" type="scale"     axis="y" freq="1.0" amp="0.1" shift="0.5" />
    <sinanim part="body"                    state="walking" type="translate" axis="y" freq="1.0" amp="2"   shift="0"   />
    <sinanim part="hilite1,hilite2"         state="walking" type="translate" axis="y" freq="1.0" amp="-2"   shift="0.5"   />
    <sinanim part="goop1,goop2"             state="walking" type="scale"     axis="x" freq="1.0" amp="0.1"   shift="0.3"   />
    <sinanim part="goop1,goop2"             state="walking" type="scale"     axis="y" freq="1.0" amp="0.1"   shift="0.8"   />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body,hilite1,hilite2"    state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,hilite1,hilite2"    state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"                    state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="hilite1,hilite2"         state="climbing" type="translate" axis="y" freq="2.0" amp="-2"   shift="0.5"   />
    <sinanim part="goop1,goop2"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1"   shift="0.3"   />
    <sinanim part="goop1,goop2"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1"   shift="0.8"   />
  </sinvariance>
 
 
</ball>

Hex

Hex

Used by

This is the green "3D" ball used only in Alice and Bob and the Third Party.

FIXME: It appears to have more sound and animation, but is there a functional difference?

Ball ID: 
Hex
<ball name="Hex"
      shape="circle,24,0.25"
      mass="8"
      towermass="3"
      strands="0" 
      walkspeed="0.05"
      climbspeed="2.8"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0,0"
      grumpy="false"
 
	  autoboundsunattached="false"
 
	  fallingattachment="false"
 
	  invulnerable="true"
      >
 
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_HEX_BODY"
        stretch="16,2,0.5"
        scale="0.6"
        />
 
 
 
  <!-- walking animations -->
  <sinvariance freq="0.2" amp="0.1" shift="0.0">
    <sinanim part="body"    state="walking" type="scale"     axis="x" freq="1.0" amp="0.1" shift="0"   />
    <sinanim part="body"    state="walking" type="scale"     axis="y" freq="1.0" amp="0.1" shift="0.5" />
    <sinanim part="body"    state="walking" type="translate" axis="y" freq="1.0" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"    state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"    state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"    state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
  </sinvariance>
 
 
</ball>

IconWindowRect

IconWindowRect

Used by

When you click on this, it produces a rectangular WindowRect Games icon. Used in the MOM level.

Ball ID: 
IconWindowRect
<ball name="IconWindowRect"
      static="true" 
      shape="rectangle,50,50"
      mass="20"
      towermass="20"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      detachable="false"
 
      autobounds="false"
	  autoboundsunattached="false"
 
	  grumpy="true"
	  suckable="false"
 
	  spawn="WindowRect"
 
	  stacking="true" 
	  >
 
	<part name="label" layer="0" 
        x="0" y="-40" 
        image="IMAGE_BALL_ICONWINDOWRECT_LABEL"
        scale="1"/>
 
  <part name="body" layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_ICONWINDOWRECT_BODY"
        scale="1"/>
 
 
</ball>

IconWindowSquare

IconWindowSquare

Used by

When you click on this, it produces a square WindowSquare Application icon. Used in the MOM level.

Ball ID: 
IconWindowSquare
<ball name="IconWindowSquare"
      static="true" 
      shape="rectangle,50,50"
      mass="20"
      towermass="20"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      detachable="false"
 
      autobounds="false"
	  autoboundsunattached="false"
 
	  grumpy="true"
	  suckable="false"
 
	  spawn="WindowSquare"
 
	  stacking="true" 
	  >
 
	<part name="label" layer="0" 
        x="0" y="-40" 
        image="IMAGE_BALL_ICONWINDOWSQUARE_LABEL"
        scale="1"/>
 
  <part name="body" layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_ICONWINDOWSQUARE_BODY"
        scale="1"/>
 
 
</ball>

Ivy

The fan's favourite Goo Ball. It has three arms and can be detached from a structure. Useful for taking all the Goo Balls to the pipe.

Ball ID: 
Ivy
<ball
  name="Ivy"
  shape="circle,26,0.25"
  mass="20"
  towermass="5" 
  strands="3" 
  walkspeed="0.1"
  climbspeed="2.5"
  speedvariance="0.2" 
  blinkcolor="0,0,0"
  jump="0.4,1.2"
 
  burntime="2.0"
  detonateforce="0"
  detonateradius="0"
 
  >
 
 
  <marker drag="IMAGE_BALL_IVY_DRAGMARKER_P1"
          detach="IMAGE_BALL_IVY_DETACHMARKER_P1"
          rotspeed="2" />
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW0"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
  <particles id="poisonBallBurn" states="onfire" overball="false" />
 
  <strand type="spring" 
          image="IMAGE_BALL_IVY_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="7" springconstmax="7" 
          dampfac="0.2" 
          maxlen2="140" maxlen1="180" 
          maxforce="300"
          minlen="110"
          shrinklen="130"
 
		  burntimage="IMAGE_BALL_IVY_STRAND" 
		  ignitedelay="0"
          burnspeed="2"
          fireparticles="poisonArmBurn"
		  />
 
  <detachstrand image="IMAGE_BALL_IVY_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_IVY_SPLAT1,IMAGE_BALL_IVY_SPLAT2"/>
 
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_IVY_BODY"
        stretch="16,2,0.5"
        scale="0.51"
        state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching,pipe"
        />
  <part name="bodyAttached"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_IVY_BODYATTACHED"
        stretch="16,2,0.5"
        scale="0.51"
        state="attached"
        />
  <part name="lefteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="14"
        x="-16,-10" y="0,7"
        xrange="-14,-8" yrange="-8,8"  
        image="IMAGE_BALL_GENERIC_EYE_FEM_L1,IMAGE_BALL_GENERIC_EYE_FEM_L2"
        scale="0.5"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="14"
        x="10,16" y="0,7"
        xrange="8,14" yrange="-8,8"
        image="IMAGE_BALL_GENERIC_EYE_FEM_R1,IMAGE_BALL_GENERIC_EYE_FEM_R2"
        scale="0.5"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
  <part name="leaves"
        layer="3" 
        rotate="true"
        x="-12,12" y="12,17"
        xrange="-12,12" yrange="12,18"
        image="IMAGE_BALL_IVY_LEAVES1,IMAGE_BALL_IVY_LEAVES2"
        scale="0.71875"
        state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
 
  <!-- walking animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.05" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.05" shift="0" />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_IVY_CHIRP01,SOUND_BALL_IVY_CHIRP02,SOUND_BALL_IVY_CHIRP03,SOUND_BALL_IVY_CHIRP04,SOUND_BALL_IVY_CHIRP05"/>
 
  <sound event="drop"         id="SOUND_BALL_IVY_CHIRP01,SOUND_BALL_IVY_CHIRP02,SOUND_BALL_IVY_CHIRP03,SOUND_BALL_IVY_CHIRP04,SOUND_BALL_IVY_CHIRP05"/>
  <sound event="throw"        id="SOUND_BALL_IVY_CHIRP01,SOUND_BALL_IVY_CHIRP02,SOUND_BALL_IVY_CHIRP03,SOUND_BALL_IVY_CHIRP04,SOUND_BALL_IVY_CHIRP05"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
 
</ball>

Pilot

A radioactive "3D" Goo Ball. Makes links with other Pilot balls. In certain levels (specifically Grape Vine Virus), you can turn green Bit bals into red Pilot balls.

Pilot balls will attach to other Pilot balls if given the chance. But note that if you shoot them directly at the exit pipe, they can happily exit the level and get you an extra ball!

Ball ID: 
Pilot
<ball name="Pilot"
      shape="circle,36,0.25"
      walkforce="500" 
      mass="30"
      towermass="4.0" 
      strands="1" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="false" 
      blinkcolor="0,255,0"
      jump="0.0,0.3"
 
	  wakedist="60"
	  hideeyes="true"
 
	  fling="200,2.5"
	  autoattach="true"
	  collideattached="true"
 
	  statescales="attached,1.25"
 
	  suckable="true"
 
	  autobounds="false"
	  autoboundsunattached="true"
	  >
 
 
  <marker drag="IMAGE_BALL_PILOT_DRAGMARKER_P1" 
          detach="IMAGE_BALL_PILOT_DRAGMARKER_P1" 
          rotspeed="2" />
 
 
  <particles id="ishr_sleepyZzz" states="sleeping" overball="true" />
  <particles id="ishr_FlingTrail" states="falling" overball="true" />
  <particles id="ish_smallfire" states="onfire" overball="true" />
 
  <strand type="rope" 
          image="IMAGE_BALL_PILOT_ARM" 
          inactiveimage="IMAGE_BALL_PILOT_ARM" 
          springconstmin="7" springconstmax="7" 
          dampfac="0.9" 
          maxlen2="70" maxlen1="120" 
          maxforce="1000"
          minlen="90"
          shrinklen="100"
		  />
 
	<detachstrand image="IMAGE_BALL_PILOT_ARROW" maxlen="60" />
 
  <splat image="IMAGE_BALL_PILOT_SPLAT1,IMAGE_BALL_PILOT_SPLAT2"/>
 
 
	<part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_PILOT_BODY"
        stretch="16,2,0.5"
        scale="0.51"
        />
 
	<part name="lefteye"
        layer="2"
        rotate="true" 
		xrange="-18,0" yrange="-12,12"
        x="-12,-8" y="-5,5"
        image="IMAGE_BALL_PILOT_EYE1,IMAGE_BALL_PILOT_EYE2"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.6"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
		xrange="0,18" yrange="-12,12"
        x="8,12" y="-5,5"
        image="IMAGE_BALL_PILOT_EYE1,IMAGE_BALL_PILOT_EYE2"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.6"
        />
 
 
 
 
  <!-- walking animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
   <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
      <sinanim part="lefteye,righteye" state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="climbing" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
  <sound event="pickup"       id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
 
  <sound event="drop"         id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
  <sound event="throw"        id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
 
  <sound event="bounce"       id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
  <sound event="land"         id="SOUND_BALL_PILOT_CHIRP01,SOUND_BALL_PILOT_CHIRP02,SOUND_BALL_PILOT_CHIRP03,SOUND_BALL_PILOT_CHIRP04,SOUND_BALL_PILOT_CHIRP05,SOUND_BALL_PILOT_CHIRP06,SOUND_BALL_PILOT_CHIRP07,SOUND_BALL_PILOT_CHIRP08,SOUND_BALL_PILOT_CHIRP09,SOUND_BALL_PILOT_CHIRP10,SOUND_BALL_PILOT_CHIRP11,SOUND_BALL_PILOT_CHIRP12"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_ATTACH01"/>
 
  <sound event="snap"         id="SOUND_BALL_PILOT_LAUNCH01,SOUND_BALL_PILOT_LAUNCH02,SOUND_BALL_PILOT_LAUNCH03,SOUND_BALL_PILOT_LAUNCH04,SOUND_BALL_PILOT_LAUNCH05,SOUND_BALL_PILOT_LAUNCH06,SOUND_BALL_PILOT_LAUNCH07"/>
 
  <sound event="death"        id="SOUND_BALL_PILOT_PAIN01,SOUND_BALL_PILOT_PAIN02,SOUND_BALL_PILOT_PAIN03,SOUND_BALL_PILOT_PAIN04"/>
  <sound event="deathfall"    id="SOUND_BALL_PILOT_PAIN01,SOUND_BALL_PILOT_PAIN02,SOUND_BALL_PILOT_PAIN03,SOUND_BALL_PILOT_PAIN04"/>
 
  <sound event="exit"         id=""/>
 
 
</ball>

Pixel

These square "3D" balls can't be shot, but you can drag them around. You use them to build structures in the "3D" levels.

Ball ID: 
Pixel
<ball name="Pixel"
      shape="rectangle,32,32"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
	  detachable="false"
      blinkcolor="0,0,0"
      jump="0.0,0.3"
 
	  burntime="0.1"
      detonateforce="0.01"
      detonateradius="10"
 
	  explosionparticles="BallExplode_ISH"
      >
 
	<!-- For the marker, we need to be able to specify images for each player -->
  <marker	drag="IMAGE_BALL_PIXEL_DRAGMARKER_P1"
			detach="IMAGE_BALL_PIXEL_DRAGMARKER_P1"
			rotspeed="-2"/>
 
 
  <particles id="ish_sleepyZzz" states="sleeping" overball="true" />
  <particles id="ish_smallfire" states="onfire" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_PIXEL_ARM" 
          inactiveimage="IMAGE_BALL_PIXEL_ARM" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
 
		  burntimage="IMAGE_BALL_PIXEL_ARM" 
          ignitedelay="0"
          burnspeed="3"
          fireparticles="ish_smallfire"
          />
 
  <splat image="IMAGE_BALL_PIXEL_SPLAT1,IMAGE_BALL_PIXEL_SPLAT2"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_PIXEL_BODY"
        stretch="24,1.75,0.65"
        scale="0.5"
        />
 
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- standing animations -->
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
  <sound event="pickup"       id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
 
  <sound event="drop"         id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
  <sound event="throw"        id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
 
  <sound event="bounce"       id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
  <sound event="land"         id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
 
  <sound event="attach"       id="SOUND_BALL_PIXEL_CHIRPUP01,SOUND_BALL_PIXEL_CHIRPUP02,SOUND_BALL_PIXEL_CHIRPUP03,SOUND_BALL_PIXEL_CHIRPUP04"/>
  <sound event="attachcloser" id="SOUND_BALL_PIXEL_CHIRPUP01,SOUND_BALL_PIXEL_CHIRPUP02,SOUND_BALL_PIXEL_CHIRPUP03,SOUND_BALL_PIXEL_CHIRPUP04"/>
 
  <sound event="death"        id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
  <sound event="deathfall"    id="SOUND_BALL_PIXEL_CHIRP01,SOUND_BALL_PIXEL_CHIRP02,SOUND_BALL_PIXEL_CHIRP03,SOUND_BALL_PIXEL_CHIRP04"/>
 
  <sound event="ignite"       id="SOUND_BALL_PIXEL_IGNITE01,SOUND_BALL_PIXEL_IGNITE02,SOUND_BALL_PIXEL_IGNITE03,SOUND_BALL_PIXEL_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_PIXEL_POP01,SOUND_BALL_PIXEL_POP02,SOUND_BALL_PIXEL_POP03,SOUND_BALL_PIXEL_POP04,SOUND_BALL_PIXEL_POP05,SOUND_BALL_PIXEL_POP06,SOUND_BALL_PIXEL_POP07"/>
 
</ball>

PixelProduct

These are like Pixel balls, except they can't be moved around, and detonate rather more violently.

Ball ID: 
PixelProduct
<ball name="PixelProduct"
      shape="rectangle,32,32"
      walkforce="500" 
      mass="30"
      towermass="3.0" 
      strands="2" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
	  detachable="false"
      blinkcolor="0,0,0"
      jump="0.0,0.3"
 
	  burntime="2.0"
      detonateforce="500"
      detonateradius="100"
 
	  draggable="false"
	  grumpy="true"
 
	  explosionparticles="BallExplode_ISH"
      >
 
 
  <particles id="ish_sleepyZzz" states="sleeping" overball="true" />
  <particles id="ish_smallfire" states="onfire" overball="true" />
 
  <strand type="spring" 
          image="IMAGE_BALL_PIXELPRODUCT_ARM" 
          inactiveimage="IMAGE_BALL_PIXELPRODUCT_ARM" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
 
		  burntimage="IMAGE_BALL_PIXELPRODUCT_ARM" 
          ignitedelay="0"
          burnspeed="3"
          fireparticles="ish_smallfire"
          />
 
  <splat image="IMAGE_BALL_PIXELPRODUCT_SPLAT1,IMAGE_BALL_PIXELPRODUCT_SPLAT2"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_PIXELPRODUCT_BODY"
        stretch="24,1.75,0.65"
        scale="0.5"
        />
 
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- standing animations -->
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.5" shift="0">
    <sinanim part="righteye" state="dragging" type="translate" axis="x" freq="1.0" amp="-1" shift="0" />
    <sinanim part="lefteye"  state="dragging" type="translate" axis="x" freq="1.0" amp="1" shift="0" />
  </sinvariance>
 
  <!-- tank state animations -->
  <sinvariance freq="0.3" amp="0.02" shift="0.0">
    <sinanim part="righteye"         state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="lefteye"          state="tank" type="translate" axis="x" freq="1.0" amp="0.2" shift="0.5" />
  </sinvariance>
  <sinvariance freq="0.1" amp="1" shift="0.0">
    <sinanim part="lefteye,righteye" state="tank" type="translate" axis="y" freq="0.4" amp="3" shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
  <sound event="ignite"       id="SOUND_BALL_PIXELPRODUCT_IGNITE01,SOUND_BALL_PIXELPRODUCT_IGNITE02,SOUND_BALL_PIXELPRODUCT_IGNITE03,SOUND_BALL_PIXELPRODUCT_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_PIXELPRODUCT_POP01,SOUND_BALL_PIXELPRODUCT_POP02,SOUND_BALL_PIXELPRODUCT_POP03,SOUND_BALL_PIXELPRODUCT_POP04,SOUND_BALL_PIXELPRODUCT_POP05,SOUND_BALL_PIXELPRODUCT_POP06,SOUND_BALL_PIXELPRODUCT_POP07"/>
 
 
</ball>

Pokey

Pokey is a friendlier than he looks. He has four arms, and will grapple to any surface you attach him to. You can use him to lift a structure off the ground.

According to legend, during World of Goo development, the game would crash if two Pokeys were present in a level. This no longer appears to be the case in production, however!

Ball ID: 
Pokey
<ball
  name="Pokey"
  shape="circle,40"
  mass="60"
  towermass="6"
  strands="4" 
  walkspeed="0.1"
  climbspeed="0.9"
  speedvariance="0.2"
  detachable="true" 
  stickyattached="true"
  stickyunattached="false"
  blinkcolor="0,0,0"
  stuckattachment="false"
  grumpy="false"
 
  statescales="attached,1.25"
 
  attenuationselect="0.05, 1.0, 1.2"
  attenuationdeselect="0.05, 1.2, 1.0"
  attenuationdrop="0.05, 1.2, 1.0"
  attenuationdrag="0.05, 1.2, 1.0"
 
  maxattachspeed="1000" 
 
  hideeyes="false"
 
  suckable="false"
  >
 
  <marker drag="IMAGE_BALL_POKEY_DRAGMARKER_P1" 
          detach="IMAGE_BALL_POKEY_DETACHMARKER_P1" 
          rotspeed="2" />
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW1"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="spring"
          image="IMAGE_BALL_POKEY_STRAND"
          inactiveimage="IMAGE_BALL_POKEY_STRAND"
          springconstmin="6" springconstmax="6"
          dampfac="0.5"
          maxlen2="140"
          maxforce="1600"
          minlen="130"
          shrinklen="80"
		  walkable="false"
          />
 
  <detachstrand image="IMAGE_BALL_POKEY_DSTRAND" maxlen="60" />
 
  <splat image="IMAGE_BALL_POKEY_SPLAT1,IMAGE_BALL_POKEY_SPLAT2"/>
 
  <part name="body"
        layer="0" 
        x="0" y="0"
        stretch="16,2,0.5"
        image="IMAGE_BALL_POKEY_BODY"
        scale="0.65"
		rotate="true"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching,pipe"
        />
 
	<part name="bodyStuck"
        layer="0" 
        x="0" y="0"
        stretch="16,2,0.5"
        image="IMAGE_BALL_POKEY_BODYSTUCK"
        scale="0.65"
		rotate="true"
		state="attached"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-18,-12" y="0,7"
        xrange="-20,-10" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        scale="0.5"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
        />
  <part name="righteye"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="12,18" y="0,7"
        xrange="10,20" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        scale="0.5"
		state="climbing,walking,falling,dragging,detaching,standing,tank,sleeping,stuck,stuck_attached,stuck_detaching"
        />
 
	<part name="lefteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="-32,-32" y="0,0"
        xrange="-32,-22" yrange="-12,12"  
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.65"
		state="attached"
        />
  <part name="righteyeStuck"
        layer="2"
        rotate="true"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        x="32,32" y="0,0"
        xrange="22,32" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2"
        scale="0.65"
		state="attached"
        />
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"    id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"      id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="marker"    id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"    id="SOUND_BALL_GENERIC_PICKUP1,SOUND_BALL_GENERIC_PICKUP2,SOUND_BALL_GENERIC_PICKUP3,SOUND_BALL_GENERIC_PICKUP4,SOUND_BALL_GENERIC_PICKUP5,SOUND_BALL_GENERIC_PICKUP6,SOUND_BALL_GENERIC_PICKUP7,SOUND_BALL_GENERIC_PICKUP8,SOUND_BALL_GENERIC_PICKUP9,SOUND_BALL_GENERIC_PICKUP10"/>
  <sound event="attach"    id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="detaching" id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"  id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="snap"      id="SOUND_BALL_GENERIC_SNAP1"/>
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
  <sound event="suction"   id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"      id=""/>
 
  <!-- walking animations -->
  <sinvariance freq="0.8" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lefteye,righteye" state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0" />
    <sinanim part="righteye"         state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0" />
    <sinanim part="lefteye"          state="walking" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="1" amp="0.02" shift="0.5">
    <sinanim part="body"     state="falling" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0.5" />
    <sinanim part="body"     state="falling" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
  </sinvariance>
  <sinvariance freq="2" amp="0.5" shift="0.5">
    <sinanim part="righteye" state="falling" type="translate" axis="x" freq="1.0" amp="0.7" shift="0.5" />
    <sinanim part="lefteye"  state="falling" type="translate" axis="x" freq="1.0" amp="0.7" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="0.3" amp="0.03" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.05" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.05" shift="0" />
  </sinvariance>
 
</ball>

RectHead

A rectangular block. Useful for building barriers or nudging balls around.

Ball ID: 
RectHead
<ball name="RectHead"
      shape="rectangle,200,50"
      walkforce="0" 
      mass="600"
      towermass="200"
      dragmass="100"
	  autodisable="true" 
      strands="0" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      detachable="true" 
      blinkcolor="0,0,0"
	  hideeyes="false"
	  alwayslookatmouse="true"
      jump="0.0,0.0"
      collideattached="true"
      material="BlockBall"
      hingedrag="true" 
 
      attenuationselect="0, 1"
      attenuationdeselect="0, 1"
      attenuationdrop="0, 1"
      attenuationdrag="0, 1"
 
      stacking="true"
      collidewithattached="true"
	  suckable="false"
      >
 
  <marker drag="IMAGE_BALL_RECTHEAD_DRAGMARKER" 
          detach="IMAGE_BALL_RECTHEAD_DRAGMARKER" 
          rotspeed="-2"/>
 
  <shadow image="IMAGE_BALL_RECTHEAD_SHADOW"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <splat image="IMAGE_FX_SMOKEBLACK"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_RECTHEAD_BODY1,IMAGE_BALL_RECTHEAD_BODY2"
        scale="0.82"
        />
 
  <part name="lefteye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13" 
        x="-40,-30" y="-5,5"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_RECTHEAD_EYE,IMAGE_BALL_RECTHEAD_EYE2"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.75"
        />
 
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="death"        id="SOUND_BALL_RECTHEAD_BREAK01,SOUND_BALL_RECTHEAD_BREAK02,SOUND_BALL_RECTHEAD_BREAK03"/>
 
  <sound event="collidegeom"  id="SOUND_BALL_RECTHEAD_BUMP01,SOUND_BALL_RECTHEAD_BUMP02,SOUND_BALL_RECTHEAD_BUMP03,SOUND_BALL_RECTHEAD_BUMP04,SOUND_BALL_RECTHEAD_BUMP05,SOUND_BALL_RECTHEAD_BUMP06"/>
  <sound event="collidesame"  id="SOUND_BALL_RECTHEAD_BUMP01,SOUND_BALL_RECTHEAD_BUMP02,SOUND_BALL_RECTHEAD_BUMP03,SOUND_BALL_RECTHEAD_BUMP04,SOUND_BALL_RECTHEAD_BUMP05,SOUND_BALL_RECTHEAD_BUMP06"/>
  <sound event="collidediff"  id="SOUND_BALL_RECTHEAD_BUMP01,SOUND_BALL_RECTHEAD_BUMP02,SOUND_BALL_RECTHEAD_BUMP03,SOUND_BALL_RECTHEAD_BUMP04,SOUND_BALL_RECTHEAD_BUMP05,SOUND_BALL_RECTHEAD_BUMP06"/>
 
</ball>

SimCommon

SimCommon

Used by

This little ball is used only for the mini-game in the MOM level. It has no purpose except FUN!

Ball ID: 
SimCommon
<ball name="SimCommon"
      shape="circle,12,0.125"
      mass="10"
      towermass="3.5"
      strands="2"
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
      detachable="false"
      jump="0.4,1.2"
 
	  autobounds="true"
      >
 
  <marker drag="IMAGE_BALL_SIMCOMMON_DRAGMARKER" 
          detach="IMAGE_BALL_SIMCOMMON_DRAGMARKER" 
          rotspeed="2"/>
 
  <strand type="spring" 
          image="IMAGE_BALL_SIMCOMMON_STRAND" 
          inactiveimage="IMAGE_BALL_SIMCOMMON_STRAND" 
          springconstmin="2" springconstmax="3" 
          dampfac="1.9" 
          maxlen2="50" maxlen1="80" 
          maxforce="600"
          minlen="40"/>
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_SIMCOMMON_BODY" 
        rotate="true" 
        scale="0.5"
        stretch="12,2,0.5"/>
 
 
  <!-- walking animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="walking" type="scale"     axis="x" freq="1.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="walking" type="scale"     axis="y" freq="1.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="walking" type="translate" axis="y" freq="1.0" amp="2"   shift="0"   />
  </sinvariance>
 
  <!-- attached animations -->
  <sinvariance freq=".6" amp="0.025" shift="0.0">
    <sinanim part="body"             state="attached" type="scale"     axis="x" freq="1.0" amp="0.07" shift="0"   />
    <sinanim part="body"             state="attached" type="scale"     axis="y" freq="1.0" amp="0.07" shift="0.5" />
  </sinvariance>
 
  <!-- dragging animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body" state="dragging" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body" state="dragging" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
  </sinvariance>
 
 
  <!-- climbing animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="climbing" type="scale"     axis="x" freq="1.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="climbing" type="scale"     axis="y" freq="1.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="climbing" type="translate" axis="y" freq="1.0" amp="2"   shift="0"   />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
 
 
 
</ball>

Ugly

The counterpart to Beauty, this ball is very ugly. It produces 16 UglyProducts that can protect you (along with 2 BeautyProductEyes).

Ball ID: 
Ugly
<ball name="Ugly" 
		shape="circle,230" 
		mass="200" 
		towermass="200" 
		strands="0" 
		walkspeed="0"
		climbspeed="0"
		speedvariance="0"
		collidewithattached="true"
		statescales="tank,0.12"
		suckable="false"
		jump="0.0,0.0"
		climber="false"
		draggable="false"
		material="UglyBall"
		contains="16,UglyProduct,2,BeautyProductEye"
		popsound="SOUND_BALL_UGLY_POP" 
		popduration="0.25" 
		popparticles="beautypop" 
		isbehindstrands="true"
		wakedist="200"
		invulnerable="true"
 
		blinkcolor="0,0,0"
		hideeyes="false"
		alwayslookatmouse="true"
 
		autoboundsunattached="true"
 
		antigrav="1.0"
		isantigravunattached="true"
      >
 
  <shadow image="IMAGE_BALL_UGLY_SHADOW"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_UGLY_BODY"
        stretch="24,1.2,0.9"
        scale="1.08"
        />
 
  <part name="lips"
       layer="1"
       rotate="true"
       x="0" y="-55"
       xrange="-60,60" yrange="-115,-35"
       image="IMAGE_BALL_UGLY_LIPS"
       stretch="24,1.2,0.9"
       scale="1"
        />
 
  <part name="eyel"
        layer="1"
        rotate="true"
        x="-80" y="40"
        xrange="-90,-70," yrange="20,40"
        image="IMAGE_BALL_UGLY_EYEL"
        stretch="24,1.2,0.9"
        scale="1"
    	eye="true"
        pupil="IMAGE_BALL_UGLY_PUPIL"
        pupilinset="50"
        />
 
  <part name="eyer"
        layer="1"
        rotate="true"
        x="95" y="30"
        xrange="85,105," yrange="20,40"
        image="IMAGE_BALL_UGLY_EYER"
        stretch="24,1.2,0.9"
        scale="1"
    	eye="true"
        pupil="IMAGE_BALL_UGLY_PUPIL"
        pupilinset="40"
        />
 
 
  <!-- walking animations -->
  <sinvariance freq="0" amp="0" shift="0.5">
    <sinanim part="lips"    state="walking" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0"   />
    <sinanim part="lips"    state="walking" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.5" />
 
	<sinanim part="eyel"    state="walking" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0.33"   />
    <sinanim part="eyel"    state="walking" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.33" />
 
	<sinanim part="eyer"    state="walking" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0.66"   />
    <sinanim part="eyer"    state="walking" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.66" />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="0" amp="0" shift="0.5">
    <sinanim part="lips"    state="falling" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0"   />
    <sinanim part="lips"    state="falling" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.5" />
 
	<sinanim part="eyel"    state="falling" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0.33"   />
    <sinanim part="eyel"    state="falling" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.33" />
 
	<sinanim part="eyer"    state="falling" type="scale"     axis="x" freq="0.25" amp="0.06" shift="0.66"   />
    <sinanim part="eyer"    state="falling" type="scale"     axis="y" freq="0.25" amp="0.06" shift="0.66" />
  </sinvariance>
 
 
 
  <!-- Sound FX -->
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
 
</ball>

UglyProduct

UglyProduct

Used by

When a hideous Ugly ball hits a spike, it breaks into 16 of these UglyProducts. They are fairly indestructible and can help you by protecting your important balls.

Ball ID: 
UglyProduct
<ball name="UglyProduct"
      shape="circle,34,0.25"
      mass="20"
      towermass="5"
      strands="0" 
      walkspeed="0.1"
      climbspeed="1.8"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0.0,0.0"
      grumpy="true"
	  invulnerable="true"
 
	  wakedist="30"
	  autoboundsunattached="true"
 
      >
 
  <shadow image="IMAGE_BALL_GENERIC_SHADOW0"/>
 
  <splat image="IMAGE_BALL_UGLYPRODUCT_SPLAT1,IMAGE_BALL_UGLYPRODUCT_SPLAT2"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_UGLYPRODUCT_BODY"
        stretch="16,2,0.5"
        scale="0.6"
        />
 
  <part name="lips" layer="1" 
       x="-3,-3" y="-8,-4"
       image="IMAGE_BALL_UGLYPRODUCT_LIPS"
       scale="0.5"
       rotate="true"
       state="climbing,walking,falling,attached,dragging,detaching,standing,tank,stuck,stuck_attached,stuck_detaching"
        />
 
  <sound event="bounce"    id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"      id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="death"     id="SOUND_BALL_GENERIC_DEATH1"/>
 
  <!-- walking animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="walking" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="walking" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="walking" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="walking" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
  <!-- falling animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="falling" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="falling" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="falling" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="falling" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
  <!-- climbing animations -->
  <sinvariance freq="0.4" amp="0.1" shift="0.0">
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body,lips"    state="climbing" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"         state="climbing" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="lips"         state="climbing" type="translate" axis="y" freq="2.0" amp="-3"  shift="0.5" />
  </sinvariance>
 
 
</ball>

UndeletePill

UndeletePill

Used by

This undelete "pill" needs to reach the bottom in the level "Deliverance", to trigger the end of the level.

Ball ID: 
UndeletePill
<ball name="UndeletePill"
		shape="circle,80"
		mass="30"
		towermass="30"
		strands="0"
		walkspeed="0"
		climbspeed="0"
		speedvariance="0"
		collidewithattached="true"
		suckable="false"
		jump="0.0,0.0"
		climber="false"
		draggable="false"
		material="rock"
		contains="80,UndeletePillFizz"
		popsound="SOUND_BALL_UNDELETEPILL_POP" 
		popdelay="2,2" 
		popduration="1.0" 
		popparticles="beautypop" 
		isbehindstrands="true"
		wakedist="600"
		invulnerable="true"
 
		autoboundsunattached="true"
 
		dampening="0.1"
      >
 
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_UNDELETEPILL_BODY"
        stretch="18,1.25,0.9"
        scale="1.0"
        />
 
 
</ball>

Utility

These balls aren't visible in the game; they're mostly to make other things work.

Anchor

Ball ID: 
Anchor
<ball name="Anchor"
      static="true" 
      shape="circle,30"
      mass="20"
      towermass="20"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      detachable="false"
      autobounds="false"
 
	  grumpy="true"
	  suckable="false"
	  >
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_ANCHOR_BODY"
        scale="0.6"/>
 
 
</ball>

AnchorFriendly

AnchorFriendly

Used by

Ball ID: 
AnchorFriendly
<ball name="AnchorFriendly"
      static="true" 
      shape="circle,30"
      mass="20"
      towermass="20"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      detachable="false"
      autobounds="false"
 
	  grumpy="false"
	  suckable="false"
	  >
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_ANCHORFRIENDLY_BODY"
        scale="0.6"/>
 
 
</ball>

AnchorSticky

Ball ID: 
AnchorSticky
<ball name="AnchorSticky"
      static="false" 
      shape="circle,10"
      mass="10"
      towermass="10"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      sticky="true"
      stuckattachment="true"
      detachable="false"
 
	  invulnerable="true"
      >
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_ANCHORSTICKY_BODY"
        scale="0.5"
        />
 
 
</ball>

AnchorStickyInvisible

AnchorStickyInvisible

Used by

Ball ID: 
AnchorStickyInvisible
<ball name="AnchorStickyInvisible"
      static="false" 
      shape="circle,30"
      mass="10"
      towermass="10"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      sticky="true"
      stuckattachment="true"
      detachable="false"
	  grumpy="false"
      >
 
 
</ball>

UtilAttachUnwalkable

Ball ID: 
UtilAttachUnwalkable
<ball name="UtilAttachUnwalkable"
      shape="circle,24,0.1"
      mass="30"
      towermass="5"
      strands="2" 
      walkspeed="0"
      climbspeed="1"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="false"
      detachable="false"
      invulnerable="true"
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_UTILATTACHUNWALKABLE_STRAND"
          inactiveimage="IMAGE_BALL_UTILATTACHUNWALKABLE_STRAND" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          shrinklen="90"
          walkable="false"
          />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_UTILATTACHUNWALKABLE_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        />
 
 
</ball>

UtilAttachWalkable

Ball ID: 
UtilAttachWalkable
<ball name="UtilAttachWalkable"
      shape="circle,24,0.1"
      mass="20"
      towermass="3"
      strands="1" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2" 
      draggable="true"
      jump="0,0"
      grumpy="false"
      detachable="false"
      invulnerable="true"
      >
 
  <marker drag="IMAGE_BALL_UTILATTACHWALKABLE_DRAGMARKER_P1" 
          detach="IMAGE_BALL_UTILATTACHWALKABLE_DRAGMARKER_P1" 
          rotspeed="-2"/>
 
  <strand type="spring" 
          image="IMAGE_BALL_UTILATTACHWALKABLE_STRAND"
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          shrinklen="90"
          walkable="true"
          />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_UTILATTACHWALKABLE_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        />
 
 
	<!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_UTILATTACHWALKABLE_SQUEAK01,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK02,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK03,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK04,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK05,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK06,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK07,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK08,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK09,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK10,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK11,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK12,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK13,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK14,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK15,SOUND_BALL_UTILATTACHWALKABLE_SQUEAK16"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_ATTACH01,SOUND_BALL_GENERIC_ATTACH02,SOUND_BALL_GENERIC_ATTACH03,SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
 
</ball>

UtilChapter2

UtilChapter2

Used by

  • island2

Ball ID: 
UtilChapter2
<ball name="UtilChapter2"
      shape="circle,16,0.1"
      mass="20"
      towermass="5"
      strands="2" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
      invulnerable="true"
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_UTILCHAPTER2_STRAND"
          inactiveimage="IMAGE_BALL_UTILCHAPTER2_STRAND" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          shrinklen="90"
          walkable="false"
          />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_UTILCHAPTER2_BODY"
        scale="0.3"
        />
 
 
</ball>

UtilGooGlobber

UtilGooGlobber

Used by

  • No levels found

Ball ID: 
UtilGooGlobber
<ball name="UtilGooGlobber"
      shape="circle,100,0.25"
      mass="10"
      towermass="10"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
 
	  sticky="false"
      stuckattachment="false"
	  invulnerable="true"
 
 
      >
 
	  <particles id="OOS_gooGlobs" states="falling" overball="true" />
 
 
</ball>

UtilGooGlobberMom

UtilGooGlobberMom

Used by

Ball ID: 
UtilGooGlobberMom
<ball name="UtilGooGlobberMom"
      shape="circle,50,0"
      mass="10"
      towermass="10"
      strands="1" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
 
	  sticky="false"
      stuckattachment="false"
	  invulnerable="true"
 
	  contains="10,UtilGooGlobber"
	  popsound="SOUND_BALL_UTILGOOGLOBBERMOM_POP"
	  popduration="1.0"
	  popparticles="OOS_gooGlobs" 
 
      >
 
 
	 <strand type="spring" 
          image="IMAGE_BALL_UTILGOOGLOBBERMOM_STRAND"
          inactiveimage="IMAGE_BALL_UTILGOOGLOBBERMOM_STRAND" 
          springconstmin="1" springconstmax="1" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200"
          maxforce="600"
          minlen="10"
          shrinklen="100"
          walkable="false"
		  rope="true"
          />
 
 
</ball>

UtilGooGlobberMomQuiet

UtilGooGlobberMomQuiet

Used by

Ball ID: 
UtilGooGlobberMomQuiet
<ball name="UtilGooGlobberMomQuiet"
      shape="circle,50,0"
      mass="10"
      towermass="10"
      strands="1" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
 
	  sticky="false"
      stuckattachment="false"
	  invulnerable="true"
 
	  contains="10,UtilGooGlobber"
	  popsound="SOUND_GLOBAL_EARTHQUAKE"
	  popduration="1.0"
	  popparticles="OOS_gooGlobs" 
 
      >
 
 
	 <strand type="spring" 
          image="IMAGE_BALL_UTILGOOGLOBBERMOMQUIET_STRAND"
          inactiveimage="IMAGE_BALL_UTILGOOGLOBBERMOMQUIET_STRAND" 
          springconstmin="1" springconstmax="1" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200"
          maxforce="600"
          minlen="10"
          shrinklen="100"
          walkable="false"
		  rope="true"
          />
 
 
</ball>

UtilNoAttachUnwalkable

Ball ID: 
UtilNoAttachUnwalkable
<ball name="UtilNoAttachUnwalkable"
      shape="circle,24,0.1"
      mass="20"
      towermass="5"
      strands="2" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
      invulnerable="true"
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_UTILNOATTACHUNWALKABLE_STRAND"
          inactiveimage="IMAGE_BALL_UTILNOATTACHUNWALKABLE_STRAND" 
          springconstmin="9" springconstmax="9" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200" 
          maxforce="600"
          minlen="100"
          shrinklen="90"
          walkable="false"
          />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_UTILNOATTACHUNWALKABLE_BODY"
        stretch="16,2,0.5"
        scale="0.5390625"
        />
 
 
</ball>

UtilNoAttachWalkableSmall

UtilNoAttachWalkableSmall

Used by

Ball ID: 
UtilNoAttachWalkableSmall
<ball name="UtilNoAttachWalkableSmall"
      shape="circle,16,0.1"
      mass="10"
      towermass="10"
      strands="2" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
      invulnerable="true"
      >
 
  <strand type="spring" 
          image="IMAGE_BALL_UTILNOATTACHWALKABLESMALL_STRAND"
          inactiveimage="IMAGE_BALL_UTILNOATTACHWALKABLESMALL_STRAND" 
          springconstmin="1" springconstmax="1" 
          dampfac="0.9" 
          maxlen2="140" maxlen1="200"
          maxforce="600"
          minlen="10"
          shrinklen="120"
          walkable="true"
		  rope="true"
          />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_UTILNOATTACHWALKABLESMALL_BODY"
        stretch="16,2,0.5"
        scale="0.25"
        />
 
 
</ball>

UtilProductLauncherScreamer

UtilProductLauncherScreamer

Used by

Ball ID: 
UtilProductLauncherScreamer
<ball name="UtilProductLauncherScreamer"
      shape="circle,50,0"
      mass="10"
      towermass="10"
      strands="0" 
      walkspeed="0"
      climbspeed="0"
      speedvariance="0" 
      draggable="false"
      jump="0,0"
      grumpy="true"
      detachable="false"
	    distantsounds="false" 
	  sticky="false"
      stuckattachment="false"
	  invulnerable="false"
 
	  antigrav="1.0"
	  isantigravunattached="true"
 
      >
 
	  <sound event="death" 		id="SOUND_BALL_UTILPRODUCTLAUNCHERSCREAMER_DEATH"/>
	  <sound event="deathfall" 	id="SOUND_BALL_UTILPRODUCTLAUNCHERSCREAMER_DEATH"/>
 
</ball>

Spam

Spam

Used by

  • No levels found

This pseudo-ball surfaces and spams your screen upon completion of Deliverance.

Ball ID: 
Spam
<ball name="Spam"
      shape="rectangle,90,60,0.3"
      mass="20"
      towermass="5"
      strands="0" 
      walkspeed="0.0"
      climber="false"
      speedvariance="0.2" 
      draggable="false"
	  detachable="false" 
      jump="0.0,0.0"
      grumpy="true"
 
	  antigrav="0.5"
	  isantigravunattached="true"
 
	  invulnerable="true"
	  dampening="0.005"
      >
 
 
  <part name="body" layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_SPAM_B1,IMAGE_BALL_SPAM_B2,IMAGE_BALL_SPAM_B3,IMAGE_BALL_SPAM_B4,IMAGE_BALL_SPAM_B5,IMAGE_BALL_SPAM_B6"
        stretch="26,1.25,0.85"
        scale="1.45"
		rotate="true"
        />
 
 
 
</ball>

TimeBug

TimeBug

Used by

  • No levels found

This "ball" represents the Time Bugs you can click on certain levels, where undo is available.

Ball ID: 
TimeBug
<ball name="TimeBug"
      shape="circle,20"
      walkforce="0" 
      mass="10"
      towermass="0" 
      strands="0" 
      walkspeed="0.0"
      climbspeed="0"
      speedvariance="0" 
      detachable="false" 
      blinkcolor="0,0,0"
      jump="0.0,0.0"
      static="true"
      hideeyes="false"
      >
 
 
  <shadow image="IMAGE_BALL_TIMEBUG_GLOW" additive="true" />
 
  <splat image="IMAGE_BALL_TIMEBUG_SPLAT1,IMAGE_BALL_TIMEBUG_SPLAT2"/>
 
  <part name="wingLeft" layer="0" 
        x="-7" y="0,0"
        image="IMAGE_BALL_TIMEBUG_WINGLEFT"
        scale="0.634375"
        rotate="false"
        />
  <part name="wingRight" layer="0" 
        x="7" y="0,0"
        image="IMAGE_BALL_TIMEBUG_WINGRIGHT"
        scale="0.634375"
        rotate="false"
        />
 
  <part name="body0" layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_TIMEBUG_BODY" 
        stretch="12,3,0.4"
        scale="0.403125"
        state="falling"
        />
 
  <part name="body1" layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_TIMEBUG_BODY" 
        stretch="12,3,0.4"
        scale="0.671875"
        state="standing"
        />
 
 
 
  <part name="lefteye"
        layer="2"
        rotate="false" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="12" 
        x="-12,-8" y="-5,5"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1"
        scale="0.35"
        />
 
  <part name="righteye"
        layer="2"
        rotate="false"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1" 
        pupilinset="12" 
        x="8,12" y="-5,5"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1"
        scale="0.35"
        />
 
 
  <!--particles id="sleepyZzz" states="falling" overball="true" /-->
 
 
  <!-- floating animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body0"             state="falling" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body0"             state="falling" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body0"             state="falling" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
 
    <sinanim part="wingLeft" state="falling" type="translate" axis="y" freq="20.0" amp="6"   shift="0"   />
    <sinanim part="wingRight" state="falling" type="translate" axis="y" freq="22.0" amp="6"   shift="0"   />
  </sinvariance>
 
  <!-- selected animations -->
  <sinvariance freq="1.5" amp="0.05" shift="0">
    <sinanim part="body0" state="standing" type="scale" axis="x" freq="1.0" amp="0.2" shift="0" />
    <sinanim part="body0" state="standing" type="scale" axis="y" freq="1.0" amp="0.2" shift="0.33" />
 
    <sinanim part="wingLeft" state="standing" type="translate" axis="y" freq="8.0" amp="5"   shift="0"   />
    <sinanim part="wingRight" state="standing" type="translate" axis="y" freq="9.0" amp="5"   shift="0"   />
  </sinvariance>
 
 
  <!-- Sound FX -->
 
  <sound event="marker"       id="SOUND_BALL_GENERIC_ROLLOVER1,SOUND_BALL_GENERIC_ROLLOVER2,SOUND_BALL_GENERIC_ROLLOVER3,SOUND_BALL_GENERIC_ROLLOVER4,SOUND_BALL_GENERIC_ROLLOVER5,SOUND_BALL_GENERIC_ROLLOVER6,SOUND_BALL_GENERIC_ROLLOVER7,SOUND_BALL_GENERIC_ROLLOVER8"/>
  <sound event="pickup"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="drop"         id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
  <sound event="throw"        id="SOUND_BALL_GENERIC_MUMBLE1,SOUND_BALL_GENERIC_MUMBLE2,SOUND_BALL_GENERIC_MUMBLE3,SOUND_BALL_GENERIC_MUMBLE4,SOUND_BALL_GENERIC_MUMBLE5,SOUND_BALL_GENERIC_MUMBLE6,SOUND_BALL_GENERIC_MUMBLE7"/>
 
  <sound event="bounce"       id="SOUND_BALL_GENERIC_BOUNCE1,SOUND_BALL_GENERIC_BOUNCE2,SOUND_BALL_GENERIC_BOUNCE3,SOUND_BALL_GENERIC_BOUNCE4"/>
  <sound event="land"         id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
 
  <sound event="attach"       id="SOUND_BALL_GENERIC_STICK1,SOUND_BALL_GENERIC_STICK2,SOUND_BALL_GENERIC_STICK3,SOUND_BALL_GENERIC_STICK4,SOUND_BALL_GENERIC_STICK5,SOUND_BALL_GENERIC_STICK6"/>
  <sound event="attachcloser" id="SOUND_BALL_GENERIC_GLEE1,SOUND_BALL_GENERIC_GLEE2,SOUND_BALL_GENERIC_GLEE3,SOUND_BALL_GENERIC_GLEE4,SOUND_BALL_GENERIC_GLEE5,SOUND_BALL_GENERIC_GLEE6,SOUND_BALL_GENERIC_GLEE7,SOUND_BALL_GENERIC_GLEE8,SOUND_BALL_GENERIC_GLEE9,SOUND_BALL_GENERIC_GLEE10,SOUND_BALL_GENERIC_GLEE11"/>
  <sound event="detaching"    id="SOUND_BALL_GENERIC_DETACHING1"/>
  <sound event="detached"     id="SOUND_BALL_GENERIC_DETACHED1"/>
 
  <sound event="snap"         id="SOUND_BALL_GENERIC_SNAP1"/>
 
  <sound event="death"        id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
  <sound event="deathfall"    id="SOUND_BALL_GENERIC_DEATH1,SOUND_BALL_GENERIC_DEATH2,SOUND_BALL_GENERIC_DEATH3,SOUND_BALL_GENERIC_DEATH4,SOUND_BALL_GENERIC_DEATH5"/>
 
  <sound event="suction"      id="SOUND_BALL_GENERIC_DETACHED1"/>
  <sound event="exit"         id=""/>
 
</ball>

UndeletePillFizz

UndeletePillFizz

Used by

  • No levels found

Nobody knows for sure what this is. It's probably hardcoded into the game code, and has something to do with the animation at the end of Deliverance.

Ball ID: 
UndeletePillFizz
<ball name="UndeletePillFizz"
		shape="circle,20"
		mass="10"
		towermass="10"
		strands="0"
		walkspeed="0"
		climbspeed="0"
		speedvariance="0"
		collidewithattached="false"
		suckable="false"
		jump="0.0,0.0"
		climber="false"
		draggable="false"
 
		contains="4,Spam"
		popsound="SOUND_BALL_UNDELETEPILLFIZZ_POP4" 
		popdelay="2,12" 
		popduration="4" 
		popparticles="ISH_undeleteFizz" 
 
		invulnerable="true"
 
		autoboundsunattached="true"
      >
 
 
	  <particles id="ISH_undeleteFizz" states="falling" overball="true" />
 
 
 
 
</ball>

WindowRect

WindowRect

Used by

  • No levels found

This rectangular window is produced in MOM's Computer when you click on an IconWindowRect icon.

Ball ID: 
WindowRect
<ball name="WindowRect"
      shape="rectangle,200,50"
      walkforce="0" 
      mass="100"
      towermass="100" 
      dragmass="40" 
      strands="0" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
      detachable="true" 
      blinkcolor="0,0,0"
	  hideeyes="true"
	  alwayslookatmouse="true"
      jump="0.0,0.0"
      collideattached="true"
      material="BlockBall"
 
	  autoboundsunattached="true"
 
      attenuationselect="0, 1"
      attenuationdeselect="0, 1"
      attenuationdrop="0, 1"
      attenuationdrag="0, 1"
 
	  hingedrag="true"
	  autodisable="true" 
      stacking="true"
 
      collidewithattached="true"
	  suckable="false"
      >
 
  <marker drag="IMAGE_BALL_WINDOWRECT_MARKER" 
          detach="IMAGE_BALL_WINDOWRECT_MARKER" 
          rotspeed="0"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <splat image="IMAGE_FX_SMOKEBLACK"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_WINDOWRECT_B1,IMAGE_BALL_WINDOWRECT_B2,IMAGE_BALL_WINDOWRECT_B3,IMAGE_BALL_WINDOWRECT_B4"
        scale="0.95"
        />
 
 
 
  <!-- Sound FX -->
  <sound event="marker"       id="SOUND_BALL_WINDOWRECT_BUMP01,SOUND_BALL_WINDOWRECT_BUMP02,SOUND_BALL_WINDOWRECT_BUMP03,SOUND_BALL_WINDOWRECT_BUMP04"/>
  <sound event="pickup"       id="SOUND_BALL_WINDOWRECT_BUMP01,SOUND_BALL_WINDOWRECT_BUMP02,SOUND_BALL_WINDOWRECT_BUMP03,SOUND_BALL_WINDOWRECT_BUMP04"/>
 
  <sound event="collidegeom"  id="SOUND_BALL_WINDOWRECT_BUMP01,SOUND_BALL_WINDOWRECT_BUMP02,SOUND_BALL_WINDOWRECT_BUMP03,SOUND_BALL_WINDOWRECT_BUMP04"/>
  <sound event="collidesame"  id="SOUND_BALL_WINDOWRECT_BUMP01,SOUND_BALL_WINDOWRECT_BUMP02,SOUND_BALL_WINDOWRECT_BUMP03,SOUND_BALL_WINDOWRECT_BUMP04"/>
  <sound event="collidediff"  id="SOUND_BALL_WINDOWRECT_BUMP01,SOUND_BALL_WINDOWRECT_BUMP02,SOUND_BALL_WINDOWRECT_BUMP03,SOUND_BALL_WINDOWRECT_BUMP04"/>
 
  <sound event="death"        id="SOUND_BALL_WINDOWRECT_PAIN01,SOUND_BALL_WINDOWRECT_PAIN02,SOUND_BALL_WINDOWRECT_PAIN03,SOUND_BALL_WINDOWRECT_PAIN04"/>
 
</ball>

WindowSquare

WindowSquare

Used by

  • No levels found

This rectangular window is produced in MOM's Computer when you click on an IconWindowSquare icon.

Ball ID: 
WindowSquare
<ball name="WindowSquare"
      shape="rectangle,100,100"
      walkforce="0" 
      mass="100"
      towermass="100" 
      dragmass="40" 
      strands="0" 
      walkspeed="0.1"
      climbspeed="2.0"
      speedvariance="0.2"
      detachable="true" 
      blinkcolor="0,0,0"
	  hideeyes="true"
	  alwayslookatmouse="true"
      jump="0.0,0.0"
      collideattached="true"
      material="BlockBall"
 
	  autoboundsunattached="true"
 
      attenuationselect="0, 1"
      attenuationdeselect="0, 1"
      attenuationdrop="0, 1"
      attenuationdrag="0, 1"
 
	  hingedrag="true"
	  autodisable="true" 
      stacking="true"
 
      collidewithattached="true"
	  suckable="false"
      >
 
  <marker drag="IMAGE_BALL_WINDOWSQUARE_MARKER" 
          detach="IMAGE_BALL_WINDOWSQUARE_MARKER" 
          rotspeed="0"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <splat image="IMAGE_FX_SMOKEBLACK"/>
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_WINDOWSQUARE_BODY_CLC,IMAGE_BALL_WINDOWSQUARE_BODY_CNSL,IMAGE_BALL_WINDOWSQUARE_BODY_NTPD"
        scale="0.95"
        />
 
 
 
  <!-- Sound FX -->
  <sound event="marker"       id="SOUND_BALL_WINDOWSQUARE_BUMP01,SOUND_BALL_WINDOWSQUARE_BUMP02,SOUND_BALL_WINDOWSQUARE_BUMP03,SOUND_BALL_WINDOWSQUARE_BUMP04"/>
  <sound event="pickup"       id="SOUND_BALL_WINDOWSQUARE_BUMP01,SOUND_BALL_WINDOWSQUARE_BUMP02,SOUND_BALL_WINDOWSQUARE_BUMP03,SOUND_BALL_WINDOWSQUARE_BUMP04"/>
 
  <sound event="collidegeom"  id="SOUND_BALL_WINDOWSQUARE_BUMP01,SOUND_BALL_WINDOWSQUARE_BUMP02,SOUND_BALL_WINDOWSQUARE_BUMP03,SOUND_BALL_WINDOWSQUARE_BUMP04"/>
  <sound event="collidesame"  id="SOUND_BALL_WINDOWSQUARE_BUMP01,SOUND_BALL_WINDOWSQUARE_BUMP02,SOUND_BALL_WINDOWSQUARE_BUMP03,SOUND_BALL_WINDOWSQUARE_BUMP04"/>
  <sound event="collidediff"  id="SOUND_BALL_WINDOWSQUARE_BUMP01,SOUND_BALL_WINDOWSQUARE_BUMP02,SOUND_BALL_WINDOWSQUARE_BUMP03,SOUND_BALL_WINDOWSQUARE_BUMP04"/>
 
  <sound event="death"        id="SOUND_BALL_WINDOWSQUARE_PAIN01,SOUND_BALL_WINDOWSQUARE_PAIN02,SOUND_BALL_WINDOWSQUARE_PAIN03,SOUND_BALL_WINDOWSQUARE_PAIN04"/>
 
</ball>

ZBomb

ZBomb

Used by

  • No levels found

ZBombMOM contains 42 of these!

Ball ID: 
ZBomb
<ball name="ZBomb"
      shape="circle,35,0.125"
      walkforce="0" 
      mass="30"
      towermass="3.0" 
      strands="0" 
      walkspeed="0.0"
      climbspeed="0.0"
	  climber="false"
      speedvariance="0.0" 
      detachable="false" 
	  draggable="false"
      blinkcolor="0,0,0"
      jump="0.0,0.0"
 
	  wakedist="30"
 
	  invulnerable="true"
 
	  autoboundsunattached="true"
 
      burntime="7.0"
      detonateforce="2"
      detonateradius="300"
 
	  antigrav="1.0"
	  isantigravunattached="true"
      >
 
  <particles id="fireBallBurn" states="onfire" overball="true" />
 
  <part name="body"
        layer="1" 
        x="0" y="0" 
        image="IMAGE_BALL_ZBOMB_BODY" 
        stretch="16,2,0.5"
        scale="0.68"
		rotate="true" 
        />
 
  <part name="eye"
        layer="2"
        rotate="true" 
        eye="true"
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="12" 
        x="-12,-8" y="-5,5"
        xrange="-18,0" yrange="-12,12"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        scale="0.75"
        />
 
 
 
  <!-- falling animations -->
  <sinvariance freq="1.2" amp="0.1" shift="0.0">
    <sinanim part="body"             state="falling" type="scale"     axis="x" freq="2.0" amp="0.1" shift="0"   />
    <sinanim part="body"             state="falling" type="scale"     axis="y" freq="2.0" amp="0.1" shift="0.5" />
    <sinanim part="body"             state="falling" type="translate" axis="y" freq="2.0" amp="2"   shift="0"   />
    <sinanim part="eye"          state="falling" type="translate" axis="x" freq="2.0" amp="0.5" shift="0.5" />
  </sinvariance>
 
 
  <!-- Sound FX -->
  <sound event="ignite"       id="SOUND_BALL_ZBOMB_IGNITE01,SOUND_BALL_ZBOMB_IGNITE02,SOUND_BALL_ZBOMB_IGNITE03,SOUND_BALL_ZBOMB_IGNITE04"/>
  <sound event="detonate"     id="SOUND_BALL_ZBOMB_POP01,SOUND_BALL_ZBOMB_POP02,SOUND_BALL_ZBOMB_POP03,SOUND_BALL_ZBOMB_POP04,SOUND_BALL_ZBOMB_POP05,SOUND_BALL_ZBOMB_POP06,SOUND_BALL_ZBOMB_POP07"/>
 
</ball>

ZBombMom

ZBombMom

Used by

Appears in ProductLauncher and contains 42 ZBomb products!

Ball ID: 
ZBombMom
<ball name="ZBombMom"
		shape="circle,200"
		mass="60"
		towermass="60"
		strands="0"
		walkspeed="0"
		climbspeed="0"
		speedvariance="0"
		collidewithattached="true"
		statescales="tank,0.12"
		suckable="false"
		jump="0.0,0.0"
		climber="false"
		draggable="false"
		invulnerable="true"
 
		material="rock"
 
		contains="42,ZBomb"
		popsound="SOUND_BALL_ZBOMBMOM_POP" 
		popduration="0.25" 
		popparticles="beautypop" 
      >
 
  <part name="body"
        layer="0"
        rotate="true"
        x="0" y="0"
        image="IMAGE_BALL_ZBOMBMOM_BODY"
        stretch="24,1.2,0.9"
        scale="1.08"
        />
 
 
	<!--  animations -->
  <sinvariance freq="0.2" amp="0.0045" shift="0.0">
    <sinanim part="body"    state="falling" type="scale"     axis="x" freq="1" amp="0.02" shift="0"   />
    <sinanim part="body"    state="falling" type="scale"     axis="y" freq="1" amp="0.02" shift="0.5" />
  </sinvariance>
 
 
 
</ball>

water

The water ball is a little drip. It only has one arm, so it can only attach below another ball.

Ball ID: 
water
<ball name="water"
      shape="circle,30"
      mass="30"
	  towermass="3.0"
      strands="1" 
      walkspeed="0.15"
      climbspeed="2.4"
      speedvariance="0.3"
      jump="0.0,0.1"
      detachable="false" 
      flammable="false"
      >
 
  <marker drag="IMAGE_BALL_WATER_DRAGMARKER_P1" 
          detach="IMAGE_BALL_WATER_DRAGMARKER_P1" 
          rotspeed="2"/>
 
  <shadow image="IMAGE_BALL_WATER_SHADOW"/>
 
  <particles id="sleepyZzz" states="sleeping" overball="true" />
 
  <strand type="rope" 
          image="IMAGE_BALL_WATER_STRAND" 
          inactiveimage="IMAGE_BALL_GENERIC_ARM_INACTIVE" 
          springconstmin="4" springconstmax="4" 
          dampfac="0.1" 
          maxlen2="130" maxlen1="130" 
          maxforce="800"
          minlen="120"
          rope="true"/>
 
  <detachstrand image="IMAGE_BALL_WATER_DSTRAND" maxlen="160" />
 
  <splat image="IMAGE_BALL_WATER_SPLAT1,IMAGE_BALL_WATER_SPLAT2"/>
 
  <part name="body"
        layer="0" 
        x="0" y="0" 
        image="IMAGE_BALL_WATER_BODY"
        stretch="10,2.5,0.7"
        scale="0.5"
        />
  <part name="lefteye"
        layer="1"
        rotate="true"
        x="-16,-11" y="-4,4"
        eye="true" 
        pupil="IMAGE_BALL_GENERIC_PUPIL1"
        pupilinset="13"
        image="IMAGE_BALL_GENERIC_EYE_GLASS_1,IMAGE_BALL_GENERIC_EYE_GLASS_2,IMAGE_BALL_GENERIC_EYE_GLASS_3"
        scale="0.5"
        state="climbing,walking,falling,dragging,detaching,standing,tank"
        />
  <part name="righteye"
        layer="1"
        rotate="true"
        x="11,16" y="-4,4"
        eye="true"
        pupil=