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 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>