STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
232542
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2635 · P5269

<div style="position:absolute;top:-99px;left:-99px;"><img src="https://tools.swfchan.com/stathit.asp?noj=FRM86574202-24DC&rnd=86574202" width="1" height="1"></div>

armorgames gibbets-2-5844.swf

This is the info page for
Flash #263407

(Click the ID number above for more basic data on this flash file.)


Text
<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">loading 20%</font></p>

not

DOPPLER

not

DOPPLER

Not Doppler
Highscore Submitter

Loading higscores...

Are you sure that
you want to reset
the game progress?

<p align="center"><font face="AvantGarde Md BT" size="13" color="#ffffff" letterSpacing="0.000000" kerning="1">Mariya</font></p><p align="center"><font face="AvantGarde Md BT" size="13" color="#ffffff" letterSpacing="0.000000" kerning="1">Starovoytova</font></p><p align="center"></p><p align="center"></p><p align="center"></p><p align="center"></p><p align="center"></p>

Achievements

not

DOPPLER

Music & SFX

Music & SFX

Music & SFX

Art

Art

Art

Programming &
game design

Programming &
game design

Programming &
game design

Programming &
game design

Programming &
game design

Credits

<p align="center"><font face="AvantGarde Md BT" size="18" color="#000000" letterSpacing="0.000000" kerning="1">developers blog: </font></p><p align="center"><font face="AvantGarde Md BT" size="18" color="#000000" letterSpacing="0.000000" kerning="1">http://smrdis.ya.ru</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developers blog: </font></p><p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">http://smrdis.ya.ru</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developers blog: </font></p><p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">http://smrdis.ya.ru</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developer blog: </font></p><p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">http://smrdis.ya.ru</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#000000" letterSpacing="0.000000" kerning="1">developer mail: gibbetsfeedblack@gmail.com</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developer mail: gibbetsfeedblack@gmail.com</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developer mail: gibbetsfeedblack@gmail.com</font></p>

<p align="center"><font face="AvantGarde Md BT" size="18" color="#666666" letterSpacing="0.000000" kerning="1">developer mail: gibbetsfeedblack@gmail.com</font></p>

My blog
http://smrdis.ya.ru

My mail
gibbetsfeedback@gmail.
com

"If the desire to kill and
the opportunity to kill
came always together,
who would escape
hanging?" - Mark Twain

If you hang a man
and he dies, keep
hanging him until he
gets used to it.

Try to shoot
my legs to
shake me.

Take additional
arrows, they are
behind the screen at
the right top angle

Robin Hood
made that
much better!

That's because
I am black.

Hey, don't you dare
to shoot me down. I
like to hang here!

Head shot!

Use the
force, Luke!

Stop it!

Options

Invert control

Disable blood

Music volume

Sound volume

Hide tips

"There is no satisfaction
in hanging a man who
does not object to it.” -
Ann Landers

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">6</font></p>

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">6</font></p>

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">6</font></p>

Choose level

<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">00000</font></p>

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">1</font></p>

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">1</font></p>

<p align="center"><font face="Cooper Std Black" size="26" color="#ffffff" letterSpacing="0.000000" kerning="1">1</font></p>

Level

Failed !

Level      Completed!

Shooting accuracy:

Current score:

Best score:

<p align="right"><font face="Cooper Std Black" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1">00000</font></p>

<p align="right"><font face="Cooper Std Black" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1">00000</font></p>

<p align="right"><font face="Cooper Std Black" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1">00000</font></p>

<p align="center"><font face="Cooper Std Black" size="28" color="#ffff33" letterSpacing="0.000000" kerning="1">25</font></p>

Arrows used:

<p align="center"><font face="Cooper Std Black" size="28" color="#ffff33" letterSpacing="0.000000" kerning="1">25</font></p>

<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">10000</font></p>

10

30

<p align="center"><font face="Cooper Std Black" size="20" color="#fefdb4" letterSpacing="1.000000" kerning="1">+2000</font></p>

3

<p align="center"><font face="AdlibC" size="20" color="#ffffcc" letterSpacing="0.000000" kerning="1">+100</font></p>

To pull the bowstring
press the mouse button
over the bow and
holding the button
move the mouse.
Release the mouse
button to shoot.

Try to aim for
the rope the man
is hanging off.

You will get a
star if you pass
the level
without injuring
anyone.

This bonus throws
several arrows in
different
directions.

10

You have 0
arrows in this
level. To pass it
you need to get
the achievement
that gives you
an additional
arrow for each
new level.

5

In this level you
have only one
arrow. Maybe
there is a trick
somewhere here?

The barrel explodes
when it is shot and
the explosion wave
hits crates and other
items.

This is a
teleporter. If
the arrow hits
the teleporter,
it will be
spawned at the
place where the
teleporter is.

If you are
having troubles
with the
controls you
can invert them
by clicking the
Options button
in
the main menu.

The bonus that
gives additional
arrows will help
us.

The amount of
arrows for each
level is limited.
You have only
one arrow in
this level.

This bonus creates new
arrow.

You'll get double
score if you save
two hangmen with
one arrow.

If you are so
skillful enough
to save three
hangmen with
one shot you'll
get triple score
for it.

Sorry, this game isn't available for public
distribution. You can find public version of
the game on:

<p align="center"><font face="AdlibC" size="20" color="#ffff00" letterSpacing="0.000000" kerning="1">www.notdoppler.com</font></p>

If you hit this
bonus a new
arrow will be
shot out of it.

<p align="left"><font face="Cooper Std Black" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">10:00</font></p>

This bonus gives
you additional
score.

Click to continue

Game paused

ActionScript [AS3]

Section 1
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { b2internal var m_p:b2Vec2; public function b2CircleShape(_arg1:Number=0){ m_p = new b2Vec2(); super(); m_type = e_circleShape; m_radius = _arg1; } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local9:Number; var _local5:b2Vec2 = b2Math.MulX(_arg3, m_p); var _local6:Number = -((b2Math.Dot(_arg1, _local5) - _arg2)); if (_local6 < (-(m_radius) + Number.MIN_VALUE)){ return (0); }; if (_local6 > m_radius){ _arg4.SetV(_local5); return (((Math.PI * m_radius) * m_radius)); }; var _local7:Number = (m_radius * m_radius); var _local8:Number = (_local6 * _local6); _local9 = ((_local7 * (Math.asin((_local6 / m_radius)) + (Math.PI / 2))) + (_local6 * Math.sqrt((_local7 - _local8)))); var _local10:Number = (((-2 / 3) * Math.pow((_local7 - _local8), 1.5)) / _local9); _arg4.x = (_local5.x + (_arg1.x * _local10)); _arg4.y = (_local5.y + (_arg1.y * _local10)); return (_local9); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetRadius():Number{ return (m_radius); } override public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; super.Set(_arg1); if ((_arg1 is b2CircleShape)){ _local2 = (_arg1 as b2CircleShape); m_p.SetV(_local2.m_p); }; } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = (((_arg2 * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_p); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_p.x * m_p.x) + (m_p.y * m_p.y)))); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local8:Number; var _local4:b2Mat22 = _arg3.R; var _local5:Number = (_arg3.position.x + ((_local4.col1.x * m_p.x) + (_local4.col2.x * m_p.y))); var _local6:Number = (_arg3.position.y + ((_local4.col1.y * m_p.x) + (_local4.col2.y * m_p.y))); var _local7:Number = (_arg2.p1.x - _local5); _local8 = (_arg2.p1.y - _local6); var _local9:Number = (((_local7 * _local7) + (_local8 * _local8)) - (m_radius * m_radius)); var _local10:Number = (_arg2.p2.x - _arg2.p1.x); var _local11:Number = (_arg2.p2.y - _arg2.p1.y); var _local12:Number = ((_local7 * _local10) + (_local8 * _local11)); var _local13:Number = ((_local10 * _local10) + (_local11 * _local11)); var _local14:Number = ((_local12 * _local12) - (_local13 * _local9)); if ((((_local14 < 0)) || ((_local13 < Number.MIN_VALUE)))){ return (false); }; var _local15:Number = -((_local12 + Math.sqrt(_local14))); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local13))))){ _local15 = (_local15 / _local13); _arg1.fraction = _local15; _arg1.normal.x = (_local7 + (_local15 * _local10)); _arg1.normal.y = (_local8 + (_local15 * _local11)); _arg1.normal.Normalize(); return (true); }; return (false); } public function SetLocalPosition(_arg1:b2Vec2):void{ m_p.SetV(_arg1); } public function SetRadius(_arg1:Number):void{ m_radius = _arg1; } override public function Copy():b2Shape{ var _local1:b2Shape = new b2CircleShape(); _local1.Set(this); return (_local1); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } public function GetLocalPosition():b2Vec2{ return (m_p); } } }//package Box2D.Collision.Shapes
Section 2
//b2EdgeShape (Box2D.Collision.Shapes.b2EdgeShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeShape extends b2Shape { b2internal var m_normal:b2Vec2; b2internal var m_cornerConvex1:Boolean; b2internal var m_cornerConvex2:Boolean; b2internal var m_cornerDir1:b2Vec2; b2internal var m_v1:b2Vec2; b2internal var m_v2:b2Vec2; private var s_supportVec:b2Vec2; b2internal var m_coreV1:b2Vec2; b2internal var m_coreV2:b2Vec2; b2internal var m_cornerDir2:b2Vec2; b2internal var m_nextEdge:b2EdgeShape; b2internal var m_direction:b2Vec2; b2internal var m_prevEdge:b2EdgeShape; b2internal var m_length:Number; public function b2EdgeShape(_arg1:b2Vec2, _arg2:b2Vec2){ s_supportVec = new b2Vec2(); m_v1 = new b2Vec2(); m_v2 = new b2Vec2(); m_coreV1 = new b2Vec2(); m_coreV2 = new b2Vec2(); m_normal = new b2Vec2(); m_direction = new b2Vec2(); m_cornerDir1 = new b2Vec2(); m_cornerDir2 = new b2Vec2(); super(); m_type = e_edgeShape; m_prevEdge = null; m_nextEdge = null; m_v1 = _arg1; m_v2 = _arg2; m_direction.Set((m_v2.x - m_v1.x), (m_v2.y - m_v1.y)); m_length = m_direction.Normalize(); m_normal.Set(m_direction.y, -(m_direction.x)); m_coreV1.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x - m_direction.x)) + m_v1.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y - m_direction.y)) + m_v1.y)); m_coreV2.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x + m_direction.x)) + m_v2.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y + m_direction.y)) + m_v2.y)); m_cornerDir1 = m_normal; m_cornerDir2.Set(-(m_normal.x), -(m_normal.y)); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local5:b2Vec2 = new b2Vec2((_arg1.x * _arg2), (_arg1.y * _arg2)); var _local6:b2Vec2 = b2Math.MulX(_arg3, m_v1); var _local7:b2Vec2 = b2Math.MulX(_arg3, m_v2); var _local8:Number = (b2Math.Dot(_arg1, _local6) - _arg2); var _local9:Number = (b2Math.Dot(_arg1, _local7) - _arg2); if (_local8 > 0){ if (_local9 > 0){ return (0); }; _local6.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local6.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); } else { if (_local9 > 0){ _local7.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local7.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); }; }; _arg4.x = (((_local5.x + _local6.x) + _local7.x) / 3); _arg4.y = (((_local5.y + _local6.y) + _local7.y) / 3); return ((0.5 * (((_local6.x - _local5.x) * (_local7.y - _local5.y)) - ((_local6.y - _local5.y) * (_local7.x - _local5.x))))); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local3:b2Mat22 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_v1.x) + (_local3.col2.x * m_v1.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_v1.x) + (_local3.col2.y * m_v1.y))); _local6 = (_arg2.position.x + ((_local3.col1.x * m_v2.x) + (_local3.col2.x * m_v2.y))); _local7 = (_arg2.position.y + ((_local3.col1.y * m_v2.x) + (_local3.col2.y * m_v2.y))); if (_local4 < _local6){ _arg1.lowerBound.x = _local4; _arg1.upperBound.x = _local6; } else { _arg1.lowerBound.x = _local6; _arg1.upperBound.x = _local4; }; if (_local5 < _local7){ _arg1.lowerBound.y = _local5; _arg1.upperBound.y = _local7; } else { _arg1.lowerBound.y = _local7; _arg1.upperBound.y = _local5; }; } public function GetCorner1Vector():b2Vec2{ return (m_cornerDir1); } public function GetCorner2Vector():b2Vec2{ return (m_cornerDir2); } public function GetDirectionVector():b2Vec2{ return (m_direction); } public function GetCoreVertex1():b2Vec2{ return (m_coreV1); } public function GetCoreVertex2():b2Vec2{ return (m_coreV2); } public function GetFirstVertex(_arg1:b2Transform):b2Vec2{ var _local2:b2Mat22 = _arg1.R; return (new b2Vec2((_arg1.position.x + ((_local2.col1.x * m_coreV1.x) + (_local2.col2.x * m_coreV1.y))), (_arg1.position.y + ((_local2.col1.y * m_coreV1.x) + (_local2.col2.y * m_coreV1.y))))); } public function GetNormalVector():b2Vec2{ return (m_normal); } public function GetNextEdge():b2EdgeShape{ return (m_nextEdge); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local4:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local5:Number = (_arg2.p2.x - _arg2.p1.x); var _local6:Number = (_arg2.p2.y - _arg2.p1.y); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_v1.x) + (_local4.col2.x * m_v1.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_v1.x) + (_local4.col2.y * m_v1.y))); var _local9:Number = ((_arg3.position.y + ((_local4.col1.y * m_v2.x) + (_local4.col2.y * m_v2.y))) - _local8); var _local10:Number = -(((_arg3.position.x + ((_local4.col1.x * m_v2.x) + (_local4.col2.x * m_v2.y))) - _local7)); var _local11:Number = (100 * Number.MIN_VALUE); var _local12:Number = -(((_local5 * _local9) + (_local6 * _local10))); if (_local12 > _local11){ _local13 = (_arg2.p1.x - _local7); _local14 = (_arg2.p1.y - _local8); _local15 = ((_local13 * _local9) + (_local14 * _local10)); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local12))))){ _local16 = ((-(_local5) * _local14) + (_local6 * _local13)); if (((((-(_local11) * _local12) <= _local16)) && ((_local16 <= (_local12 * (1 + _local11)))))){ _local15 = (_local15 / _local12); _arg1.fraction = _local15; _local17 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _arg1.normal.x = (_local9 / _local17); _arg1.normal.y = (_local10 / _local17); return (true); }; }; }; return (false); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = 0; _arg1.center.SetV(m_v1); _arg1.I = 0; } public function Corner1IsConvex():Boolean{ return (m_cornerConvex1); } public function Corner2IsConvex():Boolean{ return (m_cornerConvex2); } public function Support(_arg1:b2Transform, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV1.x) + (_local4.col2.x * m_coreV1.y))); var _local6:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV1.x) + (_local4.col2.y * m_coreV1.y))); var _local7:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV2.x) + (_local4.col2.x * m_coreV2.y))); var _local8:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV2.x) + (_local4.col2.y * m_coreV2.y))); if (((_local5 * _arg2) + (_local6 * _arg3)) > ((_local7 * _arg2) + (_local8 * _arg3))){ s_supportVec.x = _local5; s_supportVec.y = _local6; } else { s_supportVec.x = _local7; s_supportVec.y = _local8; }; return (s_supportVec); } b2internal function SetNextEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_nextEdge = _arg1; m_coreV2 = _arg2; m_cornerDir2 = _arg3; m_cornerConvex2 = _arg4; } public function GetPrevEdge():b2EdgeShape{ return (m_prevEdge); } public function GetVertex1():b2Vec2{ return (m_v1); } public function GetVertex2():b2Vec2{ return (m_v2); } b2internal function SetPrevEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_prevEdge = _arg1; m_coreV1 = _arg2; m_cornerDir1 = _arg3; m_cornerConvex1 = _arg4; } public function GetLength():Number{ return (m_length); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } } }//package Box2D.Collision.Shapes
Section 3
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 4
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { b2internal var m_vertexCount:int; b2internal var m_vertices:Array; b2internal var m_centroid:b2Vec2; b2internal var m_normals:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonShape(){ m_type = e_polygonShape; m_centroid = new b2Vec2(); m_vertices = new Array(); m_normals = new Array(); } override public function Set(_arg1:b2Shape):void{ var _local2:b2PolygonShape; var _local3:int; super.Set(_arg1); if ((_arg1 is b2PolygonShape)){ _local2 = (_arg1 as b2PolygonShape); m_centroid.SetV(_local2.m_centroid); m_vertexCount = _local2.m_vertexCount; Reserve(m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_local2.m_vertices[_local3]); m_normals[_local3].SetV(_local2.m_normals[_local3]); _local3++; }; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local10:Number; var _local11:Number; var _local3:b2Mat22 = _arg2.R; var _local4:b2Vec2 = m_vertices[0]; var _local5:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local6:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); var _local7:Number = _local5; var _local8:Number = _local6; var _local9 = 1; while (_local9 < m_vertexCount) { _local4 = m_vertices[_local9]; _local10 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local11 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _local5 = ((_local5 < _local10)) ? _local5 : _local10; _local6 = ((_local6 < _local11)) ? _local6 : _local11; _local7 = ((_local7 > _local10)) ? _local7 : _local10; _local8 = ((_local8 > _local11)) ? _local8 : _local11; _local9++; }; _arg1.lowerBound.x = (_local5 - m_radius); _arg1.lowerBound.y = (_local6 - m_radius); _arg1.upperBound.x = (_local7 + m_radius); _arg1.upperBound.y = (_local8 + m_radius); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local12:int; var _local22:b2Vec2; var _local23:Boolean; var _local24:b2MassData; var _local25:Number; var _local5:b2Vec2 = b2Math.MulTMV(_arg3.R, _arg1); var _local6:Number = (_arg2 - b2Math.Dot(_arg1, _arg3.position)); var _local7:Array = new Array(); var _local8:int; var _local9 = -1; var _local10 = -1; var _local11:Boolean; _local12 = 0; while (_local12 < m_vertexCount) { _local7[_local12] = (b2Math.Dot(_local5, m_vertices[_local12]) - _local6); _local23 = (_local7[_local12] < -(Number.MIN_VALUE)); if (_local12 > 0){ if (_local23){ if (!_local11){ _local9 = (_local12 - 1); _local8++; }; } else { if (_local11){ _local10 = (_local12 - 1); _local8++; }; }; }; _local11 = _local23; _local12++; }; switch (_local8){ case 0: if (_local11){ _local24 = new b2MassData(); ComputeMass(_local24, 1); _arg4.SetV(b2Math.MulX(_arg3, _local24.center)); return (_local24.mass); }; return (0); case 1: if (_local9 == -1){ _local9 = (m_vertexCount - 1); } else { _local10 = (m_vertexCount - 1); }; break; }; var _local13:int = ((_local9 + 1) % m_vertexCount); var _local14:int = ((_local10 + 1) % m_vertexCount); var _local15:Number = ((0 - _local7[_local9]) / (_local7[_local13] - _local7[_local9])); var _local16:Number = ((0 - _local7[_local10]) / (_local7[_local14] - _local7[_local10])); var _local17:b2Vec2 = new b2Vec2(((m_vertices[_local9].x * (1 - _local15)) + (m_vertices[_local13].x * _local15)), ((m_vertices[_local9].y * (1 - _local15)) + (m_vertices[_local13].y * _local15))); var _local18:b2Vec2 = new b2Vec2(((m_vertices[_local10].x * (1 - _local16)) + (m_vertices[_local14].x * _local16)), ((m_vertices[_local10].y * (1 - _local16)) + (m_vertices[_local14].y * _local16))); var _local19:Number = 0; var _local20:b2Vec2 = new b2Vec2(); var _local21:b2Vec2 = m_vertices[_local13]; _local12 = _local13; while (_local12 != _local14) { _local12 = ((_local12 + 1) % m_vertexCount); if (_local12 == _local14){ _local22 = _local18; } else { _local22 = m_vertices[_local12]; }; _local25 = (0.5 * (((_local21.x - _local17.x) * (_local22.y - _local17.y)) - ((_local21.y - _local17.y) * (_local22.x - _local17.x)))); _local19 = (_local19 + _local25); _local20.x = (_local20.x + ((_local25 * ((_local17.x + _local21.x) + _local22.x)) / 3)); _local20.y = (_local20.y + ((_local25 * ((_local17.y + _local21.y) + _local22.y)) / 3)); _local21 = _local22; }; _local20.Multiply((1 / _local19)); _arg4.SetV(b2Math.MulX(_arg3, _local20)); return (_local19); } public function GetVertices():Array{ return (m_vertices); } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid = _arg3; var _local5:b2Transform = new b2Transform(); _local5.position = _arg3; _local5.R.Set(_arg4); var _local6:int; while (_local6 < m_vertexCount) { m_vertices[_local6] = b2Math.MulX(_local5, m_vertices[_local6]); m_normals[_local6] = b2Math.MulMV(_local5.R, m_normals[_local6]); _local6++; }; } override public function Copy():b2Shape{ var _local1:b2PolygonShape = new b2PolygonShape(); _local1.Set(this); return (_local1); } public function SetAsBox(_arg1:Number, _arg2:Number):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid.SetZero(); } private function Reserve(_arg1:int):void{ var _local2:int = m_vertices.length; while (_local2 < _arg1) { m_vertices[_local2] = new b2Vec2(); m_normals[_local2] = new b2Vec2(); _local2++; }; } public function GetNormals():Array{ return (m_normals); } public function SetAsArray(_arg1:Array, _arg2:Number=0):void{ var _local4:b2Vec2; var _local3:Array = new Array(); for each (_local4 in _arg1) { _local3.push(_local4); }; SetAsVector(_local3, _arg2); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local6:Number; var _local7:Number; var _local8:b2Mat22; var _local9:b2Vec2; var _local18:Number; var _local19:Number; var _local4:Number = 0; var _local5:Number = _arg2.maxFraction; _local6 = (_arg2.p1.x - _arg3.position.x); _local7 = (_arg2.p1.y - _arg3.position.y); _local8 = _arg3.R; var _local10:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local11:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); _local6 = (_arg2.p2.x - _arg3.position.x); _local7 = (_arg2.p2.y - _arg3.position.y); _local8 = _arg3.R; var _local12:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local13:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); var _local14:Number = (_local12 - _local10); var _local15:Number = (_local13 - _local11); var _local16 = -1; var _local17:int; while (_local17 < m_vertexCount) { _local9 = m_vertices[_local17]; _local6 = (_local9.x - _local10); _local7 = (_local9.y - _local11); _local9 = m_normals[_local17]; _local18 = ((_local9.x * _local6) + (_local9.y * _local7)); _local19 = ((_local9.x * _local14) + (_local9.y * _local15)); if (_local19 == 0){ if (_local18 < 0){ return (false); }; } else { if ((((_local19 < 0)) && ((_local18 < (_local4 * _local19))))){ _local4 = (_local18 / _local19); _local16 = _local17; } else { if ((((_local19 > 0)) && ((_local18 < (_local5 * _local19))))){ _local5 = (_local18 / _local19); }; }; }; if (_local5 < (_local4 - Number.MIN_VALUE)){ return (false); }; _local17++; }; if (_local16 >= 0){ _arg1.fraction = _local4; _local8 = _arg3.R; _local9 = m_normals[_local16]; _arg1.normal.x = ((_local8.col1.x * _local9.x) + (_local8.col2.x * _local9.y)); _arg1.normal.y = ((_local8.col1.y * _local9.x) + (_local8.col2.y * _local9.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ var _local11:b2Vec2; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; if (m_vertexCount == 2){ _arg1.center.x = (0.5 * (m_vertices[0].x + m_vertices[1].x)); _arg1.center.y = (0.5 * (m_vertices[0].y + m_vertices[1].y)); _arg1.mass = 0; _arg1.I = 0; return; }; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = 0; var _local9:Number = (1 / 3); var _local10:int; while (_local10 < m_vertexCount) { _local11 = m_vertices[_local10]; _local12 = (((_local10 + 1) < m_vertexCount)) ? m_vertices[int((_local10 + 1))] : m_vertices[0]; _local13 = (_local11.x - _local7); _local14 = (_local11.y - _local8); _local15 = (_local12.x - _local7); _local16 = (_local12.y - _local8); _local17 = ((_local13 * _local16) - (_local14 * _local15)); _local18 = (0.5 * _local17); _local5 = (_local5 + _local18); _local3 = (_local3 + ((_local18 * _local9) * ((_local7 + _local11.x) + _local12.x))); _local4 = (_local4 + ((_local18 * _local9) * ((_local8 + _local11.y) + _local12.y))); _local19 = _local7; _local20 = _local8; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = _local16; _local25 = ((_local9 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local26 = ((_local9 * ((0.25 * (((_local22 * _local22) + (_local24 * _local22)) + (_local24 * _local24))) + ((_local20 * _local22) + (_local20 * _local24)))) + ((0.5 * _local20) * _local20)); _local6 = (_local6 + (_local17 * (_local25 + _local26))); _local10++; }; _arg1.mass = (_arg2 * _local5); _local3 = (_local3 * (1 / _local5)); _local4 = (_local4 * (1 / _local5)); _arg1.center.Set(_local3, _local4); _arg1.I = (_arg2 * _local6); } public function SetAsEdge(_arg1:b2Vec2, _arg2:b2Vec2):void{ m_vertexCount = 2; Reserve(2); m_vertices[0].SetV(_arg1); m_vertices[1].SetV(_arg2); m_centroid.x = (0.5 * (_arg1.x + _arg2.x)); m_centroid.y = (0.5 * (_arg1.y + _arg2.y)); m_normals[0] = b2Math.CrossVF(b2Math.SubtractVV(_arg2, _arg1), 1); m_normals[0].Normalize(); m_normals[1].x = -(m_normals[0].x); m_normals[1].y = -(m_normals[0].y); } public function GetVertexCount():int{ return (m_vertexCount); } private function Validate():Boolean{ return (false); } public function SetAsVector(_arg1:Array, _arg2:Number=0):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:b2Vec2; if (_arg2 == 0){ _arg2 = _arg1.length; }; b2Settings.b2Assert((2 <= _arg2), "2 <= vertexCount"); m_vertexCount = _arg2; Reserve(_arg2); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_arg1[_local3]); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = b2Math.SubtractVV(m_vertices[_local5], m_vertices[_local4]); b2Settings.b2Assert((_local6.LengthSquared() > Number.MIN_VALUE), "edge.LengthSquared() > Number.MIN_VALUE"); m_normals[_local3].SetV(b2Math.CrossVF(_local6, 1)); m_normals[_local3].Normalize(); _local3++; }; m_centroid = ComputeCentroid(m_vertices, m_vertexCount); } public function GetSupport(_arg1:b2Vec2):int{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } b2internal static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((_arg3 + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } public static function AsVector(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsVector(_arg1, _arg2); return (_local3); } public static function AsArray(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsArray(_arg1, _arg2); return (_local3); } public static function AsBox(_arg1:Number, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsBox(_arg1, _arg2); return (_local3); } public static function AsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):b2PolygonShape{ var _local5:b2PolygonShape = new (b2PolygonShape); _local5.SetAsOrientedBox(_arg1, _arg2, _arg3, _arg4); return (_local5); } public static function ComputeCentroid(_arg1:Array, _arg2:uint):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function AsEdge(_arg1:b2Vec2, _arg2:b2Vec2):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsEdge(_arg1, _arg2); return (_local3); } } }//package Box2D.Collision.Shapes
Section 5
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Shape { b2internal var m_radius:Number; b2internal var m_type:int; b2internal static const e_polygonShape:int = 1; public static const e_hitCollide:int = 1; public static const e_missCollide:int = 0; b2internal static const e_edgeShape:int = 2; b2internal static const e_shapeTypeCount:int = 3; b2internal static const e_unknownShape:int = -1; b2internal static const e_circleShape:int = 0; public static const e_startsInsideCollide:int = -1; public function b2Shape(){ m_type = e_unknownShape; m_radius = b2Settings.b2_linearSlop; } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ return (false); } public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ return (0); } public function Set(_arg1:b2Shape):void{ m_radius = _arg1.m_radius; } public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ } public function GetType():int{ return (m_type); } public function Copy():b2Shape{ return (null); } public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ } public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } public static function TestOverlap(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Shape, _arg4:b2Transform):Boolean{ var _local5:b2DistanceInput = new b2DistanceInput(); _local5.proxyA = new b2DistanceProxy(); _local5.proxyA.Set(_arg1); _local5.proxyB = new b2DistanceProxy(); _local5.proxyB.Set(_arg3); _local5.transformA = _arg2; _local5.transformB = _arg4; _local5.useRadii = true; var _local6:b2SimplexCache = new b2SimplexCache(); _local6.count = 0; var _local7:b2DistanceOutput = new b2DistanceOutput(); b2Distance.Distance(_local7, _local6, _local5); return ((_local7.distance < (10 * Number.MIN_VALUE))); } } }//package Box2D.Collision.Shapes
Section 6
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function Contains(_arg1:b2AABB):Boolean{ var _local2:Boolean; _local2 = ((_local2) && ((lowerBound.x <= _arg1.lowerBound.x))); _local2 = ((_local2) && ((lowerBound.y <= _arg1.lowerBound.y))); _local2 = ((_local2) && ((_arg1.upperBound.x <= upperBound.x))); _local2 = ((_local2) && ((_arg1.upperBound.y <= upperBound.y))); return (_local2); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local3:Number = -(Number.MAX_VALUE); var _local4:Number = Number.MAX_VALUE; var _local5:Number = _arg2.p1.x; var _local6:Number = _arg2.p1.y; var _local7:Number = (_arg2.p2.x - _arg2.p1.x); var _local8:Number = (_arg2.p2.y - _arg2.p1.y); var _local9:Number = Math.abs(_local7); var _local10:Number = Math.abs(_local8); _local11 = _arg1.normal; if (_local9 < Number.MIN_VALUE){ if ((((_local5 < lowerBound.x)) || ((upperBound.x < _local5)))){ return (false); }; } else { _local12 = (1 / _local7); _local13 = ((lowerBound.x - _local5) * _local12); _local14 = ((upperBound.x - _local5) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.x = _local16; _local11.y = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; if (_local10 < Number.MIN_VALUE){ if ((((_local6 < lowerBound.y)) || ((upperBound.y < _local6)))){ return (false); }; } else { _local12 = (1 / _local8); _local13 = ((lowerBound.y - _local6) * _local12); _local14 = ((upperBound.y - _local6) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.y = _local16; _local11.x = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; _arg1.fraction = _local3; return (true); } public function GetCenter():b2Vec2{ return (new b2Vec2(((lowerBound.x + upperBound.x) / 2), ((lowerBound.y + upperBound.y) / 2))); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } public function TestOverlap(_arg1:b2AABB):Boolean{ var _local2:Number = (_arg1.lowerBound.x - upperBound.x); var _local3:Number = (_arg1.lowerBound.y - upperBound.y); var _local4:Number = (lowerBound.x - _arg1.upperBound.x); var _local5:Number = (lowerBound.y - _arg1.upperBound.y); if ((((_local2 > 0)) || ((_local3 > 0)))){ return (false); }; if ((((_local4 > 0)) || ((_local5 > 0)))){ return (false); }; return (true); } public function GetExtents():b2Vec2{ return (new b2Vec2(((upperBound.x - lowerBound.x) / 2), ((upperBound.y - lowerBound.y) / 2))); } public function Combine(_arg1:b2AABB, _arg2:b2AABB):void{ lowerBound.x = Math.min(_arg1.lowerBound.x, _arg2.lowerBound.x); lowerBound.y = Math.min(_arg1.lowerBound.y, _arg2.lowerBound.y); upperBound.x = Math.max(_arg1.upperBound.x, _arg2.upperBound.x); upperBound.y = Math.max(_arg1.upperBound.y, _arg2.upperBound.y); } public static function Combine(_arg1:b2AABB, _arg2:b2AABB):b2AABB{ var _local3:b2AABB = new (b2AABB); _local3.Combine(_arg1, _arg2); return (_local3); } } }//package Box2D.Collision
Section 7
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); private static var s_v12:b2Vec2 = new b2Vec2(); private static var s_v11:b2Vec2 = new b2Vec2(); private static var s_edgeBO:Array = new Array(1); private static var s_tangent2:b2Vec2 = new b2Vec2(); private static var s_planePoint:b2Vec2 = new b2Vec2(); private static var s_localTangent:b2Vec2 = new b2Vec2(); private static var s_clipPoints1:Array = MakeClipPointVector(); private static var s_clipPoints2:Array = MakeClipPointVector(); private static var s_localNormal:b2Vec2 = new b2Vec2(); private static var s_edgeAO:Array = new Array(1); private static var s_tangent:b2Vec2 = new b2Vec2(); private static var s_normal:b2Vec2 = new b2Vec2(); private static var s_incidentEdge:Array = MakeClipPointVector(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2Transform, _arg3:int, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; var _local8:b2Vec2 = _local5.v; _local9 = (((_arg3.x * _local7.x) + (_arg3.y * _local7.y)) - _arg4); var _local10:Number = (((_arg3.x * _local8.x) + (_arg3.y * _local8.y)) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); _arg1[_temp1].Set(_arg2[0]); }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _arg1[_temp2].Set(_arg2[1]); }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } private static function MakeClipPointVector():Array{ var _local1:Array = new Array(2); _local1[0] = new ClipVertex(); _local1[1] = new ClipVertex(); return (_local1); } public static function CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2Mat22; var _local7:b2Vec2; _arg1.m_pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_p; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_p; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = (_arg2.m_radius + _arg4.m_radius); if (_local14 > (_local15 * _local15)){ return; }; _arg1.m_type = b2Manifold.e_circles; _arg1.m_localPoint.SetV(_arg2.m_p); _arg1.m_localPlaneNormal.SetZero(); _arg1.m_pointCount = 1; _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:int, _arg5:b2PolygonShape, _arg6:b2Transform):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local31:Number; var _local32:Number; var _local33:Number; _arg1.m_pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_p; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = (_arg2.m_radius + _arg4.m_radius); var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local31 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local31 > _local20){ return; }; if (_local31 > _local19){ _local19 = _local31; _local18 = _local24; }; _local24++; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; var _local27:b2Vec2 = _local22[_local25]; var _local28:b2Vec2 = _local22[_local26]; if (_local19 < Number.MIN_VALUE){ _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.SetV(_local23[_local18]); _arg1.m_localPoint.x = (0.5 * (_local27.x + _local28.x)); _arg1.m_localPoint.y = (0.5 * (_local27.y + _local28.y)); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; return; }; var _local29:Number = (((_local15 - _local27.x) * (_local28.x - _local27.x)) + ((_local16 - _local27.y) * (_local28.y - _local27.y))); var _local30:Number = (((_local15 - _local28.x) * (_local27.x - _local28.x)) + ((_local16 - _local28.y) * (_local27.y - _local28.y))); if (_local29 <= 0){ if ((((_local15 - _local27.x) * (_local15 - _local27.x)) + ((_local16 - _local27.y) * (_local16 - _local27.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local27.x); _arg1.m_localPlaneNormal.y = (_local16 - _local27.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local27); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { if (_local30 <= 0){ if ((((_local15 - _local28.x) * (_local15 - _local28.x)) + ((_local16 - _local28.y) * (_local16 - _local28.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local28.x); _arg1.m_localPlaneNormal.y = (_local16 - _local28.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local28); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { _local32 = (0.5 * (_local27.x + _local28.x)); _local33 = (0.5 * (_local27.y + _local28.y)); _local19 = (((_local15 - _local32) * _local23[_local25].x) + ((_local16 - _local33) * _local23[_local25].y)); if (_local19 > _local20){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = _local23[_local25].x; _arg1.m_localPlaneNormal.y = _local23[_local25].y; _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.Set(_local32, _local33); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; }; }; } public static function CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):void{ var _local6:ClipVertex; var _local12:b2PolygonShape; var _local13:b2PolygonShape; var _local14:b2Transform; var _local15:b2Transform; var _local16:int; var _local17:uint; var _local20:b2Mat22; var _local25:b2Vec2; var _local39:int; var _local42:Number; var _local43:b2ManifoldPoint; var _local44:Number; var _local45:Number; _arg1.m_pointCount = 0; var _local7:Number = (_arg2.m_radius + _arg4.m_radius); var _local8:int; s_edgeAO[0] = _local8; var _local9:Number = FindMaxSeparation(s_edgeAO, _arg2, _arg3, _arg4, _arg5); _local8 = s_edgeAO[0]; if (_local9 > _local7){ return; }; var _local10:int; s_edgeBO[0] = _local10; var _local11:Number = FindMaxSeparation(s_edgeBO, _arg4, _arg5, _arg2, _arg3); _local10 = s_edgeBO[0]; if (_local11 > _local7){ return; }; var _local18:Number = 0.98; var _local19:Number = 0.001; if (_local11 > ((_local18 * _local9) + _local19)){ _local12 = _arg4; _local13 = _arg2; _local14 = _arg5; _local15 = _arg3; _local16 = _local10; _arg1.m_type = b2Manifold.e_faceB; _local17 = 1; } else { _local12 = _arg2; _local13 = _arg4; _local14 = _arg3; _local15 = _arg5; _local16 = _local8; _arg1.m_type = b2Manifold.e_faceA; _local17 = 0; }; var _local21:Array = s_incidentEdge; FindIncidentEdge(_local21, _local12, _local14, _local16, _local13, _local15); var _local22:int = _local12.m_vertexCount; var _local23:Array = _local12.m_vertices; var _local24:b2Vec2 = _local23[_local16]; if ((_local16 + 1) < _local22){ _local25 = _local23[int((_local16 + 1))]; } else { _local25 = _local23[0]; }; var _local26:b2Vec2 = s_localTangent; _local26.Set((_local25.x - _local24.x), (_local25.y - _local24.y)); _local26.Normalize(); var _local27:b2Vec2 = s_localNormal; _local27.x = _local26.y; _local27.y = -(_local26.x); var _local28:b2Vec2 = s_planePoint; _local28.Set((0.5 * (_local24.x + _local25.x)), (0.5 * (_local24.y + _local25.y))); var _local29:b2Vec2 = s_tangent; _local20 = _local14.R; _local29.x = ((_local20.col1.x * _local26.x) + (_local20.col2.x * _local26.y)); _local29.y = ((_local20.col1.y * _local26.x) + (_local20.col2.y * _local26.y)); var _local30:b2Vec2 = s_tangent2; _local30.x = -(_local29.x); _local30.y = -(_local29.y); var _local31:b2Vec2 = s_normal; _local31.x = _local29.y; _local31.y = -(_local29.x); var _local32:b2Vec2 = s_v11; var _local33:b2Vec2 = s_v12; _local32.x = (_local14.position.x + ((_local20.col1.x * _local24.x) + (_local20.col2.x * _local24.y))); _local32.y = (_local14.position.y + ((_local20.col1.y * _local24.x) + (_local20.col2.y * _local24.y))); _local33.x = (_local14.position.x + ((_local20.col1.x * _local25.x) + (_local20.col2.x * _local25.y))); _local33.y = (_local14.position.y + ((_local20.col1.y * _local25.x) + (_local20.col2.y * _local25.y))); var _local34:Number = ((_local31.x * _local32.x) + (_local31.y * _local32.y)); var _local35:Number = (((-(_local29.x) * _local32.x) - (_local29.y * _local32.y)) + _local7); var _local36:Number = (((_local29.x * _local33.x) + (_local29.y * _local33.y)) + _local7); var _local37:Array = s_clipPoints1; var _local38:Array = s_clipPoints2; _local39 = ClipSegmentToLine(_local37, _local21, _local30, _local35); if (_local39 < 2){ return; }; _local39 = ClipSegmentToLine(_local38, _local37, _local29, _local36); if (_local39 < 2){ return; }; _arg1.m_localPlaneNormal.SetV(_local27); _arg1.m_localPoint.SetV(_local28); var _local40:int; var _local41:int; while (_local41 < b2Settings.b2_maxManifoldPoints) { _local6 = _local38[_local41]; _local42 = (((_local31.x * _local6.v.x) + (_local31.y * _local6.v.y)) - _local34); if (_local42 <= _local7){ _local43 = _arg1.m_points[_local40]; _local20 = _local15.R; _local44 = (_local6.v.x - _local15.position.x); _local45 = (_local6.v.y - _local15.position.y); _local43.m_localPoint.x = ((_local44 * _local20.col1.x) + (_local45 * _local20.col1.y)); _local43.m_localPoint.y = ((_local44 * _local20.col2.x) + (_local45 * _local20.col2.y)); _local43.m_id.Set(_local6.id); _local43.m_id.features.flip = _local17; _local40++; }; _local41++; }; _arg1.m_pointCount = _local40; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } } }//package Box2D.Collision
Section 8
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { import Box2D.Common.*; public class b2ContactID { b2internal var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 9
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 10
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var b2_gjkIters:int; private static var b2_gjkMaxIters:int; private static var s_saveB:Array = new Array(3); private static var s_simplex:b2Simplex = new b2Simplex(); private static var b2_gjkCalls:int; private static var s_saveA:Array = new Array(3); public static function Distance(_arg1:b2DistanceOutput, _arg2:b2SimplexCache, _arg3:b2DistanceInput):void{ var _local17:int; var _local18:b2Vec2; var _local20:b2Vec2; var _local21:b2SimplexVertex; var _local22:Boolean; var _local23:Number; var _local24:Number; var _local25:b2Vec2; b2_gjkCalls++; var _local4:b2DistanceProxy = _arg3.proxyA; var _local5:b2DistanceProxy = _arg3.proxyB; var _local6:b2Transform = _arg3.transformA; var _local7:b2Transform = _arg3.transformB; var _local8:b2Simplex = s_simplex; _local8.ReadCache(_arg2, _local4, _local6, _local5, _local7); var _local9:Array = _local8.m_vertices; var _local10 = 20; var _local11:Array = s_saveA; var _local12:Array = s_saveB; var _local13:int; var _local14:b2Vec2 = _local8.GetClosestPoint(); var _local15:Number = _local14.LengthSquared(); var _local16:Number = _local15; var _local19:int; while (_local19 < _local10) { _local13 = _local8.m_count; _local17 = 0; while (_local17 < _local13) { _local11[_local17] = _local9[_local17].indexA; _local12[_local17] = _local9[_local17].indexB; _local17++; }; switch (_local8.m_count){ case 1: break; case 2: _local8.Solve2(); break; case 3: _local8.Solve3(); break; default: b2Settings.b2Assert(false); }; if (_local8.m_count == 3){ break; }; _local18 = _local8.GetClosestPoint(); _local16 = _local18.LengthSquared(); if (_local16 > _local15){ }; _local15 = _local16; _local20 = _local8.GetSearchDirection(); if (_local20.LengthSquared() < (Number.MIN_VALUE * Number.MIN_VALUE)){ break; }; _local21 = _local9[_local8.m_count]; _local21.indexA = _local4.GetSupport(b2Math.MulTMV(_local6.R, _local20.GetNegative())); _local21.wA = b2Math.MulX(_local6, _local4.GetVertex(_local21.indexA)); _local21.indexB = _local5.GetSupport(b2Math.MulTMV(_local7.R, _local20)); _local21.wB = b2Math.MulX(_local7, _local5.GetVertex(_local21.indexB)); _local21.w = b2Math.SubtractVV(_local21.wB, _local21.wA); _local19++; b2_gjkIters++; _local22 = false; _local17 = 0; while (_local17 < _local13) { if ((((_local21.indexA == _local11[_local17])) && ((_local21.indexB == _local12[_local17])))){ _local22 = true; break; }; _local17++; }; if (_local22){ break; }; _local8.m_count++; }; b2_gjkMaxIters = b2Math.Max(b2_gjkMaxIters, _local19); _local8.GetWitnessPoints(_arg1.pointA, _arg1.pointB); _arg1.distance = b2Math.SubtractVV(_arg1.pointA, _arg1.pointB).Length(); _arg1.iterations = _local19; _local8.WriteCache(_arg2); if (_arg3.useRadii){ _local23 = _local4.m_radius; _local24 = _local5.m_radius; if ((((_arg1.distance > (_local23 + _local24))) && ((_arg1.distance > Number.MIN_VALUE)))){ _arg1.distance = (_arg1.distance - (_local23 + _local24)); _local25 = b2Math.SubtractVV(_arg1.pointB, _arg1.pointA); _local25.Normalize(); _arg1.pointA.x = (_arg1.pointA.x + (_local23 * _local25.x)); _arg1.pointA.y = (_arg1.pointA.y + (_local23 * _local25.y)); _arg1.pointB.x = (_arg1.pointB.x - (_local24 * _local25.x)); _arg1.pointB.y = (_arg1.pointB.y - (_local24 * _local25.y)); } else { _local18 = new b2Vec2(); _local18.x = (0.5 * (_arg1.pointA.x + _arg1.pointB.x)); _local18.y = (0.5 * (_arg1.pointA.y + _arg1.pointB.y)); _arg1.pointA.x = (_arg1.pointB.x = _local18.x); _arg1.pointA.y = (_arg1.pointB.y = _local18.y); _arg1.distance = 0; }; }; } } }//package Box2D.Collision
Section 11
//b2DistanceInput (Box2D.Collision.b2DistanceInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var transformA:b2Transform; public var transformB:b2Transform; public var useRadii:Boolean; } }//package Box2D.Collision
Section 12
//b2DistanceOutput (Box2D.Collision.b2DistanceOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceOutput { public var pointA:b2Vec2; public var distance:Number; public var iterations:int; public var pointB:b2Vec2; public function b2DistanceOutput(){ pointA = new b2Vec2(); pointB = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 13
//b2DistanceProxy (Box2D.Collision.b2DistanceProxy) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DistanceProxy { public var m_radius:Number; public var m_vertices:Array; public var m_count:int; public function GetVertex(_arg1:int):b2Vec2{ b2Settings.b2Assert((((0 <= _arg1)) && ((_arg1 < m_count)))); return (m_vertices[_arg1]); } public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; var _local3:b2PolygonShape; switch (_arg1.GetType()){ case b2Shape.e_circleShape: _local2 = (_arg1 as b2CircleShape); m_vertices = new Array(1, true); m_vertices[0] = _local2.m_p; m_count = 1; m_radius = _local2.m_radius; break; case b2Shape.e_polygonShape: _local3 = (_arg1 as b2PolygonShape); m_vertices = _local3.m_vertices; m_count = _local3.m_vertexCount; m_radius = _local3.m_radius; break; default: b2Settings.b2Assert(false); }; } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } public function GetVertexCount():int{ return (m_count); } public function GetSupport(_arg1:b2Vec2):Number{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } } }//package Box2D.Collision
Section 14
//b2DynamicTree (Box2D.Collision.b2DynamicTree) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DynamicTree { private var m_insertionCount:int; private var m_root:b2DynamicTreeNode; private var m_freeList:b2DynamicTreeNode; private var m_path:uint; public function b2DynamicTree(){ m_root = null; m_freeList = null; m_path = 0; m_insertionCount = 0; } private function RemoveLeaf(_arg1:b2DynamicTreeNode):void{ var _local4:b2DynamicTreeNode; var _local5:b2AABB; if (_arg1 == m_root){ m_root = null; return; }; var _local2:b2DynamicTreeNode = _arg1.parent; var _local3:b2DynamicTreeNode = _local2.parent; if (_local2.child1 == _arg1){ _local4 = _local2.child2; } else { _local4 = _local2.child1; }; if (_local3){ if (_local3.child1 == _local2){ _local3.child1 = _local4; } else { _local3.child2 = _local4; }; _local4.parent = _local3; FreeNode(_local2); while (_local3) { _local5 = _local3.aabb; _local3.aabb = b2AABB.Combine(_local3.child1.aabb, _local3.child2.aabb); if (_local5.Contains(_local3.aabb)){ break; }; _local3 = _local3.parent; }; } else { m_root = _local4; _local4.parent = null; FreeNode(_local2); }; } public function GetFatAABB(_arg1:b2DynamicTreeNode):b2AABB{ return (_arg1.aabb); } public function Query(_arg1:Function, _arg2:b2AABB):void{ var _local5:b2DynamicTreeNode; var _local6:Boolean; if (m_root == null){ return; }; var _local3:Array = new Array(); var _local4:int; var _temp1 = _local4; _local4 = (_local4 + 1); var _local7 = _temp1; _local3[_local7] = m_root; while (_local4 > 0) { --_local4; _local5 = _local3[_local4]; if (_local5.aabb.TestOverlap(_arg2)){ if (_local5.IsLeaf()){ _local6 = _arg1(_local5); if (!_local6){ return; }; } else { var _temp2 = _local4; _local4 = (_local4 + 1); var _local8 = _temp2; _local3[_local8] = _local5.child1; var _temp3 = _local4; _local4 = (_local4 + 1); var _local9 = _temp3; _local3[_local9] = _local5.child2; }; }; }; } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ var _local3:b2Vec2; var _local9:b2AABB; var _local10:Number; var _local11:Number; var _local14:b2DynamicTreeNode; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:Number; var _local18:b2RayCastInput; if (m_root == null){ return; }; _local3 = _arg2.p1; var _local4:b2Vec2 = _arg2.p2; var _local5:b2Vec2 = b2Math.SubtractVV(_local3, _local4); _local5.Normalize(); var _local6:b2Vec2 = b2Math.CrossFV(1, _local5); var _local7:b2Vec2 = b2Math.AbsV(_local6); var _local8:Number = _arg2.maxFraction; _local9 = new b2AABB(); _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); var _local12:Array = new Array(); var _local13:int; var _temp1 = _local13; _local13 = (_local13 + 1); var _local19 = _temp1; _local12[_local19] = m_root; while (_local13 > 0) { --_local13; _local14 = _local12[_local13]; if (_local14.aabb.TestOverlap(_local9) == false){ } else { _local15 = _local14.aabb.GetCenter(); _local16 = _local14.aabb.GetExtents(); _local17 = ((Math.abs(((_local6.x * (_local3.x - _local15.x)) + (_local6.y * (_local3.y - _local15.y)))) - (_local7.x * _local16.x)) - (_local7.y * _local16.y)); if (_local17 > 0){ } else { if (_local14.IsLeaf()){ _local18 = new b2RayCastInput(); _local18.p1 = _arg2.p1; _local18.p2 = _arg2.p2; _local18.maxFraction = _arg2.maxFraction; _local8 = _arg1(_local18, _local14); if (_local8 == 0){ return; }; _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); } else { var _temp2 = _local13; _local13 = (_local13 + 1); var _local20 = _temp2; _local12[_local20] = _local14.child1; var _temp3 = _local13; _local13 = (_local13 + 1); var _local21 = _temp3; _local12[_local21] = _local14.child2; }; }; }; }; } public function GetUserData(_arg1:b2DynamicTreeNode){ return (_arg1.userData); } private function FreeNode(_arg1:b2DynamicTreeNode):void{ _arg1.parent = m_freeList; m_freeList = _arg1; } public function Rebalance(_arg1:int):void{ var _local3:b2DynamicTreeNode; var _local4:uint; if (m_root == null){ return; }; var _local2:int; while (_local2 < _arg1) { _local3 = m_root; _local4 = 0; while (_local3.IsLeaf() == false) { _local3 = (((m_path >> _local4) & 1)) ? _local3.child2 : _local3.child1; _local4 = ((_local4 + 1) & 31); }; m_path++; RemoveLeaf(_local3); InsertLeaf(_local3); _local2++; }; } public function CreateProxy(_arg1:b2AABB, _arg2):b2DynamicTreeNode{ var _local3:b2DynamicTreeNode; var _local4:Number; var _local5:Number; _local3 = AllocateNode(); _local4 = b2Settings.b2_aabbExtension; _local5 = b2Settings.b2_aabbExtension; _local3.aabb.lowerBound.x = (_arg1.lowerBound.x - _local4); _local3.aabb.lowerBound.y = (_arg1.lowerBound.y - _local5); _local3.aabb.upperBound.x = (_arg1.upperBound.x + _local4); _local3.aabb.upperBound.y = (_arg1.upperBound.y + _local5); _local3.userData = _arg2; InsertLeaf(_local3); return (_local3); } public function DestroyProxy(_arg1:b2DynamicTreeNode):void{ RemoveLeaf(_arg1); FreeNode(_arg1); } private function InsertLeaf(_arg1:b2DynamicTreeNode):void{ var _local6:*; var _local7:*; var _local8:*; var _local9:*; m_insertionCount++; if (m_root == null){ m_root = _arg1; m_root.parent = null; return; }; var _local2:b2Vec2 = _arg1.aabb.GetCenter(); var _local3:b2DynamicTreeNode = m_root; if (_local3.IsLeaf() == false){ do { _local6 = _local3.child1; _local7 = _local3.child2; _local8 = (Math.abs((((_local6.aabb.lowerBound.x + _local6.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local6.aabb.lowerBound.y + _local6.aabb.upperBound.y) / 2) - _local2.y))); _local9 = (Math.abs((((_local7.aabb.lowerBound.x + _local7.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local7.aabb.lowerBound.y + _local7.aabb.upperBound.y) / 2) - _local2.y))); if (_local8 < _local9){ _local3 = _local6; } else { _local3 = _local7; }; } while (_local3.IsLeaf() == false); }; var _local4:b2DynamicTreeNode = _local3.parent; var _local5:b2DynamicTreeNode = AllocateNode(); _local5.parent = _local4; _local5.userData = null; _local5.aabb.Combine(_arg1.aabb, _local3.aabb); if (_local4){ if (_local3.parent.child1 == _local3){ _local4.child1 = _local5; } else { _local4.child2 = _local5; }; _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; do { } while (!(_local4.aabb.Contains(_local5.aabb))); } else { _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; m_root = _local5; }; } public function MoveProxy(_arg1:b2DynamicTreeNode, _arg2:b2AABB, _arg3:b2Vec2):Boolean{ var _local4:Number; var _local5:Number; b2Settings.b2Assert(_arg1.IsLeaf()); if (_arg1.aabb.Contains(_arg2)){ return (false); }; RemoveLeaf(_arg1); _local4 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.x > 0)) ? _arg3.x : -(_arg3.x))); _local5 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.y > 0)) ? _arg3.y : -(_arg3.y))); _arg1.aabb.lowerBound.x = (_arg2.lowerBound.x - _local4); _arg1.aabb.lowerBound.y = (_arg2.lowerBound.y - _local5); _arg1.aabb.upperBound.x = (_arg2.upperBound.x + _local4); _arg1.aabb.upperBound.y = (_arg2.upperBound.y + _local5); InsertLeaf(_arg1); return (true); } private function AllocateNode():b2DynamicTreeNode{ var _local1:b2DynamicTreeNode; if (m_freeList){ _local1 = m_freeList; m_freeList = _local1.parent; _local1.parent = null; _local1.child1 = null; _local1.child2 = null; return (_local1); }; return (new b2DynamicTreeNode()); } } }//package Box2D.Collision
Section 15
//b2DynamicTreeBroadPhase (Box2D.Collision.b2DynamicTreeBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DynamicTreeBroadPhase implements IBroadPhase { private var m_moveBuffer:Array; private var m_tree:b2DynamicTree; private var m_pairBuffer:Array; private var m_pairCount:int;// = 0 private var m_proxyCount:int; public function b2DynamicTreeBroadPhase(){ m_tree = new b2DynamicTree(); m_moveBuffer = new Array(); m_pairBuffer = new Array(); super(); } public function Validate():void{ } private function UnBufferMove(_arg1:b2DynamicTreeNode):void{ var _local2:int = m_moveBuffer.indexOf(_arg1); m_moveBuffer.splice(_local2, 1); } private function BufferMove(_arg1:b2DynamicTreeNode):void{ m_moveBuffer[m_moveBuffer.length] = _arg1; } private function ComparePairs(_arg1:b2DynamicTreePair, _arg2:b2DynamicTreePair):int{ return (0); } public function GetProxyCount():int{ return (m_proxyCount); } public function GetFatAABB(_arg1):b2AABB{ return (m_tree.GetFatAABB(_arg1)); } public function Query(_arg1:Function, _arg2:b2AABB):void{ m_tree.Query(_arg1, _arg2); } public function Rebalance(_arg1:int):void{ m_tree.Rebalance(_arg1); } public function TestOverlap(_arg1, _arg2):Boolean{ var _local3:b2AABB = m_tree.GetFatAABB(_arg1); var _local4:b2AABB = m_tree.GetFatAABB(_arg2); return (_local3.TestOverlap(_local4)); } public function UpdatePairs(_arg1:Function):void{ var queryProxy:b2DynamicTreeNode; var i:int; var fatAABB:b2AABB; var primaryPair:b2DynamicTreePair; var userDataA:*; var userDataB:*; var pair:b2DynamicTreePair; var callback = _arg1; m_pairCount = 0; for each (queryProxy in m_moveBuffer) { var QueryCallback:Function = function (_arg1:b2DynamicTreeNode):Boolean{ if (_arg1 == queryProxy){ return (true); }; if (m_pairCount == m_pairBuffer.length){ m_pairBuffer[m_pairCount] = new b2DynamicTreePair(); }; var _local2:b2DynamicTreePair = m_pairBuffer[m_pairCount]; _local2.proxyA = ((_arg1 < queryProxy)) ? _arg1 : queryProxy; _local2.proxyB = ((_arg1 >= queryProxy)) ? _arg1 : queryProxy; m_pairCount++; return (true); }; fatAABB = m_tree.GetFatAABB(queryProxy); m_tree.Query(QueryCallback, fatAABB); }; m_moveBuffer.length = 0; i = 0; while (i < m_pairCount) { primaryPair = m_pairBuffer[i]; userDataA = m_tree.GetUserData(primaryPair.proxyA); userDataB = m_tree.GetUserData(primaryPair.proxyB); callback(userDataA, userDataB); i = (i + 1); while (i < m_pairCount) { pair = m_pairBuffer[i]; if (((!((pair.proxyA == primaryPair.proxyA))) || (!((pair.proxyB == primaryPair.proxyB))))){ break; }; i = (i + 1); }; }; } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ m_tree.RayCast(_arg1, _arg2); } public function CreateProxy(_arg1:b2AABB, _arg2){ var _local3:b2DynamicTreeNode = m_tree.CreateProxy(_arg1, _arg2); m_proxyCount++; BufferMove(_local3); return (_local3); } public function GetUserData(_arg1){ return (m_tree.GetUserData(_arg1)); } public function DestroyProxy(_arg1):void{ UnBufferMove(_arg1); m_proxyCount--; m_tree.DestroyProxy(_arg1); } public function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void{ var _local4:Boolean = m_tree.MoveProxy(_arg1, _arg2, _arg3); if (_local4){ BufferMove(_arg1); }; } } }//package Box2D.Collision
Section 16
//b2DynamicTreeNode (Box2D.Collision.b2DynamicTreeNode) package Box2D.Collision { public class b2DynamicTreeNode { public var aabb:b2AABB; public var parent:b2DynamicTreeNode; public var userData; public var child2:b2DynamicTreeNode; public var child1:b2DynamicTreeNode; public function b2DynamicTreeNode(){ aabb = new b2AABB(); super(); } public function IsLeaf():Boolean{ return ((child1 == null)); } } }//package Box2D.Collision
Section 17
//b2DynamicTreePair (Box2D.Collision.b2DynamicTreePair) package Box2D.Collision { public class b2DynamicTreePair { public var proxyA:b2DynamicTreeNode; public var proxyB:b2DynamicTreeNode; } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var m_pointCount:int;// = 0 public var m_localPlaneNormal:b2Vec2; public var m_type:int; public var m_points:Array; public var m_localPoint:b2Vec2; public static const e_circles:int = 1; public static const e_faceA:int = 2; public static const e_faceB:int = 4; public function b2Manifold(){ m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2ManifoldPoint(); _local1++; }; m_localPlaneNormal = new b2Vec2(); m_localPoint = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ m_pointCount = _arg1.m_pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (m_points[_local2] as b2ManifoldPoint).Set(_arg1.m_points[_local2]); _local2++; }; m_localPlaneNormal.SetV(_arg1.m_localPlaneNormal); m_localPoint.SetV(_arg1.m_localPoint); m_type = _arg1.m_type; } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (m_points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; m_localPlaneNormal.SetZero(); m_localPoint.SetZero(); m_type = 0; m_pointCount = 0; } public function Copy():b2Manifold{ var _local1:b2Manifold = new b2Manifold(); _local1.Set(this); return (_local1); } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var m_localPoint:b2Vec2; public var m_tangentImpulse:Number; public var m_normalImpulse:Number; public var m_id:b2ContactID; public function b2ManifoldPoint(){ m_localPoint = new b2Vec2(); m_id = new b2ContactID(); super(); Reset(); } public function Set(_arg1:b2ManifoldPoint):void{ m_localPoint.SetV(_arg1.m_localPoint); m_normalImpulse = _arg1.m_normalImpulse; m_tangentImpulse = _arg1.m_tangentImpulse; m_id.Set(_arg1.m_id); } public function Reset():void{ m_localPoint.SetZero(); m_normalImpulse = 0; m_tangentImpulse = 0; m_id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2RayCastInput (Box2D.Collision.b2RayCastInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastInput { public var p1:b2Vec2; public var maxFraction:Number; public var p2:b2Vec2; public function b2RayCastInput(_arg1:b2Vec2=null, _arg2:b2Vec2=null, _arg3:Number=1){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); if (_arg1){ this.p1.SetV(_arg1); }; if (_arg2){ this.p2.SetV(_arg2); }; this.maxFraction = _arg3; } } }//package Box2D.Collision
Section 22
//b2RayCastOutput (Box2D.Collision.b2RayCastOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastOutput { public var fraction:Number; public var normal:b2Vec2; public function b2RayCastOutput(){ normal = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 23
//b2SeparationFunction (Box2D.Collision.b2SeparationFunction) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; class b2SeparationFunction { public var m_proxyA:b2DistanceProxy; public var m_proxyB:b2DistanceProxy; public var m_type:int; public var m_axis:b2Vec2; public var m_localPoint:b2Vec2; public static const e_faceA:int = 2; public static const e_faceB:int = 4; public static const e_points:int = 1; function b2SeparationFunction(){ m_localPoint = new b2Vec2(); m_axis = new b2Vec2(); super(); } public function Initialize(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Mat22; var _local20:b2Vec2; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:b2Vec2; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; m_proxyA = _arg2; m_proxyB = _arg4; var _local6:int = _arg1.count; b2Settings.b2Assert((((0 < _local6)) && ((_local6 < 3)))); if (_local6 == 1){ m_type = e_points; _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); m_axis.x = (_local15 - _local13); m_axis.y = (_local16 - _local14); m_axis.Normalize(); } else { if (_arg1.indexB[0] == _arg1.indexB[1]){ m_type = e_faceA; _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); m_localPoint.x = (0.5 * (_local8.x + _local9.x)); m_localPoint.y = (0.5 * (_local8.y + _local9.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { if (_arg1.indexA[0] == _arg1.indexA[0]){ m_type = e_faceB; _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); m_localPoint.x = (0.5 * (_local11.x + _local12.x)); m_localPoint.y = (0.5 * (_local11.y + _local12.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local23 = b2Math.MulX(_arg3, _local7); _local24 = b2Math.MulMV(_arg3.R, b2Math.SubtractVV(_local9, _local8)); _local25 = b2Math.MulX(_arg5, _local10); _local26 = b2Math.MulMV(_arg5.R, b2Math.SubtractVV(_local12, _local11)); _local27 = ((_local24.x * _local24.x) + (_local24.y * _local24.y)); _local28 = ((_local26.x * _local26.x) + (_local26.y * _local26.y)); _local29 = b2Math.SubtractVV(_local26, _local24); _local30 = ((_local24.x * _local29.x) + (_local24.y * _local29.y)); _local31 = ((_local26.x * _local29.x) + (_local26.y * _local29.y)); _local32 = ((_local24.x * _local26.x) + (_local24.y * _local26.y)); _local33 = ((_local27 * _local28) - (_local32 * _local32)); _local21 = 0; if (_local33 != 0){ _local21 = b2Math.Clamp((((_local32 * _local31) - (_local30 * _local28)) / _local33), 0, 1); }; _local34 = (((_local32 * _local21) + _local31) / _local28); if (_local34 < 0){ _local34 = 0; _local21 = b2Math.Clamp(((_local32 - _local30) / _local27), 0, 1); }; _local7 = new b2Vec2(); _local7.x = (_local8.x + (_local21 * (_local9.x - _local8.x))); _local7.y = (_local8.y + (_local21 * (_local9.y - _local8.y))); _local10 = new b2Vec2(); _local10.x = (_local11.x + (_local21 * (_local12.x - _local11.x))); _local10.y = (_local11.y + (_local21 * (_local12.y - _local11.y))); if ((((_local21 == 0)) || ((_local21 == 1)))){ m_type = e_faceB; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_localPoint = _local10; _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { m_type = e_faceA; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_localPoint = _local7; _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; }; }; }; }; } public function Evaluate(_arg1:b2Transform, _arg2:b2Transform):Number{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:b2Vec2; switch (m_type){ case e_points: _local3 = b2Math.MulTMV(_arg1.R, m_axis); _local4 = b2Math.MulTMV(_arg2.R, m_axis.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local6 = m_proxyB.GetSupportVertex(_local4); _local7 = b2Math.MulX(_arg1, _local5); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * m_axis.x) + ((_local8.y - _local7.y) * m_axis.y)); return (_local9); case e_faceA: _local10 = b2Math.MulMV(_arg1.R, m_axis); _local7 = b2Math.MulX(_arg1, m_localPoint); _local4 = b2Math.MulTMV(_arg2.R, _local10.GetNegative()); _local6 = m_proxyB.GetSupportVertex(_local4); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * _local10.x) + ((_local8.y - _local7.y) * _local10.y)); return (_local9); case e_faceB: _local10 = b2Math.MulMV(_arg2.R, m_axis); _local8 = b2Math.MulX(_arg2, m_localPoint); _local3 = b2Math.MulTMV(_arg1.R, _local10.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local7 = b2Math.MulX(_arg1, _local5); _local9 = (((_local7.x - _local8.x) * _local10.x) + ((_local7.y - _local8.y) * _local10.y)); return (_local9); default: b2Settings.b2Assert(false); return (0); }; } } }//package Box2D.Collision
Section 24
//b2Simplex (Box2D.Collision.b2Simplex) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; class b2Simplex { public var m_v1:b2SimplexVertex; public var m_v2:b2SimplexVertex; public var m_v3:b2SimplexVertex; public var m_vertices:Array; public var m_count:int; function b2Simplex(){ m_v1 = new b2SimplexVertex(); m_v2 = new b2SimplexVertex(); m_v3 = new b2SimplexVertex(); m_vertices = new Array(3); super(); m_vertices[0] = m_v1; m_vertices[1] = m_v2; m_vertices[2] = m_v3; } public function GetSearchDirection():b2Vec2{ var _local1:b2Vec2; var _local2:Number; switch (m_count){ case 1: return (m_v1.w.GetNegative()); case 2: _local1 = b2Math.SubtractVV(m_v2.w, m_v1.w); _local2 = b2Math.CrossVV(_local1, m_v1.w.GetNegative()); if (_local2 > 0){ return (b2Math.CrossFV(1, _local1)); }; return (b2Math.CrossVF(_local1, 1)); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } public function WriteCache(_arg1:b2SimplexCache):void{ _arg1.metric = GetMetric(); _arg1.count = uint(m_count); var _local2:Array = m_vertices; var _local3:int; while (_local3 < m_count) { _arg1.indexA[_local3] = uint(_local2[_local3].indexA); _arg1.indexB[_local3] = uint(_local2[_local3].indexB); _local3++; }; } public function GetMetric():Number{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (0); case 1: return (0); case 2: return (b2Math.SubtractVV(m_v1.w, m_v2.w).Length()); case 3: return (b2Math.CrossVV(b2Math.SubtractVV(m_v2.w, m_v1.w), b2Math.SubtractVV(m_v3.w, m_v1.w))); default: b2Settings.b2Assert(false); return (0); }; } public function ReadCache(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local6:b2Vec2; var _local7:b2Vec2; var _local10:b2SimplexVertex; var _local11:Number; var _local12:Number; b2Settings.b2Assert((((0 <= _arg1.count)) && ((_arg1.count <= 3)))); m_count = _arg1.count; var _local8:Array = m_vertices; var _local9:int; while (_local9 < m_count) { _local10 = _local8[_local9]; _local10.indexA = _arg1.indexA[_local9]; _local10.indexB = _arg1.indexB[_local9]; _local6 = _arg2.GetVertex(_local10.indexA); _local7 = _arg4.GetVertex(_local10.indexB); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local6); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); _local10.a = 0; _local9++; }; if (m_count > 1){ _local11 = _arg1.metric; _local12 = GetMetric(); if ((((((_local12 < (0.5 * _local11))) || (((2 * _local11) < _local12)))) || ((_local12 < Number.MIN_VALUE)))){ m_count = 0; }; }; if (m_count == 0){ _local10 = _local8[0]; _local10.indexA = 0; _local10.indexB = 0; _local6 = _arg2.GetVertex(0); _local7 = _arg4.GetVertex(0); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local7); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); m_count = 1; }; } public function GetWitnessPoints(_arg1:b2Vec2, _arg2:b2Vec2):void{ switch (m_count){ case 0: b2Settings.b2Assert(false); break; case 1: _arg1.SetV(m_v1.wA); _arg2.SetV(m_v1.wB); break; case 2: _arg1.x = ((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)); _arg1.y = ((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)); _arg2.x = ((m_v1.a * m_v1.wB.x) + (m_v2.a * m_v2.wB.x)); _arg2.y = ((m_v1.a * m_v1.wB.y) + (m_v2.a * m_v2.wB.y)); break; case 3: _arg2.x = (_arg1.x = (((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)) + (m_v3.a * m_v3.wA.x))); _arg2.y = (_arg1.y = (((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)) + (m_v3.a * m_v3.wA.y))); break; default: b2Settings.b2Assert(false); break; }; } public function Solve2():void{ var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local4:Number = -(((_local1.x * _local3.x) + (_local1.y * _local3.y))); if (_local4 <= 0){ m_v1.a = 1; m_count = 1; return; }; var _local5:Number = ((_local2.x * _local3.x) + (_local2.y * _local3.y)); if (_local5 <= 0){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; var _local6:Number = (1 / (_local5 + _local4)); m_v1.a = (_local5 * _local6); m_v2.a = (_local4 * _local6); m_count = 2; } public function Solve3():void{ var _local24:Number; var _local25:Number; var _local26:Number; var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = m_v3.w; var _local4:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local5:Number = b2Math.Dot(_local1, _local4); var _local6:Number = b2Math.Dot(_local2, _local4); var _local7:Number = _local6; var _local8:Number = -(_local5); var _local9:b2Vec2 = b2Math.SubtractVV(_local3, _local1); var _local10:Number = b2Math.Dot(_local1, _local9); var _local11:Number = b2Math.Dot(_local3, _local9); var _local12:Number = _local11; var _local13:Number = -(_local10); var _local14:b2Vec2 = b2Math.SubtractVV(_local3, _local2); var _local15:Number = b2Math.Dot(_local2, _local14); var _local16:Number = b2Math.Dot(_local3, _local14); var _local17:Number = _local16; var _local18:Number = -(_local15); var _local19:Number = b2Math.CrossVV(_local4, _local9); var _local20:Number = (_local19 * b2Math.CrossVV(_local2, _local3)); var _local21:Number = (_local19 * b2Math.CrossVV(_local3, _local1)); var _local22:Number = (_local19 * b2Math.CrossVV(_local1, _local2)); if ((((_local8 <= 0)) && ((_local13 <= 0)))){ m_v1.a = 1; m_count = 1; return; }; if ((((((_local7 > 0)) && ((_local8 > 0)))) && ((_local22 <= 0)))){ _local24 = (1 / (_local7 + _local8)); m_v1.a = (_local7 * _local24); m_v2.a = (_local8 * _local24); m_count = 2; return; }; if ((((((_local12 > 0)) && ((_local13 > 0)))) && ((_local21 <= 0)))){ _local25 = (1 / (_local12 + _local13)); m_v1.a = (_local12 * _local25); m_v3.a = (_local13 * _local25); m_count = 2; m_v2.Set(m_v3); return; }; if ((((_local7 <= 0)) && ((_local18 <= 0)))){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; if ((((_local12 <= 0)) && ((_local17 <= 0)))){ m_v3.a = 1; m_count = 1; m_v1.Set(m_v3); return; }; if ((((((_local17 > 0)) && ((_local18 > 0)))) && ((_local20 <= 0)))){ _local26 = (1 / (_local17 + _local18)); m_v2.a = (_local17 * _local26); m_v3.a = (_local18 * _local26); m_count = 2; m_v1.Set(m_v3); return; }; var _local23:Number = (1 / ((_local20 + _local21) + _local22)); m_v1.a = (_local20 * _local23); m_v2.a = (_local21 * _local23); m_v3.a = (_local22 * _local23); m_count = 3; } public function GetClosestPoint():b2Vec2{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (new b2Vec2()); case 1: return (m_v1.w); case 2: return (new b2Vec2(((m_v1.a * m_v1.w.x) + (m_v2.a * m_v2.w.x)), ((m_v1.a * m_v1.w.y) + (m_v2.a * m_v2.w.y)))); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } } }//package Box2D.Collision
Section 25
//b2SimplexCache (Box2D.Collision.b2SimplexCache) package Box2D.Collision { public class b2SimplexCache { public var metric:Number; public var count:uint; public var indexB:Array; public var indexA:Array; public function b2SimplexCache(){ indexA = new Array(3); indexB = new Array(3); super(); } } }//package Box2D.Collision
Section 26
//b2SimplexVertex (Box2D.Collision.b2SimplexVertex) package Box2D.Collision { import Box2D.Common.Math.*; class b2SimplexVertex { public var a:Number; public var wA:b2Vec2; public var wB:b2Vec2; public var indexA:int; public var indexB:int; public var w:b2Vec2; public function Set(_arg1:b2SimplexVertex):void{ wA.SetV(_arg1.wA); wB.SetV(_arg1.wB); w.SetV(_arg1.w); a = _arg1.a; indexA = _arg1.indexA; indexB = _arg1.indexB; } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { private static var b2_toiCalls:int = 0; private static var s_xfA:b2Transform = new b2Transform(); private static var s_distanceInput:b2DistanceInput = new b2DistanceInput(); private static var s_xfB:b2Transform = new b2Transform(); private static var s_distanceOutput:b2DistanceOutput = new b2DistanceOutput(); private static var b2_toiMaxRootIters:int = 0; private static var s_cache:b2SimplexCache = new b2SimplexCache(); private static var b2_toiRootIters:int = 0; private static var b2_toiIters:int = 0; private static var b2_toiMaxIters:int = 0; private static var s_fcn:b2SeparationFunction = new b2SeparationFunction(); public static function TimeOfImpact(_arg1:b2TOIInput):Number{ var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; b2_toiCalls++; var _local2:b2DistanceProxy = _arg1.proxyA; var _local3:b2DistanceProxy = _arg1.proxyB; var _local4:b2Sweep = _arg1.sweepA; var _local5:b2Sweep = _arg1.sweepB; b2Settings.b2Assert((_local4.t0 == _local5.t0)); b2Settings.b2Assert(((1 - _local4.t0) > Number.MIN_VALUE)); var _local6:Number = (_local2.m_radius + _local3.m_radius); var _local7:Number = _arg1.tolerance; var _local8:Number = 0; var _local9 = 1000; var _local10:int; var _local11:Number = 0; s_cache.count = 0; s_distanceInput.useRadii = false; while (true) { _local4.GetTransform(s_xfA, _local8); _local5.GetTransform(s_xfB, _local8); s_distanceInput.proxyA = _local2; s_distanceInput.proxyB = _local3; s_distanceInput.transformA = s_xfA; s_distanceInput.transformB = s_xfB; b2Distance.Distance(s_distanceOutput, s_cache, s_distanceInput); if (s_distanceOutput.distance <= 0){ _local8 = 1; break; }; s_fcn.Initialize(s_cache, _local2, s_xfA, _local3, s_xfB); _local12 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local12 <= 0){ _local8 = 1; break; }; if (_local10 == 0){ if (_local12 > _local6){ _local11 = b2Math.Max((_local6 - _local7), (0.75 * _local6)); } else { _local11 = b2Math.Max((_local12 - _local7), (0.02 * _local6)); }; }; if ((_local12 - _local11) < (0.5 * _local7)){ if (_local10 == 0){ _local8 = 1; break; }; break; }; _local13 = _local8; _local14 = _local8; _local15 = 1; _local16 = _local12; _local4.GetTransform(s_xfA, _local15); _local5.GetTransform(s_xfB, _local15); _local17 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local17 >= _local11){ _local8 = 1; break; }; _local18 = 0; while (true) { if ((_local18 & 1)){ _local19 = (_local14 + (((_local11 - _local16) * (_local15 - _local14)) / (_local17 - _local16))); } else { _local19 = (0.5 * (_local14 + _local15)); }; _local4.GetTransform(s_xfA, _local19); _local5.GetTransform(s_xfB, _local19); _local20 = s_fcn.Evaluate(s_xfA, s_xfB); if (b2Math.Abs((_local20 - _local11)) < (0.025 * _local7)){ _local13 = _local19; break; }; if (_local20 > _local11){ _local14 = _local19; _local16 = _local20; } else { _local15 = _local19; _local17 = _local20; }; _local18++; b2_toiRootIters++; if (_local18 == 50){ break; }; }; b2_toiMaxRootIters = b2Math.Max(b2_toiMaxRootIters, _local18); if (_local13 < ((1 + (100 * Number.MIN_VALUE)) * _local8)){ break; }; _local8 = _local13; _local10++; b2_toiIters++; if (_local10 == _local9){ break; }; }; b2_toiMaxIters = b2Math.Max(b2_toiMaxIters, _local10); return (_local8); } } }//package Box2D.Collision
Section 28
//b2TOIInput (Box2D.Collision.b2TOIInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2TOIInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var sweepA:b2Sweep; public var sweepB:b2Sweep; public var tolerance:Number; public function b2TOIInput(){ proxyA = new b2DistanceProxy(); proxyB = new b2DistanceProxy(); sweepA = new b2Sweep(); sweepB = new b2Sweep(); super(); } } }//package Box2D.Collision
Section 29
//b2WorldManifold (Box2D.Collision.b2WorldManifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2WorldManifold { public var m_normal:b2Vec2; public var m_points:Array; public function b2WorldManifold(){ m_normal = new b2Vec2(); super(); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2Manifold, _arg2:b2Transform, _arg3:Number, _arg4:b2Transform, _arg5:Number):void{ var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; if (_arg1.m_pointCount == 0){ return; }; switch (_arg1.m_type){ case b2Manifold.e_circles: _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local15 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local16 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_points[0].m_localPoint; _local17 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local18 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local21 = ((_local19 * _local19) + (_local20 * _local20)); if (_local21 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local26 = Math.sqrt(_local21); m_normal.x = (_local19 / _local26); m_normal.y = (_local20 / _local26); } else { m_normal.x = 1; m_normal.y = 0; }; _local22 = (_local15 + (_arg3 * m_normal.x)); _local23 = (_local16 + (_arg3 * m_normal.y)); _local24 = (_local17 - (_arg5 * m_normal.x)); _local25 = (_local18 - (_arg5 * m_normal.y)); m_points[0].x = (0.5 * (_local22 + _local24)); m_points[0].y = (0.5 * (_local23 + _local25)); break; case b2Manifold.e_faceA: _local8 = _arg2.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = _local9; m_normal.y = _local10; _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg4.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local10)); _local6++; }; break; case b2Manifold.e_faceB: _local8 = _arg4.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = -(_local9); m_normal.y = -(_local10); _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg2.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local10)); _local6++; }; break; }; } } }//package Box2D.Collision
Section 30
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:ClipVertex):void{ v.SetV(_arg1.v); id.Set(_arg1.id); } } }//package Box2D.Collision
Section 31
//Features (Box2D.Collision.Features) package Box2D.Collision { import Box2D.Common.*; public class Features { b2internal var _referenceEdge:int; b2internal var _incidentEdge:int; b2internal var _flip:int; b2internal var _incidentVertex:int; b2internal var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 32
//IBroadPhase (Box2D.Collision.IBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public interface IBroadPhase { function GetFatAABB(_arg1):b2AABB; function Query(_arg1:Function, _arg2:b2AABB):void; function Rebalance(_arg1:int):void; function GetUserData(_arg1); function UpdatePairs(_arg1:Function):void; function CreateProxy(_arg1:b2AABB, _arg2); function DestroyProxy(_arg1):void; function TestOverlap(_arg1, _arg2):Boolean; function Validate():void; function GetProxyCount():int; function RayCast(_arg1:Function, _arg2:b2RayCastInput):void; function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void; } }//package Box2D.Collision
Section 33
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(){ col1 = new b2Vec2(); col2 = new b2Vec2(); super(); col1.x = (col2.y = 1); } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ var _local1:b2Mat22 = new b2Mat22(); _local1.SetM(this); return (_local1); } public function GetInverse(_arg1:b2Mat22):b2Mat22{ var _local3:Number; var _local6:Number; var _local2:Number = col1.x; _local3 = col2.x; var _local4:Number = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); if (_local6 != 0){ _local6 = (1 / _local6); }; _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public static function FromAngle(_arg1:Number):b2Mat22{ var _local2:b2Mat22 = new (b2Mat22); _local2.Set(_arg1); return (_local2); } public static function FromVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Mat22{ var _local3:b2Mat22 = new (b2Mat22); _local3.SetVV(_arg1, _arg2); return (_local3); } } }//package Box2D.Common.Math
Section 34
//b2Mat33 (Box2D.Common.Math.b2Mat33) package Box2D.Common.Math { public class b2Mat33 { public var col1:b2Vec3; public var col2:b2Vec3; public var col3:b2Vec3; public function b2Mat33(_arg1:b2Vec3=null, _arg2:b2Vec3=null, _arg3:b2Vec3=null){ col1 = new b2Vec3(); col2 = new b2Vec3(); col3 = new b2Vec3(); super(); if (((((!(_arg1)) && (!(_arg2)))) && (!(_arg3)))){ col1.SetZero(); col2.SetZero(); col3.SetZero(); } else { col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 1; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 1; } public function Solve22(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local6:Number; _local4 = col1.x; var _local5:Number = col2.x; _local6 = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function SetZero():void{ col1.x = 0; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 0; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 0; } public function SetM(_arg1:b2Mat33):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); col3.SetV(_arg1.col3); } public function AddM(_arg1:b2Mat33):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col1.z = (col1.z + _arg1.col1.z); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); col2.z = (col2.z + _arg1.col2.z); col3.x = (col3.x + _arg1.col3.x); col3.y = (col3.y + _arg1.col3.y); col3.z = (col3.z + _arg1.col3.z); } public function SetVVV(_arg1:b2Vec3, _arg2:b2Vec3, _arg3:b2Vec3):void{ col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); } public function Copy():b2Mat33{ return (new b2Mat33(col1, col2, col3)); } public function Solve33(_arg1:b2Vec3, _arg2:Number, _arg3:Number, _arg4:Number):b2Vec3{ var _local5:Number = col1.x; var _local6:Number = col1.y; var _local7:Number = col1.z; var _local8:Number = col2.x; var _local9:Number = col2.y; var _local10:Number = col2.z; var _local11:Number = col3.x; var _local12:Number = col3.y; var _local13:Number = col3.z; var _local14:Number = (((_local5 * ((_local9 * _local13) - (_local10 * _local12))) + (_local6 * ((_local10 * _local11) - (_local8 * _local13)))) + (_local7 * ((_local8 * _local12) - (_local9 * _local11)))); if (_local14 != 0){ _local14 = (1 / _local14); }; _arg1.x = (_local14 * (((_arg2 * ((_local9 * _local13) - (_local10 * _local12))) + (_arg3 * ((_local10 * _local11) - (_local8 * _local13)))) + (_arg4 * ((_local8 * _local12) - (_local9 * _local11))))); _arg1.y = (_local14 * (((_local5 * ((_arg3 * _local13) - (_arg4 * _local12))) + (_local6 * ((_arg4 * _local11) - (_arg2 * _local13)))) + (_local7 * ((_arg2 * _local12) - (_arg3 * _local11))))); _arg1.z = (_local14 * (((_local5 * ((_local9 * _arg4) - (_local10 * _arg3))) + (_local6 * ((_local10 * _arg2) - (_local8 * _arg4)))) + (_local7 * ((_local8 * _arg3) - (_local9 * _arg2))))); return (_arg1); } } }//package Box2D.Common.Math
Section 35
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Transform_identity:b2Transform = new b2Transform(b2Vec2_zero, b2Mat22_identity); public static const b2Mat22_identity:b2Mat22 = b2Mat22.FromVV(new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = b2Mat22.FromVV(AbsV(_arg1.col1), AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(MulMV(_arg1, _arg2.col1), MulMV(_arg1, _arg2.col2)); return (_local3); } public static function NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } public static function CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Max(_arg1.x, _arg2.x), Max(_arg1.y, _arg2.y)); return (_local3); } public static function AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(Abs(_arg1.x), Abs(_arg1.y)); return (_local2); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col1), Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col2), Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = b2Mat22.FromVV(_local3, _local4); return (_local5); } public static function DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (((_arg1 < _arg2)) ? _arg2 : ((_arg1 > _arg3)) ? _arg3 : _arg1); } public static function MulXT(_arg1:b2Transform, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function Random():Number{ return (((Math.random() * 2) - 1)); } public static function MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Min(_arg1.x, _arg2.x), Min(_arg1.y, _arg2.y)); return (_local3); } public static function CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg2, _arg1.col1), Dot(_arg2, _arg1.col2)); return (_local3); } public static function Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (MaxV(_arg2, MinV(_arg1, _arg3))); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function MulX(_arg1:b2Transform, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } } }//package Box2D.Common.Math
Section 36
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function Set(_arg1:b2Sweep):void{ localCenter.SetV(_arg1.localCenter); c0.SetV(_arg1.c0); c.SetV(_arg1.c); a0 = _arg1.a0; a = _arg1.a; t0 = _arg1.t0; } public function Copy():b2Sweep{ var _local1:b2Sweep = new b2Sweep(); _local1.localCenter.SetV(localCenter); _local1.c0.SetV(c0); _local1.c.SetV(c); _local1.a0 = a0; _local1.a = a; _local1.t0 = t0; return (_local1); } public function GetTransform(_arg1:b2Transform, _arg2:Number):void{ _arg1.position.x = (((1 - _arg2) * c0.x) + (_arg2 * c.x)); _arg1.position.y = (((1 - _arg2) * c0.y) + (_arg2 * c.y)); var _local3:Number = (((1 - _arg2) * a0) + (_arg2 * a)); _arg1.R.Set(_local3); var _local4:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local4.col1.x * localCenter.x) + (_local4.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local4.col1.y * localCenter.x) + (_local4.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 37
//b2Transform (Box2D.Common.Math.b2Transform) package Box2D.Common.Math { public class b2Transform { public var position:b2Vec2; public var R:b2Mat22; public function b2Transform(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2Transform):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } public function GetAngle():Number{ return (Math.atan2(R.col1.y, R.col1.x)); } } }//package Box2D.Common.Math
Section 38
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { import Utils.*; public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function NegativeSelf():void{ x = -(x); y = -(y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function GetNegative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function toVector3():Vector3{ return (new Vector3(x, y, 0)); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.Dot(this, _arg1.col1); y = b2Math.Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.IsValid(x)) && (b2Math.IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function toString():String{ return (((("b2Vec2 x=" + x) + " y=") + y)); } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 39
//b2Vec3 (Box2D.Common.Math.b2Vec3) package Box2D.Common.Math { public class b2Vec3 { public var x:Number; public var y:Number; public var z:Number; public function b2Vec3(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function NegativeSelf():void{ x = -(x); y = -(y); z = -(z); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function Add(_arg1:b2Vec3):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function SetZero():void{ x = (y = (z = 0)); } public function GetNegative():b2Vec3{ return (new b2Vec3(-(x), -(y), -(z))); } public function SetV(_arg1:b2Vec3):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public function Copy():b2Vec3{ return (new b2Vec3(x, y, z)); } public function Subtract(_arg1:b2Vec3):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } } }//package Box2D.Common.Math
Section 40
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function get color():uint{ return ((((_r << 16) | (_g << 8)) | _b)); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 41
//b2internal (Box2D.Common.b2internal) package Box2D.Common { public namespace b2internal = "http://www.box2d.org/ns/b2internal"; }//package Box2D.Common
Section 42
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { public class b2Settings { public static const b2_polygonRadius:Number = (2 * b2_linearSlop); public static const b2_pi:Number = 3.14159265358979; public static const b2_aabbExtension:Number = 0.1; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_maxTranslationSquared:Number = 4; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_maxRotation:Number = 1.5707963267949; public static const b2_maxRotationSquared:Number = 2.46740110027234; public static const b2_angularSleepTolerance:Number = 0.0349065850398866; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxTOIJointsPerIsland:int = 32; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const b2_velocityThreshold:Number = 1; public static const USHRT_MAX:int = 0xFFFF; public static const VERSION:String = "2.1alpha"; public static const b2_toiSlop:Number = 0.04; public static const b2_maxTranslation:Number = 2; public static const b2_aabbMultiplier:Number = 2; public static const b2_maxLinearCorrection:Number = 0.2; public static function b2MixFriction(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt((_arg1 * _arg2))); } public static function b2MixRestitution(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2Assert(_arg1:Boolean, _arg2:String=""):void{ if (!_arg1){ throw (("Assertion Failed " + _arg2)); }; } } }//package Box2D.Common
Section 43
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollideCircles(m_manifold, (m_fixtureA.GetShape() as b2CircleShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2CircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { b2internal var m_prev:b2Contact; b2internal var m_next:b2Contact; b2internal var m_oldManifold:b2Manifold; b2internal var m_manifold:b2Manifold; b2internal var m_fixtureB:b2Fixture; b2internal var m_fixtureA:b2Fixture; b2internal var m_nodeA:b2ContactEdge; b2internal var m_flags:uint; b2internal var m_toi:Number; b2internal var m_nodeB:b2ContactEdge; b2internal static var e_sensorFlag:uint = 1; private static var s_input:b2TOIInput = new b2TOIInput(); b2internal static var e_touchingFlag:uint = 16; b2internal static var e_enabledFlag:uint = 32; b2internal static var e_continuousFlag:uint = 2; b2internal static var e_toiFlag:uint = 8; b2internal static var e_islandFlag:uint = 4; b2internal static var e_filterFlag:uint = 64; public function b2Contact(){ m_nodeA = new b2ContactEdge(); m_nodeB = new b2ContactEdge(); m_manifold = new b2Manifold(); m_oldManifold = new b2Manifold(); super(); } public function IsContinuous():Boolean{ return (((m_flags & e_continuousFlag) == e_continuousFlag)); } public function GetNext():b2Contact{ return (m_next); } public function FlagForFiltering():void{ m_flags = (m_flags | e_filterFlag); } public function IsEnabled():Boolean{ return (((m_flags & e_enabledFlag) == e_enabledFlag)); } public function SetSensor(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_sensorFlag); } else { m_flags = (m_flags & ~(e_sensorFlag)); }; } public function SetEnabled(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_enabledFlag); } else { m_flags = (m_flags & ~(e_enabledFlag)); }; } public function IsSensor():Boolean{ return (((m_flags & e_sensorFlag) == e_sensorFlag)); } public function GetManifold():b2Manifold{ return (m_manifold); } b2internal function Update(_arg1:b2ContactListener):void{ var _local8:b2Shape; var _local9:b2Shape; var _local10:b2Transform; var _local11:b2Transform; var _local12:int; var _local13:b2ManifoldPoint; var _local14:b2ContactID; var _local15:int; var _local16:b2ManifoldPoint; var _local2:b2Manifold = m_oldManifold; m_oldManifold = m_manifold; m_manifold = _local2; m_flags = (m_flags | e_enabledFlag); var _local3:Boolean; var _local4 = ((m_flags & e_touchingFlag) == e_touchingFlag); var _local5:b2Body = m_fixtureA.m_body; var _local6:b2Body = m_fixtureB.m_body; var _local7:Boolean = m_fixtureA.m_aabb.TestOverlap(m_fixtureB.m_aabb); if ((m_flags & e_sensorFlag)){ if (_local7){ _local8 = m_fixtureA.GetShape(); _local9 = m_fixtureB.GetShape(); _local10 = _local5.GetTransform(); _local11 = _local6.GetTransform(); _local3 = b2Shape.TestOverlap(_local8, _local10, _local9, _local11); }; m_manifold.m_pointCount = 0; } else { if (((((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || (_local5.IsBullet()))) || (!((_local6.GetType() == b2Body.b2_dynamicBody))))) || (_local6.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); } else { m_flags = (m_flags & ~(e_continuousFlag)); }; if (_local7){ Evaluate(); _local3 = (m_manifold.m_pointCount > 0); _local12 = 0; while (_local12 < m_manifold.m_pointCount) { _local13 = m_manifold.m_points[_local12]; _local13.m_normalImpulse = 0; _local13.m_tangentImpulse = 0; _local14 = _local13.m_id; _local15 = 0; while (_local15 < m_oldManifold.m_pointCount) { _local16 = m_oldManifold.m_points[_local15]; if (_local16.m_id.key == _local14.key){ _local13.m_normalImpulse = _local16.m_normalImpulse; _local13.m_tangentImpulse = _local16.m_tangentImpulse; break; }; _local15++; }; _local12++; }; } else { m_manifold.m_pointCount = 0; }; if (_local3 != _local4){ _local5.SetAwake(true); _local6.SetAwake(true); }; }; if (_local3){ m_flags = (m_flags | e_touchingFlag); } else { m_flags = (m_flags & ~(e_touchingFlag)); }; if ((((_local4 == false)) && ((_local3 == true)))){ _arg1.BeginContact(this); }; if ((((_local4 == true)) && ((_local3 == false)))){ _arg1.EndContact(this); }; if ((m_flags & e_sensorFlag) == 0){ _arg1.PreSolve(this, m_oldManifold); }; } public function GetWorldManifold(_arg1:b2WorldManifold):void{ var _local2:b2Body = m_fixtureA.GetBody(); var _local3:b2Body = m_fixtureB.GetBody(); var _local4:b2Shape = m_fixtureA.GetShape(); var _local5:b2Shape = m_fixtureB.GetShape(); _arg1.Initialize(m_manifold, _local2.GetTransform(), _local4.m_radius, _local3.GetTransform(), _local5.m_radius); } public function IsTouching():Boolean{ return (((m_flags & e_touchingFlag) == e_touchingFlag)); } public function GetFixtureA():b2Fixture{ return (m_fixtureA); } public function GetFixtureB():b2Fixture{ return (m_fixtureB); } b2internal function Reset(_arg1:b2Fixture=null, _arg2:b2Fixture=null):void{ m_flags = e_enabledFlag; if (((!(_arg1)) || (!(_arg2)))){ m_fixtureA = null; m_fixtureB = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_sensorFlag); }; var _local3:b2Body = _arg1.GetBody(); var _local4:b2Body = _arg2.GetBody(); if (((((((!((_local3.GetType() == b2Body.b2_dynamicBody))) || (_local3.IsBullet()))) || (!((_local4.GetType() == b2Body.b2_dynamicBody))))) || (_local4.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); }; m_fixtureA = _arg1; m_fixtureB = _arg2; m_manifold.m_pointCount = 0; m_prev = null; m_next = null; m_nodeA.contact = null; m_nodeA.prev = null; m_nodeA.next = null; m_nodeA.other = null; m_nodeB.contact = null; m_nodeB.prev = null; m_nodeB.next = null; m_nodeB.other = null; } b2internal function ComputeTOI(_arg1:b2Sweep, _arg2:b2Sweep):Number{ s_input.proxyA.Set(m_fixtureA.GetShape()); s_input.proxyB.Set(m_fixtureB.GetShape()); s_input.sweepA = _arg1; s_input.sweepB = _arg2; s_input.tolerance = b2Settings.b2_linearSlop; return (b2TimeOfImpact.TimeOfImpact(s_input)); } b2internal function Evaluate():void{ } } }//package Box2D.Dynamics.Contacts
Section 45
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var type:int; public var normalMass:b2Mat22; public var K:b2Mat22; public var manifold:b2Manifold; public var radius:Number; public var bodyA:b2Body; public var bodyB:b2Body; public var points:Array; public var localPoint:b2Vec2; public var pointCount:int; public var normal:b2Vec2; public var restitution:Number; public var localPlaneNormal:b2Vec2; public var friction:Number; public function b2ContactConstraint(){ localPlaneNormal = new b2Vec2(); localPoint = new b2Vec2(); normal = new b2Vec2(); normalMass = new b2Mat22(); K = new b2Mat22(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 46
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var localPoint:b2Vec2; public var normalImpulse:Number; public var rA:b2Vec2; public var rB:b2Vec2; public var tangentImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var normalMass:Number; public var velocityBias:Number; public function b2ContactConstraintPoint(){ localPoint = new b2Vec2(); rA = new b2Vec2(); rB = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 48
//b2ContactFactory (Box2D.Dynamics.Contacts.b2ContactFactory) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactFactory { private var m_allocator; private var m_registers:Array; public function b2ContactFactory(_arg1){ m_allocator = _arg1; InitializeRegisters(); } b2internal function InitializeRegisters():void{ var _local2:int; m_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { m_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { m_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); AddType(b2EdgeAndCircleContact.Create, b2EdgeAndCircleContact.Destroy, b2Shape.e_edgeShape, b2Shape.e_circleShape); AddType(b2PolyAndEdgeContact.Create, b2PolyAndEdgeContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_edgeShape); } public function Destroy(_arg1:b2Contact):void{ if (_arg1.m_manifold.m_pointCount > 0){ _arg1.m_fixtureA.m_body.SetAwake(true); _arg1.m_fixtureB.m_body.SetAwake(true); }; var _local2:int = _arg1.m_fixtureA.GetType(); var _local3:int = _arg1.m_fixtureB.GetType(); var _local4:b2ContactRegister = m_registers[_local2][_local3]; _local4.poolCount++; _arg1.m_next = _local4.pool; _local4.pool = _arg1; var _local5:Function = _local4.destroyFcn; _local5(_arg1, m_allocator); } b2internal function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ m_registers[_arg3][_arg4].createFcn = _arg1; m_registers[_arg3][_arg4].destroyFcn = _arg2; m_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ m_registers[_arg4][_arg3].createFcn = _arg1; m_registers[_arg4][_arg3].destroyFcn = _arg2; m_registers[_arg4][_arg3].primary = false; }; } public function Create(_arg1:b2Fixture, _arg2:b2Fixture):b2Contact{ var _local6:b2Contact; var _local3:int = _arg1.GetType(); var _local4:int = _arg2.GetType(); var _local5:b2ContactRegister = m_registers[_local3][_local4]; if (_local5.pool){ _local6 = _local5.pool; _local5.pool = _local6.m_next; _local5.poolCount--; _local6.Reset(_arg1, _arg2); return (_local6); }; var _local7:Function = _local5.createFcn; if (_local7 != null){ if (_local5.primary){ _local6 = _local7(m_allocator); _local6.Reset(_arg1, _arg2); return (_local6); }; _local6 = _local7(m_allocator); _local6.Reset(_arg2, _arg1); return (_local6); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 49
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var poolCount:int; public var createFcn:Function; public var destroyFcn:Function; public var pool:b2Contact; } }//package Box2D.Dynamics.Contacts
Section 50
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { private var m_constraintCount:int; b2internal var m_constraints:Array; private var m_allocator; private var m_step:b2TimeStep; private static var s_psm:b2PositionSolverManifold = new b2PositionSolverManifold(); private static var s_worldManifold:b2WorldManifold = new b2WorldManifold(); public function b2ContactSolver(){ m_step = new b2TimeStep(); m_constraints = new Array(); super(); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.bodyA; _local8 = _local6.bodyB; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.rA.x * _local22) - (_local20.rA.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.rB.x * _local22) - (_local20.rB.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2ContactConstraint; var _local5:b2Body; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:int; var _local13:b2ContactConstraintPoint; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local2:Number = 0; var _local3:int; while (_local3 < m_constraintCount) { _local4 = m_constraints[_local3]; _local5 = _local4.bodyA; _local6 = _local4.bodyB; _local7 = (_local5.m_mass * _local5.m_invMass); _local8 = (_local5.m_mass * _local5.m_invI); _local9 = (_local6.m_mass * _local6.m_invMass); _local10 = (_local6.m_mass * _local6.m_invI); s_psm.Initialize(_local4); _local11 = s_psm.m_normal; _local12 = 0; while (_local12 < _local4.pointCount) { _local13 = _local4.points[_local12]; _local14 = s_psm.m_points[_local12]; _local15 = s_psm.m_separations[_local12]; _local16 = (_local14.x - _local5.m_sweep.c.x); _local17 = (_local14.y - _local5.m_sweep.c.y); _local18 = (_local14.x - _local6.m_sweep.c.x); _local19 = (_local14.y - _local6.m_sweep.c.y); _local2 = ((_local2 < _local15)) ? _local2 : _local15; _local20 = b2Math.Clamp((_arg1 * (_local15 + b2Settings.b2_linearSlop)), -(b2Settings.b2_maxLinearCorrection), 0); _local21 = (-(_local13.equalizedMass) * _local20); _local22 = (_local21 * _local11.x); _local23 = (_local21 * _local11.y); _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local7 * _local22)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local7 * _local23)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local8 * ((_local16 * _local23) - (_local17 * _local22)))); _local5.SynchronizeTransform(); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local9 * _local22)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local9 * _local23)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local10 * ((_local18 * _local23) - (_local19 * _local22)))); _local6.SynchronizeTransform(); _local12++; }; _local3++; }; return ((_local2 > (-1.5 * b2Settings.b2_linearSlop))); } public function Initialize(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4):void{ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:b2Fixture; var _local10:b2Fixture; var _local11:b2Shape; var _local12:b2Shape; var _local13:Number; var _local14:Number; var _local15:b2Body; var _local16:b2Body; var _local17:b2Manifold; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:b2ContactConstraint; var _local29:uint; var _local30:b2ManifoldPoint; var _local31:b2ContactConstraintPoint; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:b2ContactConstraintPoint; var _local49:b2ContactConstraintPoint; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local58:Number; var _local59:Number; var _local60:Number; var _local61:Number; m_step.Set(_arg1); m_allocator = _arg4; m_constraintCount = _arg3; while (m_constraints.length < m_constraintCount) { m_constraints[m_constraints.length] = new b2ContactConstraint(); }; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local9 = _local5.m_fixtureA; _local10 = _local5.m_fixtureB; _local11 = _local9.m_shape; _local12 = _local10.m_shape; _local13 = _local11.m_radius; _local14 = _local12.m_radius; _local15 = _local9.m_body; _local16 = _local10.m_body; _local17 = _local5.GetManifold(); _local18 = b2Settings.b2MixFriction(_local9.GetFriction(), _local10.GetFriction()); _local19 = b2Settings.b2MixRestitution(_local9.GetRestitution(), _local10.GetRestitution()); _local20 = _local15.m_linearVelocity.x; _local21 = _local15.m_linearVelocity.y; _local22 = _local16.m_linearVelocity.x; _local23 = _local16.m_linearVelocity.y; _local24 = _local15.m_angularVelocity; _local25 = _local16.m_angularVelocity; b2Settings.b2Assert((_local17.m_pointCount > 0)); s_worldManifold.Initialize(_local17, _local15.m_xf, _local13, _local16.m_xf, _local14); _local26 = s_worldManifold.m_normal.x; _local27 = s_worldManifold.m_normal.y; _local28 = m_constraints[_local6]; _local28.bodyA = _local15; _local28.bodyB = _local16; _local28.manifold = _local17; _local28.normal.x = _local26; _local28.normal.y = _local27; _local28.pointCount = _local17.m_pointCount; _local28.friction = _local18; _local28.restitution = _local19; _local28.localPlaneNormal.x = _local17.m_localPlaneNormal.x; _local28.localPlaneNormal.y = _local17.m_localPlaneNormal.y; _local28.localPoint.x = _local17.m_localPoint.x; _local28.localPoint.y = _local17.m_localPoint.y; _local28.radius = (_local13 + _local14); _local28.type = _local17.m_type; _local29 = 0; while (_local29 < _local28.pointCount) { _local30 = _local17.m_points[_local29]; _local31 = _local28.points[_local29]; _local31.normalImpulse = _local30.m_normalImpulse; _local31.tangentImpulse = _local30.m_tangentImpulse; _local31.localPoint.SetV(_local30.m_localPoint); _local32 = (_local31.rA.x = (s_worldManifold.m_points[_local29].x - _local15.m_sweep.c.x)); _local33 = (_local31.rA.y = (s_worldManifold.m_points[_local29].y - _local15.m_sweep.c.y)); _local34 = (_local31.rB.x = (s_worldManifold.m_points[_local29].x - _local16.m_sweep.c.x)); _local35 = (_local31.rB.y = (s_worldManifold.m_points[_local29].y - _local16.m_sweep.c.y)); _local36 = ((_local32 * _local27) - (_local33 * _local26)); _local37 = ((_local34 * _local27) - (_local35 * _local26)); _local36 = (_local36 * _local36); _local37 = (_local37 * _local37); _local38 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local36)) + (_local16.m_invI * _local37)); _local31.normalMass = (1 / _local38); _local39 = ((_local15.m_mass * _local15.m_invMass) + (_local16.m_mass * _local16.m_invMass)); _local39 = (_local39 + (((_local15.m_mass * _local15.m_invI) * _local36) + ((_local16.m_mass * _local16.m_invI) * _local37))); _local31.equalizedMass = (1 / _local39); _local40 = _local27; _local41 = -(_local26); _local42 = ((_local32 * _local41) - (_local33 * _local40)); _local43 = ((_local34 * _local41) - (_local35 * _local40)); _local42 = (_local42 * _local42); _local43 = (_local43 * _local43); _local44 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local42)) + (_local16.m_invI * _local43)); _local31.tangentMass = (1 / _local44); _local31.velocityBias = 0; _local45 = (((_local22 + (-(_local25) * _local35)) - _local20) - (-(_local24) * _local33)); _local46 = (((_local23 + (_local25 * _local34)) - _local21) - (_local24 * _local32)); _local47 = ((_local28.normal.x * _local45) + (_local28.normal.y * _local46)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local31.velocityBias = (_local31.velocityBias + (-(_local28.restitution) * _local47)); }; _local29++; }; if (_local28.pointCount == 2){ _local48 = _local28.points[0]; _local49 = _local28.points[1]; _local50 = _local15.m_invMass; _local51 = _local15.m_invI; _local52 = _local16.m_invMass; _local53 = _local16.m_invI; _local54 = ((_local48.rA.x * _local27) - (_local48.rA.y * _local26)); _local55 = ((_local48.rB.x * _local27) - (_local48.rB.y * _local26)); _local56 = ((_local49.rA.x * _local27) - (_local49.rA.y * _local26)); _local57 = ((_local49.rB.x * _local27) - (_local49.rB.y * _local26)); _local58 = (((_local50 + _local52) + ((_local51 * _local54) * _local54)) + ((_local53 * _local55) * _local55)); _local59 = (((_local50 + _local52) + ((_local51 * _local56) * _local56)) + ((_local53 * _local57) * _local57)); _local60 = (((_local50 + _local52) + ((_local51 * _local54) * _local56)) + ((_local53 * _local55) * _local57)); _local61 = 100; if ((_local58 * _local58) < (_local61 * ((_local58 * _local59) - (_local60 * _local60)))){ _local28.K.col1.Set(_local58, _local60); _local28.K.col2.Set(_local60, _local59); _local28.K.GetInverse(_local28.normalMass); } else { _local28.pointCount = 1; }; }; _local6++; }; } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:b2Mat22; var _local23:b2Vec2; var _local25:b2ContactConstraint; var _local26:b2Body; var _local27:b2Body; var _local28:Number; var _local29:Number; var _local30:b2Vec2; var _local31:b2Vec2; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:int; var _local43:b2ContactConstraintPoint; var _local44:b2ContactConstraintPoint; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:Number; var _local49:Number; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local24:int; while (_local24 < m_constraintCount) { _local25 = m_constraints[_local24]; _local26 = _local25.bodyA; _local27 = _local25.bodyB; _local28 = _local26.m_angularVelocity; _local29 = _local27.m_angularVelocity; _local30 = _local26.m_linearVelocity; _local31 = _local27.m_linearVelocity; _local32 = _local26.m_invMass; _local33 = _local26.m_invI; _local34 = _local27.m_invMass; _local35 = _local27.m_invI; _local36 = _local25.normal.x; _local37 = _local25.normal.y; _local38 = _local37; _local39 = -(_local36); _local40 = _local25.friction; _local1 = 0; while (_local1 < _local25.pointCount) { _local2 = _local25.points[_local1]; _local7 = (((_local31.x - (_local29 * _local2.rB.y)) - _local30.x) + (_local28 * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local10 = ((_local7 * _local38) + (_local8 * _local39)); _local11 = (_local2.tangentMass * -(_local10)); _local12 = (_local40 * _local2.normalImpulse); _local13 = b2Math.Clamp((_local2.tangentImpulse + _local11), -(_local12), _local12); _local11 = (_local13 - _local2.tangentImpulse); _local14 = (_local11 * _local38); _local15 = (_local11 * _local39); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.tangentImpulse = _local13; _local1++; }; _local42 = _local25.pointCount; if (_local25.pointCount == 1){ _local2 = _local25.points[0]; _local7 = (((_local31.x + (-(_local29) * _local2.rB.y)) - _local30.x) - (-(_local28) * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local9 = ((_local7 * _local36) + (_local8 * _local37)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local13 = (_local2.normalImpulse + _local11); _local13 = ((_local13 > 0)) ? _local13 : 0; _local11 = (_local13 - _local2.normalImpulse); _local14 = (_local11 * _local36); _local15 = (_local11 * _local37); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.normalImpulse = _local13; } else { _local43 = _local25.points[0]; _local44 = _local25.points[1]; _local45 = _local43.normalImpulse; _local46 = _local44.normalImpulse; _local47 = (((_local31.x - (_local29 * _local43.rB.y)) - _local30.x) + (_local28 * _local43.rA.y)); _local48 = (((_local31.y + (_local29 * _local43.rB.x)) - _local30.y) - (_local28 * _local43.rA.x)); _local49 = (((_local31.x - (_local29 * _local44.rB.y)) - _local30.x) + (_local28 * _local44.rA.y)); _local50 = (((_local31.y + (_local29 * _local44.rB.x)) - _local30.y) - (_local28 * _local44.rA.x)); _local51 = ((_local47 * _local36) + (_local48 * _local37)); _local52 = ((_local49 * _local36) + (_local50 * _local37)); _local53 = (_local51 - _local43.velocityBias); _local54 = (_local52 - _local44.velocityBias); _local22 = _local25.K; _local53 = (_local53 - ((_local22.col1.x * _local45) + (_local22.col2.x * _local46))); _local54 = (_local54 - ((_local22.col1.y * _local45) + (_local22.col2.y * _local46))); _local55 = 0.001; while (true) { _local22 = _local25.normalMass; _local56 = -(((_local22.col1.x * _local53) + (_local22.col2.x * _local54))); _local57 = -(((_local22.col1.y * _local53) + (_local22.col2.y * _local54))); if ((((_local56 >= 0)) && ((_local57 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = (-(_local43.normalMass) * _local53); _local57 = 0; _local51 = 0; _local52 = ((_local25.K.col1.y * _local56) + _local54); if ((((_local56 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = (-(_local44.normalMass) * _local54); _local51 = ((_local25.K.col2.x * _local57) + _local53); _local52 = 0; if ((((_local57 >= 0)) && ((_local51 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = 0; _local51 = _local53; _local52 = _local54; if ((((_local51 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; break; }; }; _local26.m_angularVelocity = _local28; _local27.m_angularVelocity = _local29; _local24++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.m_points[_local4]; _local6 = _local2.points[_local4]; _local5.m_normalImpulse = _local6.normalImpulse; _local5.m_tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 51
//b2EdgeAndCircleContact (Box2D.Dynamics.Contacts.b2EdgeAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeAndCircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollideEdgeAndCircle(m_manifold, (m_fixtureA.GetShape() as b2EdgeShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } private function b2CollideEdgeAndCircle(_arg1:b2Manifold, _arg2:b2EdgeShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2EdgeAndCircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 52
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.m_body; var _local2:b2Body = m_fixtureB.m_body; b2Collision.CollidePolygonAndCircle(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_circleShape)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndCircleContact)); } } }//package Box2D.Dynamics.Contacts
Section 53
//b2PolyAndEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndEdgeContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndEdgeContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollidePolyAndEdge(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2EdgeShape), _local2.m_xf); } private function b2CollidePolyAndEdge(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2EdgeShape, _arg5:b2Transform):void{ } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_edgeShape)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndEdgeContact)); } } }//package Box2D.Dynamics.Contacts
Section 54
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollidePolygons(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2PolygonShape), _local2.m_xf); } public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolygonContact)); } } }//package Box2D.Dynamics.Contacts
Section 55
//b2PositionSolverManifold (Box2D.Dynamics.Contacts.b2PositionSolverManifold) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; class b2PositionSolverManifold { public var m_points:Array; public var m_normal:b2Vec2; public var m_separations:Array; private static var circlePointA:b2Vec2 = new b2Vec2(); private static var circlePointB:b2Vec2 = new b2Vec2(); function b2PositionSolverManifold(){ m_normal = new b2Vec2(); m_separations = new Array(b2Settings.b2_maxManifoldPoints); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2ContactConstraint):void{ var _local2:int; var _local3:Number; var _local4:Number; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; b2Settings.b2Assert((_arg1.pointCount > 0)); switch (_arg1.type){ case b2Manifold.e_circles: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local9 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local10 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.points[0].localPoint; _local11 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local12 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local16 = Math.sqrt(_local15); m_normal.x = (_local13 / _local16); m_normal.y = (_local14 / _local16); } else { m_normal.x = 1; m_normal.y = 0; }; m_points[0].x = (0.5 * (_local9 + _local11)); m_points[0].y = (0.5 * (_local10 + _local12)); m_separations[0] = (((_local13 * m_normal.x) + (_local14 * m_normal.y)) - _arg1.radius); break; case b2Manifold.e_faceA: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].x = _local3; m_points[_local2].y = _local4; _local2++; }; break; case b2Manifold.e_faceB: _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyA.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].Set(_local3, _local4); _local2++; }; m_normal.x = (m_normal.x * -1); m_normal.y = (m_normal.y * -1); break; }; } } }//package Box2D.Dynamics.Contacts
Section 56
//b2Controller (Box2D.Dynamics.Controllers.b2Controller) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Controller { b2internal var m_world:b2World; b2internal var m_prev:b2Controller; b2internal var m_next:b2Controller; protected var m_bodyList:b2ControllerEdge; protected var m_bodyCount:int; public function AddBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = new b2ControllerEdge(); _local2.controller = this; _local2.body = _arg1; _local2.nextBody = m_bodyList; _local2.prevBody = null; m_bodyList = _local2; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2; }; m_bodyCount++; _local2.nextController = _arg1.m_controllerList; _local2.prevController = null; _arg1.m_controllerList = _local2; if (_local2.nextController){ _local2.nextController.prevController = _local2; }; _arg1.m_controllerCount++; } public function Draw(_arg1:b2DebugDraw):void{ } public function RemoveBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = _arg1.m_controllerList; while (((_local2) && (!((_local2.controller == this))))) { _local2 = _local2.nextController; }; if (_local2.prevBody){ _local2.prevBody.nextBody = _local2.nextBody; }; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2.prevBody; }; if (_local2.nextController){ _local2.nextController.prevController = _local2.prevController; }; if (_local2.prevController){ _local2.prevController.nextController = _local2.nextController; }; if (m_bodyList == _local2){ m_bodyList = _local2.nextBody; }; if (_arg1.m_controllerList == _local2){ _arg1.m_controllerList = _local2.nextController; }; _arg1.m_controllerCount--; m_bodyCount--; } public function GetNext():b2Controller{ return (m_next); } public function Clear():void{ while (m_bodyList) { RemoveBody(m_bodyList.body); }; } public function Step(_arg1:b2TimeStep):void{ } public function GetBodyList():b2ControllerEdge{ return (m_bodyList); } public function GetWorld():b2World{ return (m_world); } } }//package Box2D.Dynamics.Controllers
Section 57
//b2ControllerEdge (Box2D.Dynamics.Controllers.b2ControllerEdge) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; public class b2ControllerEdge { public var body:b2Body; public var nextBody:b2ControllerEdge; public var nextController:b2ControllerEdge; public var prevBody:b2ControllerEdge; public var prevController:b2ControllerEdge; public var controller:b2Controller; } }//package Box2D.Dynamics.Controllers
Section 58
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_length:Number; private var m_mass:Number; private var m_bias:Number; private var m_gamma:Number; private var m_u:b2Vec2; private var m_impulse:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetLength(_arg1:Number):void{ m_length = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local7:Number; var _local9:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = ((_local13)!=0) ? (1 / _local13) : 0; if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (_arg1.dt * (_local16 + (_arg1.dt * _local17))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (_local13 + m_gamma); m_mass = ((m_mass)!=0) ? (1 / m_mass) : 0; }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } public function GetLength():Number{ return (m_length); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u.x), ((_arg1 * m_impulse) * m_u.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (((_local4.m_sweep.c.x + _local8) - _local3.m_sweep.c.x) - _local5); var _local11:Number = (((_local4.m_sweep.c.y + _local9) - _local3.m_sweep.c.y) - _local6); var _local12:Number = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local12); _local11 = (_local11 / _local12); var _local13:Number = (_local12 - m_length); _local13 = b2Math.Clamp(_local13, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local14:Number = (-(m_mass) * _local13); m_u.Set(_local10, _local11); var _local15:Number = (_local14 * m_u.x); var _local16:Number = (_local14 * m_u.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local5 * _local16) - (_local6 * _local15)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local15)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local16)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((b2Math.Abs(_local13) < b2Settings.b2_linearSlop)); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } public function GetDampingRatio():Number{ return (m_dampingRatio); } } }//package Box2D.Dynamics.Joints
Section 59
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchorB:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 60
//b2FrictionJoint (Box2D.Dynamics.Joints.b2FrictionJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2FrictionJoint extends b2Joint { private var m_maxTorque:Number; private var m_angularImpulse:Number; public var m_linearMass:b2Mat22; private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; public var m_angularMass:Number; private var m_maxForce:Number; private var m_linearImpulse:b2Vec2; public function b2FrictionJoint(_arg1:b2FrictionJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_linearMass = new b2Mat22(); m_linearImpulse = new b2Vec2(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_linearMass.SetZero(); m_angularMass = 0; m_linearImpulse.SetZero(); m_angularImpulse = 0; m_maxForce = _arg1.maxForce; m_maxTorque = _arg1.maxTorque; } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local10:Number; var _local12:Number; var _local13:Number; var _local14:b2Mat22; var _local15:b2Vec2; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; _local10 = _local4.m_invMass; var _local11:Number = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; _local14 = new b2Mat22(); _local14.col1.x = (_local10 + _local11); _local14.col2.x = 0; _local14.col1.y = 0; _local14.col2.y = (_local10 + _local11); _local14.col1.x = (_local14.col1.x + ((_local12 * _local7) * _local7)); _local14.col2.x = (_local14.col2.x + ((-(_local12) * _local6) * _local7)); _local14.col1.y = (_local14.col1.y + ((-(_local12) * _local6) * _local7)); _local14.col2.y = (_local14.col2.y + ((_local12 * _local6) * _local6)); _local14.col1.x = (_local14.col1.x + ((_local13 * _local9) * _local9)); _local14.col2.x = (_local14.col2.x + ((-(_local13) * _local8) * _local9)); _local14.col1.y = (_local14.col1.y + ((-(_local13) * _local8) * _local9)); _local14.col2.y = (_local14.col2.y + ((_local13 * _local8) * _local8)); _local14.GetInverse(m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > 0){ m_angularMass = (1 / m_angularMass); }; if (_arg1.warmStarting){ m_linearImpulse.x = (m_linearImpulse.x * _arg1.dtRatio); m_linearImpulse.y = (m_linearImpulse.y * _arg1.dtRatio); m_angularImpulse = (m_angularImpulse * _arg1.dtRatio); _local15 = m_linearImpulse; _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * _local15.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * _local15.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * _local15.y) - (_local7 * _local15.x)) + m_angularImpulse))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * _local15.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * _local15.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * _local15.y) - (_local9 * _local15.x)) + m_angularImpulse))); } else { m_linearImpulse.SetZero(); m_angularImpulse = 0; }; } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_angularImpulse)); } public function SetMaxTorque(_arg1:Number):void{ m_maxTorque = _arg1; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } public function GetMaxTorque():Number{ return (m_maxTorque); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local18:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local19:Number = (_local9 - _local7); var _local20:Number = (-(m_angularMass) * _local19); var _local21:Number = m_angularImpulse; _local18 = (_arg1.dt * m_maxTorque); m_angularImpulse = b2Math.Clamp((m_angularImpulse + _local20), -(_local18), _local18); _local20 = (m_angularImpulse - _local21); _local7 = (_local7 - (_local12 * _local20)); _local9 = (_local9 + (_local13 * _local20)); var _local22:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local23:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local24:b2Vec2 = b2Math.MulMV(m_linearMass, new b2Vec2(-(_local22), -(_local23))); var _local25:b2Vec2 = m_linearImpulse.Copy(); m_linearImpulse.Add(_local24); _local18 = (_arg1.dt * m_maxForce); if (m_linearImpulse.LengthSquared() > (_local18 * _local18)){ m_linearImpulse.Normalize(); m_linearImpulse.Multiply(_local18); }; _local24 = b2Math.SubtractVV(m_linearImpulse, _local25); _local6.x = (_local6.x - (_local10 * _local24.x)); _local6.y = (_local6.y - (_local10 * _local24.y)); _local7 = (_local7 - (_local12 * ((_local14 * _local24.y) - (_local15 * _local24.x)))); _local8.x = (_local8.x + (_local11 * _local24.x)); _local8.y = (_local8.y + (_local11 * _local24.y)); _local9 = (_local9 + (_local13 * ((_local16 * _local24.y) - (_local17 * _local24.x)))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_linearImpulse.x), (_arg1 * m_linearImpulse.y))); } public function GetMaxForce():Number{ return (m_maxForce); } } }//package Box2D.Dynamics.Joints
Section 61
//b2FrictionJointDef (Box2D.Dynamics.Joints.b2FrictionJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2FrictionJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var maxTorque:Number; public var maxForce:Number; public var localAnchorB:b2Vec2; public function b2FrictionJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_frictionJoint; maxForce = 0; maxTorque = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); } } }//package Box2D.Dynamics.Joints
Section 62
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { private var m_ground2:b2Body; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_ratio:Number; private var m_mass:Number; private var m_impulse:Number; private var m_prismatic2:b2PrismaticJoint; private var m_ground1:b2Body; private var m_revolute1:b2RevoluteJoint; private var m_revolute2:b2RevoluteJoint; private var m_prismatic1:b2PrismaticJoint; private var m_constant:Number; private var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.GetBodyA(); m_bodyA = _arg1.joint1.GetBodyB(); if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.GetBodyA(); m_bodyB = _arg1.joint2.GetBodyB(); if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_impulse = 0; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; _local4 = m_bodyA; var _local5:b2Body = m_bodyB; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angularA = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linearA.Set(-(_local6), -(_local7)); m_J.angularA = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angularB = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linearB.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angularB = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = ((_local14 > 0)) ? (1 / _local14) : 0; if (_arg1.warmStarting){ _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * m_impulse) * m_J.linearA.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * m_impulse) * m_J.linearA.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * m_impulse) * m_J.angularA)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * m_impulse) * m_J.linearB.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * m_impulse) * m_J.linearB.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * m_impulse) * m_J.angularB)); } else { m_impulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = (-(m_mass) * _local4); m_impulse = (m_impulse + _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local5) * m_J.linearA.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local5) * m_J.linearA.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local5) * m_J.angularA)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local5) * m_J.linearB.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local5) * m_J.linearB.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local5) * m_J.angularB)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function SetRatio(_arg1:Number):void{ m_ratio = _arg1; } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_J.linearB.x), ((_arg1 * m_impulse) * m_J.linearB.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local5:Number; var _local6:Number; var _local2:Number = 0; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; if (m_revolute1){ _local5 = m_revolute1.GetJointAngle(); } else { _local5 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local6 = m_revolute2.GetJointAngle(); } else { _local6 = m_prismatic2.GetJointTranslation(); }; var _local7:Number = (m_constant - (_local5 + (m_ratio * _local6))); var _local8:Number = (-(m_mass) * _local7); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local8) * m_J.linearA.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local8) * m_J.linearA.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local8) * m_J.angularA)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local4.m_invMass * _local8) * m_J.linearB.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local4.m_invMass * _local8) * m_J.linearB.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local4.m_invI * _local8) * m_J.angularB)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((_local2 < b2Settings.b2_linearSlop)); } override public function GetReactionTorque(_arg1:Number):Number{ var _local2:b2Mat22 = m_bodyB.m_xf.R; var _local3:Number = (m_localAnchor1.x - m_bodyB.m_sweep.localCenter.x); var _local4:Number = (m_localAnchor1.y - m_bodyB.m_sweep.localCenter.y); var _local5:Number = ((_local2.col1.x * _local3) + (_local2.col2.x * _local4)); _local4 = ((_local2.col1.y * _local3) + (_local2.col2.y * _local4)); _local3 = _local5; var _local6:Number = (m_impulse * m_J.linearB.x); var _local7:Number = (m_impulse * m_J.linearB.y); return ((_arg1 * (((m_impulse * m_J.angularB) - (_local3 * _local7)) + (_local4 * _local6)))); } public function GetRatio():Number{ return (m_ratio); } } }//package Box2D.Dynamics.Joints
Section 63
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 64
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var angularB:Number; public var linearA:b2Vec2; public var linearB:b2Vec2; public var angularA:Number; public function b2Jacobian(){ linearA = new b2Vec2(); linearB = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linearA.SetV(_arg1); angularA = _arg2; linearB.SetV(_arg3); angularB = _arg4; } public function SetZero():void{ linearA.SetZero(); angularA = 0; linearB.SetZero(); angularB = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linearA.x * _arg1.x) + (linearA.y * _arg1.y)) + (angularA * _arg2)) + ((linearB.x * _arg3.x) + (linearB.y * _arg3.y))) + (angularB * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 65
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Joint { b2internal var m_islandFlag:Boolean; b2internal var m_prev:b2Joint; b2internal var m_invMassA:Number; b2internal var m_localCenterA:b2Vec2; b2internal var m_type:int; b2internal var m_bodyA:b2Body; b2internal var m_bodyB:b2Body; b2internal var m_edgeA:b2JointEdge; b2internal var m_edgeB:b2JointEdge; b2internal var m_next:b2Joint; private var m_userData; b2internal var m_invMassB:Number; b2internal var m_localCenterB:b2Vec2; b2internal var m_invIB:Number; b2internal var m_collideConnected:Boolean; b2internal var m_invIA:Number; b2internal static const e_prismaticJoint:int = 2; b2internal static const e_weldJoint:int = 8; b2internal static const e_equalLimits:int = 3; b2internal static const e_frictionJoint:int = 9; b2internal static const e_lineJoint:int = 7; b2internal static const e_gearJoint:int = 6; b2internal static const e_atUpperLimit:int = 2; b2internal static const e_atLowerLimit:int = 1; b2internal static const e_revoluteJoint:int = 1; b2internal static const e_inactiveLimit:int = 0; b2internal static const e_pulleyJoint:int = 4; b2internal static const e_unknownJoint:int = 0; b2internal static const e_distanceJoint:int = 3; b2internal static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_edgeA = new b2JointEdge(); m_edgeB = new b2JointEdge(); m_localCenterA = new b2Vec2(); m_localCenterB = new b2Vec2(); super(); b2Settings.b2Assert(!((_arg1.bodyA == _arg1.bodyB))); m_type = _arg1.type; m_prev = null; m_next = null; m_bodyA = _arg1.bodyA; m_bodyB = _arg1.bodyB; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetBodyB():b2Body{ return (m_bodyB); } public function GetNext():b2Joint{ return (m_next); } public function GetAnchorA():b2Vec2{ return (null); } public function GetType():int{ return (m_type); } public function GetAnchorB():b2Vec2{ return (null); } public function GetBodyA():b2Body{ return (m_bodyA); } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (false); } public function IsActive():Boolean{ return (((m_bodyA.IsActive()) && (m_bodyB.IsActive()))); } public function SetUserData(_arg1):void{ m_userData = _arg1; } b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function FinalizeVelocityConstraints():void{ } b2internal static function Destroy(_arg1:b2Joint, _arg2):void{ } b2internal static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; case e_lineJoint: _local3 = new b2LineJoint((_arg1 as b2LineJointDef)); break; case e_weldJoint: _local3 = new b2WeldJoint((_arg1 as b2WeldJointDef)); break; case e_frictionJoint: _local3 = new b2FrictionJoint((_arg1 as b2FrictionJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 66
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var bodyB:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var bodyA:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; bodyA = null; bodyB = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 67
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 68
//b2LineJoint (Box2D.Dynamics.Joints.b2LineJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2LineJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_impulse:b2Vec2; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat22; public function b2LineJoint(_arg1:b2LineJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat22(); m_impulse = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:b2Vec2; var _local19:b2Vec2; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local13 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local14 = (m_motorMass * (m_motorSpeed - _local13)); _local15 = m_motorImpulse; _local16 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local14), -(_local16), _local16); _local14 = (m_motorImpulse - _local15); _local8 = (_local14 * m_axis.x); _local9 = (_local14 * m_axis.y); _local10 = (_local14 * m_a1); _local11 = (_local14 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local17 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local18 = m_impulse.Copy(); _local19 = m_K.Solve(new b2Vec2(), -(_local12), -(_local17)); m_impulse.Add(_local19); if (m_limitState == e_atLowerLimit){ m_impulse.y = b2Math.Max(m_impulse.y, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.y = b2Math.Min(m_impulse.y, 0); }; }; _local20 = (-(_local12) - ((m_impulse.y - _local18.y) * m_K.col2.x)); if (m_K.col1.x != 0){ _local21 = ((_local20 / m_K.col1.x) + _local18.x); } else { _local21 = _local18.x; }; m_impulse.x = _local21; _local19.x = (m_impulse.x - _local18.x); _local19.y = (m_impulse.y - _local18.y); _local8 = ((_local19.x * m_perp.x) + (_local19.y * m_axis.x)); _local9 = ((_local19.x * m_perp.y) + (_local19.y * m_axis.y)); _local10 = ((_local19.x * m_s1) + (_local19.y * m_a1)); _local11 = ((_local19.x * m_s2) + (_local19.y * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { if (m_K.col1.x != 0){ _local22 = (-(_local12) / m_K.col1.x); } else { _local22 = 0; }; m_impulse.x = (m_impulse.x + _local22); _local8 = (_local22 * m_perp.x); _local9 = (_local22 * m_perp.y); _local10 = (_local22 * m_s1); _local11 = (_local22 * m_s2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local34 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local34, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local34); _local18 = true; } else { if (_local34 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local34 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local34); _local18 = true; } else { if (_local34 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local34 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local34 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec2 = new b2Vec2(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = 0; if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve(_local28, -(_local29), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local35 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); if (_local35 != 0){ _local36 = (-(_local29) / _local35); } else { _local36 = 0; }; _local28.x = _local36; _local28.y = 0; }; var _local30:Number = ((_local28.x * m_perp.x) + (_local28.y * m_axis.x)); var _local31:Number = ((_local28.x * m_perp.y) + (_local28.y * m_axis.y)); var _local32:Number = ((_local28.x * m_s1) + (_local28.y * m_a1)); var _local33:Number = ((_local28.x * m_s2) + (_local28.y * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local30)); _local6.y = (_local6.y - (m_invMassA * _local31)); _local7 = (_local7 - (m_invIA * _local32)); _local8.x = (_local8.x + (m_invMassB * _local30)); _local8.y = (_local8.y + (m_invMassB * _local31)); _local9 = (_local9 + (m_invIB * _local33)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); m_motorMass = ((m_motorMass > Number.MIN_VALUE)) ? (1 / m_motorMass) : 0; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.y = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.y = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.y = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y)); _local21 = ((m_impulse.x * m_s1) + ((m_motorImpulse + m_impulse.y) * m_a1)); _local22 = ((m_impulse.x * m_s2) + ((m_motorImpulse + m_impulse.y) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetMaxMotorForce():Number{ return (m_maxMotorForce); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 69
//b2LineJointDef (Box2D.Dynamics.Joints.b2LineJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2LineJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var upperTranslation:Number; public var enableMotor:Boolean; public var localAxisA:b2Vec2; public var enableLimit:Boolean; public var motorSpeed:Number; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2LineJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_lineJoint; localAxisA.Set(1, 0); enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); } } }//package Box2D.Dynamics.Joints
Section 70
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K2:b2Mat22; private var K1:b2Mat22; private var m_beta:Number; private var K:b2Mat22; private var m_target:b2Vec2; private var m_gamma:Number; private var m_mass:b2Mat22; private var m_impulse:b2Vec2; private var m_localAnchor:b2Vec2; private var m_C:b2Vec2; private var m_maxForce:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local4:b2Mat22; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_bodyB.m_xf.position.x); var _local3:Number = (m_target.y - m_bodyB.m_xf.position.y); _local4 = m_bodyB.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_beta = 0; m_gamma = 0; } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function SetTarget(_arg1:b2Vec2):void{ if (m_bodyB.IsAwake() == false){ m_bodyB.SetAwake(true); }; m_target = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local7:b2Mat22; var _local11:Number; var _local12:Number; var _local2:b2Body = m_bodyB; var _local3:Number = _local2.GetMass(); var _local4:Number = ((2 * Math.PI) * m_frequencyHz); var _local5:Number = (((2 * _local3) * m_dampingRatio) * _local4); var _local6:Number = ((_local3 * _local4) * _local4); m_gamma = (_arg1.dt * (_local5 + (_arg1.dt * _local6))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_beta = ((_arg1.dt * _local6) * m_gamma); _local7 = _local2.m_xf.R; var _local8:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local10:Number = ((_local7.col1.x * _local8) + (_local7.col2.x * _local9)); _local9 = ((_local7.col1.y * _local8) + (_local7.col2.y * _local9)); _local8 = _local10; _local11 = _local2.m_invMass; _local12 = _local2.m_invI; K1.col1.x = _local11; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local11; K2.col1.x = ((_local12 * _local9) * _local9); K2.col2.x = ((-(_local12) * _local8) * _local9); K2.col1.y = ((-(_local12) * _local8) * _local9); K2.col2.y = ((_local12 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.GetInverse(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local8) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local9) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local11 * m_impulse.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local11 * m_impulse.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * ((_local8 * m_impulse.y) - (_local9 * m_impulse.x)))); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor)); } override public function GetAnchorA():b2Vec2{ return (m_target); } public function GetTarget():b2Vec2{ return (m_target); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_bodyB; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + (m_beta * m_C.x)) + (m_gamma * m_impulse.x)); _local5 = ((_local9 + (m_beta * m_C.y)) + (m_gamma * m_impulse.y)); var _local10:Number = -(((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = -(((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = (_arg1.dt * m_maxForce); if (m_impulse.LengthSquared() > (_local14 * _local14)){ m_impulse.Multiply((_local14 / m_impulse.Length())); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local10)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local11)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local11) - (_local7 * _local10)))); } public function GetMaxForce():Number{ return (m_maxForce); } public function GetDampingRatio():Number{ return (m_dampingRatio); } } }//package Box2D.Dynamics.Joints
Section 71
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; } } }//package Box2D.Dynamics.Joints
Section 72
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_refAngle:Number; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat33; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat33(); m_impulse = new b2Vec3(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Vec3; var _local20:b2Vec3; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local14 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local15 = (m_motorMass * (m_motorSpeed - _local14)); _local16 = m_motorImpulse; _local17 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local15), -(_local17), _local17); _local15 = (m_motorImpulse - _local16); _local8 = (_local15 * m_axis.x); _local9 = (_local15 * m_axis.y); _local10 = (_local15 * m_a1); _local11 = (_local15 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); var _local13:Number = (_local7 - _local5); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local19 = m_impulse.Copy(); _local20 = m_K.Solve33(new b2Vec3(), -(_local12), -(_local13), -(_local18)); m_impulse.Add(_local20); if (m_limitState == e_atLowerLimit){ m_impulse.z = b2Math.Max(m_impulse.z, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.z = b2Math.Min(m_impulse.z, 0); }; }; _local21 = (-(_local12) - ((m_impulse.z - _local19.z) * m_K.col3.x)); _local22 = (-(_local13) - ((m_impulse.z - _local19.z) * m_K.col3.y)); _local23 = m_K.Solve22(new b2Vec2(), _local21, _local22); m_K.Solve22(new b2Vec2(), _local21, _local22).x = (_local23.x + _local19.x); _local23.y = (_local23.y + _local19.y); m_impulse.x = _local23.x; m_impulse.y = _local23.y; _local20.x = (m_impulse.x - _local19.x); _local20.y = (m_impulse.y - _local19.y); _local20.z = (m_impulse.z - _local19.z); _local8 = ((_local20.x * m_perp.x) + (_local20.z * m_axis.x)); _local9 = ((_local20.x * m_perp.y) + (_local20.z * m_axis.y)); _local10 = (((_local20.x * m_s1) + _local20.y) + (_local20.z * m_a1)); _local11 = (((_local20.x * m_s2) + _local20.y) + (_local20.z * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { _local24 = m_K.Solve22(new b2Vec2(), -(_local12), -(_local13)); m_impulse.x = (m_impulse.x + _local24.x); m_impulse.y = (m_impulse.y + _local24.y); _local8 = (_local24.x * m_perp.x); _local9 = (_local24.x * m_perp.y); _local10 = ((_local24.x * m_s1) + _local24.y); _local11 = ((_local24.x * m_s2) + _local24.y); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:b2Vec2; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local35 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local35, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local35); _local18 = true; } else { if (_local35 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local35 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local35); _local18 = true; } else { if (_local35 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local35 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local35 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec3 = new b2Vec3(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); var _local30:Number = ((_local9 - _local7) - m_refAngle); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = b2Math.Abs(_local30); if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = ((_local14 * m_s1) + (_local15 * m_s2)); m_K.col1.z = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local14 + _local15); m_K.col2.z = ((_local14 * m_a1) + (_local15 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve33(_local28, -(_local29), -(_local30), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local36 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); _local37 = ((_local14 * m_s1) + (_local15 * m_s2)); _local38 = (_local14 + _local15); m_K.col1.Set(_local36, _local37, 0); m_K.col2.Set(_local37, _local38, 0); _local39 = m_K.Solve22(new b2Vec2(), -(_local29), -(_local30)); _local28.x = _local39.x; _local28.y = _local39.y; _local28.z = 0; }; var _local31:Number = ((_local28.x * m_perp.x) + (_local28.z * m_axis.x)); var _local32:Number = ((_local28.x * m_perp.y) + (_local28.z * m_axis.y)); var _local33:Number = (((_local28.x * m_s1) + _local28.y) + (_local28.z * m_a1)); var _local34:Number = (((_local28.x * m_s2) + _local28.y) + (_local28.z * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local31)); _local6.y = (_local6.y - (m_invMassA * _local32)); _local7 = (_local7 - (m_invIA * _local33)); _local8.x = (_local8.x + (m_invMassB * _local31)); _local8.y = (_local8.y + (m_invMassB * _local32)); _local9 = (_local9 + (m_invIB * _local34)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); if (m_motorMass > Number.MIN_VALUE){ m_motorMass = (1 / m_motorMass); }; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = ((_local16 * m_s1) + (_local17 * m_s2)); m_K.col1.z = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local16 + _local17); m_K.col2.z = ((_local16 * m_a1) + (_local17 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.z = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.z = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y)); _local21 = (((m_impulse.x * m_s1) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a1)); _local22 = (((m_impulse.x * m_s2) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 73
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PrismaticJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var motorSpeed:Number; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public var upperTranslation:Number; public var lowerTranslation:Number; public var localAxisA:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public function b2PrismaticJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxisA.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 74
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { private var m_limitState1:int; private var m_limitState2:int; private var m_ground:b2Body; private var m_maxLength2:Number; private var m_maxLength1:Number; private var m_impulse:Number; private var m_constant:Number; private var m_state:int; private var m_ratio:Number; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_limitMass1:Number; private var m_limitMass2:Number; private var m_pulleyMass:Number; private var m_limitImpulse1:Number; private var m_limitImpulse2:Number; private var m_u1:b2Vec2; private var m_u2:b2Vec2; b2internal static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_bodyA.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchorA.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchorA.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchorB.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchorB.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_ratio = _arg1.ratio; m_constant = (_arg1.lengthA + (m_ratio * _arg1.lengthB)); m_maxLength1 = b2Math.Min(_arg1.maxLengthA, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.Min(_arg1.maxLengthB, ((m_constant - b2_minPulleyLength) / m_ratio)); m_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; } public function GetGroundAnchorB():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } public function GetGroundAnchorA():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u2.x), ((_arg1 * m_impulse) * m_u2.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local5:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local6:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local7:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local8:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local24:Number = 0; if (m_state == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u1.Set((_local13 - _local5), (_local14 - _local6)); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local17 = m_u1.Length(); _local18 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local17)); } else { m_u1.SetZero(); }; if (_local18 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local18)); } else { m_u2.SetZero(); }; _local19 = ((m_constant - _local17) - (m_ratio * _local18)); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_pulleyMass) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local15 = ((-(m_ratio) * _local20) * m_u2.x); _local16 = ((-(m_ratio) * _local20) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); m_u1.Set((_local13 - _local5), (_local14 - _local6)); _local17 = m_u1.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local17)); m_u1.y = (m_u1.y * (1 / _local17)); } else { m_u1.SetZero(); }; _local19 = (m_maxLength1 - _local17); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass1) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local2.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local18 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local18)); m_u2.y = (m_u2.y * (1 / _local18)); } else { m_u2.SetZero(); }; _local19 = (m_maxLength2 - _local18); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass2) * _local19); _local15 = (-(_local20) * m_u2.x); _local16 = (-(_local20) * m_u2.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local3.SynchronizeTransform(); }; return ((_local24 < b2Settings.b2_linearSlop)); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local6:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_bodyA; _local3 = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_impulse = 0; } else { m_state = e_atUpperLimit; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitImpulse1 = 0; } else { m_limitState1 = e_atUpperLimit; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitImpulse2 = 0; } else { m_limitState2 = e_atUpperLimit; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); m_limitImpulse1 = (m_limitImpulse1 * _arg1.dtRatio); m_limitImpulse2 = (m_limitImpulse2 * _arg1.dtRatio); _local23 = ((-(m_impulse) - m_limitImpulse1) * m_u1.x); _local24 = ((-(m_impulse) - m_limitImpulse1) * m_u1.y); _local25 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.x); _local26 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2 = m_bodyB.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = (m_pulleyMass * -(_local18)); _local20 = m_impulse; m_impulse = b2Math.Max(0, (m_impulse + _local19)); _local19 = (m_impulse - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local16 = ((-(m_ratio) * _local19) * m_u2.x); _local17 = ((-(m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = (-(m_limitMass1) * _local18); _local20 = m_limitImpulse1; m_limitImpulse1 = b2Math.Max(0, (m_limitImpulse1 + _local19)); _local19 = (m_limitImpulse1 - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = (-(m_limitMass2) * _local18); _local20 = m_limitImpulse2; m_limitImpulse2 = b2Math.Max(0, (m_limitImpulse2 + _local19)); _local19 = (m_limitImpulse2 - _local20); _local16 = (-(_local19) * m_u2.x); _local17 = (-(_local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_bodyA.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } } }//package Box2D.Dynamics.Joints
Section 75
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PulleyJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var groundAnchorA:b2Vec2; public var groundAnchorB:b2Vec2; public var localAnchorB:b2Vec2; public var ratio:Number; public var maxLengthA:Number; public var lengthA:Number; public var lengthB:Number; public var maxLengthB:Number; public function b2PulleyJointDef(){ groundAnchorA = new b2Vec2(); groundAnchorB = new b2Vec2(); localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchorA.Set(-1, 1); groundAnchorB.Set(1, 1); localAnchorA.Set(-1, 0); localAnchorB.Set(1, 0); lengthA = 0; maxLengthA = 0; lengthB = 0; maxLengthB = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ bodyA = _arg1; bodyB = _arg2; groundAnchorA.SetV(_arg3); groundAnchorB.SetV(_arg4); localAnchorA = bodyA.GetLocalPoint(_arg5); localAnchorB = bodyB.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); lengthA = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); lengthB = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (lengthA + (ratio * lengthB)); maxLengthA = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLengthB = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 76
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { private var m_mass:b2Mat33; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_limitState:int; private var m_motorMass:Number; private var reduced:b2Vec2; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; private var m_motorImpulse:Number; private var impulse2:b2Vec2; private var impulse3:b2Vec3; private var m_enableMotor:Boolean; private var m_referenceAngle:Number; private var m_upperAngle:Number; private var m_motorSpeed:Number; private var m_lowerAngle:Number; private var m_maxMotorTorque:Number; private static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); impulse3 = new b2Vec3(); impulse2 = new b2Vec2(); reduced = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; m_limitState = e_inactiveLimit; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local11:b2Vec2 = _local2.m_linearVelocity; var _local12:Number = _local2.m_angularVelocity; var _local13:b2Vec2 = _local3.m_linearVelocity; var _local14:Number = _local3.m_angularVelocity; var _local15:Number = _local2.m_invMass; var _local16:Number = _local3.m_invMass; var _local17:Number = _local2.m_invI; var _local18:Number = _local3.m_invI; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local19 = ((_local14 - _local12) - m_motorSpeed); _local20 = (m_motorMass * -(_local19)); _local21 = m_motorImpulse; _local22 = (_arg1.dt * m_maxMotorTorque); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local20), -(_local22), _local22); _local20 = (m_motorImpulse - _local21); _local12 = (_local12 - (_local17 * _local20)); _local14 = (_local14 + (_local18 * _local20)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local23 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local24 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); _local25 = (_local14 - _local12); m_mass.Solve33(impulse3, -(_local23), -(_local24), -(_local25)); if (m_limitState == e_equalLimits){ m_impulse.Add(impulse3); } else { if (m_limitState == e_atLowerLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 < 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; } else { if (m_limitState == e_atUpperLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 > 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; }; }; }; _local11.x = (_local11.x - (_local15 * impulse3.x)); _local11.y = (_local11.y - (_local15 * impulse3.y)); _local12 = (_local12 - (_local17 * (((_local7 * impulse3.y) - (_local8 * impulse3.x)) + impulse3.z))); _local13.x = (_local13.x + (_local16 * impulse3.x)); _local13.y = (_local13.y + (_local16 * impulse3.y)); _local14 = (_local14 + (_local18 * (((_local9 * impulse3.y) - (_local10 * impulse3.x)) + impulse3.z))); } else { _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local26 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local27 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); m_mass.Solve22(impulse2, -(_local26), -(_local27)); m_impulse.x = (m_impulse.x + impulse2.x); m_impulse.y = (m_impulse.y + impulse2.y); _local11.x = (_local11.x - (_local15 * impulse2.x)); _local11.y = (_local11.y - (_local15 * impulse2.y)); _local12 = (_local12 - (_local17 * ((_local7 * impulse2.y) - (_local8 * impulse2.x)))); _local13.x = (_local13.x + (_local16 * impulse2.x)); _local13.y = (_local13.y + (_local16 * impulse2.y)); _local14 = (_local14 + (_local18 * ((_local9 * impulse2.y) - (_local10 * impulse2.x)))); }; _local2.m_linearVelocity.SetV(_local11); _local2.m_angularVelocity = _local12; _local3.m_linearVelocity.SetV(_local13); _local3.m_angularVelocity = _local14; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local5:b2Body = m_bodyA; var _local6:b2Body = m_bodyB; var _local7:Number = 0; var _local8:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local6.m_sweep.a - _local5.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local3 = b2Math.Clamp((_local25 - m_lowerAngle), -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); _local7 = b2Math.Abs(_local3); } else { if (m_limitState == e_atLowerLimit){ _local3 = (_local25 - m_lowerAngle); _local7 = -(_local3); _local3 = b2Math.Clamp((_local3 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local3); } else { if (m_limitState == e_atUpperLimit){ _local3 = (_local25 - m_upperAngle); _local7 = _local3; _local3 = b2Math.Clamp((_local3 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); }; }; }; _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * _local26)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * _local26)); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); }; _local4 = _local5.m_xf.R; var _local12:Number = (m_localAnchor1.x - _local5.m_sweep.localCenter.x); var _local13:Number = (m_localAnchor1.y - _local5.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local12) + (_local4.col2.x * _local13)); _local13 = ((_local4.col1.y * _local12) + (_local4.col2.y * _local13)); _local12 = _local9; _local4 = _local6.m_xf.R; var _local14:Number = (m_localAnchor2.x - _local6.m_sweep.localCenter.x); var _local15:Number = (m_localAnchor2.y - _local6.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local14) + (_local4.col2.x * _local15)); _local15 = ((_local4.col1.y * _local14) + (_local4.col2.y * _local15)); _local14 = _local9; var _local16:Number = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); var _local17:Number = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); var _local18:Number = ((_local16 * _local16) + (_local17 * _local17)); var _local19:Number = Math.sqrt(_local18); _local8 = _local19; var _local20:Number = _local5.m_invMass; var _local21:Number = _local6.m_invMass; var _local22:Number = _local5.m_invI; var _local23:Number = _local6.m_invI; var _local24:Number = (10 * b2Settings.b2_linearSlop); if (_local18 > (_local24 * _local24)){ _local27 = (_local16 / _local19); _local28 = (_local17 / _local19); _local29 = (_local20 + _local21); _local30 = (1 / _local29); _local10 = (_local30 * -(_local16)); _local11 = (_local30 * -(_local17)); _local31 = 0.5; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - ((_local31 * _local20) * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - ((_local31 * _local20) * _local11)); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + ((_local31 * _local21) * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + ((_local31 * _local21) * _local11)); _local16 = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); _local17 = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); }; K1.col1.x = (_local20 + _local21); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local20 + _local21); K2.col1.x = ((_local22 * _local13) * _local13); K2.col2.x = ((-(_local22) * _local12) * _local13); K2.col1.y = ((-(_local22) * _local12) * _local13); K2.col2.y = ((_local22 * _local12) * _local12); K3.col1.x = ((_local23 * _local15) * _local15); K3.col2.x = ((-(_local23) * _local14) * _local15); K3.col1.y = ((-(_local23) * _local14) * _local15); K3.col2.y = ((_local23 * _local14) * _local14); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local10 = tImpulse.x; _local11 = tImpulse.y; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local5.m_invMass * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local5.m_invMass * _local11)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * ((_local12 * _local11) - (_local13 * _local10)))); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local6.m_invMass * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local6.m_invMass * _local11)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * ((_local14 * _local11) - (_local15 * _local10)))); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); return ((((_local8 <= b2Settings.b2_linearSlop)) && ((_local7 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_bodyB.m_sweep.a - m_bodyA.m_sweep.a) - m_referenceAngle)); } public function GetJointSpeed():Number{ return ((m_bodyB.m_angularVelocity - m_bodyA.m_angularVelocity)); } public function GetMotorTorque():Number{ return (m_maxMotorTorque); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_bodyA; _local3 = m_bodyB; if (((m_enableMotor) || (m_enableLimit))){ }; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorImpulse = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_impulse.z = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_impulse.z = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local15 = m_impulse.x; _local16 = m_impulse.y; _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local10 * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local10 * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local12 * ((((_local6 * _local16) - (_local7 * _local15)) + m_motorImpulse) + m_impulse.z))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * ((((_local8 * _local16) - (_local9 * _local15)) + m_motorImpulse) + m_impulse.z))); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 77
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2RevoluteJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public var motorSpeed:Number; public var upperAngle:Number; public var lowerAngle:Number; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchorA.Set(0, 0); localAnchorB.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 78
//b2WeldJoint (Box2D.Dynamics.Joints.b2WeldJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2WeldJoint extends b2Joint { private var m_impulse:b2Vec3; private var m_referenceAngle:Number; private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; private var m_mass:b2Mat33; public function b2WeldJoint(_arg1:b2WeldJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_mass = new b2Mat33(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local18:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local19:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local20:Number = (_local9 - _local7); var _local21:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local21, -(_local18), -(_local19), -(_local20)); m_impulse.Add(_local21); _local6.x = (_local6.x - (_local10 * _local21.x)); _local6.y = (_local6.y - (_local10 * _local21.y)); _local7 = (_local7 - (_local12 * (((_local14 * _local21.y) - (_local15 * _local21.x)) + _local21.z))); _local8.x = (_local8.x + (_local11 * _local21.x)); _local8.y = (_local8.y + (_local11 * _local21.y)); _local9 = (_local9 + (_local13 * (((_local16 * _local21.y) - (_local17 * _local21.x)) + _local21.z))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; var _local8:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; var _local14:Number = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); var _local15:Number = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local16:Number = ((_local5.m_sweep.a - _local4.m_sweep.a) - m_referenceAngle); var _local17:Number = (10 * b2Settings.b2_linearSlop); var _local18:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); var _local19:Number = b2Math.Abs(_local16); if (_local18 > _local17){ _local12 = (_local12 * 1); _local13 = (_local13 * 1); }; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); var _local20:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local20, -(_local14), -(_local15), -(_local16)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x - (_local10 * _local20.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y - (_local10 * _local20.y)); _local4.m_sweep.a = (_local4.m_sweep.a - (_local12 * (((_local6 * _local20.y) - (_local7 * _local20.x)) + _local20.z))); _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_local11 * _local20.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_local11 * _local20.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_local13 * (((_local8 * _local20.y) - (_local9 * _local20.x)) + _local20.z))); _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local18 <= b2Settings.b2_linearSlop)) && ((_local19 <= b2Settings.b2_angularSlop)))); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; _local10 = _local4.m_invMass; _local11 = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_impulse.z = (m_impulse.z * _arg1.dtRatio); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * m_impulse.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * m_impulse.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * m_impulse.y) - (_local7 * m_impulse.x)) + m_impulse.z))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * m_impulse.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * m_impulse.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * m_impulse.y) - (_local9 * m_impulse.x)) + m_impulse.z))); } else { m_impulse.SetZero(); }; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } } }//package Box2D.Dynamics.Joints
Section 79
//b2WeldJointDef (Box2D.Dynamics.Joints.b2WeldJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2WeldJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var referenceAngle:Number; public var localAnchorB:b2Vec2; public function b2WeldJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_weldJoint; referenceAngle = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 80
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Body { b2internal var m_xf:b2Transform; b2internal var m_controllerCount:int; b2internal var m_contactList:b2ContactEdge; b2internal var m_invI:Number; b2internal var m_fixtureCount:int; b2internal var m_torque:Number; b2internal var m_angularVelocity:Number; b2internal var m_flags:uint; b2internal var m_linearVelocity:b2Vec2; b2internal var m_world:b2World; b2internal var m_inertiaScale:Number; b2internal var m_controllerList:b2ControllerEdge; b2internal var m_fixtureList:b2Fixture; b2internal var m_mass:Number; b2internal var m_next:b2Body; b2internal var m_force:b2Vec2; b2internal var m_sweep:b2Sweep; private var m_userData; b2internal var m_invMass:Number; b2internal var m_prev:b2Body; b2internal var m_linearDamping:Number; b2internal var m_type:int; b2internal var m_angularDamping:Number; b2internal var m_islandIndex:int; b2internal var m_jointList:b2JointEdge; b2internal var m_sleepTime:Number; b2internal var m_I:Number; b2internal static var e_fixedRotationFlag:uint = 16; public static var b2_kinematicBody:uint = 1; b2internal static var e_bulletFlag:uint = 8; b2internal static var e_activeFlag:uint = 32; b2internal static var e_allowSleepFlag:uint = 4; b2internal static var e_awakeFlag:uint = 2; public static var b2_dynamicBody:uint = 2; b2internal static var e_islandFlag:uint = 1; private static var s_xf1:b2Transform = new b2Transform(); public static var b2_staticBody:uint = 0; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2Transform(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.bullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.awake){ m_flags = (m_flags | e_awakeFlag); }; if (_arg1.active){ m_flags = (m_flags | e_activeFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetZero(); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_controllerList = null; m_contactList = null; m_controllerCount = 0; m_prev = null; m_next = null; m_linearVelocity.SetV(_arg1.linearVelocity); m_angularVelocity = _arg1.angularVelocity; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_sleepTime = 0; m_type = _arg1.type; if (m_type == b2_dynamicBody){ m_mass = 1; m_invMass = 1; } else { m_mass = 0; m_invMass = 0; }; m_I = 0; m_invI = 0; m_inertiaScale = _arg1.inertiaScale; m_userData = _arg1.userData; m_fixtureList = null; m_fixtureCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ if (m_type == b2_staticBody){ return; }; m_linearVelocity.SetV(_arg1); } public function ResetMassData():void{ var _local4:b2MassData; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_sweep.localCenter.SetZero(); if ((((m_type == b2_staticBody)) || ((m_type == b2_kinematicBody)))){ return; }; var _local1:b2Vec2 = b2Vec2.Make(0, 0); var _local2:b2Fixture = m_fixtureList; while (_local2) { if (_local2.m_density == 0){ } else { _local4 = _local2.GetMassData(); m_mass = (m_mass + _local4.mass); _local1.x = (_local1.x + (_local4.center.x * _local4.mass)); _local1.y = (_local1.y + (_local4.center.y * _local4.mass)); m_I = (m_I + _local4.I); }; _local2 = _local2.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local1.x = (_local1.x * m_invMass); _local1.y = (_local1.y * m_invMass); } else { m_mass = 1; m_invMass = 1; }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local1.x * _local1.x) + (_local1.y * _local1.y)))); m_I = (m_I * m_inertiaScale); b2Settings.b2Assert((m_I > 0)); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; var _local3:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_local1); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local3.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local3.x))); } public function GetMassData(_arg1:b2MassData):void{ _arg1.mass = m_mass; _arg1.I = m_I; _arg1.center.SetV(m_sweep.localCenter); } public function Merge(_arg1:b2Body):void{ var _local2:b2Fixture; var _local3:b2Body; var _local4:b2Body; var _local11:b2Fixture; _local2 = _arg1.m_fixtureList; while (_local2) { _local11 = _local2.m_next; _arg1.m_fixtureCount--; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = _local4; _local2 = _local11; }; _local3.m_fixtureCount = 0; _local3 = this; _local4 = _arg1; var _local5:b2Vec2 = _local3.GetWorldCenter(); var _local6:b2Vec2 = _local4.GetWorldCenter(); var _local7:b2Vec2 = _local3.GetLinearVelocity().Copy(); var _local8:b2Vec2 = _local4.GetLinearVelocity().Copy(); var _local9:Number = _local3.GetAngularVelocity(); var _local10:Number = _local4.GetAngularVelocity(); _local3.ResetMassData(); SynchronizeFixtures(); } b2internal function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function SetMassData(_arg1:b2MassData):void{ b2Settings.b2Assert((m_world.IsLocked() == false)); if (m_world.IsLocked() == true){ return; }; if (m_type != b2_dynamicBody){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass <= 0){ m_mass = 1; }; m_invMass = (1 / m_mass); if ((((_arg1.I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (_arg1.I - (m_mass * ((_arg1.center.x * _arg1.center.x) + (_arg1.center.y * _arg1.center.y)))); m_invI = (1 / m_I); }; var _local2:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_arg1.center); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local2.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local2.x))); } public function GetDefinition():b2BodyDef{ var _local1:b2BodyDef = new b2BodyDef(); _local1.type = GetType(); _local1.allowSleep = ((m_flags & e_allowSleepFlag) == e_allowSleepFlag); _local1.angle = GetAngle(); _local1.angularDamping = m_angularDamping; _local1.angularVelocity = m_angularVelocity; _local1.fixedRotation = ((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag); _local1.bullet = ((m_flags & e_bulletFlag) == e_bulletFlag); _local1.awake = ((m_flags & e_awakeFlag) == e_awakeFlag); _local1.linearDamping = m_linearDamping; _local1.linearVelocity.SetV(GetLinearVelocity()); _local1.position = GetPosition(); _local1.userData = GetUserData(); return (_local1); } public function GetControllerList():b2ControllerEdge{ return (m_controllerList); } public function GetFixtureList():b2Fixture{ return (m_fixtureList); } public function SetAngularVelocity(_arg1:Number):void{ if (m_type == b2_staticBody){ return; }; m_angularVelocity = _arg1; } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function CreateFixture(_arg1:b2FixtureDef):b2Fixture{ var _local3:IBroadPhase; if (m_world.IsLocked() == true){ return (null); }; var _local2:b2Fixture = new b2Fixture(); _local2.Create(this, m_xf, _arg1); if ((m_flags & e_activeFlag)){ _local3 = m_world.m_contactManager.m_broadPhase; _local2.CreateProxy(_local3, m_xf); }; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = this; if (_local2.m_density > 0){ ResetMassData(); }; m_world.m_flags = (m_world.m_flags | b2World.e_newFixture); return (_local2); } public function SetTransform(_arg1:b2Transform):void{ SetPositionAndAngle(_arg1.position, _arg1.GetAngle()); } public function IsAwake():Boolean{ return (((m_flags & e_awakeFlag) == e_awakeFlag)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulMV(m_xf.R, _arg1)); } b2internal function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetAwake(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_awakeFlag); m_sleepTime = 0; } else { m_flags = (m_flags & ~(e_awakeFlag)); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; }; } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulTMV(m_xf.R, _arg1)); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function CreateFixture2(_arg1:b2Shape, _arg2:Number=0):b2Fixture{ var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = _arg1; _local3.density = _arg2; return (CreateFixture(_local3)); } public function GetLinearDamping():Number{ return (m_linearDamping); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetPosition(_arg1:b2Vec2):void{ SetPositionAndAngle(_arg1, GetAngle()); } private function connectEdges(_arg1:b2EdgeShape, _arg2:b2EdgeShape, _arg3:Number):Number{ var _local4:Number = Math.atan2(_arg2.GetDirectionVector().y, _arg2.GetDirectionVector().x); var _local5:Number = Math.tan(((_local4 - _arg3) * 0.5)); var _local6:b2Vec2 = b2Math.MulFV(_local5, _arg2.GetDirectionVector()); _local6 = b2Math.SubtractVV(_local6, _arg2.GetNormalVector()); _local6 = b2Math.MulFV(b2Settings.b2_toiSlop, _local6); _local6 = b2Math.AddVV(_local6, _arg2.GetVertex1()); var _local7:b2Vec2 = b2Math.AddVV(_arg1.GetDirectionVector(), _arg2.GetDirectionVector()); _local7.Normalize(); var _local8 = (b2Math.Dot(_arg1.GetDirectionVector(), _arg2.GetNormalVector()) > 0); _arg1.SetNextEdge(_arg2, _local6, _local7, _local8); _arg2.SetPrevEdge(_arg1, _local6, _local7, _local8); return (_local4); } public function GetType():uint{ return (m_type); } public function GetAngularDamping():Number{ return (m_angularDamping); } public function SetType(_arg1:uint):void{ if (m_type == _arg1){ return; }; m_type = _arg1; ResetMassData(); if (m_type == b2_staticBody){ m_linearVelocity.SetZero(); m_angularVelocity = 0; }; SetAwake(true); m_force.SetZero(); m_torque = 0; var _local2:b2ContactEdge = m_contactList; while (_local2) { _local2.contact.FlagForFiltering(); _local2 = _local2.next; }; } public function SetAngularDamping(_arg1:Number):void{ m_angularDamping = _arg1; } public function GetInertia():Number{ return (m_I); } public function SetAngle(_arg1:Number):void{ SetPositionAndAngle(GetPosition(), _arg1); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulXT(m_xf, _arg1)); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetContactList():b2ContactEdge{ return (m_contactList); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function DestroyFixture(_arg1:b2Fixture):void{ var _local6:b2Contact; var _local7:b2Fixture; var _local8:b2Fixture; var _local9:IBroadPhase; if (m_world.IsLocked() == true){ return; }; var _local2:b2Fixture = m_fixtureList; var _local3:b2Fixture; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_fixtureList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; var _local5:b2ContactEdge = m_contactList; while (_local5) { _local6 = _local5.contact; _local5 = _local5.next; _local7 = _local6.GetFixtureA(); _local8 = _local6.GetFixtureB(); if ((((_arg1 == _local7)) || ((_arg1 == _local8)))){ m_world.m_contactManager.Destroy(_local6); }; }; if ((m_flags & e_activeFlag)){ _local9 = m_world.m_contactManager.m_broadPhase; _arg1.DestroyProxy(_local9); }; _arg1.Destroy(); _arg1.m_body = null; _arg1.m_next = null; m_fixtureCount--; ResetMassData(); } public function IsSleepingAllowed():Boolean{ return (((m_flags & e_allowSleepFlag) == e_allowSleepFlag)); } public function GetTransform():b2Transform{ return (m_xf); } b2internal function SynchronizeFixtures():void{ var _local4:b2Fixture; var _local1:b2Transform = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local4 = m_fixtureList; while (_local4) { _local4.Synchronize(_local5, _local1, m_xf); _local4 = _local4.m_next; }; } public function SetSleepingAllowed(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); SetAwake(true); }; } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function SetPositionAndAngle(_arg1:b2Vec2, _arg2:Number):void{ var _local3:b2Fixture; if (m_world.IsLocked() == true){ return; }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.Synchronize(_local6, m_xf, m_xf); _local3 = _local3.m_next; }; m_world.m_contactManager.FindNewContacts(); } public function IsFixedRotation():Boolean{ return (((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag)); } public function SetActive(_arg1:Boolean):void{ var _local2:IBroadPhase; var _local3:b2Fixture; var _local4:b2ContactEdge; var _local5:b2ContactEdge; if (_arg1 == IsActive()){ return; }; if (_arg1){ m_flags = (m_flags | e_activeFlag); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.CreateProxy(_local2, m_xf); _local3 = _local3.m_next; }; } else { m_flags = (m_flags & ~(e_activeFlag)); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.DestroyProxy(_local2); _local3 = _local3.m_next; }; _local4 = m_contactList; while (_local4) { _local5 = _local4; _local4 = _local4.next; m_world.m_contactManager.Destroy(_local5.contact); }; m_contactList = null; }; } public function IsActive():Boolean{ return (((m_flags & e_activeFlag) == e_activeFlag)); } b2internal function ShouldCollide(_arg1:b2Body):Boolean{ if (((!((m_type == b2_dynamicBody))) && (!((_arg1.m_type == b2_dynamicBody))))){ return (false); }; var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ if (_local2.joint.m_collideConnected == false){ return (false); }; }; _local2 = _local2.next; }; return (true); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function SetFixedRotation(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_fixedRotationFlag); } else { m_flags = (m_flags & ~(e_fixedRotationFlag)); }; ResetMassData(); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function Split(_arg1:Function):b2Body{ var _local7:b2Fixture; var _local13:b2Fixture; var _local2:b2Vec2 = GetLinearVelocity().Copy(); var _local3:Number = GetAngularVelocity(); var _local4:b2Vec2 = GetWorldCenter(); var _local5:b2Body = this; var _local6:b2Body = m_world.CreateBody(GetDefinition()); var _local8:b2Fixture = _local5.m_fixtureList; while (_local8) { if (_arg1(_local8)){ _local13 = _local8.m_next; if (_local7){ _local7.m_next = _local13; } else { _local5.m_fixtureList = _local13; }; _local5.m_fixtureCount--; _local8.m_next = _local6.m_fixtureList; _local6.m_fixtureList = _local8; _local6.m_fixtureCount++; _local8.m_body = _local6; _local8 = _local13; } else { _local7 = _local8; _local8 = _local8.m_next; }; }; _local5.ResetMassData(); _local6.ResetMassData(); var _local9:b2Vec2 = _local5.GetWorldCenter(); var _local10:b2Vec2 = _local6.GetWorldCenter(); var _local11:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local9, _local4))); var _local12:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local10, _local4))); _local5.SetLinearVelocity(_local11); _local6.SetLinearVelocity(_local12); _local5.SetAngularVelocity(_local3); _local6.SetAngularVelocity(_local3); _local5.SynchronizeFixtures(); _local6.SynchronizeFixtures(); return (_local6); } public function SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } public function GetWorld():b2World{ return (m_world); } public function ApplyTorque(_arg1:Number):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_torque = (m_torque + _arg1); } } }//package Box2D.Dynamics
Section 81
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var bullet:Boolean; public var awake:Boolean; public var active:Boolean; public var allowSleep:Boolean; public var angle:Number; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var angularVelocity:Number; public var linearVelocity:b2Vec2; public var position:b2Vec2; public var inertiaScale:Number; public var type:uint; public function b2BodyDef(){ position = new b2Vec2(); linearVelocity = new b2Vec2(); super(); userData = null; position.Set(0, 0); angle = 0; linearVelocity.Set(0, 0); angularVelocity = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; awake = true; fixedRotation = false; bullet = false; type = b2Body.b2_staticBody; active = true; inertiaScale = 1; } } }//package Box2D.Dynamics
Section 82
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactFilter { b2internal static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Fixture, _arg2:b2Fixture):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } public function RayCollide(_arg1, _arg2:b2Fixture):Boolean{ if (!_arg1){ return (true); }; return (ShouldCollide((_arg1 as b2Fixture), _arg2)); } } }//package Box2D.Dynamics
Section 83
//b2ContactImpulse (Box2D.Dynamics.b2ContactImpulse) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactImpulse { public var tangentImpulses:Array; public var normalImpulses:Array; public function b2ContactImpulse(){ normalImpulses = new Array(b2Settings.b2_maxManifoldPoints); tangentImpulses = new Array(b2Settings.b2_maxManifoldPoints); super(); } } }//package Box2D.Dynamics
Section 84
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactListener { b2internal static var b2_defaultListener:b2ContactListener = new (b2ContactListener); ; public function PreSolve(_arg1:b2Contact, _arg2:b2Manifold):void{ } public function EndContact(_arg1:b2Contact):void{ } public function PostSolve(_arg1:b2Contact, _arg2:b2ContactImpulse):void{ } public function BeginContact(_arg1:b2Contact):void{ } } }//package Box2D.Dynamics
Section 85
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactManager { b2internal var m_world:b2World; b2internal var m_contactCount:int; b2internal var m_contactFactory:b2ContactFactory; b2internal var m_contactFilter:b2ContactFilter; b2internal var m_broadPhase:IBroadPhase; b2internal var m_contactList:b2Contact; b2internal var m_contactListener:b2ContactListener; b2internal var m_allocator; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_world = null; m_contactCount = 0; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = b2ContactListener.b2_defaultListener; m_contactFactory = new b2ContactFactory(m_allocator); m_broadPhase = new b2DynamicTreeBroadPhase(); } public function FindNewContacts():void{ m_broadPhase.UpdatePairs(AddPair); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Fixture = _arg1.GetFixtureA(); var _local3:b2Fixture = _arg1.GetFixtureB(); var _local4:b2Body = _local2.GetBody(); var _local5:b2Body = _local3.GetBody(); if (_arg1.m_manifold.m_pointCount > 0){ m_contactListener.EndContact(_arg1); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; if (_arg1.m_nodeA.prev){ _arg1.m_nodeA.prev.next = _arg1.m_nodeA.next; }; if (_arg1.m_nodeA.next){ _arg1.m_nodeA.next.prev = _arg1.m_nodeA.prev; }; if (_arg1.m_nodeA == _local4.m_contactList){ _local4.m_contactList = _arg1.m_nodeA.next; }; if (_arg1.m_nodeB.prev){ _arg1.m_nodeB.prev.next = _arg1.m_nodeB.next; }; if (_arg1.m_nodeB.next){ _arg1.m_nodeB.next.prev = _arg1.m_nodeB.prev; }; if (_arg1.m_nodeB == _local5.m_contactList){ _local5.m_contactList = _arg1.m_nodeB.next; }; m_contactFactory.Destroy(_arg1); m_contactCount--; } public function AddPair(_arg1, _arg2):void{ var _local9:b2Fixture; var _local10:b2Fixture; var _local3:b2Fixture = (_arg1 as b2Fixture); var _local4:b2Fixture = (_arg2 as b2Fixture); var _local5:b2Body = _local3.GetBody(); var _local6:b2Body = _local4.GetBody(); if (_local5 == _local6){ return; }; var _local7:b2ContactEdge = _local6.GetContactList(); while (_local7) { if (_local7.other == _local5){ _local9 = _local7.contact.GetFixtureA(); _local10 = _local7.contact.GetFixtureB(); if ((((_local9 == _local3)) && ((_local10 == _local4)))){ return; }; if ((((_local9 == _local4)) && ((_local10 == _local3)))){ return; }; }; _local7 = _local7.next; }; if (_local6.ShouldCollide(_local5) == false){ return; }; if (m_contactFilter.ShouldCollide(_local3, _local4) == false){ return; }; var _local8:b2Contact = m_contactFactory.Create(_local3, _local4); _local3 = _local8.GetFixtureA(); _local4 = _local8.GetFixtureB(); _local5 = _local3.m_body; _local6 = _local4.m_body; _local8.m_prev = null; _local8.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local8; }; m_world.m_contactList = _local8; _local8.m_nodeA.contact = _local8; _local8.m_nodeA.other = _local6; _local8.m_nodeA.prev = null; _local8.m_nodeA.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local8.m_nodeA; }; _local5.m_contactList = _local8.m_nodeA; _local8.m_nodeB.contact = _local8; _local8.m_nodeB.other = _local5; _local8.m_nodeB.prev = null; _local8.m_nodeB.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local8.m_nodeB; }; _local6.m_contactList = _local8.m_nodeB; m_world.m_contactCount++; } public function Collide():void{ var _local2:b2Fixture; var _local3:b2Fixture; var _local4:b2Body; var _local5:b2Body; var _local6:*; var _local7:*; var _local8:Boolean; var _local9:b2Contact; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.GetFixtureA(); _local3 = _local1.GetFixtureB(); _local4 = _local2.GetBody(); _local5 = _local3.GetBody(); if ((((_local4.IsAwake() == false)) && ((_local5.IsAwake() == false)))){ _local1 = _local1.GetNext(); } else { if ((_local1.m_flags & b2Contact.e_filterFlag)){ if (_local5.ShouldCollide(_local4) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; if (m_contactFilter.ShouldCollide(_local2, _local3) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; _local1.m_flags = (_local1.m_flags & ~(b2Contact.e_filterFlag)); }; _local6 = _local2.m_proxy; _local7 = _local3.m_proxy; _local8 = m_broadPhase.TestOverlap(_local6, _local7); if (_local8 == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); } else { _local1.Update(m_contactListener); _local1 = _local1.GetNext(); }; }; }; } } }//package Box2D.Dynamics
Section 86
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import flash.display.*; public class b2DebugDraw { private var m_xformScale:Number;// = 1 private var m_fillAlpha:Number;// = 1 private var m_alpha:Number;// = 1 private var m_lineThickness:Number;// = 1 private var m_drawFlags:uint; b2internal var m_sprite:Sprite; private var m_drawScale:Number;// = 1 public static var e_centerOfMassBit:uint = 16; public static var e_shapeBit:uint = 1; public static var e_aabbBit:uint = 4; public static var e_controllerBit:uint = 32; public static var e_pairBit:uint = 8; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetDrawScale(_arg1:Number):void{ m_drawScale = _arg1; } public function GetFillAlpha():Number{ return (m_fillAlpha); } public function GetAlpha():Number{ return (m_alpha); } public function GetLineThickness():Number{ return (m_lineThickness); } public function GetDrawScale():Number{ return (m_drawScale); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function GetSprite():Sprite{ return (m_sprite); } public function GetXFormScale():Number{ return (m_xformScale); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function SetSprite(_arg1:Sprite):void{ m_sprite = _arg1; } public function DrawTransform(_arg1:b2Transform):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function SetXFormScale(_arg1:Number):void{ m_xformScale = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function SetFillAlpha(_arg1:Number):void{ m_fillAlpha = _arg1; } public function SetAlpha(_arg1:Number):void{ m_alpha = _arg1; } public function SetLineThickness(_arg1:Number):void{ m_lineThickness = _arg1; } } }//package Box2D.Dynamics
Section 87
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeFixture(_arg1:b2Fixture):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 88
//b2FilterData (Box2D.Dynamics.b2FilterData) package Box2D.Dynamics { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Dynamics
Section 89
//b2Fixture (Box2D.Dynamics.b2Fixture) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Fixture { b2internal var m_next:b2Fixture; b2internal var m_shape:b2Shape; b2internal var m_restitution:Number; b2internal var m_friction:Number; b2internal var m_proxy; b2internal var m_filter:b2FilterData; b2internal var m_density:Number; private var m_massData:b2MassData; b2internal var m_isSensor:Boolean; b2internal var m_userData; b2internal var m_aabb:b2AABB; b2internal var m_body:b2Body; public function b2Fixture(){ m_filter = new b2FilterData(); super(); m_aabb = new b2AABB(); m_userData = null; m_body = null; m_next = null; m_shape = null; m_density = 0; m_friction = 0; m_restitution = 0; } public function TestPoint(_arg1:b2Vec2):Boolean{ return (m_shape.TestPoint(m_body.GetTransform(), _arg1)); } public function SetDensity(_arg1:Number):void{ m_density = _arg1; } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetNext():b2Fixture{ return (m_next); } public function GetShape():b2Shape{ return (m_shape); } public function GetFriction():Number{ return (m_friction); } public function GetDensity():Number{ return (m_density); } public function GetMassData(_arg1:b2MassData=null):b2MassData{ if (_arg1 == null){ _arg1 = new b2MassData(); }; m_shape.ComputeMass(_arg1, m_density); return (_arg1); } public function GetAABB():b2AABB{ return (m_aabb); } public function GetType():int{ return (m_shape.GetType()); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } b2internal function Destroy():void{ m_shape = null; } public function GetRestitution():Number{ return (m_restitution); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } b2internal function Create(_arg1:b2Body, _arg2:b2Transform, _arg3:b2FixtureDef):void{ m_userData = _arg3.userData; m_friction = _arg3.friction; m_restitution = _arg3.restitution; m_body = _arg1; m_next = null; m_filter = _arg3.filter.Copy(); m_isSensor = _arg3.isSensor; m_shape = _arg3.shape.Copy(); m_density = _arg3.density; } public function IsSensor():Boolean{ return (m_isSensor); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ return (m_shape.RayCast(_arg1, _arg2, m_body.GetTransform())); } public function GetUserData(){ return (m_userData); } b2internal function Synchronize(_arg1:IBroadPhase, _arg2:b2Transform, _arg3:b2Transform):void{ if (!m_proxy){ return; }; var _local4:b2AABB = new b2AABB(); var _local5:b2AABB = new b2AABB(); m_shape.ComputeAABB(_local4, _arg2); m_shape.ComputeAABB(_local5, _arg3); m_aabb.Combine(_local4, _local5); var _local6:b2Vec2 = b2Math.SubtractVV(_arg3.position, _arg2.position); _arg1.MoveProxy(m_proxy, m_aabb, _local6); } b2internal function CreateProxy(_arg1:IBroadPhase, _arg2:b2Transform):void{ m_shape.ComputeAABB(m_aabb, _arg2); m_proxy = _arg1.CreateProxy(m_aabb, this); } public function SetFilterData(_arg1:b2FilterData):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; m_filter = _arg1.Copy(); if (m_body){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.FlagForFiltering(); }; _local2 = _local2.next; }; } b2internal function DestroyProxy(_arg1:IBroadPhase):void{ if (m_proxy == null){ return; }; _arg1.DestroyProxy(m_proxy); m_proxy = null; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody():b2Body{ return (m_body); } public function SetSensor(_arg1:Boolean):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; if (m_isSensor == _arg1){ return; }; m_isSensor = _arg1; if (m_body == null){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.SetSensor(((_local4.IsSensor()) || (_local5.IsSensor()))); }; _local2 = _local2.next; }; } } }//package Box2D.Dynamics
Section 90
//b2FixtureDef (Box2D.Dynamics.b2FixtureDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2FixtureDef { public var shape:b2Shape; public var isSensor:Boolean; public var density:Number; public var restitution:Number; public var userData; public var filter:b2FilterData; public var friction:Number; public function b2FixtureDef(){ filter = new b2FilterData(); super(); shape = null; userData = null; friction = 0.2; restitution = 0; density = 0; filter.categoryBits = 1; filter.maskBits = 0xFFFF; filter.groupIndex = 0; isSensor = false; } } }//package Box2D.Dynamics
Section 91
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Island { private var m_contactSolver:b2ContactSolver; private var m_listener:b2ContactListener; private var m_bodyCapacity:int; b2internal var m_bodies:Array; b2internal var m_bodyCount:int; b2internal var m_jointCapacity:int; b2internal var m_contactCount:int; b2internal var m_contacts:Array; b2internal var m_contactCapacity:int; b2internal var m_jointCount:int; private var m_allocator; b2internal var m_joints:Array; private static var s_impulse:b2ContactImpulse = new b2ContactImpulse(); public function b2Island(){ m_bodies = new Array(); m_contacts = new Array(); m_joints = new Array(); } public function AddBody(_arg1:b2Body):void{ _arg1.m_islandIndex = m_bodyCount; var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local3:b2Contact; var _local4:b2ContactConstraint; var _local5:int; if (m_listener == null){ return; }; var _local2:int; while (_local2 < m_contactCount) { _local3 = m_contacts[_local2]; _local4 = _arg1[_local2]; _local5 = 0; while (_local5 < _local4.pointCount) { s_impulse.normalImpulses[_local5] = _local4.points[_local5].normalImpulse; s_impulse.tangentImpulses[_local5] = _local4.points[_local5].tangentImpulse; _local5++; }; m_listener.PostSolve(_local3, s_impulse); _local2++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Boolean; var _local13:Boolean; var _local14:Boolean; var _local15:Number; var _local16:Number; var _local17:Number; _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() != b2Body.b2_dynamicBody){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_linearVelocity.Multiply(b2Math.Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); }; _local4++; }; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local8:b2ContactSolver = m_contactSolver; _local8.InitVelocityConstraints(_arg1); _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.InitVelocityConstraints(_arg1); _local4++; }; _local4 = 0; while (_local4 < _arg1.velocityIterations) { _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.SolveVelocityConstraints(_arg1); _local5++; }; _local8.SolveVelocityConstraints(); _local4++; }; _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.FinalizeVelocityConstraints(); _local4++; }; _local8.FinalizeVelocityConstraints(); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local9 = (_arg1.dt * _local6.m_linearVelocity.x); _local10 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local9 * _local9) + (_local10 * _local10)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local11 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local11) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local4++; }; _local4 = 0; while (_local4 < _arg1.positionIterations) { _local12 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local14 = _local7.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = ((_local13) && (_local14)); _local5++; }; if (((_local12) && (_local13))){ break; }; _local4++; }; Report(_local8.m_constraints); if (_arg3){ _local15 = Number.MAX_VALUE; _local16 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local17 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local15 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local17)))) || ((b2Math.Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local16)))){ _local6.m_sleepTime = 0; _local15 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local15 = b2Math.Min(_local15, _local6.m_sleepTime); }; }; _local4++; }; if (_local15 >= b2Settings.b2_timeToSleep){ _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; _local6.SetAwake(false); _local4++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:int; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local4:b2ContactSolver = m_contactSolver; _local2 = 0; while (_local2 < m_jointCount) { m_joints[_local2].InitVelocityConstraints(_arg1); _local2++; }; _local2 = 0; while (_local2 < _arg1.velocityIterations) { _local4.SolveVelocityConstraints(); _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].SolveVelocityConstraints(_arg1); _local3++; }; _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local6 = m_bodies[_local2]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local7 = (_arg1.dt * _local6.m_linearVelocity.x); _local8 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local7 * _local7) + (_local8 * _local8)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local9 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local9) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local2++; }; var _local5:Number = 0.75; _local2 = 0; while (_local2 < _arg1.positionIterations) { _local10 = _local4.SolvePositionConstraints(_local5); _local11 = true; _local3 = 0; while (_local3 < m_jointCount) { _local12 = m_joints[_local3].SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = ((_local11) && (_local12)); _local3++; }; if (((_local10) && (_local11))){ break; }; _local2++; }; Report(_local4.m_constraints); } public function Initialize(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener, _arg6:b2ContactSolver):void{ var _local7:int; m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_contactSolver = _arg6; _local7 = m_bodies.length; while (_local7 < _arg1) { m_bodies[_local7] = null; _local7++; }; _local7 = m_contacts.length; while (_local7 < _arg2) { m_contacts[_local7] = null; _local7++; }; _local7 = m_joints.length; while (_local7 < _arg3) { m_joints[_local7] = null; _local7++; }; } } }//package Box2D.Dynamics
Section 92
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var inv_dt:Number; public var dt:Number; public var velocityIterations:int; public var dtRatio:Number; public var positionIterations:int; public function Set(_arg1:b2TimeStep):void{ dt = _arg1.dt; inv_dt = _arg1.inv_dt; positionIterations = _arg1.positionIterations; velocityIterations = _arg1.velocityIterations; warmStarting = _arg1.warmStarting; } } }//package Box2D.Dynamics
Section 93
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2World { private var m_inv_dt0:Number; private var m_contactSolver:b2ContactSolver; private var m_controllerList:b2Controller; b2internal var m_contactList:b2Contact; private var m_controllerCount:int; private var m_allowSleep:Boolean; private var m_island:b2Island; b2internal var m_flags:int; private var m_jointCount:int; private var m_bodyCount:int; private var s_stack:Array; private var m_destructionListener:b2DestructionListener; b2internal var m_groundBody:b2Body; b2internal var m_contactCount:int; private var m_debugDraw:b2DebugDraw; b2internal var m_bodyList:b2Body; private var m_jointList:b2Joint; private var m_gravity:b2Vec2; b2internal var m_contactManager:b2ContactManager; public static const e_newFixture:int = 1; public static const e_locked:int = 2; private static var s_timestep:b2TimeStep = new b2TimeStep(); private static var s_queue:Array = new Array(); private static var s_timestep2:b2TimeStep = new b2TimeStep(); private static var s_backupA:b2Sweep = new b2Sweep(); private static var m_continuousPhysics:Boolean; private static var m_warmStarting:Boolean; private static var s_xf:b2Transform = new b2Transform(); private static var s_backupB:b2Sweep = new b2Sweep(); private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public function b2World(_arg1:b2Vec2, _arg2:Boolean){ s_stack = new Array(); m_contactManager = new b2ContactManager(); m_contactSolver = new b2ContactSolver(); m_island = new b2Island(); super(); m_destructionListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_controllerList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_controllerCount = 0; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg2; m_gravity = _arg1; m_inv_dt0 = 0; m_contactManager.m_world = this; var _local3:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local3); } b2internal function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.GetBodyA(); var _local3:b2Body = _arg1.GetBodyB(); var _local4:b2Transform = _local2.m_xf; var _local5:b2Transform = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchorA(); var _local9:b2Vec2 = _arg1.GetAnchorB(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchorA(); _local13 = _local11.GetGroundAnchorB(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function RayCastAll(_arg1:b2Vec2, _arg2:b2Vec2):Array{ var result:Array; var RayCastAllWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastAllWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result[result.length] = _arg1; return (1); }; result = new Array(); RayCast(RayCastAllWrapper, point1, point2); return (result); } public function QueryAABB(_arg1:Function, _arg2:b2AABB):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var aabb = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ return (callback(broadPhase.GetUserData(_arg1))); }; broadPhase = m_contactManager.m_broadPhase; broadPhase.Query(WorldQueryWrapper, aabb); } public function GetJointCount():int{ return (m_jointCount); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_contactManager.m_broadPhase.GetProxyCount()); } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Fixture; var _local5:b2Shape; var _local6:b2Joint; var _local7:IBroadPhase; var _local11:b2Transform; var _local16:b2Controller; var _local17:b2Contact; var _local18:b2Fixture; var _local19:b2Fixture; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2AABB; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Vec2 = new b2Vec2(); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; var _local15:b2Color = new b2Color(0, 0, 0); if ((_local1 & b2DebugDraw.e_shapeBit)){ _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetFixtureList(); while (_local4) { _local5 = _local4.GetShape(); if (_local3.IsActive() == false){ _local15.Set(0.5, 0.5, 0.3); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_staticBody){ _local15.Set(0.5, 0.9, 0.5); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_kinematicBody){ _local15.Set(0.5, 0.5, 0.9); DrawShape(_local5, _local11, _local15); } else { if (_local3.IsAwake() == false){ _local15.Set(0.6, 0.6, 0.6); DrawShape(_local5, _local11, _local15); } else { _local15.Set(0.9, 0.7, 0.7); DrawShape(_local5, _local11, _local15); }; }; }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local6 = m_jointList; while (_local6) { DrawJoint(_local6); _local6 = _local6.m_next; }; }; if ((_local1 & b2DebugDraw.e_controllerBit)){ _local16 = m_controllerList; while (_local16) { _local16.Draw(m_debugDraw); _local16 = _local16.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local15.Set(0.3, 0.9, 0.9); _local17 = m_contactManager.m_contactList; while (_local17) { _local18 = _local17.GetFixtureA(); _local19 = _local17.GetFixtureB(); _local20 = _local18.GetAABB().GetCenter(); _local21 = _local19.GetAABB().GetCenter(); m_debugDraw.DrawSegment(_local20, _local21, _local15); _local17 = _local17.GetNext(); }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local7 = m_contactManager.m_broadPhase; _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; _local3 = m_bodyList; while (_local3) { if (_local3.IsActive() == false){ } else { _local4 = _local3.GetFixtureList(); while (_local4) { _local22 = _local7.GetFatAABB(_local4.m_proxy); _local14[0].Set(_local22.lowerBound.x, _local22.lowerBound.y); _local14[1].Set(_local22.upperBound.x, _local22.lowerBound.y); _local14[2].Set(_local22.upperBound.x, _local22.upperBound.y); _local14[3].Set(_local22.lowerBound.x, _local22.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local15); _local4 = _local4.GetNext(); }; }; _local3 = _local3.GetNext(); }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawTransform(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local6:b2JointEdge; var _local7:b2ControllerEdge; var _local8:b2ContactEdge; var _local9:b2Fixture; if (IsLocked() == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local6 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local6.joint); }; DestroyJoint(_local6.joint); }; var _local3:b2ControllerEdge = _arg1.m_controllerList; while (_local3) { _local7 = _local3; _local3 = _local3.nextController; _local7.controller.RemoveBody(_arg1); }; var _local4:b2ContactEdge = _arg1.m_contactList; while (_local4) { _local8 = _local4; _local4 = _local4.next; m_contactManager.Destroy(_local8.contact); }; _arg1.m_contactList = null; var _local5:b2Fixture = _arg1.m_fixtureList; while (_local5) { _local9 = _local5; _local5 = _local5.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeFixture(_local9); }; _local9.DestroyProxy(m_contactManager.m_broadPhase); _local9.Destroy(); }; _arg1.m_fixtureList = null; _arg1.m_fixtureCount = 0; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } b2internal function DrawShape(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Color):void{ var _local4:b2CircleShape; var _local5:b2Vec2; var _local6:Number; var _local7:b2Vec2; var _local8:int; var _local9:b2PolygonShape; var _local10:int; var _local11:Array; var _local12:Array; var _local13:b2EdgeShape; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local4 = (_arg1 as b2CircleShape); _local5 = b2Math.MulX(_arg2, _local4.m_p); _local6 = _local4.m_radius; _local7 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local5, _local6, _local7, _arg3); break; case b2Shape.e_polygonShape: _local9 = (_arg1 as b2PolygonShape); _local10 = _local9.GetVertexCount(); _local11 = _local9.GetVertices(); _local12 = new Array(_local10); _local8 = 0; while (_local8 < _local10) { _local12[_local8] = b2Math.MulX(_arg2, _local11[_local8]); _local8++; }; m_debugDraw.DrawSolidPolygon(_local12, _local10, _arg3); break; case b2Shape.e_edgeShape: _local13 = (_arg1 as b2EdgeShape); m_debugDraw.DrawSegment(b2Math.MulX(_arg2, _local13.GetVertex1()), b2Math.MulX(_arg2, _local13.GetVertex2()), _arg3); break; }; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DestroyController(_arg1:b2Controller):void{ _arg1.Clear(); if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1 == m_controllerList){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } b2internal function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local10:int; var _local11:int; var _local12:b2Body; var _local13:b2ContactEdge; var _local14:b2JointEdge; var _local3:b2Controller = m_controllerList; while (_local3) { _local3.Step(_arg1); _local3 = _local3.m_next; }; var _local4:b2Island = m_island; _local4.Initialize(m_bodyCount, m_contactCount, m_jointCount, null, m_contactManager.m_contactListener, m_contactSolver); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local5:b2Contact = m_contactList; while (_local5) { _local5.m_flags = (_local5.m_flags & ~(b2Contact.e_islandFlag)); _local5 = _local5.m_next; }; var _local6:b2Joint = m_jointList; while (_local6) { _local6.m_islandFlag = false; _local6 = _local6.m_next; }; var _local7:int = m_bodyCount; var _local8:Array = s_stack; var _local9:b2Body = m_bodyList; while (_local9) { if ((_local9.m_flags & b2Body.e_islandFlag)){ } else { if ((((_local9.IsAwake() == false)) || ((_local9.IsActive() == false)))){ } else { if (_local9.GetType() == b2Body.b2_staticBody){ } else { _local4.Clear(); _local10 = 0; var _temp1 = _local10; _local10 = (_local10 + 1); var _local15 = _temp1; _local8[_local15] = _local9; _local9.m_flags = (_local9.m_flags | b2Body.e_islandFlag); while (_local10 > 0) { --_local10; _local2 = _local8[_local10]; _local4.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local13 = _local2.m_contactList; while (_local13) { if ((_local13.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local13.contact.IsSensor() == true)) || ((_local13.contact.IsEnabled() == false)))) || ((_local13.contact.IsTouching() == false)))){ } else { _local4.AddContact(_local13.contact); _local13.contact.m_flags = (_local13.contact.m_flags | b2Contact.e_islandFlag); _local12 = _local13.other; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local10; _local10 = (_local10 + 1); var _local16 = _temp2; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local13 = _local13.next; }; _local14 = _local2.m_jointList; while (_local14) { if (_local14.joint.m_islandFlag == true){ } else { _local12 = _local14.other; if (_local12.IsActive() == false){ } else { _local4.AddJoint(_local14.joint); _local14.joint.m_islandFlag = true; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local10; _local10 = (_local10 + 1); _local16 = _temp3; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local14 = _local14.next; }; }; }; _local4.Solve(_arg1, m_gravity, m_allowSleep); _local11 = 0; while (_local11 < _local4.m_bodyCount) { _local2 = _local4.m_bodies[_local11]; if (_local2.GetType() == b2Body.b2_staticBody){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local11++; }; }; }; }; _local9 = _local9.m_next; }; _local11 = 0; while (_local11 < _local8.length) { if (!_local8[_local11]){ break; }; _local8[_local11] = null; _local11++; }; _local2 = m_bodyList; while (_local2) { if ((((_local2.IsAwake() == false)) || ((_local2.IsActive() == false)))){ } else { if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local2.SynchronizeFixtures(); }; }; _local2 = _local2.m_next; }; m_contactManager.FindNewContacts(); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactManager.m_contactFilter = _arg1; } b2internal function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Fixture; var _local4:b2Fixture; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Joint; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:int; var _local17:b2JointEdge; var _local18:b2TimeStep; var _local19:int; var _local20:Number; var _local21:Number; var _local22:b2Body; var _local9:b2Island = m_island; _local9.Initialize(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, b2Settings.b2_maxTOIJointsPerIsland, null, m_contactManager.m_contactListener, m_contactSolver); var _local10:Array = s_queue; _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; _local8 = m_jointList; while (_local8) { _local8.m_islandFlag = false; _local8 = _local8.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((((((_local11.IsSensor() == true)) || ((_local11.IsEnabled() == false)))) || ((_local11.IsContinuous() == false)))){ } else { _local20 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local20 = _local11.m_toi; } else { _local3 = _local11.m_fixtureA; _local4 = _local11.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || ((_local5.IsAwake() == false)))) && (((!((_local6.GetType() == b2Body.b2_dynamicBody))) || ((_local6.IsAwake() == false)))))){ continue; }; _local21 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local21 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local21); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local21 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local21); }; }; _local20 = _local11.ComputeTOI(_local5.m_sweep, _local6.m_sweep); b2Settings.b2Assert((((0 <= _local20)) && ((_local20 <= 1)))); if ((((_local20 > 0)) && ((_local20 < 1)))){ _local20 = (((1 - _local20) * _local21) + _local20); if (_local20 > 1){ _local20 = 1; }; }; _local11.m_toi = _local20; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local20)) && ((_local20 < _local13)))){ _local12 = _local11; _local13 = _local20; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_fixtureA; _local4 = _local12.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; s_backupA.Set(_local5.m_sweep); s_backupB.Set(_local6.m_sweep); _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactManager.m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if ((((_local12.IsSensor() == true)) || ((_local12.IsEnabled() == false)))){ _local5.m_sweep.Set(s_backupA); _local6.m_sweep.Set(s_backupB); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); } else { if (_local12.IsTouching() == false){ } else { _local14 = _local5; if (_local14.GetType() != b2Body.b2_dynamicBody){ _local14 = _local6; }; _local9.Clear(); _local15 = 0; _local16 = 0; var _temp1 = _local16; _local16 = (_local16 + 1); _local10[(_local15 + _temp1)] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local16 > 0) { var _temp2 = _local15; _local15 = (_local15 + 1); _local2 = _local10[_temp2]; _local16--; _local9.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local9.m_contactCount == _local9.m_contactCapacity){ break; }; if ((_local7.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local7.contact.IsSensor() == true)) || ((_local7.contact.IsEnabled() == false)))) || ((_local7.contact.IsTouching() == false)))){ } else { _local9.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local22 = _local7.other; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; _local7 = _local7.next; }; }; }; _local17 = _local2.m_jointList; while (_local17) { if (_local9.m_jointCount == _local9.m_jointCapacity){ } else { if (_local17.joint.m_islandFlag == true){ } else { _local22 = _local17.other; if (_local22.IsActive() == false){ } else { _local9.AddJoint(_local17.joint); _local17.joint.m_islandFlag = true; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; }; _local17 = _local17.next; }; _local18 = s_timestep; _local18.warmStarting = false; _local18.dt = ((1 - _local13) * _arg1.dt); _local18.inv_dt = (1 / _local18.dt); _local18.dtRatio = 0; _local18.velocityIterations = _arg1.velocityIterations; _local18.positionIterations = _arg1.positionIterations; _local9.SolveTOI(_local18); _local19 = 0; while (_local19 < _local9.m_bodyCount) { _local2 = _local9.m_bodies[_local19]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if (_local2.IsAwake() == false){ } else { if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local2.SynchronizeFixtures(); _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local19++; }; _local19 = 0; while (_local19 < _local9.m_contactCount) { _local11 = _local9.m_contacts[_local19]; _local9.m_contacts[_local19].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local19++; }; _local19 = 0; while (_local19 < _local9.m_jointCount) { _local8 = _local9.m_joints[_local19]; _local8.m_islandFlag = false; _local19++; }; m_contactManager.FindNewContacts(); }; }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetContactCount():int{ return (m_contactCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetGravity():b2Vec2{ return (m_gravity); } public function RayCastOne(_arg1:b2Vec2, _arg2:b2Vec2):b2Fixture{ var result:b2Fixture; var RayCastOneWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastOneWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result = _arg1; return (_arg4); }; RayCast(RayCastOneWrapper, point1, point2); return (result); } public function Validate():void{ m_contactManager.m_broadPhase.Validate(); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function QueryPoint(_arg1:Function, _arg2:b2Vec2):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var p = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (_local2.TestPoint(p)){ return (callback(_local2)); }; return (true); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set((p.x - b2Settings.b2_linearSlop), (p.y - b2Settings.b2_linearSlop)); aabb.upperBound.Set((p.x + b2Settings.b2_linearSlop), (p.y + b2Settings.b2_linearSlop)); broadPhase.Query(WorldQueryWrapper, aabb); } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local5:b2ContactEdge; var _local2:b2Joint = b2Joint.Create(_arg1, null); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_edgeA.joint = _local2; _local2.m_edgeA.other = _local2.m_bodyB; _local2.m_edgeA.prev = null; _local2.m_edgeA.next = _local2.m_bodyA.m_jointList; if (_local2.m_bodyA.m_jointList){ _local2.m_bodyA.m_jointList.prev = _local2.m_edgeA; }; _local2.m_bodyA.m_jointList = _local2.m_edgeA; _local2.m_edgeB.joint = _local2; _local2.m_edgeB.other = _local2.m_bodyA; _local2.m_edgeB.prev = null; _local2.m_edgeB.next = _local2.m_bodyB.m_jointList; if (_local2.m_bodyB.m_jointList){ _local2.m_bodyB.m_jointList.prev = _local2.m_edgeB; }; _local2.m_bodyB.m_jointList = _local2.m_edgeB; var _local3:b2Body = _arg1.bodyA; var _local4:b2Body = _arg1.bodyB; if (_arg1.collideConnected == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; return (_local2); } public function GetContactList():b2Contact{ return (m_contactList); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2ContactEdge; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_bodyA; var _local4:b2Body = _arg1.m_bodyB; _local3.SetAwake(true); _local4.SetAwake(true); if (_arg1.m_edgeA.prev){ _arg1.m_edgeA.prev.next = _arg1.m_edgeA.next; }; if (_arg1.m_edgeA.next){ _arg1.m_edgeA.next.prev = _arg1.m_edgeA.prev; }; if (_arg1.m_edgeA == _local3.m_jointList){ _local3.m_jointList = _arg1.m_edgeA.next; }; _arg1.m_edgeA.prev = null; _arg1.m_edgeA.next = null; if (_arg1.m_edgeB.prev){ _arg1.m_edgeB.prev.next = _arg1.m_edgeB.next; }; if (_arg1.m_edgeB.next){ _arg1.m_edgeB.next.prev = _arg1.m_edgeB.prev; }; if (_arg1.m_edgeB == _local4.m_jointList){ _local4.m_jointList = _arg1.m_edgeB.next; }; _arg1.m_edgeB.prev = null; _arg1.m_edgeB.next = null; b2Joint.Destroy(_arg1, null); m_jointCount--; if (_local2 == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactManager.m_contactListener = _arg1; } public function CreateController(_arg1:b2Controller):b2Controller{ if (_arg1.m_world != this){ throw (new Error("Controller can only be a member of one world")); }; _arg1.m_next = m_controllerList; _arg1.m_prev = null; if (m_controllerList){ m_controllerList.m_prev = _arg1; }; m_controllerList = _arg1; m_controllerCount++; _arg1.m_world = this; return (_arg1); } public function QueryShape(_arg1:Function, _arg2:b2Shape, _arg3:b2Transform=null):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var shape = _arg2; var transform = _arg3; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (b2Shape.TestOverlap(shape, transform, _local2.GetShape(), _local2.GetBody().GetTransform())){ return (callback(_local2)); }; return (true); }; if (transform == null){ transform = new b2Transform(); transform.SetIdentity(); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); shape.ComputeAABB(aabb, transform); broadPhase.Query(WorldQueryWrapper, aabb); } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (IsLocked() == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function RemoveController(_arg1:b2Controller):void{ if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (m_controllerList == _arg1){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function RayCast(_arg1:Function, _arg2:b2Vec2, _arg3:b2Vec2):void{ var broadPhase:IBroadPhase; var output:b2RayCastOutput; var RayCastWrapper:Function; var callback = _arg1; var point1 = _arg2; var point2 = _arg3; RayCastWrapper = function (_arg1:b2RayCastInput, _arg2):Number{ var _local6:Number; var _local7:b2Vec2; var _local3:* = broadPhase.GetUserData(_arg2); var _local4:b2Fixture = (_local3 as b2Fixture); var _local5:Boolean = _local4.RayCast(output, _arg1); if (_local5){ _local6 = output.fraction; _local7 = new b2Vec2((((1 - _local6) * point1.x) + (_local6 * point2.x)), (((1 - _local6) * point1.y) + (_local6 * point2.y))); return (callback(_local4, _local7, output.normal, _local6)); }; return (_arg1.maxFraction); }; broadPhase = m_contactManager.m_broadPhase; output = new b2RayCastOutput(); var input:b2RayCastInput = new b2RayCastInput(point1, point2); broadPhase.RayCast(RayCastWrapper, input); } public function Step(_arg1:Number, _arg2:int, _arg3:int):void{ if ((m_flags & e_newFixture)){ m_contactManager.FindNewContacts(); m_flags = (m_flags & ~(e_newFixture)); }; m_flags = (m_flags | e_locked); var _local4:b2TimeStep = s_timestep2; _local4.dt = _arg1; _local4.velocityIterations = _arg2; _local4.positionIterations = _arg3; if (_arg1 > 0){ _local4.inv_dt = (1 / _arg1); } else { _local4.inv_dt = 0; }; _local4.dtRatio = (m_inv_dt0 * _arg1); _local4.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local4.dt > 0){ Solve(_local4); }; if (((m_continuousPhysics) && ((_local4.dt > 0)))){ SolveTOI(_local4); }; if (_local4.dt > 0){ m_inv_dt0 = _local4.inv_dt; }; m_flags = (m_flags & ~(e_locked)); } public function IsLocked():Boolean{ return (((m_flags & e_locked) > 0)); } public function ClearForces():void{ var _local1:b2Body = m_bodyList; while (_local1) { _local1.m_force.SetZero(); _local1.m_torque = 0; _local1 = _local1.m_next; }; } public function GetBodyCount():int{ return (m_bodyCount); } public function SetBroadPhase(_arg1:IBroadPhase):void{ var _local4:b2Fixture; var _local2:IBroadPhase = m_contactManager.m_broadPhase; m_contactManager.m_broadPhase = _arg1; var _local3:b2Body = m_bodyList; while (_local3) { _local4 = _local3.m_fixtureList; while (_local4) { _local4.m_proxy = _arg1.CreateProxy(_local2.GetFatAABB(_local4.m_proxy), _local4); _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; } public function AddController(_arg1:b2Controller):b2Controller{ _arg1.m_next = m_controllerList; _arg1.m_prev = null; m_controllerList = _arg1; _arg1.m_world = this; m_controllerCount++; return (_arg1); } } }//package Box2D.Dynamics
Section 94
//AdLoader (CPMStar.AdLoader) package CPMStar { import flash.events.*; import flash.display.*; import flash.net.*; import flash.system.*; public class AdLoader extends Sprite { private var cpmstarLoader:Loader; private var contentspotid:String; public function AdLoader(_arg1:String){ this.contentspotid = _arg1; addEventListener(Event.ADDED, addedHandler); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } private function addedHandler(_arg1:Event):void{ removeEventListener(Event.ADDED, addedHandler); Security.allowDomain("server.cpmstar.com"); var _local2 = "http://server.cpmstar.com/adviewas3.swf"; var _local3:DisplayObjectContainer = parent; cpmstarLoader = new Loader(); cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((_local2 + "?contentspotid=") + contentspotid))); addChild(cpmstarLoader); } } }//package CPMStar
Section 95
//SimpleStatableObject (Entity.SimpleStatableObject) package Entity { import flash.display.*; public class SimpleStatableObject extends MovieClip { protected var m_state:String;// = null protected var m_stateTime:Number;// = 0 final public function changeState(_arg1:String):void{ onChangeState(m_state, _arg1); m_stateTime = 0; m_state = _arg1; } protected function onChangeState(_arg1:String, _arg2:String):void{ } final public function update(_arg1:Number):void{ m_stateTime = (m_stateTime + _arg1); vUpdate(_arg1); } protected function vUpdate(_arg1:Number):void{ } } }//package Entity
Section 96
//highscoreloader_54 (Gibbets_II_fla.highscoreloader_54) package Gibbets_II_fla { import flash.events.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class highscoreloader_54 extends MovieClip { public var connectionID:Number; public var view:Number; public var readytoSend:Boolean; public var viewURL:String; public var connected:Boolean; public var score:Number; public var loader; public var AS3_lc:LocalConnection; public var game:String; public function highscoreloader_54(){ addFrameScript(0, frame1, 1, frame2); } public function as2Ready():void{ trace("AS2 Ready"); readytoSend = true; AS3_lc.send(("_AS3toAS2_" + connectionID), "communicateData", game, score, view, viewURL, ((("fl3m_uP_Ebri8zi8#" + game) + score) + "2I2RI3tH6ahl?")); } function frame2(){ Security.allowInsecureDomain("*"); Security.allowDomain("*"); readytoSend = false; connected = false; connectionID = 1; loader = new Loader(); loader.load(new URLRequest("http://www.notdoppler.com/highscores/highscores.swf")); addChild(loader); AS3_lc = new LocalConnection(); AS3_lc.allowDomain("*"); AS3_lc.allowInsecureDomain("*"); while (((!(connected)) && ((connectionID < 5)))) { try { AS3_lc.connect(("_AS2toAS3_" + connectionID)); connected = true; } catch(error:ArgumentError) { trace((("AS3: Connection No:" + connectionID) + " is already in use!")); connectionID = (connectionID + 1); }; }; AS3_lc.client = this; } public function loadHighscores(_arg1, _arg2, _arg3, _arg4){ game = _arg1; score = _arg2; view = _arg3; viewURL = _arg4; this.visible = true; gotoAndStop(2); resendData(); } function frame1(){ stop(); this.visible = false; } public function resendData():void{ if (readytoSend){ as2Ready(); }; } } }//package Gibbets_II_fla
Section 97
//introFlash_608 (Gibbets_II_fla.introFlash_608) package Gibbets_II_fla { import flash.display.*; public dynamic class introFlash_608 extends MovieClip { public function introFlash_608(){ addFrameScript(5, frame6); } function frame6(){ stop(); } } }//package Gibbets_II_fla
Section 98
//LeftPanel_542 (Gibbets_II_fla.LeftPanel_542) package Gibbets_II_fla { import flash.display.*; public dynamic class LeftPanel_542 extends MovieClip { public var m_buttonMoreGames:SimpleButton; public var m_buttonGibbetsI:SimpleButton; public function LeftPanel_542(){ addFrameScript(31, frame32); } function frame32(){ stop(); } } }//package Gibbets_II_fla
Section 99
//shirt_39_519 (Gibbets_II_fla.shirt_39_519) package Gibbets_II_fla { import flash.display.*; public dynamic class shirt_39_519 extends MovieClip { public function shirt_39_519(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package Gibbets_II_fla
Section 100
//shirt_41_524 (Gibbets_II_fla.shirt_41_524) package Gibbets_II_fla { import flash.display.*; public dynamic class shirt_41_524 extends MovieClip { public function shirt_41_524(){ addFrameScript(51, frame52); } function frame52(){ stop(); } } }//package Gibbets_II_fla
Section 101
//shirt_42_527 (Gibbets_II_fla.shirt_42_527) package Gibbets_II_fla { import flash.display.*; public dynamic class shirt_42_527 extends MovieClip { public function shirt_42_527(){ addFrameScript(51, frame52, 55, frame56, 63, frame64); } function frame52(){ } function frame64(){ stop(); } function frame56(){ } } }//package Gibbets_II_fla
Section 102
//shirt_44_530 (Gibbets_II_fla.shirt_44_530) package Gibbets_II_fla { import flash.display.*; public dynamic class shirt_44_530 extends MovieClip { public var m_buttonCredits:SimpleButton; public var m_buttonPlay:SimpleButton; public var m_buttonOptions:SimpleButton; public function shirt_44_530(){ addFrameScript(30, frame31); } function frame31(){ stop(); } } }//package Gibbets_II_fla
Section 103
//vulture_copy3_506 (Gibbets_II_fla.vulture_copy3_506) package Gibbets_II_fla { import flash.display.*; public dynamic class vulture_copy3_506 extends MovieClip { public function vulture_copy3_506(){ addFrameScript(21, frame22); } function frame22(){ stop(); } } }//package Gibbets_II_fla
Section 104
//FPSCounter (Main.FPSCounter) package Main { import flash.events.*; import flash.utils.*; public class FPSCounter { private var m_timer:Timer; private var m_fps:int;// = 0 private var m_framesFromLastSecond:int;// = 0 public function FPSCounter(){ m_timer = new Timer(1000); super(); m_timer.addEventListener(TimerEvent.TIMER, onTick); m_timer.start(); } public function getFPS():int{ return (m_fps); } public function onTick(_arg1:TimerEvent):void{ m_fps = m_framesFromLastSecond; m_framesFromLastSecond = 0; } public function addFrame():void{ m_framesFromLastSecond++; } } }//package Main
Section 105
//GameState (Main.GameState) package Main { import flash.events.*; import flash.display.*; public class GameState extends MovieClip { private var m_isMouseDown:Boolean;// = false private var m_isInitiliazed:Boolean;// = false protected var m_liveTime:Number;// = 0 protected var m_forsedLiveTime:Number;// = 0 protected var m_view:MovieClip; public function onStop():void{ } public function onCleanup():void{ if (m_view){ while (m_view.numChildren != 0) { m_view.removeChildAt(0); }; m_view = null; }; } public function update(_arg1:Number):void{ } public function getViewClip():DisplayObject{ return (null); } public function InternalInit():void{ if (!m_isInitiliazed){ m_isInitiliazed = true; onPreInit(); }; m_liveTime = 0; onInit(); } public function handleMouseMove(_arg1:MouseEvent):void{ } public function onInit():void{ } public function handleKeyUp(_arg1:KeyboardEvent):void{ } public function handleMouseUp(_arg1:MouseEvent):void{ m_isMouseDown = false; } public function forsedUpdate(_arg1:Number):void{ } public function handleMouseDown(_arg1:MouseEvent):void{ m_isMouseDown = true; } public function handleKeyDown(_arg1:KeyboardEvent):void{ } public function isInitiliazed():Boolean{ return (m_isInitiliazed); } final public function internalUpdate(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); update(_arg1); } public function onResume():void{ } final public function internalForsedUpdate(_arg1:Number):void{ m_forsedLiveTime = (m_forsedLiveTime + _arg1); forsedUpdate(_arg1); } public function handleMouseClick(_arg1:MouseEvent):void{ } public function isMouseDown():Boolean{ return (m_isMouseDown); } public function onPreInit():void{ } } }//package Main
Section 106
//PhysGameState (Main.PhysGameState) package Main { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Utils.*; import Box2D.Dynamics.Joints.*; import flash.display.*; public class PhysGameState extends GameState { protected var m_world:b2World; protected var m_physScale:Number;// = 30 private var m_accumulateTime:Number;// = 0 protected var m_debugSprite:Sprite; protected var m_mouseDragEnabled:Boolean;// = false private var m_mouseJoint:b2MouseJoint; protected var m_gravity:b2Vec2; public function PhysGameState(){ m_debugSprite = new Sprite(); m_gravity = new b2Vec2(0, 10); super(); } override public function onCleanup():void{ var _local2:b2Body; var _local1:Array = new Array(); _local2 = m_world.GetBodyList(); while (_local2) { _local1.push(_local2); _local2 = _local2.GetNext(); }; for each (_local2 in _local1) { m_world.DestroyBody(_local2); }; m_world = null; m_debugSprite = null; m_gravity = null; m_mouseJoint = null; super.onCleanup(); } override public function update(_arg1:Number):void{ var _local3:DisplayObject; m_accumulateTime = (m_accumulateTime + _arg1); while (m_accumulateTime > Constant.TIME_STEP) { m_accumulateTime = (m_accumulateTime - Constant.TIME_STEP); m_world.Step(Constant.TIME_STEP, Constant.PHYSICS_VELOCITY_ITERATION_COUNT, Constant.PHYSICS_POSITIONS_ITERATION_COUNT); }; var _local2:b2Body = m_world.GetBodyList(); while (_local2) { if ((_local2.GetUserData() is DisplayObject)){ _local3 = (_local2.GetUserData() as DisplayObject); _local3.x = (_local2.GetPosition().x * m_physScale); _local3.y = (_local2.GetPosition().y * m_physScale); _local3.rotation = MathUtils.RadToGrad(_local2.GetAngle()); }; _local2 = _local2.GetNext(); }; if (Constant.m_debugMode){ m_world.DrawDebugData(); }; } public function parseShapeVectorFromClip(_arg1:MovieClip, _arg2:String):Array{ var _local3:Array = new Array(); var _local4:DisplayObject = new MovieClip(); var _local5:int; while (_local4) { _local4 = _arg1.getChildByName((_arg2 + _local5)); if (_local4){ _local3.push(new b2Vec2((_local4.x / m_physScale), (_local4.y / m_physScale))); }; _local5++; }; return (_local3); } override public function handleMouseMove(_arg1:MouseEvent):void{ if (m_mouseDragEnabled){ if (m_mouseJoint){ m_mouseJoint.SetTarget(getMousePhysPos()); }; }; } override public function onInit():void{ super.onInit(); m_world = new b2World(m_gravity, true); m_world.SetWarmStarting(true); m_world.SetContinuousPhysics(true); } public function initDebugDraw():void{ var _local1:b2DebugDraw; if (Constant.m_debugMode){ _local1 = new b2DebugDraw(); _local1.SetSprite(m_debugSprite); _local1.SetDrawScale(m_physScale); _local1.SetFillAlpha(0.8); _local1.SetLineThickness(1); _local1.SetFlags((b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit)); m_world.SetDebugDraw(_local1); m_view.addChild(m_debugSprite); m_debugSprite.visible = false; }; } override public function handleMouseUp(_arg1:MouseEvent):void{ super.handleMouseUp(_arg1); if (m_mouseDragEnabled){ if (m_mouseJoint){ m_world.DestroyJoint(m_mouseJoint); m_mouseJoint = null; }; }; } public function GetBodyAtMouse():b2Body{ var mouse_pos:b2Vec2; var fixture:b2Fixture; var GetBodyCallback:Function; GetBodyCallback = function (_arg1:b2Fixture):Boolean{ var _local3:Boolean; var _local2:b2Shape = _arg1.GetShape(); if (_arg1.GetBody().GetType() != b2Body.b2_staticBody){ _local3 = _local2.TestPoint(_arg1.GetBody().GetTransform(), mouse_pos); if (_local3){ body = _arg1.GetBody(); return (false); }; }; return (true); }; mouse_pos = getMousePhysPos(); var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set((mouse_pos.x - 0.001), (mouse_pos.y - 0.001)); aabb.upperBound.Set((mouse_pos.x + 0.001), (mouse_pos.y + 0.001)); var body:b2Body; m_world.QueryAABB(GetBodyCallback, aabb); return (body); } public function createStaticBoxFromClip(_arg1:DisplayObject, _arg2:Sprite):b2Fixture{ _arg2.addChild(_arg1); var _local3:Number = _arg1.rotation; _arg1.rotation = 0; var _local4:b2BodyDef = new b2BodyDef(); _local4.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); _local4.angle = MathUtils.GradToRad(_local3); var _local5:b2Body = m_world.CreateBody(_local4); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((((_arg1.width - 1) / m_physScale) / 2), (((_arg1.height - 1) / m_physScale) / 2)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; var _local8:b2Fixture = _local5.CreateFixture(_local7); _local5.SetUserData(_arg1); _arg1.rotation = _local3; return (_local8); } override public function handleMouseDown(_arg1:MouseEvent):void{ var _local2:b2Body; var _local3:b2MouseJointDef; super.handleMouseDown(_arg1); if (m_mouseDragEnabled){ if (!m_mouseJoint){ _local2 = GetBodyAtMouse(); if (_local2){ _local3 = new b2MouseJointDef(); _local3.bodyA = m_world.GetGroundBody(); _local3.bodyB = _local2; _local3.target.SetV(getMousePhysPos()); _local3.collideConnected = true; _local3.maxForce = (300 * _local2.GetMass()); m_mouseJoint = (m_world.CreateJoint(_local3) as b2MouseJoint); }; }; }; } public function createDynamicBoxFromClip(_arg1:Sprite, _arg2:DisplayObject):b2Body{ var _local3:Number = _arg2.rotation; _arg1.addChild(_arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position = new b2Vec2((_arg2.x / m_physScale), (_arg2.y / m_physScale)); _local4.angle = MathUtils.GradToRad(_local3); var _local5:b2Body = m_world.CreateBody(_local4); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((((_arg2.width - 1) / m_physScale) / 2), (((_arg2.height - 1) / m_physScale) / 2)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.density = 1.9; _local7.friction = 0.4; _local7.restitution = 0.25; _local5.CreateFixture(_local7); _local5.SetUserData(_arg2); _arg2.rotation = _local3; return (_local5); } public function createStaticBox(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Number):b2Body{ var _local4:b2BodyDef = new b2BodyDef(); _local4.position = _arg2.Copy(); _local4.angle = MathUtils.GradToRad(_arg3); var _local5:b2Body = m_world.CreateBody(_local4); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((_arg1.x / 2), (_arg1.y / 2)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local5.CreateFixture(_local7); return (_local5); } public function getMousePhysPos():b2Vec2{ return (new b2Vec2(((stage.mouseX / m_physScale) / scaleX), ((stage.mouseY / m_physScale) / scaleY))); } } }//package Main
Section 107
//PreloaderState (Main.PreloaderState) package Main { import flash.events.*; import flash.display.*; public class PreloaderState extends GameState { protected var m_scene:MovieClip; private var m_minimalLoadTime:Number;// = 50 private var m_isEnded:Boolean;// = false protected var m_bytesTotal:Number;// = 100 private var m_isLoadingFinished:Boolean;// = false protected var m_loaderInfo:LoaderInfo;// = null private var m_percent:Number;// = 0 protected var m_bytesLoaded:Number;// = 100 private function onLoadComplete(_arg1:Event):void{ m_loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoadProgress); m_loaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete); m_isLoadingFinished = true; } override public function onInit():void{ m_scene = StateManager.getInstance(); m_loaderInfo = StateManager.getInstance().loaderInfo; if (m_loaderInfo.bytesLoaded >= m_loaderInfo.bytesTotal){ m_isLoadingFinished = true; } else { m_loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress); m_loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); }; } override public function update(_arg1:Number):void{ if (!m_isEnded){ m_percent = Math.min((m_bytesLoaded / m_bytesTotal), (m_liveTime / m_minimalLoadTime)); if (((m_isLoadingFinished) && ((m_liveTime >= m_minimalLoadTime)))){ StateManager.getInstance().gotoAndStop(2); onFinishLoading(); m_isEnded = true; }; }; } public function onFinishLoading():void{ } public function getPercent():Number{ return (m_percent); } public function setMinimalLoadTime(_arg1:Number):void{ m_minimalLoadTime = _arg1; } private function onLoadProgress(_arg1:ProgressEvent):void{ m_bytesTotal = _arg1.bytesTotal; m_bytesLoaded = _arg1.bytesLoaded; } } }//package Main
Section 108
//StateManager (Main.StateManager) package Main { import flash.events.*; import flash.display.*; import flash.utils.*; import States.*; import flash.ui.*; public class StateManager extends MovieClip { private var m_lastState:GameState;// = null private var m_states:Array; public var m_preloaderClip:CurrentPreloaderState; public var hsloader:MovieClip; private var m_currentTime:int; private var m_fpsCounter:FPSCounter; private var m_seconds:int;// = 0 private var m_timer:Timer; private var m_overlay:DisplayObject;// = null private static var m_instance:StateManager = null; public function StateManager(){ m_states = new Array(); m_fpsCounter = new FPSCounter(); m_timer = new Timer(1000); m_currentTime = getTimer(); super(); addFrameScript(0, frame1); m_instance = this; stop(); addEventListener(Event.ENTER_FRAME, update); stage.addEventListener(MouseEvent.CLICK, handleMouseClick); stage.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp); stage.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); stage.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyUp); m_timer.addEventListener(TimerEvent.TIMER, onTimer); m_timer.start(); pushState(m_preloaderClip); customizeContextMenu(); } private function onKey(_arg1:KeyboardEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleKeyDown(_arg1); }; } public function changeState(_arg1:GameState):void{ if (m_states.length != 0){ m_lastState = m_states[(m_states.length - 1)]; }; while (m_states.length != 0) { popState(); }; pushState(_arg1); } private function goNotdoppler(_arg1:ContextMenuEvent):void{ LinksManager.goURL(LinksManager.MAIN_PAGE_URL, ""); } public function popState():void{ if (m_states.length != 0){ m_lastState = m_states[(m_states.length - 1)]; m_lastState.onCleanup(); m_states.pop(); removeChild(m_lastState); if (m_states.length != 0){ m_states[(m_states.length - 1)].onResume(); }; }; onStateChanging(); } public function haveOverlay():Boolean{ return (!((m_overlay == null))); } private function handleMouseMove(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseMove(_arg1); }; } public function hitTestOverlays(_arg1:Number, _arg2:Number):Boolean{ return (((m_overlay) && (m_overlay.hitTestPoint(_arg1, _arg2, true)))); } public function getSeconds():int{ return (m_seconds); } public function setOverlay(_arg1:DisplayObject):void{ if (_arg1){ m_overlay = _arg1; addChild(m_overlay); } else { trace(new Error().getStackTrace()); }; } public function pushState(_arg1:GameState):void{ if (m_states.length != 0){ m_lastState = m_states[(m_states.length - 1)]; m_lastState.onStop(); } else { m_lastState = _arg1; }; m_states.push(_arg1); addChild(_arg1); _arg1.InternalInit(); onStateChanging(); } private function handleMouseUp(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseUp(_arg1); }; } private function handleKeyUp(_arg1:KeyboardEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleKeyUp(_arg1); }; } private function handleMouseDown(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseDown(_arg1); }; } private function update(_arg1:Event):void{ var _local3:GameState; var _local2:Number = (1 / stage.frameRate); if (m_states.length != 0){ m_states[(m_states.length - 1)].internalUpdate(_local2); }; for each (_local3 in m_states) { _local3.internalForsedUpdate(_local2); }; m_fpsCounter.addFrame(); SoundManager.update(_local2); } function frame1(){ } private function customizeContextMenu():void{ var _local1:ContextMenu = new ContextMenu(); _local1.hideBuiltInItems(); var _local2:ContextMenuBuiltInItems = _local1.builtInItems; _local2.print = true; _local2.quality = true; _local1.builtInItems = _local2; var _local3:ContextMenuItem = new ContextMenuItem("More games", false); _local3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goNotdoppler); var _local4:ContextMenuItem = new ContextMenuItem("www.notdoppler.com", false); _local4.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goNotdoppler); _local1.customItems = [_local3, _local4]; contextMenu = _local1; } public function getLastState():GameState{ return (m_lastState); } private function handleMouseClick(_arg1:MouseEvent):void{ if (m_states.length != 0){ m_states[(m_states.length - 1)].handleMouseClick(_arg1); }; } public function getFPS():Number{ return (m_fpsCounter.getFPS()); } private function onTimer(_arg1:TimerEvent):void{ m_seconds++; } public function coolChangeState(_arg1:GameState):void{ var _local2:ShadeInState = new ShadeInState(); pushState(_local2); _local2.setNextState(_arg1); } public function getTopState():GameState{ return (m_states[(m_states.length - 1)]); } private function onStateChanging():void{ if (m_overlay != null){ addChild(m_overlay); }; } public static function getInstance():StateManager{ return (m_instance); } } }//package Main
Section 109
//HumanRagdoll (Ragdoll.HumanRagdoll) package Ragdoll { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import flash.display.*; import States.PlayState.*; import flash.utils.*; public class HumanRagdoll extends MapObject { private var m_world:b2World; private var m_persID:int;// = -1 protected var m_nameBodyPath:Dictionary; private var m_allPaths:Array; private var m_isInverted:Boolean;// = false public static const LEFT_UPPER_HAND:String = "LEFT_UPPER_HAND"; public static const LEFT_LOWER_HAND:String = "LEFT_LOWER_HAND"; public static const TORSO3:String = "TORSO3"; public static const RIGHT_LOWER_LEG:String = "RIGHT_LOWER_LEG"; public static const ALL_PATHS:Array = [HEAD, TORSO1, TORSO2, TORSO3, LEFT_UPPER_HAND, LEFT_LOWER_HAND, RIGHT_UPPER_HAND, RIGHT_LOWER_HAND, LEFT_UPPER_LEG, LEFT_LOWER_LEG, RIGHT_UPPER_LEG, RIGHT_LOWER_LEG]; public static const LEFT_LOWER_LEG:String = "LEFT_LOWER_LEG"; public static const HEAD:String = "HEAD"; public static const RIGHT_UPPER_LEG:String = "RIGHT_UPPER_LEG"; public static const RIGHT_UPPER_HAND:String = "RIGHT_UPPER_HAND"; public static const RIGHT_LOWER_HAND:String = "RIGHT_LOWER_HAND"; public static const LEFT_UPPER_LEG:String = "LEFT_UPPER_LEG"; public static const TORSO1:String = "TORSO1"; public static const TORSO2:String = "TORSO2"; public function HumanRagdoll(_arg1:b2Vec2, _arg2:b2World, _arg3:Boolean, _arg4:int, _arg5:Boolean){ var _local21:b2Body; var _local22:b2Body; var _local23:MovieClip; m_nameBodyPath = new Dictionary(); m_allPaths = new Array(); super(); m_world = _arg2; m_persID = _arg4; m_isInverted = _arg3; var _local6:Number = (_arg3) ? -1 : 1; var _local7:Number = (Constant.PHYS_SCALE / 0.4); var _local8:b2Body = createCircleBody(new b2Vec2(_arg1.x, (_arg1.y - ((5 / _local7) * _local6))), (18 / _local7), "FaceColors"); var _local9:b2Body = createBoxBody(new b2Vec2(_arg1.x, (_arg1.y + ((28 / _local7) * _local6))), (15 / _local7), (10 / _local7), "Torso1"); var _local10:b2Body = createBoxBody(new b2Vec2(_arg1.x, (_arg1.y + ((43 / _local7) * _local6))), (15 / _local7), (10 / _local7), "Torso2"); var _local11:b2Body = createBoxBody(new b2Vec2(_arg1.x, (_arg1.y + ((58 / _local7) * _local6))), (15 / _local7), (10 / _local7), "Torso3"); var _local12:b2Body = createBoxBody(new b2Vec2((_arg1.x - (30 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), (18 / _local7), (6.5 / _local7), "LeftUpperHand"); var _local13:b2Body = createBoxBody(new b2Vec2((_arg1.x + (30 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), (18 / _local7), (6.5 / _local7), "RightUpperHand"); var _local14:b2Body = createBoxBody(new b2Vec2((_arg1.x - (64 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), (17 / _local7), (6 / _local7), "LeftLowerHand"); var _local15:b2Body = createBoxBody(new b2Vec2((_arg1.x + (64 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), (17 / _local7), (6 / _local7), "RightLowerHand"); var _local16:b2Body = createBoxBody(new b2Vec2((_arg1.x - (8 / _local7)), (_arg1.y + ((85 / _local7) * _local6))), (7.5 / _local7), (22 / _local7), "LeftUpperLeg"); var _local17:b2Body = createBoxBody(new b2Vec2((_arg1.x + (8 / _local7)), (_arg1.y + ((85 / _local7) * _local6))), (7.5 / _local7), (22 / _local7), "RightUpperLeg"); var _local18:b2Body = createBoxBody(new b2Vec2((_arg1.x - (8 / _local7)), (_arg1.y + ((120 / _local7) * _local6))), (6 / _local7), (20 / _local7), "LeftLowerLeg"); var _local19:b2Body = createBoxBody(new b2Vec2((_arg1.x + (8 / _local7)), (_arg1.y + ((120 / _local7) * _local6))), (6 / _local7), (20 / _local7), "RightLowerLeg"); createJoint(_local9, _local8, new b2Vec2(_arg1.x, (_arg1.y + ((15 / _local7) * _local6))), -40, 40); createJoint(_local9, _local12, new b2Vec2((_arg1.x - (18 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), -85, 130); createJoint(_local9, _local13, new b2Vec2((_arg1.x + (18 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), -130, 85); createJoint(_local12, _local14, new b2Vec2((_arg1.x - (45 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), -130, 10); createJoint(_local13, _local15, new b2Vec2((_arg1.x + (45 / _local7)), (_arg1.y + ((20 / _local7) * _local6))), -10, 130); createJoint(_local9, _local10, new b2Vec2(_arg1.x, (_arg1.y + ((35 / _local7) * _local6))), -15, 15); createJoint(_local10, _local11, new b2Vec2(_arg1.x, (_arg1.y + ((50 / _local7) * _local6))), -15, 15); createJoint(_local11, _local16, new b2Vec2((_arg1.x - (8 / _local7)), (_arg1.y + ((72 / _local7) * _local6))), -25, 45); createJoint(_local11, _local17, new b2Vec2((_arg1.x + (8 / _local7)), (_arg1.y + ((72 / _local7) * _local6))), -45, 25); createJoint(_local16, _local18, new b2Vec2((_arg1.x - (8 / _local7)), (_arg1.y + ((105 / _local7) * _local6))), -25, 115); createJoint(_local17, _local19, new b2Vec2((_arg1.x + (8 / _local7)), (_arg1.y + ((105 / _local7) * _local6))), -115, 25); if (_arg5){ createJoint(_local18, _local19, new b2Vec2(_arg1.x, (_arg1.y + ((110 / _local7) * _local6))), 0, 0); }; m_allPaths = new Array(); var _local20:Array = [_local9, _local10, _local12, _local13, _local14, _local15, _local16, _local17, _local18, _local19, _local11, _local8]; for each (_local21 in _local20) { m_allPaths.push(_local21); }; m_nameBodyPath[HEAD] = _local8; m_nameBodyPath[TORSO1] = _local9; m_nameBodyPath[TORSO2] = _local10; m_nameBodyPath[TORSO3] = _local11; m_nameBodyPath[LEFT_UPPER_HAND] = _local12; m_nameBodyPath[LEFT_LOWER_HAND] = _local14; m_nameBodyPath[RIGHT_UPPER_HAND] = _local13; m_nameBodyPath[RIGHT_LOWER_HAND] = _local15; m_nameBodyPath[LEFT_UPPER_LEG] = _local16; m_nameBodyPath[LEFT_LOWER_LEG] = _local18; m_nameBodyPath[RIGHT_UPPER_LEG] = _local17; m_nameBodyPath[RIGHT_LOWER_LEG] = _local19; for each (_local22 in m_allPaths) { _local23 = (_local22.GetUserData() as MovieClip); if (_arg3){ _local23.scaleY = -1; }; addChild(_local23); }; } public function getAllPaths():Array{ return (m_allPaths); } public function resetVelocity():void{ var _local1:String; for each (_local1 in ALL_PATHS) { getBodyByName(_local1).SetLinearVelocity(new b2Vec2()); getBodyByName(_local1).SetAngularVelocity(0); }; } private function createCircleBody(_arg1:b2Vec2, _arg2:Number, _arg3:String):b2Body{ var _local4:MovieClip = (new ((getDefinitionByName(((_arg3 + "_") + m_persID)) as Class)) as MovieClip); _local4.stop(); var _local5:b2CircleShape = new b2CircleShape(_arg2); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 1; _local6.friction = 0.4; _local6.restitution = 0.3; var _local7:b2BodyDef = new b2BodyDef(); _local7.type = b2Body.b2_dynamicBody; _local7.position = _arg1; var _local8:b2Body = m_world.CreateBody(_local7); _local8.CreateFixture(_local6); _local8.SetUserData(_local4); var _local9:MovieClip = new HangerFace(); _local4.addChild(_local9); _local9.name = "head_damage"; return (_local8); } public function applyImpulse(_arg1:b2Vec2):void{ var _local2:String; for each (_local2 in ALL_PATHS) { getBodyByName(_local2).ApplyImpulse(_arg1, getBodyByName(_local2).GetPosition()); }; } private function createBoxBody(_arg1:b2Vec2, _arg2:Number, _arg3:Number, _arg4:String):b2Body{ var _local5:MovieClip = (new ((getDefinitionByName(((_arg4 + "_") + m_persID)) as Class)) as MovieClip); _local5.stop(); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox(_arg2, _arg3); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.density = 1; _local7.friction = 0.4; _local7.restitution = 0.3; var _local8:b2BodyDef = new b2BodyDef(); _local8.position = _arg1; _local8.type = b2Body.b2_dynamicBody; var _local9:b2Body = m_world.CreateBody(_local8); _local9.CreateFixture(_local7); _local9.SetUserData(_local5); return (_local9); } public function getBodyByName(_arg1:String):b2Body{ return (m_nameBodyPath[_arg1]); } private function createJoint(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:Number, _arg5:Number):b2Joint{ var _local6:b2RevoluteJointDef = new b2RevoluteJointDef(); _local6.enableLimit = true; _local6.lowerAngle = (_arg4 / (180 / Math.PI)); _local6.upperAngle = (_arg5 / (180 / Math.PI)); _local6.Initialize(_arg1, _arg2, _arg3); return (m_world.CreateJoint(_local6)); } public function setVelocity(_arg1:b2Vec2):void{ var _local2:String; for each (_local2 in ALL_PATHS) { getBodyByName(_local2).SetLinearVelocity(_arg1); }; } } }//package Ragdoll
Section 110
//DeathVulture (States.GrifShooting.DeathVulture) package States.GrifShooting { import Box2D.Dynamics.*; import Utils.*; import flash.display.*; import States.PlayState.*; public class DeathVulture extends MapObject { private var m_isKilled:Boolean;// = false private var m_anim:MovieClip; private var m_torsoFixture:b2Fixture;// = null private var m_needGoSensor:Boolean;// = false private var m_section:int; private var m_speed:Number; private var m_headFixture:b2Fixture;// = null private var m_legsFixture:b2Fixture;// = null public function DeathVulture(_arg1:b2Fixture, _arg2:b2Fixture, _arg3:b2Fixture, _arg4:int):void{ m_anim = new VultureHere(); super(); m_section = _arg4; m_legsFixture = _arg3; m_torsoFixture = _arg2; m_headFixture = _arg1; scaleX = -1; addChild(m_anim); m_anim.clip.stop(); } override public function update(_arg1:Number):void{ var _local2:b2Fixture; if ((((m_anim.clip.currentFrame == m_anim.clip.totalFrames)) && (!(m_isKilled)))){ m_anim.clip.gotoAndStop(1); }; if (m_body.GetPosition().y > ((Constant.WINDOW_HEIGHT / Constant.PHYS_SCALE) + (300 / Constant.PHYS_SCALE))){ m_isDead = true; }; if (m_body.GetPosition().y < (-300 / Constant.PHYS_SCALE)){ m_isDead = true; }; if (m_needGoSensor){ _local2 = m_body.GetFixtureList(); while (_local2) { _local2.SetSensor(true); _local2 = _local2.GetNext(); }; m_needGoSensor = false; }; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ onArrowHeadContact(_arg1, _arg2); } override public function onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isKilled){ return; }; removeChild(m_anim); switch (_arg2){ case m_legsFixture: m_anim = new VultureJump(); SoundManager.play(MathUtils.anyOfString(SoundConst.VULTURE_CACLE_1, SoundConst.VULTURE_CACLE_2)); break; case m_headFixture: m_anim = new VultureBend(); break; case m_torsoFixture: m_anim = new VultureDie(); m_isKilled = true; GrifShootingState.getInstance().onVultureKill(m_body.GetPosition(), m_section); m_needGoSensor = true; SoundManager.play(MathUtils.anyOfString(SoundConst.VULTURE_CRY_1, SoundConst.VULTURE_CRY_2, SoundConst.VULTURE_CRY_3, SoundConst.VULTURE_CRY_4)); break; }; addChild(m_anim); m_anim.clip.play(); } } }//package States.GrifShooting
Section 111
//GrifShootingState (States.GrifShooting.GrifShootingState) package States.GrifShooting { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Utils.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import Main.*; import flash.display.*; import States.PlayState.*; import flash.utils.*; import States.*; import flash.system.*; import flash.ui.*; public class GrifShootingState extends PhysGameState { private const STATE_SHOOTING:int = 2; private const STATE_NORMAL:int = 0; private const STATE_TAKE_AIM:int = 1; private const STATE_NOT_INITILIAZED:int = -1; private var m_timeLeft:int; private var m_nextState:GrifShootingWinState;// = null private var m_spawnVultureTimer:Timer; private var m_shootingPower:Number; private var m_arrowsLayer:Sprite; private var m_totalArrowCount:int; private var m_contactListener:b2ContactListener; private var m_mapObjects:Array; private var m_sightClip:MovieClip; private var m_state:int;// = -1 private var m_cloudsLayer:Sprite; private var m_allStones:Array; private var m_randomCounter:int;// = 0 private var m_guiLayer:Sprite; private var m_arrowHeadsToBodyContacts:Dictionary; private var m_arrowBodyToBodyContacts:Dictionary; private var m_layersContainer:Sprite; private var m_nextStateTimer:Timer; private var m_arrows:Array; private var m_lastSection:int;// = -1 private var m_staticLayer:Sprite; private var m_frontLayer:Sprite; private var m_arrowsLeft:int; private var m_tmpScores:int;// = 0 private var m_dynamicLayer:Sprite; private var m_timer:Timer; private var m_backgroundLayer:Sprite; private var m_bow:Bow; public static var m_vulturesKilled:int; private static var m_instance:GrifShootingState = null; public static var m_currentScores:int = 0; public static var m_curLevel:int; public static var m_wasStar:Boolean = true; public static var m_arrowsUsed:int; public function GrifShootingState(_arg1:int){ m_allStones = new Array(); m_mapObjects = new Array(); m_guiLayer = new Sprite(); m_spawnVultureTimer = new Timer(3000); m_layersContainer = new Sprite(); m_backgroundLayer = new Sprite(); m_cloudsLayer = new Sprite(); m_staticLayer = new Sprite(); m_dynamicLayer = new Sprite(); m_frontLayer = new Sprite(); m_arrowsLayer = new Sprite(); m_arrows = new Array(); m_contactListener = new GrifContactListener(); m_sightClip = new Sight(); m_nextStateTimer = new Timer(3000, 1); m_timer = new Timer(1000); m_arrowBodyToBodyContacts = new Dictionary(); m_arrowHeadsToBodyContacts = new Dictionary(); super(); m_curLevel = _arg1; m_instance = this; m_timeLeft = (90 + ((_arg1 / 6) * 10)); m_totalArrowCount = (15 + ((_arg1 / 6) * 2)); m_arrowsLeft = m_totalArrowCount; if (GameData.haveAchievement(Achievements.ACCURACY_70)){ m_arrowsLeft = (m_arrowsLeft + 10); }; } private function onSpawnVulture(_arg1:TimerEvent):void{ var _local2:b2Vec2; var _local3:Number; var _local10:int; while (_local10 == m_lastSection) { _local10 = MathUtils.RandomRangeInt(0, 2); }; m_lastSection = _local10; switch (_local10){ case 0: _local2 = new b2Vec2(((300 / m_physScale) + (MathUtils.RandomRange(-45, 45) / m_physScale)), (-100 / m_physScale)); _local3 = MathUtils.RandomRange(2.2, 2.6); break; case 1: _local2 = new b2Vec2(((450 / m_physScale) + (MathUtils.RandomRange(-45, 45) / m_physScale)), (580 / m_physScale)); _local3 = MathUtils.RandomRange(-2.4, -2); break; case 2: _local2 = new b2Vec2(((600 / m_physScale) + (MathUtils.RandomRange(-45, 5) / m_physScale)), (-100 / m_physScale)); _local3 = MathUtils.RandomRange(1.6, 2); break; }; m_spawnVultureTimer.delay = MathUtils.RandomRangeInt(1000, 3000); spawnObjectOnShelf(_local2, _local3, _local10); var _local4:b2Vec2 = new b2Vec2((50 / m_physScale), (8 / m_physScale)); var _local5:VultureShelf = new VultureShelf(_local3, _local4); var _local6:b2BodyDef = new b2BodyDef(); _local6.type = b2Body.b2_dynamicBody; _local6.position = new b2Vec2(_local2.x, (_local2.y + (20 / m_physScale))); var _local7:b2Body = m_world.CreateBody(_local6); var _local8:b2PolygonShape = new b2PolygonShape(); _local8.SetAsBox((_local4.x / 2), (_local4.y / 2)); var _local9:b2FixtureDef = new b2FixtureDef(); _local9.shape = _local8; _local9.density = 1000; _local9.restitution = 0.5; _local9.friction = 0.5; _local7.CreateFixture(_local9); m_staticLayer.addChild(_local5); _local5.connectWithBody(_local7); _local5.x = (_local7.GetPosition().x * m_physScale); _local5.y = (_local7.GetPosition().y * m_physScale); m_mapObjects.push(_local5); } private function spawnVultureOnShelf(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ var _local5:int; var _local4:b2Vec2 = new b2Vec2((47 / m_physScale), (51 / m_physScale)); var _local6:b2BodyDef = new b2BodyDef(); _local6.type = b2Body.b2_dynamicBody; _local6.position = _arg1.Copy(); var _local7:b2Body = m_world.CreateBody(_local6); var _local8:b2PolygonShape = new b2PolygonShape(); _local8.SetAsBox(_local4.x, (_local4.y / 6)); _local5 = 0; while (_local5 < 4) { _local8.GetVertices()[_local5].y = (_local8.GetVertices()[_local5].y - (_local4.y / 3)); _local5++; }; var _local9:b2FixtureDef = new b2FixtureDef(); _local9.shape = _local8; var _local10:b2Fixture = _local7.CreateFixture(_local9); _local10.SetSensor(true); var _local11:b2PolygonShape = new b2PolygonShape(); _local11.SetAsBox((_local4.x / 7), (13 / m_physScale)); var _local12:b2FixtureDef = new b2FixtureDef(); _local12.density = 1; _local12.restitution = 0.2; _local12.friction = 0.5; _local12.shape = _local11; var _local13:b2Fixture = _local7.CreateFixture(_local12); var _local14:b2PolygonShape = new b2PolygonShape(); _local14.SetAsBox(_local4.x, (_local4.y / 7)); _local5 = 0; while (_local5 < 4) { _local14.GetVertices()[_local5].y = (_local14.GetVertices()[_local5].y + (_local4.y / 3)); _local5++; }; var _local15:b2FixtureDef = new b2FixtureDef(); _local15.shape = _local14; var _local16:b2Fixture = _local7.CreateFixture(_local15); _local16.SetSensor(true); var _local17:b2PolygonShape = new b2PolygonShape(); _local17.SetAsBox((_local4.x / 7), (19 / m_physScale)); var _local18:b2FixtureDef = new b2FixtureDef(); _local18.density = 0; _local18.friction = 0.1; _local18.restitution = 0; _local18.shape = _local17; _local18.filter.groupIndex = -1; var _local19:b2Fixture = _local7.CreateFixture(_local18); var _local20:DeathVulture = new DeathVulture(_local10, _local13, _local16, _arg3); m_dynamicLayer.addChild(_local20); _local20.connectWithBody(_local7); m_mapObjects.push(_local20); _local20.stop(); _local20.x = (_arg1.x * m_physScale); _local20.y = (_arg1.y * m_physScale); } private function spawnAmmoGhost(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ var _local4:VultureAmmoGhost; switch (_arg3){ case 0: case 1: _local4 = new VultureAmmoGhost(_arg2); _local4.setPower(3); _local4.addChild(new AmmoGhost3()); break; case 2: _local4 = new VultureAmmoGhost(_arg2); _local4.setPower(5); _local4.addChild(new AmmoGhost5()); break; }; _local4.x = (_arg1.x * m_physScale); _local4.y = (_arg1.y * m_physScale); var _local5:b2BodyDef = new b2BodyDef(); _local5.position = _arg1; _local5.type = b2Body.b2_dynamicBody; var _local6:b2Body = m_world.CreateBody(_local5); var _local7:b2PolygonShape = new b2PolygonShape(); _local7.SetAsBox(((_local4.width / 2) / m_physScale), ((_local4.height / 2) / m_physScale)); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local7; var _local9:b2Fixture = _local6.CreateFixture(_local8); _local4.connectWithBody(_local6); m_dynamicLayer.addChild(_local4); m_mapObjects.push(_local4); } public function onVultureKill(_arg1:b2Vec2, _arg2:int):void{ var _local3 = 100; switch (_arg2){ case 0: _local3 = 100; break; case 1: _local3 = 200; break; case 2: _local3 = 400; break; }; if (GameData.haveAchievement(Achievements.GRIFS_KILLED)){ _local3 = (_local3 + 50); }; var _local4:AddPointsEffect = new AddPointsEffect(_local3, 1, (_arg1.x * m_physScale), (_arg1.y * m_physScale)); m_frontLayer.addChild(_local4); m_mapObjects.push(_local4); createBlood(_arg1); var _local5:VultureFeathers = new VultureFeathers(); m_arrowsLayer.addChild(_local5); _local5.x = ((_arg1.x * m_physScale) + 13); _local5.y = ((_arg1.y * m_physScale) - 45); if (Math.random() < 0.5){ _local5.scaleX = -1; }; var _local6:Number = MathUtils.RandomRange(0.95, 1.05); _local5.scaleX = (_local5.scaleX * _local6); _local5.scaleY = (_local5.scaleY * _local6); m_mapObjects.push(_local5); addScores(_local3); m_vulturesKilled++; } private function addScores(_arg1:int):void{ m_currentScores = (m_currentScores + _arg1); } private function recalcGui():void{ m_view.m_arrowsLeftClip.m_text.text = m_arrowsLeft.toString(); var _local1:String = m_currentScores.toString(); switch (m_tmpScores.toString().length){ case 4: _local1 = ("0" + m_tmpScores.toString()); break; case 3: _local1 = ("00" + m_tmpScores.toString()); break; case 2: _local1 = ("000" + m_tmpScores.toString()); break; case 1: _local1 = ("0000" + m_tmpScores.toString()); break; }; m_view.m_scoreClip.m_text.text = _local1; m_view.m_timeLeftClip.m_text.text = Utils.intToTimeString(m_timeLeft); } private function onNextStateTimer(_arg1:TimerEvent):void{ StateManager.getInstance().pushState(m_nextState); } private function onMenuClick(_arg1:MouseEvent):void{ if (m_nextState == null){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); }; } private function setState(_arg1:int):void{ m_state = _arg1; switch (_arg1){ case STATE_NORMAL: m_sightClip.visible = false; break; case STATE_TAKE_AIM: m_sightClip.visible = true; break; }; } private function updateScores():void{ if (m_tmpScores < m_currentScores){ m_tmpScores = (m_tmpScores + 21); if (m_tmpScores > m_currentScores){ m_tmpScores = m_currentScores; }; }; } override public function handleKeyDown(_arg1:KeyboardEvent):void{ super.handleKeyDown(_arg1); if (_arg1.keyCode == Keyboard.DOWN){ m_debugSprite.visible = !(m_debugSprite.visible); }; } public function createBlood(_arg1:b2Vec2):void{ var _local3:int; var _local4:b2BodyDef; var _local5:b2Body; var _local6:b2PolygonShape; var _local7:b2FixtureDef; var _local8:b2Fixture; var _local9:Blood; if (GameData.m_isBloodDisabled){ return; }; var _local2:int = MathUtils.RandomRangeInt(6, 10); while (_local3 < _local2) { _local4 = new b2BodyDef(); _local4.position = _arg1; _local4.type = b2Body.b2_dynamicBody; _local4.angle = MathUtils.GradToRad(MathUtils.RandomRange(0, (Math.PI * 2))); _local5 = m_world.CreateBody(_local4); _local6 = new b2PolygonShape(); _local6.SetAsBox((1 / m_physScale), (1 / m_physScale)); _local7 = new b2FixtureDef(); _local7.shape = _local6; _local8 = _local5.CreateFixture(_local7); _local8.SetSensor(true); _local5.ApplyImpulse(new b2Vec2(MathUtils.RandomRange(0, 2.7), MathUtils.RandomRange(0, -3)), _arg1); _local5.ApplyTorque(MathUtils.RandomRange(-1, 1)); _local9 = new Blood(); _local9.connectWithBody(_local5); m_arrowsLayer.addChild(_local9); m_mapObjects.push(_local9); _local3++; }; } private function onTimerTick(_arg1:TimerEvent):void{ var _local2:TimeIsOutEffect; if (m_nextState == null){ if (--m_timeLeft == 0){ _local2 = new TimeIsOutEffect(); addChild(_local2); m_mapObjects.push(_local2); win(); }; }; } public function onContactWithArrowHeadBody(_arg1:Arrow, _arg2:b2Fixture):void{ var _local6:MapObject; var _local7:b2RevoluteJointDef; var _local8:b2AABB; var _local9:b2Vec2; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; for each (_local6 in m_mapObjects) { if (_local6.isItYourFixture(_arg2)){ _local6.onArrowHeadContact(_arg1, _arg2); if ((_local6 is Sun)){ _local3 = true; }; if ((_local6 is DeathVulture)){ _local4 = true; }; if ((_local6 is VultureAmmoGhost)){ _local5 = true; }; break; }; }; if (((((((!(_arg2.IsSensor())) && (!(_arg1.isStickIn())))) && (_arg1.canStickIn()))) && ((m_allStones.indexOf(_arg2) == -1)))){ if (!_local5){ if (_local4){ SoundManager.play(MathUtils.anyOfString(SoundConst.STICK_IN_BODY_0, SoundConst.STICK_IN_BODY_1, SoundConst.STICK_IN_BODY_2)); } else { SoundManager.play(SoundConst.STICK_IN_WOOD); }; }; _arg1.stopFly(); _arg1.stickIn(); if (_local3){ m_backgroundLayer.addChild(_arg1); }; _local7 = new b2RevoluteJointDef(); _local7.lowerAngle = MathUtils.RandomRange((-(Math.PI) / 8), (-(Math.PI) / 12)); _local7.upperAngle = MathUtils.RandomRange((Math.PI / 12), (Math.PI / 8)); _local7.enableLimit = true; _local8 = _arg1.getHeadFixture().GetAABB(); _local9 = new b2Vec2(((_local8.lowerBound.x + _local8.upperBound.x) / 2), ((_local8.lowerBound.y + _local8.upperBound.y) / 2)); _local7.Initialize(_arg1.getBody(), _arg2.GetBody(), _local9); m_world.CreateJoint(_local7); if (_arg2.GetBody().GetType() == b2Body.b2_dynamicBody){ _arg1.resumeFly(); }; }; if (!_arg2.IsSensor()){ _arg1.onAnyContact(); }; } public function onContactWithArrowBody(_arg1:Arrow, _arg2:b2Fixture):void{ var _local3:MapObject; for each (_local3 in m_mapObjects) { if (_local3.isItYourFixture(_arg2)){ _local3.onArrowContact(_arg1, _arg2); break; }; }; if (!_arg2.IsSensor()){ _arg1.onAnyContact(); }; } public function createArrow(_arg1:b2Vec2, _arg2:b2Vec2):Arrow{ var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position = _arg1; var _local4:b2Body = m_world.CreateBody(_local3); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((Arrow.m_halfWidth / m_physScale), (Arrow.m_halfWidth / m_physScale)); var _local6:int; while (_local6 < _local5.GetVertexCount()) { _local5.GetVertices()[_local6].Add(new b2Vec2(0, (-((Arrow.m_halfHeight + Arrow.m_halfWidth)) / m_physScale))); _local6++; }; var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local5; _local7.density = 2.5; _local7.friction = 0.5; _local7.restitution = 0.1; _local7.filter.groupIndex = -1; var _local8:b2Fixture = _local4.CreateFixture(_local7); var _local9:b2PolygonShape = new b2PolygonShape(); _local9.SetAsBox((Arrow.m_halfWidth / m_physScale), (Arrow.m_halfHeight / m_physScale)); var _local10:b2FixtureDef = new b2FixtureDef(); _local10.shape = _local9; _local10.density = 2.5; _local10.friction = 0.5; _local10.restitution = 0.1; _local10.filter.groupIndex = -1; var _local11:b2Fixture = _local4.CreateFixture(_local10); _local4.SetLinearVelocity(_arg2); _local4.SetBullet(true); var _local12:Arrow = new Arrow(_local8, _local11, _local4); _local12.cacheAsBitmap = true; m_arrows.push(_local12); _local4.SetUserData(_local12); m_arrowsLayer.addChild(_local12); return (_local12); } override public function onStop():void{ m_spawnVultureTimer.stop(); m_timer.stop(); } private function spawnTimeGhost(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ } public function addArrows(_arg1:int, _arg2:Number, _arg3:Number):void{ m_vulturesKilled++; m_arrowsLeft = (m_arrowsLeft + _arg1); recalcGui(); var _local4:AddPointsEffect = new AddPointsEffect(_arg1, 1, _arg2, _arg3, " arrows"); m_frontLayer.addChild(_local4); m_mapObjects.push(_local4); } private function checkOutOfArrows():void{ var _local1:Arrow; var _local2:OutOfArrowsEffect; if (m_nextState){ return; }; if (m_arrowsLeft == 0){ for each (_local1 in m_arrows) { if (_local1.isNeeded()){ return; }; }; _local2 = new OutOfArrowsEffect(); addChild(_local2); m_mapObjects.push(_local2); win(); if ((GrifShootingState.m_vulturesKilled / GrifShootingState.m_arrowsUsed) >= 0.7){ GameData.giveAchievement(Achievements.ACCURACY_70); }; }; } override public function onInit():void{ m_arrowsUsed = 0; m_vulturesKilled = 0; m_currentScores = 0; super.onInit(); m_view = new GrifShootingStateView(); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonReplay.addEventListener(MouseEvent.CLICK, onReplayClick); SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); m_nextState = null; setState(STATE_NORMAL); addChild(m_layersContainer); m_layersContainer.addChild(m_backgroundLayer); m_layersContainer.addChild(m_cloudsLayer); m_layersContainer.addChild(m_staticLayer); m_layersContainer.addChild(m_dynamicLayer); m_layersContainer.addChild(m_frontLayer); m_layersContainer.addChild(m_arrowsLayer); addChild(m_debugSprite); addChild(m_guiLayer); m_world.SetContactListener(m_contactListener); m_bow = new Bow(); addChild(m_bow); var _local1:String = ((m_curLevel)<10) ? ("Level0" + m_curLevel) : ("Level" + m_curLevel); parseLevel(parseClipToXML(new ((ApplicationDomain.currentDomain.getDefinition(_local1) as Class)))); addChild(m_sightClip); m_sightClip.x = m_bow.x; m_sightClip.y = m_bow.y; recalcGui(); m_guiLayer.addChild(m_view); if (m_state == STATE_NOT_INITILIAZED){ setState(STATE_NORMAL); }; update((1 / 30)); super.initDebugDraw(); m_spawnVultureTimer.addEventListener(TimerEvent.TIMER, onSpawnVulture); m_spawnVultureTimer.start(); m_nextStateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onNextStateTimer); m_timer.addEventListener(TimerEvent.TIMER, onTimerTick); m_timer.start(); var _local2:VultureShootingRules = new VultureShootingRules(); addChild(_local2); m_mapObjects.push(_local2); m_view.addChild(new MoreGamesPanel(LinksManager.MINIGAME_SCREEN, true)); GameData.onStartLevel(m_curLevel); } private function spawnObjectOnShelf(_arg1:b2Vec2, _arg2:Number, _arg3:int):void{ m_randomCounter++; if ((m_randomCounter % 13) == 0){ spawnAmmoGhost(_arg1, _arg2, _arg3); } else { spawnVultureOnShelf(_arg1, _arg2, _arg3); }; } private function parseLevel(_arg1:XML):void{ var _local2:MapObject; var _local3:Number; var _local4:Number; var _local5:b2Vec2; var _local6:Number; var _local7:DisplayObject; for each (_arg1 in _arg1.elements("Object")) { _local3 = _arg1.@x; _local4 = _arg1.@y; _local5 = new b2Vec2((_local3 / m_physScale), (_local4 / m_physScale)); _local6 = _arg1.@rotation; if (String(_arg1.@clip_name) != ""){ _local7 = (new ((getDefinitionByName(_arg1.@clip_name) as Class)) as DisplayObject); _local7.x = _local3; _local7.y = _local4; _local7.rotation = _local6; _local7.cacheAsBitmap = true; }; switch (String(_arg1.@type)){ case ParserConst.TYPE_STATIC_BOX: m_allStones.push(createStaticBoxFromClip(_local7, m_staticLayer)); break; case ParserConst.TYPE_GROUND: _local7.scaleY = 0.75; createStaticBoxFromClip(_local7, m_staticLayer); _local7.scaleY = 1; break; case ParserConst.TYPE_CLOUD: createCloud(_local7); break; case ParserConst.TYPE_SHOOTING_POINT: m_bow.x = _local3; m_bow.y = _local4; m_bow.rotation = (_local6 + 90); break; case ParserConst.TYPE_SUN: createSun(_local5); break; case ParserConst.TYPE_BACKGROUND: _local7.scaleX = _arg1.@scaleX; _local7.scaleY = _arg1.@scaleY; m_backgroundLayer.addChild(_local7); break; case ParserConst.TYPE_FRONTGROUND: m_frontLayer.addChild(_local7); break; }; }; for each (_local2 in m_mapObjects) { _local2.goTop(m_backgroundLayer, m_cloudsLayer, m_staticLayer, m_dynamicLayer, m_frontLayer); }; } private function onReplayClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new GrifShootingState(GrifShootingState.m_curLevel)); } override public function handleMouseDown(_arg1:MouseEvent):void{ super.handleMouseDown(_arg1); switch (m_state){ case STATE_NORMAL: if (m_bow.hitTestPoint(_arg1.stageX, _arg1.stageY)){ if (m_arrowsLeft > 0){ m_shootingPower = 10; m_bow.startStretch(); setState(STATE_TAKE_AIM); handleMouseMove(_arg1); }; }; break; }; } public function createCloud(_arg1:DisplayObject):void{ m_cloudsLayer.addChild(_arg1); m_mapObjects.push((_arg1 as Cloud)); } public function createSun(_arg1:b2Vec2):void{ var _local2:b2CircleShape = new b2CircleShape((22 / m_physScale)); var _local3:b2FixtureDef = new b2FixtureDef(); _local3.density = 1; _local3.friction = 0.4; _local3.restitution = 0.3; _local3.shape = _local2; var _local4:b2BodyDef = new b2BodyDef(); _local4.position = _arg1; _local4.type = b2Body.b2_dynamicBody; var _local5:b2Body = m_world.CreateBody(_local4); _local5.CreateFixture(_local3); var _local6:Sun = new Sun(); _local6.connectWithBody(_local5); m_backgroundLayer.addChild(_local5.GetUserData()); var _local7:b2RevoluteJointDef = new b2RevoluteJointDef(); _local7.maxMotorTorque = 0.5; _local7.motorSpeed = 0; _local7.enableMotor = true; _local7.Initialize(m_world.GetGroundBody(), _local5, _arg1); m_world.CreateJoint(_local7); m_mapObjects.push(_local6); } private function updateArrows(_arg1:Number):void{ var _local3:Arrow; var _local4:Number; var _local5:Number; var _local2:Array = new Array(); for each (_local3 in m_arrows) { _local3.update(_arg1); _local4 = (_local3.getBody().GetPosition().y * m_physScale); _local5 = (_local3.getBody().GetPosition().x * m_physScale); if ((((((((_local4 < -200)) || ((_local4 > (Constant.WINDOW_HEIGHT + 200))))) || ((_local5 < -100)))) || ((_local5 > (Constant.WINDOW_WIDTH + 100))))){ _local3.kill(); }; if (!_local3.isDead()){ _local2.push(_local3); } else { _local3.destroyBody(m_world); m_arrowsLayer.removeChild(_local3); }; }; m_arrows = _local2; } public function onBeginContact(_arg1:b2Contact):void{ var _local4:Arrow; var _local2:b2Fixture = _arg1.GetFixtureA(); var _local3:b2Fixture = _arg1.GetFixtureB(); for each (_local4 in m_arrows) { if (_local2 == _local4.getBodyFixture()){ m_arrowBodyToBodyContacts[_local3] = _local4; }; if (_local3 == _local4.getBodyFixture()){ m_arrowBodyToBodyContacts[_local2] = _local4; }; if (_local2 == _local4.getHeadFixture()){ m_arrowHeadsToBodyContacts[_local3] = _local4; if (((((((!(_local3.IsSensor())) && (!(_local4.isStickIn())))) && (_local4.canStickIn()))) && ((m_allStones.indexOf(_local3) == -1)))){ _local4.stopFly(); }; }; if (_local3 == _local4.getHeadFixture()){ m_arrowHeadsToBodyContacts[_local2] = _local4; if (((((((!(_local2.IsSensor())) && (!(_local4.isStickIn())))) && (_local4.canStickIn()))) && ((m_allStones.indexOf(_local3) == -1)))){ _local4.stopFly(); }; }; }; } private function parseClipToXML(_arg1:MovieClip):XML{ var _local4:XML; var _local5:DisplayObject; var _local2:XML = <Level></Level> ; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = <Object/> ; _local5 = _arg1.getChildAt(_local3); if ((_local5 is Cloud)){ _local4.@type = ParserConst.TYPE_CLOUD; } else { if ((_local5 is StaticBoxIsStone)){ _local4.@type = ParserConst.TYPE_STATIC_BOX; } else { if ((_local5 is BowPoint)){ _local4.@type = ParserConst.TYPE_SHOOTING_POINT; } else { if ((_local5 is Sun)){ _local4.@type = ParserConst.TYPE_SUN; } else { if ((_local5 is Frontground)){ _local4.@type = ParserConst.TYPE_FRONTGROUND; } else { _local4.@scaleX = _local5.scaleX; _local4.@scaleY = _local5.scaleY; _local4.@type = ParserConst.TYPE_BACKGROUND; }; }; }; }; }; _local4.@x = int((_local5.x + 0.5)); _local4.@y = int((_local5.y + 0.5)); _local4.@rotation = _local5.rotation; _local4.@clip_name = getQualifiedClassName(_local5); _local2.appendChild(_local4); _local3++; }; return (_local2); } override public function onCleanup():void{ m_spawnVultureTimer.removeEventListener(TimerEvent.TIMER, onSpawnVulture); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonReplay.removeEventListener(MouseEvent.CLICK, onReplayClick); m_nextStateTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, onNextStateTimer); m_timer.removeEventListener(TimerEvent.TIMER, onTimerTick); super.onCleanup(); } override public function update(_arg1:Number):void{ super.update(_arg1); m_bow.update(_arg1); processContacts(); updateArrows(_arg1); updateMapObjects(_arg1); updateScores(); checkOutOfArrows(); recalcGui(); } override public function handleMouseMove(_arg1:MouseEvent):void{ var _local2:Vector3; super.handleMouseMove(_arg1); switch (m_state){ case STATE_TAKE_AIM: _local2 = new Vector3((m_bow.x - _arg1.stageX), (m_bow.y - _arg1.stageY), 0); if (GameData.m_invertedControl){ _local2 = _local2.negate(); }; m_shootingPower = (Constant.MIN_SHOOTING_POWER + ((_local2.length() / 7) * Math.pow((_local2.length() / Constant.MAX_SHOOTING_POWER), 0.4))); if (m_shootingPower < Constant.MIN_SHOOTING_POWER){ m_shootingPower = Constant.MIN_SHOOTING_POWER; }; if (m_shootingPower > Constant.MAX_SHOOTING_POWER){ m_shootingPower = Constant.MAX_SHOOTING_POWER; }; m_sightClip.scaleY = (m_shootingPower / 33); m_sightClip.rotation = _local2.get2DRotation(); m_bow.rotation = (_local2.get2DRotation() + 90); break; case STATE_NORMAL: if (isMouseDown()){ handleMouseDown(_arg1); }; break; }; } private function updateMapObjects(_arg1:Number):void{ var _local3:MapObject; var _local2:Array = new Array(); for each (_local3 in m_mapObjects) { _local3.update(_arg1); if (!_local3.isDead()){ _local2.push(_local3); } else { _local3.onDead(m_world); }; }; m_mapObjects = _local2; } private function win():void{ if (m_nextState == null){ m_wasStar = (m_vulturesKilled >= (m_totalArrowCount / 3)); GameData.onWinLevel(m_curLevel, m_currentScores, m_wasStar, 0); m_nextState = new GrifShootingWinState(); m_spawnVultureTimer.stop(); m_nextStateTimer.start(); }; } override public function handleMouseUp(_arg1:MouseEvent):void{ var _local2:b2Vec2; var _local3:Arrow; super.handleMouseUp(_arg1); if (m_state == STATE_TAKE_AIM){ m_bow.fire(); SoundManager.play(SoundConst.BOW_SHOOT); setState(STATE_NORMAL); _local2 = new b2Vec2((m_bow.x - _arg1.stageX), (m_bow.y - _arg1.stageY)); if (GameData.m_invertedControl){ _local2.NegativeSelf(); }; _local2.Normalize(); _local2.Multiply(m_shootingPower); _local3 = createArrow(new b2Vec2((m_bow.x / m_physScale), (m_bow.y / m_physScale)), _local2); recalcGui(); m_arrowsLeft--; m_arrowsUsed++; }; super.handleMouseUp(_arg1); } private function processContacts():void{ var _local1:* = null; for (_local1 in m_arrowBodyToBodyContacts) { onContactWithArrowBody(m_arrowBodyToBodyContacts[_local1], _local1); }; m_arrowBodyToBodyContacts = new Dictionary(); for (_local1 in m_arrowHeadsToBodyContacts) { onContactWithArrowHeadBody(m_arrowHeadsToBodyContacts[_local1], _local1); }; m_arrowHeadsToBodyContacts = new Dictionary(); } override public function onResume():void{ m_spawnVultureTimer.start(); m_timer.start(); } public static function getInstance():GrifShootingState{ return (m_instance); } } }//package States.GrifShooting import Box2D.Dynamics.*; import Box2D.Dynamics.Contacts.*; import States.PlayState.*; class GrifContactListener extends b2ContactListener { private function GrifContactListener(){ } override public function BeginContact(_arg1:b2Contact):void{ if ((((_arg1.GetFixtureA().GetBody().GetUserData() is Arrow)) && (_arg1.GetFixtureA().GetBody().GetUserData().isNeeded()))){ GrifShootingState.getInstance().onBeginContact(_arg1); return; }; if ((((_arg1.GetFixtureB().GetBody().GetUserData() is Arrow)) && ((_arg1.GetFixtureB().GetBody().GetUserData() as Arrow).isNeeded()))){ GrifShootingState.getInstance().onBeginContact(_arg1); return; }; } }
Section 112
//VultureAmmoGhost (States.GrifShooting.VultureAmmoGhost) package States.GrifShooting { import Box2D.Dynamics.*; import States.PlayState.*; public class VultureAmmoGhost extends MapObject { private var m_isActive:Boolean;// = true private var m_needRun:Boolean;// = false private var m_power:int; private var m_speed:Number; public function VultureAmmoGhost(_arg1:Number){ m_speed = _arg1; cacheAsBitmap = true; } public function setPower(_arg1:int):void{ m_power = _arg1; } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); if (m_body.GetPosition().y > ((Constant.WINDOW_HEIGHT / Constant.PHYS_SCALE) + (300 / Constant.PHYS_SCALE))){ m_isDead = true; }; if (m_body.GetPosition().y < (-300 / Constant.PHYS_SCALE)){ m_isDead = true; }; if (m_needRun){ m_needRun = false; GrifShootingState.getInstance().addArrows(m_power, x, y); } else { if (!m_isActive){ scaleX = (scaleX + (_arg1 * 1.5)); scaleY = (scaleY + (_arg1 * 1.5)); if ((alpha = (alpha - 0.1)) <= 0){ m_isDead = true; }; }; }; } override public function isDead():Boolean{ return (m_isDead); } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_isActive = false; m_needRun = true; if (Math.random() < 0.5){ SoundManager.play(SoundConst.ADD_ARROWS_0); } else { SoundManager.play(SoundConst.ADD_ARROWS_1); }; _arg1.kill(); }; } override public function onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ onArrowContact(_arg1, _arg2); } } }//package States.GrifShooting
Section 113
//VultureShelf (States.GrifShooting.VultureShelf) package States.GrifShooting { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import States.PlayState.*; public class VultureShelf extends MapObject { private var m_speed:Number; private var m_movingSpeed:Number;// = 1.66666666666667 private var m_isMovingDown:Boolean;// = true public function VultureShelf(_arg1:Number, _arg2:b2Vec2){ m_speed = _arg1; } override public function onDead(_arg1:b2World):void{ _arg1.DestroyBody(m_body); parent.removeChild(this); } override public function update(_arg1:Number):void{ m_body.SetLinearVelocity(new b2Vec2(0, m_speed)); m_body.SetAngle(0); if (m_body.GetPosition().y > ((Constant.WINDOW_HEIGHT / Constant.PHYS_SCALE) + (300 / Constant.PHYS_SCALE))){ m_isDead = true; }; if (m_body.GetPosition().y < (-300 / Constant.PHYS_SCALE)){ m_isDead = true; }; } } }//package States.GrifShooting
Section 114
//AddPointsEffect (States.PlayState.AddPointsEffect) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; import flash.text.*; public class AddPointsEffect extends MapObject { public var m_label:TextField; private var m_startX:Number; private var m_sign:MovieClip; public function AddPointsEffect(_arg1:int, _arg2:int, _arg3:Number, _arg4:Number, _arg5=""){ m_label.text = (("+" + _arg1.toString()) + _arg5); this.x = _arg3; this.y = _arg4; m_startX = _arg3; switch (_arg2){ case 2: m_sign = new DoubleSave(); break; case 3: m_sign = new TripleSave(); break; }; if (m_sign){ addChild(m_sign); m_sign.y = -18; }; } override public function isDead():Boolean{ return ((m_liveTime > 1.7)); } override public function update(_arg1:Number):void{ var _local3:Number; var _local4:Number; m_liveTime = (m_liveTime + _arg1); y = (y - (_arg1 * 65)); x = (m_startX + (Math.sin((m_liveTime * 4)) * (10 + (m_liveTime * 4)))); var _local2:Number = 0.5; _local3 = 1.6; if ((((m_liveTime > _local2)) && ((m_liveTime < _local3)))){ alpha = (1 - ((m_liveTime - _local2) / (_local3 - _local2))); _local4 = (1 + ((0.4 * (m_liveTime - _local2)) / (_local3 - _local2))); scaleX = _local4; scaleY = _local4; }; } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 115
//AmmoGhost (States.PlayState.AmmoGhost) package States.PlayState { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import flash.display.*; public class AmmoGhost extends MapObject { private var m_isActive:Boolean;// = true private var m_needRun:Boolean;// = false private var m_power:int; public function AmmoGhost(){ cacheAsBitmap = true; } override public function isDead():Boolean{ return (m_isDead); } public function setPower(_arg1:int):void{ m_power = _arg1; } override public function update(_arg1:Number):void{ var _local2:Sprite; m_liveTime = (m_liveTime + _arg1); m_body.SetPosition(new b2Vec2(m_body.GetPosition().x, (m_body.GetPosition().y + (Math.sin((m_liveTime * 2.5)) * 0.007)))); if (m_needRun){ m_needRun = false; PlayState.getInstance().getWorld().DestroyBody(m_body); PlayState.getInstance().addArrows(m_power, x, y); this.cacheAsBitmap = false; } else { if (!m_isActive){ _local2 = (m_body.GetUserData() as Sprite); _local2.scaleX = (_local2.scaleX + (_arg1 * 1.5)); _local2.scaleY = (_local2.scaleY + (_arg1 * 1.5)); if ((_local2.alpha = (_local2.alpha - 0.1)) <= 0){ _local2.alpha = 0; m_isDead = true; }; }; }; } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_isActive = false; m_needRun = true; if (Math.random() < 0.5){ SoundManager.play(SoundConst.ADD_ARROWS_0); } else { SoundManager.play(SoundConst.ADD_ARROWS_1); }; }; } } }//package States.PlayState
Section 116
//Arrow (States.PlayState.Arrow) package States.PlayState { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Utils.*; import flash.display.*; public class Arrow extends MovieClip { private var m_isDead:Boolean;// = false private var m_wasBodyContact:Boolean;// = false private var m_wasAnyContact:Boolean;// = false private var m_ropesKilled:int;// = 0 private var m_arrowHeadFixture:b2Fixture;// = null var m_isNextFrame:Boolean;// = false private var m_isFreeFly:Boolean;// = false private var m_lastVelocity:b2Vec2; private var m_liveTime:Number;// = 0 var m_isMassKilled:Boolean;// = false private var m_stickInTime:Number;// = 0 private var m_body:b2Body;// = null private var m_bodyFixture:b2Fixture;// = null private var m_isStickIn:Boolean;// = false public static const m_halfWidth:Number = 1; public static const m_halfHeight:Number = 12; public function Arrow(_arg1:b2Fixture, _arg2:b2Fixture, _arg3:b2Body){ m_lastVelocity = new b2Vec2(); super(); m_arrowHeadFixture = _arg1; m_bodyFixture = _arg2; m_body = _arg3; var _local4:int; while (_local4 < 100) { calcDirection((1 / 30)); _local4++; }; this.scaleX = 1.0001; this.scaleY = 1.0001; } public function calcDirection(_arg1:Number):void{ var _local2:b2Vec2; var _local3:Number; if (!m_wasAnyContact){ _local2 = m_body.GetLinearVelocity(); _local3 = MathUtils.GradToRad(new Vector3(_local2.x, _local2.y, 0).get2DRotation()); if (!isNaN(_local3)){ m_body.SetAngle(_local3); }; }; } public function contactWithManBody(_arg1:b2Body, _arg2:Boolean):Boolean{ var _local3:MovieClip; var _local4:MovieClip; if (getRopesKilled() != 0){ return (false); }; if (!m_wasBodyContact){ _local3 = (_arg1.GetUserData() as MovieClip); if (_local3){ if ((((((((_local3 is FaceColors_1)) || ((_local3 is FaceColors_2)))) || ((_local3 is FaceColors_3)))) || ((_local3 is FaceColors_4)))){ trace("Head Shot"); _local4 = (_local3.getChildByName("head_damage") as MovieClip); (_local3.getChildByName("head_damage") as MovieClip).gotoAndStop((_local4.currentFrame + 1)); } else { _local3.gotoAndStop((_local3.currentFrame + 1)); }; }; m_wasBodyContact = true; if (_arg2){ PlayState.getInstance().onManCry(); SoundManager.play(MathUtils.anyOfString(SoundConst.CRY_0, SoundConst.CRY_1, SoundConst.CRY_2, SoundConst.CRY_3, SoundConst.CRY_4, SoundConst.CRY_5, SoundConst.CRY_6, SoundConst.CRY_7)); }; return (true); }; return (false); } public function resumeFly():void{ m_body.SetLinearVelocity(m_lastVelocity); } public function canStickIn():Boolean{ return ((m_lastVelocity.LengthSquared() >= (15 * 15))); } public function update(_arg1:Number):void{ var _local2:b2MassData; if (m_isStickIn){ m_stickInTime = (m_stickInTime + _arg1); }; if (((!(m_isMassKilled)) && (m_isStickIn))){ if (!m_isNextFrame){ m_isNextFrame = true; } else { m_isMassKilled = true; _local2 = new b2MassData(); m_body.GetMassData(_local2); _local2.mass = (_local2.mass / 15); m_body.SetMassData(_local2); }; }; m_lastVelocity = m_body.GetLinearVelocity().Copy(); m_liveTime = (m_liveTime + _arg1); calcDirection(_arg1); } public function stopFly():void{ m_body.SetLinearVelocity(new b2Vec2()); } public function onAnyContact():void{ m_wasAnyContact = true; } public function stickIn():void{ m_isStickIn = true; m_arrowHeadFixture.SetSensor(true); m_bodyFixture.SetSensor(true); } public function canInjure():Boolean{ if (((((PlayState.getInstance()) && ((PlayState.m_curLevel == 50)))) && (GameData.haveAchievement(Achievements.TWO_HOURS_PLAYED)))){ return (false); }; return ((m_lastVelocity.LengthSquared() >= (4 * 4))); } public function isStickIn():Boolean{ return (m_isStickIn); } public function kill():void{ m_isDead = true; } public function getBody():b2Body{ return (m_body); } public function getHeadFixture():b2Fixture{ return (m_arrowHeadFixture); } public function getBodyFixture():b2Fixture{ return (m_bodyFixture); } public function setFreeFly():void{ m_isFreeFly = true; } public function getRopesKilled():int{ return (m_ropesKilled); } public function wasAnyContact():Boolean{ return (m_wasAnyContact); } public function onKillRope():void{ m_body.SetLinearVelocity(new b2Vec2((m_body.GetLinearVelocity().x * 0.6), (m_body.GetLinearVelocity().y * 0.6))); m_ropesKilled++; } public function destroyBody(_arg1:b2World):void{ _arg1.DestroyBody(m_body); m_body = null; } public function isDead():Boolean{ return (m_isDead); } public function isNeeded():Boolean{ if (((m_isStickIn) && ((m_stickInTime > 0.2)))){ return (false); }; if (!m_isFreeFly){ if (((((m_body.GetPosition().x * Constant.PHYS_SCALE) < -200)) || (((m_body.GetPosition().x * Constant.PHYS_SCALE) > (Constant.WINDOW_WIDTH + 200))))){ return (false); }; }; if ((m_body.GetPosition().y * Constant.PHYS_SCALE) > Constant.WINDOW_HEIGHT){ return (false); }; if (m_liveTime > 10){ return (false); }; return (((!(m_isDead)) && (m_body.IsAwake()))); } } }//package States.PlayState
Section 117
//AutoreleaseClip (States.PlayState.AutoreleaseClip) package States.PlayState { import Box2D.Dynamics.*; public class AutoreleaseClip extends MapObject { override public function update(_arg1:Number):void{ if (currentFrame == totalFrames){ m_isDead = true; }; } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } } }//package States.PlayState
Section 118
//Blood (States.PlayState.Blood) package States.PlayState { import Box2D.Dynamics.*; public class Blood extends MapObject { public function Blood(){ cacheAsBitmap = true; } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); if (m_liveTime > 0.3){ alpha = (alpha - (1.5 * _arg1)); }; } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); _arg1.DestroyBody(m_body); } override public function isDead():Boolean{ return ((alpha <= 0)); } } }//package States.PlayState
Section 119
//Bow (States.PlayState.Bow) package States.PlayState { import flash.geom.*; import flash.display.*; import Entity.*; public class Bow extends SimpleStatableObject { private const STATE_NORMAL:String = "normal"; private const STATE_TELEPORT_1:String = "teleport1"; private const STATE_TELEPORT_2:String = "teleport2"; private var m_clip:BowClip; private var m_blackHoleEnd:TeleportBack; private var m_nextPos:Point; private var m_blackHoleStart:TeleportBack; private var m_layer:Sprite; public function Bow(){ m_blackHoleStart = new TeleportBack(); m_blackHoleEnd = new TeleportBack(); m_clip = new BowClip(); super(); if (PlayState.getInstance()){ m_layer = PlayState.getInstance().getArrowsLayer(); }; addChild(m_clip); m_clip.m_field.alpha = 0; buttonMode = true; } public function startStretch():void{ m_clip.gotoAndPlay("stretch"); } override protected function vUpdate(_arg1:Number):void{ switch (m_state){ case STATE_NORMAL: if (m_blackHoleEnd.parent){ m_blackHoleEnd.alpha = (m_blackHoleEnd.alpha - (1 * _arg1)); if (m_blackHoleEnd.alpha <= 0){ m_layer.removeChild(m_blackHoleEnd); }; }; break; case STATE_TELEPORT_1: m_blackHoleStart.alpha = (m_blackHoleStart.alpha + (2 * _arg1)); m_clip.rotation = (m_clip.rotation + ((360 * _arg1) * 2)); m_clip.scaleX = (m_clip.scaleX - (1 * _arg1)); m_clip.scaleY = (m_clip.scaleY - (1 * _arg1)); m_clip.alpha = (m_clip.alpha - (1 * _arg1)); if (m_clip.scaleX <= 0){ m_blackHoleStart.alpha = 1; x = m_nextPos.x; y = m_nextPos.y; changeState(STATE_TELEPORT_2); }; break; case STATE_TELEPORT_2: m_blackHoleStart.alpha = (m_blackHoleStart.alpha - (1 * _arg1)); m_blackHoleEnd.alpha = (m_blackHoleEnd.alpha + (2 * _arg1)); m_clip.rotation = (m_clip.rotation - ((360 * _arg1) * 2)); m_clip.scaleX = (m_clip.scaleX + (1 * _arg1)); m_clip.scaleY = (m_clip.scaleY + (1 * _arg1)); m_clip.alpha = (m_clip.alpha + (1 * _arg1)); if (m_clip.scaleX >= 1){ m_blackHoleEnd.alpha = 1; m_clip.scaleX = 1; m_clip.scaleY = 1; changeState(STATE_NORMAL); m_layer.removeChild(m_blackHoleStart); PlayState.getInstance().goNormalState(); m_clip.rotation = 0; m_clip.alpha = 1; }; break; }; } override protected function onChangeState(_arg1:String, _arg2:String):void{ if (_arg2 == STATE_NORMAL){ buttonMode = true; } else { buttonMode = false; }; } public function startTeleport(_arg1:Point):void{ changeState(STATE_TELEPORT_1); m_nextPos = _arg1; m_layer.addChild(m_blackHoleStart); m_blackHoleStart.alpha = 0; m_blackHoleStart.x = this.x; m_blackHoleStart.y = this.y; m_layer.addChild(m_blackHoleEnd); m_blackHoleEnd.alpha = 0; m_blackHoleEnd.x = _arg1.x; m_blackHoleEnd.y = _arg1.y; } public function fire():void{ m_clip.gotoAndPlay("fire"); } } }//package States.PlayState
Section 120
//Camera (States.PlayState.Camera) package States.PlayState { import flash.display.*; public class Camera { protected var m_guiLayer:Sprite; protected var m_stateClip:Sprite; public function onShoot(_arg1:Arrow):void{ } public function onHangerDead():void{ } public function update(_arg1:Number):void{ } public function onKillArrow():void{ } public function canShoot():Boolean{ return (true); } public function setGibbet(_arg1:Gibbet):void{ } public function setGUILayer(_arg1:Sprite):void{ m_guiLayer = _arg1; } public function onHangerSave():void{ } public function setStateClip(_arg1:Sprite):void{ m_stateClip = _arg1; } } }//package States.PlayState
Section 121
//Cloud (States.PlayState.Cloud) package States.PlayState { public class Cloud extends MapObject { private var m_iSpeed:Number; private var m_speed:Number; private var m_x:int;// = 0 public function Cloud(){ m_speed = Math.round((15 + (Math.random() * 15))); scaleX = 1.001; } override public function update(_arg1:Number):void{ x = (x + (m_speed * _arg1)); if ((x - width) > 640){ x = -(width); m_speed = (15 + (Math.random() * 15)); }; } } }//package States.PlayState
Section 122
//Cow (States.PlayState.Cow) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class Cow extends MapObject { private var m_clip:MovieClip; private var m_isCry:Boolean;// = false public function Cow(){ m_clip = new CowNormal(); addChild(m_clip); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (!m_isCry){ SoundManager.play(SoundConst.MOO); removeChild(m_clip); m_clip = new CowCry(); addChild(m_clip); m_isCry = true; }; } override public function update(_arg1:Number):void{ if (m_isCry){ if (m_clip.currentFrame == m_clip.totalFrames){ removeChild(m_clip); m_clip = new CowNormal(); addChild(m_clip); m_isCry = false; }; }; } } }//package States.PlayState
Section 123
//Frontground (States.PlayState.Frontground) package States.PlayState { import flash.display.*; public class Frontground extends MovieClip { } }//package States.PlayState
Section 124
//Gibbet (States.PlayState.Gibbet) package States.PlayState { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Utils.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import flash.display.*; import Ragdoll.*; public class Gibbet extends MapObject { private var m_arrowDamage:Number;// = 0.15 private var m_destroyBuffer:Array; private var m_healthWithoutDamage:Number;// = 1 private var m_ragdoll:HumanRagdoll; private var m_isSafed:Boolean;// = false private var m_arrowsInBody:int;// = 0 private var m_comixCloudTime:Number;// = -1 private var m_persID:int; private var m_comixCloudProb:Number;// = 0 private var m_faceColor:MovieClip; private var m_comixCloud:MovieClip; private var m_dieSpeed:Number;// = 0.03 private var m_world:b2World; private var m_showCloudState:int;// = 0 private var m_injureTime:Number;// = -1 private var m_healthClip:MovieClip; private var m_chain:Array; private var m_health:Number;// = 1 public function Gibbet(_arg1:b2Vec2, _arg2:String, _arg3:int, _arg4:b2World, _arg5:int, _arg6:Boolean){ var _local7:int; var _local15:b2Vec2; var _local19:b2Body; var _local20:b2Body; var _local21:b2Body; var _local22:b2Vec2; m_chain = new Array(); m_destroyBuffer = new Array(); super(); m_world = _arg4; m_dieSpeed = MathUtils.RandomRange(0.025, 0.035); if (GameData.haveAchievement(Achievements.LEVEL_30_IN_6_SHOT)){ m_dieSpeed = (m_dieSpeed * 0.9); }; var _local8:b2Vec2 = new b2Vec2((1 / Constant.PHYS_SCALE), (3 / Constant.PHYS_SCALE)); var _local9:b2BodyDef = new b2BodyDef(); _local9.position.x = _arg1.x; _local9.type = b2Body.b2_dynamicBody; var _local10:b2FixtureDef = new b2FixtureDef(); _local10.density = 30; _local10.friction = 0.5; _local10.restitution = 0.1; _local10.isSensor = true; var _local11:b2PolygonShape = new b2PolygonShape(); _local11.SetAsBox(_local8.x, _local8.y); _local10.shape = _local11; _local7 = 0; while (_local7 < _arg3) { _local9.position.y = ((_arg1.y + ((_local8.y * _local7) * 2)) - (1 / Constant.PHYS_SCALE)); _local19 = m_world.CreateBody(_local9); _local19.CreateFixture(_local10); _local19.SetUserData(new Rope()); addChild(_local19.GetUserData()); m_chain.push(_local19); _local7++; }; var _local12:b2RevoluteJointDef = new b2RevoluteJointDef(); _local12.lowerAngle = (-(Math.PI) / 2); _local12.upperAngle = (Math.PI / 2); _local12.enableLimit = true; _local7 = 0; while (_local7 < (m_chain.length - 1)) { _local20 = m_chain[_local7]; _local21 = m_chain[(_local7 + 1)]; _local22 = new b2Vec2(((_local20.GetPosition().x + _local21.GetPosition().x) / 2), ((_local20.GetPosition().y + _local21.GetPosition().y) / 2)); _local12.Initialize(_local20, _local21, _local22); m_world.CreateJoint(_local12); _local7++; }; var _local13:b2RevoluteJointDef = new b2RevoluteJointDef(); _local13.collideConnected = true; _local13.Initialize(m_world.GetGroundBody(), m_chain[0], new b2Vec2(_arg1.x, (_arg1.y - (3 / Constant.PHYS_SCALE)))); m_world.CreateJoint(_local13); var _local14:Boolean; if (_arg2 != HumanRagdoll.HEAD){ m_dieSpeed = (m_dieSpeed / 3); }; switch (_arg2){ case HumanRagdoll.HEAD: _local15 = new b2Vec2(0, 0); _local14 = false; break; case HumanRagdoll.LEFT_LOWER_HAND: _local15 = new b2Vec2((31 / Constant.PHYS_SCALE), (-5 / Constant.PHYS_SCALE)); _local14 = false; break; case HumanRagdoll.RIGHT_LOWER_HAND: _local15 = new b2Vec2((-31 / Constant.PHYS_SCALE), (-5 / Constant.PHYS_SCALE)); _local14 = false; break; case HumanRagdoll.LEFT_LOWER_LEG: _local15 = new b2Vec2((4 / Constant.PHYS_SCALE), (55 / Constant.PHYS_SCALE)); _local14 = true; break; case HumanRagdoll.RIGHT_LOWER_LEG: _local15 = new b2Vec2((-4 / Constant.PHYS_SCALE), (55 / Constant.PHYS_SCALE)); _local14 = true; break; }; var _local16:b2Vec2 = (m_chain[(m_chain.length - 1)] as b2Body).GetPosition().Copy(); m_ragdoll = new HumanRagdoll(new b2Vec2((_local16.x + _local15.x), (_local16.y + _local15.y)), m_world, _local14, _arg5, _arg6); m_faceColor = (m_ragdoll.getBodyByName(HumanRagdoll.HEAD).GetUserData() as MovieClip); addChild(m_ragdoll); var _local17:b2Body = m_ragdoll.getBodyByName(_arg2); var _local18:b2RevoluteJointDef = new b2RevoluteJointDef(); _local18.Initialize(_local17, m_chain[(m_chain.length - 1)], _local16); m_world.CreateJoint(_local18); m_healthClip = new HealthBar(); addChild(m_healthClip); calcHealthClip(false); calcComixCloudPos(); m_persID = _arg5; if (GameData.haveAchievement(Achievements.LEVEL_44_IN_6_SHOT)){ m_arrowDamage = 0.12; }; } private function calcHealthClip(_arg1:Boolean):void{ var _local2:b2Vec2 = getHeadPosition(); m_healthClip.x = ((_local2.x * Constant.PHYS_SCALE) + 15); m_healthClip.y = ((_local2.y * Constant.PHYS_SCALE) - 11); var _local3:int = int(((1 - m_health) * 3)); m_healthClip.gotoAndStop(int((m_healthClip.totalFrames * (1 - m_health)))); if (m_isSafed){ if (!m_isDead){ m_faceColor.gotoAndStop((5 + _local3)); } else { m_faceColor.gotoAndStop(4); }; } else { if (!m_isDead){ if (_arg1){ m_injureTime = 0.6; m_faceColor.gotoAndStop((8 + _local3)); } else { if (m_injureTime < 0){ m_faceColor.gotoAndStop((1 + _local3)); }; }; } else { m_faceColor.gotoAndStop(4); }; }; m_faceColor.addChild(m_faceColor.getChildByName("head_damage")); } public function getPersID():int{ return (m_persID); } private function checkRopeKill(_arg1:Arrow, _arg2:b2Fixture):void{ var _local3:b2Body; var _local4:Boolean; var _local5:int; var _local6:b2Body; var _local7:b2MassData; if (((!((m_chain.indexOf(_arg2.GetBody()) == -1))) && (!(m_isSafed)))){ _local3 = _arg2.GetBody(); SoundManager.play(MathUtils.anyOfString(SoundConst.TAPE_ROPE_0, SoundConst.TAPE_ROPE_1, SoundConst.TAPE_ROPE_2)); _arg1.onKillRope(); _local4 = false; _local5 = 0; while (_local5 < m_chain.length) { _local6 = m_chain[_local5]; if (_local3 == _local6){ _local4 = true; m_destroyBuffer.push(_local6); } else { if (_local4){ _local7 = new b2MassData(); _local6.GetMassData(_local7); _local7.mass = (_local7.mass / 40); _local6.SetMassData(_local7); } else { _local6.ApplyImpulse(new b2Vec2(-0.2, MathUtils.RandomRange(-1, 1)), _local6.GetPosition()); }; }; _local5++; }; PlayState.getInstance().onHangerSafe(_arg1.getRopesKilled(), this); m_healthClip.visible = false; m_isSafed = true; }; } private function calcComixCloudPos():void{ var _local1:b2Vec2; if (m_comixCloud){ _local1 = getHeadPosition(); m_comixCloud.x = ((_local1.x * Constant.PHYS_SCALE) - 14); m_comixCloud.y = (_local1.y * Constant.PHYS_SCALE); }; } public function getHeadPosition():b2Vec2{ return (m_ragdoll.getBodyByName(HumanRagdoll.HEAD).GetPosition().Copy()); } override public function isItYourFixture(_arg1:b2Fixture):Boolean{ var _local2:b2Body = _arg1.GetBody(); return (((!((m_chain.indexOf(_local2) == -1))) || (!((m_ragdoll.getAllPaths().indexOf(_local2) == -1))))); } public function setComixCloud(_arg1:MovieClip, _arg2:Number=1):void{ m_comixCloud = _arg1; m_comixCloud.visible = false; m_comixCloudProb = _arg2; } public function getRagdoll():HumanRagdoll{ return (m_ragdoll); } override public function isDead():Boolean{ return (false); } public function showCloud(_arg1:Number=2.5):void{ if (m_comixCloud){ if (((!(isDead())) && ((m_comixCloudProb > Math.random())))){ m_comixCloudTime = _arg1; m_comixCloud.visible = true; m_comixCloudProb = 0; m_comixCloud.alpha = 0; m_showCloudState = 0; }; }; } public function isKilled():Boolean{ return (m_isDead); } override public function update(_arg1:Number):void{ var _local2:b2Body; m_injureTime = (m_injureTime - _arg1); if (((m_comixCloud) && (m_comixCloud.visible))){ switch (m_showCloudState){ case 0: if ((m_comixCloud.alpha = (m_comixCloud.alpha + (4 * _arg1))) >= 1){ m_showCloudState = 1; m_comixCloud.alpha = 1; }; break; case 1: if ((m_comixCloudTime = (m_comixCloudTime - _arg1)) < 0){ m_showCloudState = 2; }; break; case 2: if ((m_comixCloud.alpha = (m_comixCloud.alpha - (4 * _arg1))) <= 0){ m_showCloudState = 3; m_comixCloud.visible = false; }; break; }; }; if (((!(m_isSafed)) && (!(m_isDead)))){ m_healthWithoutDamage = (m_healthWithoutDamage - (m_dieSpeed * _arg1)); if ((m_health = (m_health - (m_dieSpeed * _arg1))) <= 0){ SoundManager.play(SoundConst.DEATH_CRY); PlayState.getInstance().onHangerDead(this); m_isDead = true; m_healthClip.visible = false; if (m_comixCloud){ m_comixCloud.visible = false; }; }; }; if (m_destroyBuffer.length != 0){ for each (_local2 in m_destroyBuffer) { if (_local2.GetUserData()){ _local2.GetUserData().parent.removeChild(_local2.GetUserData()); }; m_world.DestroyBody(_local2); }; m_destroyBuffer.length = 0; m_chain.length = 0; }; calcHealthClip(false); calcComixCloudPos(); } override public function goTop(_arg1:Sprite, _arg2:Sprite, _arg3:Sprite, _arg4:Sprite, _arg5:Sprite):void{ _arg5.addChild(m_healthClip); if (m_comixCloud){ _arg5.addChild(m_comixCloud); }; } public function getHealth():Number{ return (m_health); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (_arg1.canInjure()){ if (m_ragdoll.getAllPaths().indexOf(_arg2.GetBody()) != -1){ m_arrowsInBody++; if (_arg1.contactWithManBody(_arg2.GetBody(), !(m_isDead))){ if (!m_isDead){ PlayState.getInstance().createBlood(_arg2.GetBody().GetPosition()); }; if (!m_isSafed){ m_health = (m_health - m_arrowDamage); showCloud(); }; calcHealthClip(true); }; }; }; checkRopeKill(_arg1, _arg2); } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ checkRopeKill(_arg1, _arg2); } public function makeLookUgly():void{ m_healthClip.visible = false; m_faceColor.gotoAndStop(4); m_dieSpeed = 0; } public function haveChainSection(_arg1:b2Body):Boolean{ return (!((m_chain.indexOf(_arg1) == -1))); } public function showCloudNow():void{ m_comixCloudTime = Number.MAX_VALUE; m_comixCloud.visible = true; m_showCloudState = 1; } } }//package States.PlayState
Section 125
//HedgehogGhost (States.PlayState.HedgehogGhost) package States.PlayState { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Utils.*; import flash.display.*; public class HedgehogGhost extends MapObject { private var m_isActive:Boolean;// = true private var m_needRun:Boolean;// = false private var m_charge:int; private var m_arrow:Arrow; private var m_rotatedPath:DisplayObject; private var m_rotationSpeed:Number;// = 70 public function HedgehogGhost(){ m_rotatedPath = getChildByName("m_rotatedPath"); } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_arrow = _arg1; m_isActive = false; m_needRun = true; SoundManager.play(SoundConst.ARROW_GHOST); }; } public function setRotationSpeed(_arg1:Number):void{ m_rotationSpeed = _arg1; } override public function update(_arg1:Number):void{ var _local2:int; var _local3:Number; var _local4:b2Vec2; m_liveTime = (m_liveTime + _arg1); if (!m_rotatedPath){ return; }; m_rotatedPath.rotation = (m_rotatedPath.rotation + (m_rotationSpeed * _arg1)); if (m_needRun){ if (m_charge != 1){ m_arrow.kill(); }; m_needRun = false; _local2 = 0; while (_local2 < m_charge) { _local3 = ((MathUtils.GradToRad(m_rotatedPath.rotation) - (Math.PI / 2)) - (((_local2 * Math.PI) * 2) / m_charge)); _local4 = new b2Vec2(Math.cos(_local3), Math.sin(_local3)); _local4.Multiply(((Constant.MIN_SHOOTING_POWER + Constant.MAX_SHOOTING_POWER) / 2)); PlayState.getInstance().getWorld().DestroyBody(m_body); PlayState.getInstance().createArrow(m_body.GetPosition().Copy(), _local4); _local2++; }; } else { if (!m_isActive){ scaleX = (scaleX + 0.03); scaleY = (scaleY + 0.03); if ((alpha = (alpha - 0.08)) <= 0){ alpha = 0; m_isDead = true; }; }; }; } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); _arg1.DestroyBody(m_body); } override public function isDead():Boolean{ return (m_isDead); } public function setCharge(_arg1:int){ m_charge = _arg1; } public function initRotation():void{ m_rotatedPath.rotation = rotation; rotation = 0; } } }//package States.PlayState
Section 126
//HintText (States.PlayState.HintText) package States.PlayState { import flash.display.*; public class HintText extends MovieClip { } }//package States.PlayState
Section 127
//Levels (States.PlayState.Levels) package States.PlayState { public class Levels { private static const LEVEL_27:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="344" rotation="0" clip_name="Back4"/> <Object type="shooting_point" x="74" y="412" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="115" y="222" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" type="background" x="284" y="233" rotation="0" clip_name="tree_10"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="572" y="374" rotation="-42.00006103515625" clip_name="ArrowGhost1"/> <Object type="gibbet_obliquely" inverted="false" x="75" y="235" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="56" y="268" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="true" x="21" y="347" rotation="0" clip_name="ComposedStone99"/> <Object type="static_box" is_stone="false" x="89" y="217" rotation="0" clip_name="GibbetStick"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="227" y="222" rotation="-0.0008697509765625" clip_name="ArrowGhost1"/> <Object type="teleport_ghost" x="225" y="293" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="572" y="259" rotation="-42.00006103515625" clip_name="ArrowGhost1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="115" y="106" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="75" y="118" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="56" y="152" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="89" y="100" rotation="0" clip_name="GibbetStick"/> <Object type="ammo_ghost" power="5" x="420" y="128" rotation="0" clip_name="AmmoGhost5"/> <Object type="static_box" is_stone="true" x="706" y="78" rotation="0" clip_name="ComposedStone99"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="552" y="99" rotation="0" clip_name="HangerPoint"/> <Object type="points_ghost" power="500" x="507" y="410" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="423" y="410" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="528" y="404" rotation="0" clip_name="flower_6"/> <Object scaleX="1" scaleY="1" width="50.85" height="25.2" type="frontground" x="114" y="421" rotation="0" clip_name="flower_5"/> <Object type="vulture" inverted="false" x="61" y="72" rotation="0" clip_name="VultureHere"/> <Object type="cloud" x="671" y="76" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="487" y="18" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="284" y="40" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="157" y="36" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-71" y="18" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-260" y="49" rotation="0" clip_name="Cloud0"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="107" y="212" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="107" y="95" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="55" y="216" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="55" y="100" rotation="0" clip_name="Screw"/> </Level> ; private static const LEVEL_28:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="358" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="295" y="284" rotation="0" clip_name="tree_3"/> <Object type="dynamic_box" x="222" y="431" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="222" y="406" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="222" y="381" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="222" y="356" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="222" y="331" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="222" y="306" rotation="0" clip_name="Box"/> <Object type="shooting_point" x="593" y="307" rotation="-89.99563598632813" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="208" y="74" rotation="0" clip_name="HangerPoint"/> <Object type="tnt_barrel" x="272" y="210" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="338" y="218" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="338" y="193" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="307" y="249" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="273" y="249" rotation="0" clip_name="Stone2"/> <Object type="teleport_ghost" x="134" y="222" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="99" y="379" rotation="33.00028991699219" clip_name="ArrowGhost1"/> <Object type="dynamic_box" x="338" y="168" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="338" y="143" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="338" y="119" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="338" y="94" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="341" y="249" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="410" y="249" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="376" y="249" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="444" y="249" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="513" y="249" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="479" y="249" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="547" y="249" rotation="0" clip_name="Stone1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="600" y="188" rotation="-69.99934387207031" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="209" y="54" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="49" y="105" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="50" y="84" rotation="0" clip_name="Stone1"/> <Object type="tnt_barrel" x="289" y="423" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="46" y="426" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="594" y="406" rotation="0" clip_name="flower_0"/> <Object type="sun" x="569" y="72" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="439" y="37" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="643" y="77" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="299" y="41" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="98" y="81" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-50" y="22" rotation="0" clip_name="Cloud1"/> </Level> ; private static const LEVEL_23:XML = null; private static const LEVEL_25:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="344" rotation="0" clip_name="Back4"/> <Object type="shooting_point" x="609" y="416" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="103" y="153" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="102" y="337" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="45" y="350" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="27" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="true" x="431" y="349" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="431" y="383" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="431" y="417" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="431" y="451" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="471" y="268" rotation="0" clip_name="tree_9"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="-60" charge="4" x="200" y="233" rotation="45" clip_name="ArrowGhost4"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="296" y="153" rotation="0" clip_name="HangerPoint"/> <Object type="teleport_ghost" x="274" y="408" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="false" x="63" y="333" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="27" y="265" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="27" y="200" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="63" y="149" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="152" y="149" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="242" y="149" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="290" y="149" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="352" y="162" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="352" y="196" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="352" y="230" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="352" y="264" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="26" y="332" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="26" y="149" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="96" y="144" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="288" y="144" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="95" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" type="background" x="113" y="383" rotation="0" clip_name="BgStones"/> <Object type="vulture" inverted="false" x="426" y="312" rotation="0" clip_name="VultureHere"/> <Object type="cloud" x="119" y="23" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="304" y="6" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="547" y="37" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="-46" y="31" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="411" y="84" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-84" y="94" rotation="0" clip_name="Cloud9"/> <Object scaleX="1" scaleY="1" width="50.85" height="25.2" type="frontground" x="319" y="420" rotation="0" clip_name="flower_5"/> </Level> ; private static const LEVEL_29:XML = null; private static const LEVEL_21:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="330" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="381" y="161" rotation="0" clip_name="tree_7"/> <Object type="shooting_point" x="465" y="386" rotation="-45" clip_name="BowPoint"/> <Object type="static_box" is_stone="true" x="236" y="433" rotation="0" clip_name="Stone2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="313" y="153" rotation="0" clip_name="HangerPoint"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="104" y="141" rotation="100.00105285644531" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="104" y="181" rotation="89.9947509765625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="104" y="222" rotation="70.0001220703125" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="237" y="299" rotation="-59.99946594238281" clip_name="ArrowGhost1"/> <Object type="gibbet_obliquely" inverted="true" x="339" y="164" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="357" y="200" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="321" y="147" rotation="0" clip_name="GibbetStick"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="237" y="360" rotation="-1.00006103515625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="48" y="383" rotation="34.00025939941406" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="236" y="399" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="289" y="276" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="322" y="276" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="356" y="276" rotation="0" clip_name="Stone2"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="104" y="262" rotation="1.00006103515625" clip_name="ArrowGhost1"/> <Object type="sun" x="99" y="75" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="357" y="147" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="305" y="142" rotation="0" clip_name="RopeRings"/> <Object type="points_ghost" power="500" x="308" y="112" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="113" y="427" rotation="0" clip_name="herb"/> <Object type="cloud" x="137" y="26" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="408" y="30" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="637" y="76" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-33" y="68" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-233" y="17" rotation="0" clip_name="Cloud5"/> </Level> ; private static const LEVEL_0:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="true" x="559" y="350" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="cloud" x="108" y="96" rotation="0" clip_name="Cloud3"/> <Object x="0" y="0" rotation="0" clip_name="ToPullBowHint"/> <Object type="cloud" x="374" y="147" rotation="0" clip_name="Cloud2"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="358" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="22" y="368" rotation="0" clip_name="tree_2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="cloud" x="-126" y="27" rotation="0" clip_name="Cloud1"/> <Object x="0" y="0" rotation="0" clip_name="TryToAimHint"/> <Object type="cloud" x="269" y="18" rotation="0" clip_name="Cloud0"/> <Object type="sun" x="550" y="82" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="602" y="52" rotation="0" clip_name="Cloud5"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="358" y="407" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="176" y="427" rotation="0" clip_name="herb"/> <Object type="static_box" is_stone="false" x="578" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="543" y="333" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="531" y="339" rotation="0" clip_name="HangerPoint" cloud_name="ShotTheRopeNotMeCloud" cloud_prob="1"/> <Object type="shooting_point" x="208" y="355" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="highlight" size="150" x="530" y="377" rotation="0" clip_name="YouWillGetAStar"/> <Object type="highlight" size="150" x="530" y="357" rotation="0" clip_name="TryToAimHint"/> <Object type="highlight" size="150" x="208" y="355" rotation="0" clip_name="ToPullBowHint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="523" y="328" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="578" y="333" rotation="0" clip_name="Screw"/> </Level> ; private static const LEVEL_1:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="true" x="498" y="349" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="329" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="301" y="229" rotation="0" clip_name="tree_4"/> <Object type="gibbet_obliquely" inverted="false" x="157" y="350" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="138" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="175" y="333" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="185" y="338" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="178" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="138" y="332" rotation="0" clip_name="Screw"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="322" y="381" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="static_box" is_stone="false" x="517" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="482" y="333" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="470" y="338" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="463" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="517" y="332" rotation="0" clip_name="Screw"/> <Object type="points_ghost" power="500" x="203" y="301" rotation="0" clip_name="PointsGhost500"/> <Object type="highlight" size="150" x="201" y="302" rotation="0" clip_name="ThisIsBonusHint"/> <Object type="sun" x="68" y="81" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="260" y="32" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="448" y="122" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="490" y="36" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="133" y="110" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="74" y="28" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="581" y="104" rotation="0" clip_name="Cloud9"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="47" y="427" rotation="0" clip_name="herb"/> <Object x="0" y="0" rotation="0" clip_name="ThisIsBonusHint"/> <Object scaleX="-1" scaleY="1" width="28.45" height="36.5" type="frontground" x="601" y="400" rotation="0" clip_name="flower_4"/> </Level> ; private static const LEVEL_2:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="504" y="352" rotation="0" clip_name="tree_1"/> <Object scaleX="1" scaleY="1" type="background" x="28" y="152" rotation="0" clip_name="tree_5"/> <Object type="shooting_point" x="367" y="330" rotation="120.00117492675781" clip_name="BowPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="125" y="344" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="100" y="355" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="81" y="390" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="117" y="338" rotation="0" clip_name="GibbetStick"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="117" y="333" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="81" y="338" rotation="0" clip_name="Screw"/> <Object type="ammo_ghost" power="5" x="476" y="409" rotation="0" clip_name="AmmoGhost5"/> <Object type="ammo_ghost" power="10" x="565" y="409" rotation="0" clip_name="AmmoGhost10"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="151" y="125" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="115" y="136" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="97" y="170" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="132" y="119" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="143" y="114" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="97" y="119" rotation="0" clip_name="Screw"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="551" y="158" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="true" x="582" y="170" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="601" y="203" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="565" y="152" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="543" y="146" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="600" y="152" rotation="0" clip_name="Screw"/> <Object type="gibbet_ground" x="558" y="298" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_ground" x="120" y="266" rotation="0" clip_name="GibbetGround"/> <Object type="highlight" size="150" x="475" y="409" rotation="0" clip_name="AmmoHint"/> <Object x="0" y="0" rotation="0" clip_name="AmmoHint"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="112" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="351" y="400" rotation="0" clip_name="flower_2"/> <Object type="sun" x="564" y="76" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="697" y="94" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="492" y="36" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="-156" y="59" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="261" y="36" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="13" y="14" rotation="0" clip_name="Cloud4"/> <Object type="highlight" size="150" x="308" y="30" rotation="0" clip_name="TheAmountOfArrows"/> <Object x="0" y="0" rotation="0" clip_name="TheAmountOfArrows"/> </Level> ; private static const LEVEL_3:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="true" x="584" y="154" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1.0068817138671875" scaleY="1" type="background" x="-4" y="331" rotation="0" clip_name="Back1"/> <Object type="static_box" is_stone="true" x="148" y="426" rotation="0" clip_name="Stone3"/> <Object type="shooting_point" x="358" y="163" rotation="-79.99894714355469" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="97" y="142" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="257" y="142" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="174" y="141" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="488" y="142" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="549" y="142" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="70" y="154" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="53" y="187" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="87" y="136" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="174" y="136" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="235" y="136" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="602" y="187" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="568" y="136" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="516" y="136" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="59" y="262" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="93" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="127" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="161" y="262" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="195" y="262" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="230" y="262" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="76" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="213" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="179" y="295" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="144" y="295" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="110" y="295" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="95" y="328" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="129" y="328" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="164" y="328" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="197" y="328" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="113" y="361" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="147" y="361" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="181" y="362" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="130" y="394" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="164" y="394" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="518" y="429" rotation="0" clip_name="Stone3"/> <Object scaleX="1" scaleY="1" type="background" x="251" y="291" rotation="0" clip_name="tree_6"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="true" x="428" y="265" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="462" y="265" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="496" y="265" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="531" y="265" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="565" y="265" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="599" y="265" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="445" y="298" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="582" y="298" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="548" y="298" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="513" y="298" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="479" y="298" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="465" y="331" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="498" y="331" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="532" y="331" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="566" y="331" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="483" y="364" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="517" y="364" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="551" y="365" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="500" y="397" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="534" y="397" rotation="0" clip_name="Stone0"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="480" y="131" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="541" y="131" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="249" y="131" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="167" y="131" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="89" y="131" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="602" y="136" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="53" y="136" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="192" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="436" y="426" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="584" y="407" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="19" y="401" rotation="0" clip_name="flower_3"/> <Object type="sun" x="68" y="68" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="368" y="49" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="586" y="22" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="130" y="22" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-181" y="10" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="467" y="90" rotation="0" clip_name="Cloud9"/> <Object type="points_ghost" power="500" x="218" y="415" rotation="0" clip_name="PointsGhost500"/> <Object type="highlight" size="150" x="173" y="161" rotation="0" clip_name="ComboSave3Hint"/> <Object type="highlight" size="150" x="517" y="157" rotation="0" clip_name="ComboSave2Hint"/> <Object x="0" y="0" rotation="0" clip_name="ComboSave2Hint"/> <Object x="0" y="0" rotation="0" clip_name="ComboSave3Hint"/> <Object type="points_ghost" power="500" x="425" y="415" rotation="0" clip_name="PointsGhost500"/> </Level> ; private static const LEVEL_4:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="358" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="135" y="230" rotation="0" clip_name="tree_4"/> <Object type="static_box" is_stone="true" x="577" y="427" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="576" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="577" y="358" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="576" y="323" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="577" y="289" rotation="0" clip_name="Stone0"/> <Object type="shooting_point" x="34" y="396" rotation="45" clip_name="BowPoint"/> <Object type="highlight" size="150" x="34" y="396" rotation="0" clip_name="InvertControlHint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="438" y="282" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="377" y="427" rotation="0" clip_name="Stone0"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="sun" x="568" y="89" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="static_box" is_stone="true" x="377" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="377" y="358" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="377" y="289" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="false" x="393" y="233" rotation="45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="434" y="191" rotation="45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="563" y="236" rotation="-45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="516" y="187" rotation="-45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="438" y="276" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="513" y="281" rotation="0" clip_name="HangerPoint" cloud_name="StopItCloud" cloud_prob="0.3"/> <Object type="static_box" is_stone="false" x="514" y="276" rotation="0" clip_name="GibbetStick"/> <Object type="cow" inverted="true" x="303" y="321" rotation="0" clip_name="InvertedCowHere"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="48" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="472" y="429" rotation="0" clip_name="herb"/> <Object type="cloud" x="397" y="85" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="275" y="28" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="494" y="18" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="42" y="34" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="688" y="76" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-121" y="10" rotation="0" clip_name="Cloud1"/> <Object type="points_ghost" power="1000" x="560" y="157" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="505" y="270" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="431" y="270" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="477" y="148" rotation="0" clip_name="Screw"/> </Level> ; private static const LEVEL_5:XML = null; private static const LEVEL_6:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="331" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="107" y="161" rotation="0" clip_name="tree_7"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="52" y="411" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="true" x="577" y="184" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="596" y="218" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="541" y="173" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_ground" x="556" y="312" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="562" y="167" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="83" y="174" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="65" y="209" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="118" y="163" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_ground" x="101" y="302" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="98" y="157" rotation="0" clip_name="GibbetStick"/> <Object type="teleport_ghost" x="548" y="404" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="highlight" size="150" x="547" y="403" rotation="0" clip_name="TeleportHint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="533" y="162" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="111" y="152" rotation="0" clip_name="RopeRings"/> <Object type="points_ghost" power="500" x="100" y="123" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="595" y="167" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="64" y="157" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="96" y="403" rotation="0" clip_name="flower_3"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="404" y="406" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="583" y="427" rotation="0" clip_name="herb"/> <Object type="sun" x="68" y="68" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="vulture" inverted="true" x="590" y="140" rotation="0" clip_name="InvertedVultureHere"/> <Object type="cloud" x="175" y="16" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="406" y="29" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="626" y="46" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-101" y="33" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="541" y="86" rotation="0" clip_name="Cloud9"/> <Object x="0" y="0" rotation="0" clip_name="TeleportHint"/> </Level> ; private static const LEVEL_7:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="344" y="286" rotation="0" clip_name="tree_3"/> <Object type="gibbet_obliquely" inverted="true" x="365" y="357" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1" scaleY="1" type="background" x="83" y="369" rotation="0" clip_name="tree_2"/> <Object type="shooting_point" x="80" y="388" rotation="50.00074768066406" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="328" y="345" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="324" y="227" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="383" y="390" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="349" y="339" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="true" x="364" y="239" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="383" y="274" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="349" y="222" rotation="0" clip_name="GibbetStick"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="316" y="216" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="320" y="334" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="382" y="222" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="382" y="339" rotation="0" clip_name="Screw"/> <Object type="sun" x="563" y="76" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="298" y="153" rotation="104.00003051757813" clip_name="ArrowGhost1"/> <Object type="highlight" size="150" x="296" y="153" rotation="0" clip_name="ArrowGhostHint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="558" y="264" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="559" y="243" rotation="0" clip_name="Stone2"/> <Object x="0" y="0" rotation="0" clip_name="ArrowGhostHint"/> <Object type="points_ghost" power="500" x="560" y="193" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="44.95" height="42.55" type="frontground" x="259" y="402" rotation="0" clip_name="flower_3"/> <Object type="cloud" x="602" y="86" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="193" y="42" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="395" y="34" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="57" y="63" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-138" y="32" rotation="0" clip_name="Cloud1"/> </Level> ; private static const LEVEL_8:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="344" rotation="0" clip_name="Back4"/> <Object type="dynamic_box" x="345" y="431" rotation="0" clip_name="Box"/> <Object type="shooting_point" x="568" y="366" rotation="-79.99894714355469" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="125" y="345" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="136" y="227" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="100" y="355" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="81" y="390" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="117" y="339" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="100" y="240" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="81" y="274" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="117" y="222" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" type="background" x="189" y="235" rotation="0" clip_name="tree_10"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="128" y="216" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="117" y="334" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="81" y="222" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="81" y="339" rotation="0" clip_name="Screw"/> <Object type="cloud" x="418" y="49" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="556" y="24" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="180" y="22" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-111" y="10" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="687" y="90" rotation="0" clip_name="Cloud9"/> <Object type="dynamic_box" x="345" y="406" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="345" y="381" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="345" y="356" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="345" y="330" rotation="0" clip_name="Box"/> <Object type="points_ghost" power="300" x="87" y="185" rotation="0" clip_name="PointsGhost300"/> <Object scaleX="1" scaleY="1" type="background" x="415" y="384" rotation="0" clip_name="BgStones"/> <Object type="ammo_ghost" power="3" x="406" y="418" rotation="0" clip_name="AmmoGhost3"/> <Object type="ammo_ghost" power="3" x="479" y="419" rotation="0" clip_name="AmmoGhost3"/> </Level> ; private static const LEVEL_9:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object type="static_box" is_stone="true" x="231" y="362" rotation="0" clip_name="ComposedStone2"/> <Object type="static_box" is_stone="true" x="331" y="361" rotation="0" clip_name="ComposedStone2"/> <Object type="shooting_point" x="33" y="417" rotation="20.000656127929688" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="true" x="577" y="354" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="596" y="388" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="541" y="343" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="562" y="337" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="533" y="332" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="595" y="337" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="129" y="362" rotation="0" clip_name="ComposedStone2"/> <Object type="static_box" is_stone="true" x="434" y="361" rotation="0" clip_name="ComposedStone2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="sun" x="568" y="89" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="180" y="422" rotation="4.9994354248046875" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="281" y="423" rotation="5.00030517578125" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="384" y="423" rotation="3.9993743896484375" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="484" y="377" rotation="49.99922180175781" clip_name="ArrowGhost1"/> <Object type="points_ghost" power="300" x="180" y="373" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="300" x="180" y="322" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="280" y="373" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="280" y="323" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="381" y="373" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="381" y="324" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="557" y="305" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="511" y="426" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="48" y="426" rotation="0" clip_name="herb"/> <Object type="cloud" x="193" y="14" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="74" y="63" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="326" y="10" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="409" y="50" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="613" y="10" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-181" y="16" rotation="0" clip_name="Cloud4"/> </Level> ; private static const LEVEL_30:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-14" y="285" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="323" y="279" rotation="0" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="RIGHT_LOWER_LEG" connect_legs="true" chains_count="7" x="47" y="364" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="443" y="198" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="200" y="198" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="47" y="344" rotation="0" clip_name="Stone0"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="5" x="50" y="230" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="49" y="210" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="50" y="90" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="50" y="70" rotation="0" clip_name="Stone2"/> <Object type="gibbet" pers_id="4" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="7" x="589" y="359" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="590" y="339" rotation="0" clip_name="Stone3"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="5" x="590" y="226" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="590" y="206" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="589" y="85" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="590" y="65" rotation="0" clip_name="Stone0"/> <Object type="points_ghost" power="500" x="198" y="147" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="440" y="147" rotation="0" clip_name="PointsGhost500"/> <Object type="sun" x="320" y="82" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="-90" y="22" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="615" y="49" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="391" y="22" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="150" y="61" rotation="0" clip_name="Cloud7"/> </Level> ; private static const LEVEL_31:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-4" y="331" rotation="0" clip_name="Back1"/> <Object type="static_box" is_stone="true" x="117" y="324" rotation="0" clip_name="ComposedStone55"/> <Object type="static_box" is_stone="true" x="404" y="325" rotation="0" clip_name="ComposedStone55"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="561" y="317" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="48" y="416" rotation="14.999740600585938" clip_name="BowPoint"/> <Object type="teleport_ghost" x="189" y="411" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="326" y="411" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="483" y="411" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="true" x="256" y="367" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="256" y="332" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="256" y="298" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="256" y="264" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="256" y="229" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="256" y="195" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="256" y="160" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="256" y="126" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="528" y="297" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="528" y="263" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="528" y="229" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="528" y="194" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="528" y="160" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="528" y="125" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="528" y="91" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="256" y="91" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="256" y="57" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="290" y="57" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="324" y="57" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="358" y="57" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="391" y="57" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="425" y="57" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="460" y="57" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="494" y="57" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="528" y="57" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="18" y="56" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="52" y="56" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="85" y="56" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="119" y="56" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="154" y="56" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="187" y="56" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="222" y="56" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="562" y="297" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="595" y="297" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="630" y="297" rotation="0" clip_name="Stone2"/> <Object type="points_ghost" power="1000" x="592" y="246" rotation="0" clip_name="PointsGhost1000"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="761" y="414" rotation="-9.999359130859375" clip_name="ArrowGhost1"/> <Object type="points_ghost" power="1000" x="592" y="200" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="235" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="576" y="426" rotation="0" clip_name="herb"/> </Level> ; private static const LEVEL_32:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object type="cloud" x="-42" y="29" rotation="0" clip_name="Cloud5"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="344" rotation="0" clip_name="Back4"/> <Object scaleX="1" scaleY="1" type="background" x="413" y="268" rotation="0" clip_name="tree_9"/> <Object scaleX="1" scaleY="1" type="background" x="58" y="233" rotation="0" clip_name="tree_10"/> <Object type="static_box" is_stone="false" x="29" y="413" rotation="0" clip_name="GibbetColumn"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="224" y="87" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="566" y="373" rotation="-44.99955749511719" clip_name="BowPoint"/> <Object type="cloud" x="241" y="50" rotation="0" clip_name="Cloud4"/> <Object type="gibbet" pers_id="3" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="7" x="301" y="87" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="8" x="380" y="87" rotation="0" clip_name="HangerPoint" cloud_name="UseYouForceLuke" cloud_prob="0.4"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="89" y="188" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="91" y="322" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="47" y="333" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="64" y="316" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="47" y="199" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="64" y="183" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="29" y="233" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="29" y="354" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="242" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="329" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="414" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="cloud" x="510" y="14" rotation="0" clip_name="Cloud0"/> <Object type="static_box" is_stone="false" x="502" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="570" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="595" y="82" rotation="0" clip_name="GibbetStick"/> <Object type="teleport_ghost" x="48" y="121" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="81" y="177" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="83" y="311" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="216" y="77" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="293" y="77" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="372" y="77" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="28" y="316" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="28" y="183" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" type="background" x="230" y="384" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="586" y="402" rotation="0" clip_name="flower_6"/> <Object type="cloud" x="700" y="71" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-189" y="64" rotation="0" clip_name="Cloud6"/> </Level> ; private static const LEVEL_34:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="328" rotation="0" clip_name="Back1"/> <Object type="shooting_point" x="494" y="138" rotation="-109.9998779296875" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="499" y="351" rotation="0" clip_name="tree_1"/> <Object scaleX="1" scaleY="1" type="background" x="295" y="253" rotation="0" clip_name="tree_8"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="439" y="313" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="439" y="293" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="60" y="349" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="59" y="328" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="262" y="179" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="263" y="159" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="55" y="179" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="56" y="159" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="588" y="270" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="588" y="249" rotation="0" clip_name="Stone3"/> <Object type="hedhehog_ghost" speed="90" charge="3" x="524" y="340" rotation="40.000274658203125" clip_name="ArrowGhost3"/> <Object type="cow" inverted="false" x="150" y="320" rotation="0" clip_name="CowHere"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="48" y="426" rotation="0" clip_name="herb"/> <Object type="cloud" x="576" y="63" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="336" y="47" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="178" y="28" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-184" y="59" rotation="0" clip_name="Cloud0"/> <Object type="sun" x="73" y="72" rotation="0" clip_name="States.PlayState::Sun"/> </Level> ; private static const LEVEL_35:XML = null; private static const LEVEL_36:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="56" y="286" rotation="0" clip_name="tree_3"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="50" y="407" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="cloud" x="586" y="21" rotation="0" clip_name="Cloud8"/> <Object type="gibbet_obliquely" inverted="true" x="375" y="349" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="393" y="384" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="359" y="332" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="331" y="327" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="393" y="332" rotation="0" clip_name="Screw"/> <Object type="cloud" x="696" y="95" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="435" y="17" rotation="0" clip_name="Cloud6"/> <Object type="sun" x="77" y="78" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="-11" y="5" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-152" y="55" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="153" y="104" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="236" y="11" rotation="0" clip_name="Cloud1"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="338" y="338" rotation="0" clip_name="HangerPoint"/> <Object type="ammo_ghost" power="10" x="584" y="414" rotation="0" clip_name="AmmoGhost10"/> <Object type="tnt_barrel" x="522" y="374" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="tnt_barrel" x="522" y="332" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="dynamic_box" x="523" y="434" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="523" y="409" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="523" y="299" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="523" y="274" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="593" y="99" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="454" y="99" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="325" y="101" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="197" y="101" rotation="0" clip_name="Stone2"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="197" y="122" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="325" y="122" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="454" y="119" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="594" y="120" rotation="0" clip_name="HangerPoint"/> <Object type="points_ghost" power="300" x="197" y="51" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="324" y="51" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="435" y="425" rotation="0" clip_name="herb"/> <Object type="vulture" inverted="true" x="463" y="64" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_37:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="352" rotation="0" clip_name="Back3"/> <Object type="static_box" is_stone="false" x="626" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="574" y="266" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="116" y="336" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="RIGHT_LOWER_LEG" connect_legs="true" chains_count="7" x="532" y="197" rotation="0" clip_name="HangerPoint" cloud_name="ILikeToHangCloud" cloud_prob="0.3"/> <Object type="gibbet_obliquely" inverted="true" x="608" y="209" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="gibbet_obliquely" inverted="true" x="609" y="279" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="626" y="264" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="626" y="146" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="592" y="192" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="555" y="192" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="591" y="263" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="571" y="77" rotation="0" clip_name="HangerPoint"/> <Object type="cloud" x="519" y="35" rotation="0" clip_name="Cloud8"/> <Object type="gibbet_obliquely" inverted="true" x="608" y="91" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="626" y="125" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="592" y="73" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" type="background" x="302" y="192" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="55" scaleX="0.8499908447265625" scaleY="0.8499908447265625" x="359" y="238" rotation="0" clip_name="MillFan"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="564" y="68" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="525" y="186" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="567" y="258" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="626" y="262" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="626" y="192" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="626" y="73" rotation="0" clip_name="Screw"/> <Object type="sun" x="107" y="76" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="477" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" type="background" x="18" y="368" rotation="0" clip_name="tree_2"/> <Object type="cloud" x="696" y="95" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="385" y="92" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="-11" y="5" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-152" y="55" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="153" y="104" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="236" y="11" rotation="0" clip_name="Cloud1"/> <Object type="cow" inverted="true" x="379" y="321" rotation="0" clip_name="InvertedCowHere"/> </Level> ; private static const LEVEL_38:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object type="gibbet_obliquely" inverted="false" x="391" y="236" rotation="0" clip_name="GibbetObliquely"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="10" x="62" y="271" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="337" rotation="0" clip_name="Back4"/> <Object scaleX="1" scaleY="1" type="background" x="112" y="234" rotation="0" clip_name="tree_10"/> <Object type="shooting_point" x="590" y="417" rotation="-45" clip_name="BowPoint"/> <Object type="hedhehog_ghost" speed="50" charge="3" x="225" y="200" rotation="0" clip_name="ArrowGhost3"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="9" x="135" y="237" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="128" y="216" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="94" y="216" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="60" y="216" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="60" y="250" rotation="0" clip_name="Stone3"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet_obliquely" inverted="true" x="348" y="236" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="370" y="269" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_ground" x="371" y="360" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="308" y="223" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="340" y="219" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="432" y="223" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="400" y="219" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="518" y="328" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="518" y="362" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="518" y="260" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="518" y="294" rotation="0" clip_name="Stone3"/> <Object type="hedhehog_ghost" speed="-70" charge="3" x="583" y="190" rotation="0" clip_name="ArrowGhost3"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="424" y="214" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="300" y="214" rotation="0" clip_name="RopeRings"/> <Object type="teleport_ghost" x="225" y="410" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="369" y="219" rotation="0" clip_name="Screw"/> <Object type="points_ghost" power="1000" x="337" y="187" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="404" y="187" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="50.85" height="25.2" type="frontground" x="289" y="420" rotation="0" clip_name="flower_5"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="465" y="404" rotation="0" clip_name="flower_6"/> <Object type="cloud" x="-137" y="23" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="78" y="12" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="275" y="72" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="396" y="19" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="560" y="34" rotation="0" clip_name="Cloud4"/> <Object type="vulture" inverted="true" x="52" y="179" rotation="0" clip_name="InvertedVultureHere"/> </Level> ; private static const LEVEL_39:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="false" x="76" y="222" rotation="0" clip_name="GibbetObliquely"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="351" rotation="0" clip_name="Back3"/> <Object type="shooting_point" x="551" y="391" rotation="-44.99955749511719" clip_name="BowPoint"/> <Object type="static_box" is_stone="false" x="58" y="420" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="false" x="76" y="347" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="58" y="301" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="92" y="331" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="58" y="181" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="false" x="76" y="109" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="58" y="141" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="93" y="204" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="210" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="92" y="91" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="182" y="331" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="268" y="331" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="95" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="106" y="337" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="183" y="337" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="260" y="337" rotation="0" clip_name="HangerPoint"/> <Object scaleX="0.8947296142578125" scaleY="0.8947296142578125" type="background" x="518" y="273" rotation="0" clip_name="tree_8"/> <Object scaleX="0.7641754150390625" scaleY="0.7641754150390625" type="background" x="285" y="373" rotation="0" clip_name="tree_1"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="0.786407470703125" scaleY="0.786407470703125" width="22.3" height="28.75" type="frontground" x="133" y="408" rotation="0" clip_name="flower_4"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="252" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="175" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="98" y="326" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="98" y="199" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="98" y="86" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="438" y="265" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="472" y="265" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="506" y="265" rotation="0" clip_name="Stone2"/> <Object type="sun" x="567" y="73" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="57" y="331" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="57" y="204" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="58" y="91" rotation="0" clip_name="Screw"/> <Object type="ammo_ghost" power="3" x="458" y="222" rotation="0" clip_name="AmmoGhost3"/> <Object scaleX="0.7081451416015625" scaleY="0.7081451416015625" width="19.5" height="25.3" type="frontground" x="457" y="417" rotation="0" clip_name="flower_0"/> <Object type="cloud" x="201" y="19" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="387" y="114" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="30" y="18" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="407" y="14" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="113" y="109" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="472" y="64" rotation="0" clip_name="Cloud1"/> </Level> ; private static const LEVEL_33:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-9" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="gibbet_obliquely" inverted="true" x="560" y="184" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="579" y="218" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="524" y="173" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="452" y="392" rotation="-19.999099731445313" clip_name="BowPoint"/> <Object type="dynamic_box" x="341" y="431" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="341" y="406" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="341" y="381" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="341" y="356" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="341" y="331" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="341" y="306" rotation="0" clip_name="Box"/> <Object type="gibbet_ground" x="539" y="312" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="545" y="167" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="578" y="167" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="516" y="162" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="350" y="281" rotation="0" clip_name="Brick"/> <Object type="tnt_barrel" x="283" y="369" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="333" y="459" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="281" y="404" rotation="0" clip_name="Brick"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="192" y="313" rotation="49.999725341796875" clip_name="ArrowGhost1"/> <Object type="gibbet_obliquely" inverted="false" x="80" y="293" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="61" y="326" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="109" y="280" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_ground" x="89" y="420" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="95" y="275" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="102" y="269" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_obliquely" inverted="false" x="79" y="179" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="61" y="211" rotation="0" clip_name="GibbetColumn"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="61" y="275" rotation="0" clip_name="Screw"/> <Object type="sun" x="76" y="85" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="points_ghost" power="500" x="550" y="133" rotation="0" clip_name="PointsGhost500"/> <Object type="cloud" x="548" y="54" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="310" y="109" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="99" y="27" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="123" y="67" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="412" y="29" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-187" y="44" rotation="0" clip_name="Cloud4"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="110" y="166" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="95" y="161" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="102" y="155" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="61" y="161" rotation="0" clip_name="Screw"/> </Level> ; private static const LEVEL_44:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="shooting_point" x="613" y="99" rotation="-119.9998779296875" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="166" y="274" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="322" y="380" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="483" y="259" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="69" y="149" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="278" y="170" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="73" y="380" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="482" y="240" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="321" y="360" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="72" y="360" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="166" y="254" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="277" y="151" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="68" y="129" rotation="0" clip_name="Stone2"/> <Object scaleX="1" scaleY="1" type="background" x="-6" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="teleport_ghost" x="601" y="246" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="points_ghost" power="500" x="66" y="84" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="321" y="310" rotation="0" clip_name="PointsGhost500"/> <Object type="vulture" inverted="false" x="271" y="114" rotation="0" clip_name="VultureHere"/> <Object type="vulture" inverted="true" x="490" y="206" rotation="0" clip_name="InvertedVultureHere"/> <Object type="vulture" inverted="false" x="66" y="323" rotation="0" clip_name="VultureHere"/> <Object type="cloud" x="286" y="6" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="599" y="25" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-114" y="6" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="99" y="64" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="504" y="93" rotation="0" clip_name="Cloud9"/> </Level> ; private static const LEVEL_42:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="sun" x="77" y="80" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="352" rotation="0" clip_name="Back3"/> <Object type="static_box" is_stone="true" x="84" y="427" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="84" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="84" y="358" rotation="0" clip_name="Stone2"/> <Object type="shooting_point" x="323" y="319" rotation="0" clip_name="BowPoint"/> <Object scaleX="1" scaleY="1" type="background" x="496" y="254" rotation="0" clip_name="tree_8"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="false" x="240" y="118" rotation="45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="324" y="-23" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="281" y="76" rotation="45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="411" y="120" rotation="-45" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="363" y="72" rotation="-45" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="206" y="161" rotation="0" clip_name="HangerPoint"/> <Object type="cloud" x="554" y="36" rotation="0" clip_name="Cloud2"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="261" y="106" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="383" y="103" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="443" y="161" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="187" y="426" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="187" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="187" y="358" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="426" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="471" y="358" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="471" y="323" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="471" y="289" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="471" y="255" rotation="0" clip_name="Stone1"/> <Object type="points_ghost" power="1000" x="589" y="408" rotation="0" clip_name="PointsGhost1000"/> <Object type="static_box" is_stone="true" x="153" y="358" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="118" y="358" rotation="0" clip_name="Stone2"/> <Object type="points_ghost" power="1000" x="32" y="414" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="324" y="34" rotation="0" clip_name="Screw"/> <Object scaleX="1.0000010787037903" scaleY="1.0000010787037903" width="18.9" height="18.9" type="frontground" x="444" y="145" rotation="45" clip_name="RopeRings"/> <Object scaleX="1.0000010787037903" scaleY="1.0000010787037903" width="18.9" height="18.9" type="frontground" x="385" y="87" rotation="45" clip_name="RopeRings"/> <Object scaleX="0.9999794995173527" scaleY="0.9999794995173527" width="18.9" height="18.9" type="frontground" x="194" y="156" rotation="-45" clip_name="RopeRings"/> <Object scaleX="0.9999794995173527" scaleY="0.9999794995173527" width="18.9" height="18.9" type="frontground" x="249" y="100" rotation="-45" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="118" y="426" rotation="0" clip_name="herb"/> <Object type="cloud" x="383" y="43" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="106" y="17" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-175" y="51" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="665" y="59" rotation="0" clip_name="Cloud1"/> </Level> ; private static const LEVEL_46:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object type="shooting_point" x="81" y="408" rotation="40.00077819824219" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="542" y="326" rotation="0" clip_name="HangerPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" type="background" x="284" y="367" rotation="0" clip_name="tree_2"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="135" y="358" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="198" y="331" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="266" y="311" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="482" y="331" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="343" y="307" rotation="0" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="416" y="314" rotation="0" clip_name="ArrowGhost1"/> <Object type="points_ghost" power="300" x="131" y="127" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="192" y="181" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="266" y="123" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="300" x="340" y="175" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="415" y="127" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="482" y="178" rotation="0" clip_name="PointsGhost1000"/> <Object type="static_box" is_stone="true" x="543" y="305" rotation="0" clip_name="Stone3"/> <Object type="points_ghost" power="500" x="605" y="398" rotation="0" clip_name="PointsGhost500"/> <Object type="sun" x="559" y="81" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="vulture" inverted="true" x="550" y="270" rotation="0" clip_name="InvertedVultureHere"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="112" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="479" y="428" rotation="0" clip_name="herb"/> <Object type="cloud" x="-45" y="79" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="142" y="33" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="321" y="57" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="542" y="55" rotation="0" clip_name="Cloud4"/> </Level> ; private static const LEVEL_47:XML = null; private static const LEVEL_48:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="gibbet_obliquely" inverted="false" x="100" y="78" rotation="0" clip_name="GibbetObliquely"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="129" y="65" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="61" y="384" rotation="84.99969482421875" clip_name="BowPoint"/> <Object type="cloud" x="248" y="418" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="639" y="431" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="384" y="357" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-127" y="374" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="73" y="433" rotation="0" clip_name="Cloud7"/> <Object type="static_box" is_stone="true" x="389" y="412" rotation="0" clip_name="ComposedStone96"/> <Object type="static_box" is_stone="true" x="252" y="338" rotation="0" clip_name="ComposedStone96"/> <Object type="static_box" is_stone="true" x="389" y="261" rotation="0" clip_name="ComposedStone96"/> <Object type="static_box" is_stone="false" x="82" y="111" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="true" x="252" y="186" rotation="0" clip_name="ComposedStone96"/> <Object type="static_box" is_stone="true" x="464" y="112" rotation="0" clip_name="ComposedStone96"/> <Object type="tnt_barrel" x="454" y="376" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="tnt_barrel" x="222" y="300" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="560" y="367" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="560" y="303" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="113" y="298" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="115" y="225" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="tnt_barrel" x="453" y="225" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="557" y="217" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="557" y="153" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="tnt_barrel" x="265" y="149" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="teleport_ghost" x="190" y="142" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="static_box" is_stone="false" x="117" y="60" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="122" y="55" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="82" y="60" rotation="0" clip_name="Screw"/> <Object type="tnt_barrel" x="222" y="375" rotation="0" clip_name="States.PlayState::TNTBarrel"/> </Level> ; private static const LEVEL_43:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="249" y="151" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="562" y="341" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="true" x="602" y="353" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="621" y="388" rotation="0" clip_name="GibbetColumn"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="337" rotation="0" clip_name="Back4"/> <Object scaleX="0.8017730712890625" scaleY="0.8017730712890625" type="background" x="8" y="302" rotation="0" clip_name="tree_9"/> <Object type="shooting_point" x="148" y="353" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="static_box" is_stone="false" x="585" y="335" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" type="background" x="318" y="382" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="451" y="401" rotation="0" clip_name="flower_6"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="hedhehog_ghost" speed="-40" charge="3" x="497" y="285" rotation="0" clip_name="ArrowGhost3"/> <Object type="gibbet_obliquely" inverted="true" x="288" y="162" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="306" y="197" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="271" y="144" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="554" y="330" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="241" y="139" rotation="0" clip_name="RopeRings"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="330" y="294" rotation="0" clip_name="HangerPoint"/> <Object type="cloud" x="325" y="23" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="206" y="89" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="40" y="38" rotation="0" clip_name="Cloud8"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="70" y="145" rotation="89.9947509765625" clip_name="ArrowGhost1"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="305" y="145" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="621" y="335" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="170" y="274" rotation="0" clip_name="ComposedStone99"/> <Object type="cloud" x="630" y="61" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="-196" y="32" rotation="0" clip_name="Cloud0"/> </Level> ; private static const LEVEL_45:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="OvercastSky"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="346" rotation="0" clip_name="Back4"/> <Object scaleX="1" scaleY="1" type="background" x="375" y="268" rotation="0" clip_name="tree_9"/> <Object type="shooting_point" x="551" y="323" rotation="-49.999725341796875" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="false" x="71" y="336" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="53" y="387" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="107" y="324" rotation="0" clip_name="HangerPoint" cloud_name="HeadShotCloud" cloud_prob="0.3"/> <Object type="static_box" is_stone="false" x="53" y="270" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="87" y="320" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="105" y="149" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="251" y="395" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="false" x="269" y="345" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="251" y="378" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="285" y="327" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="306" y="332" rotation="0" clip_name="HangerPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet_obliquely" inverted="false" x="71" y="162" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="53" y="196" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="88" y="145" rotation="0" clip_name="GibbetStick"/> <Object type="ammo_ghost" power="3" x="308" y="144" rotation="0" clip_name="AmmoGhost3"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="605" y="117" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="605" y="97" rotation="0" clip_name="Stone0"/> <Object type="vulture" inverted="false" x="58" y="116" rotation="0" clip_name="VultureHere"/> <Object scaleX="1" scaleY="1" type="background" x="109" y="384" rotation="0" clip_name="BgStones"/> <Object scaleX="1" scaleY="1" width="26.8" height="37.35" type="frontground" x="564" y="404" rotation="0" clip_name="flower_6"/> <Object type="cloud" x="305" y="69" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="379" y="23" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="121" y="56" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-94" y="7" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="584" y="31" rotation="0" clip_name="Cloud1"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="251" y="327" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="52" y="320" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="52" y="144" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="299" y="322" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="100" y="314" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="97" y="139" rotation="0" clip_name="RopeRings"/> </Level> ; private static const LEVEL_49:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="89" y="81" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="602" y="391" rotation="-60.00077819824219" clip_name="BowPoint"/> <Object type="cloud" x="241" y="411" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="639" y="431" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="384" y="357" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-127" y="374" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="73" y="433" rotation="0" clip_name="Cloud7"/> <Object type="static_box" is_stone="true" x="89" y="63" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="485" y="349" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="485" y="330" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="280" y="214" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="280" y="196" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="188" y="142" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="188" y="124" rotation="0" clip_name="Brick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="379" y="274" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="379" y="256" rotation="0" clip_name="Brick"/> <Object type="points_ghost" power="300" x="485" y="278" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="500" x="379" y="204" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="281" y="148" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="300" x="187" y="74" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_41:XML = null; private static const LEVEL_50:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="287" y="198" rotation="0" clip_name="HangerPoint" cloud_name="TryToShotMyLegsToShakeMeCloud" cloud_prob="1"/> <Object type="shooting_point" x="71" y="321" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="393" y="242" rotation="-60.0001220703125" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="254" y="180" rotation="0" clip_name="BrickNoRight"/> <Object type="static_box" is_stone="true" x="304" y="180" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="354" y="180" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="405" y="180" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="456" y="180" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="203" y="210" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="203" y="239" rotation="0" clip_name="Brick"/> <Object type="cloud" x="564" y="413" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="343" y="390" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="164" y="343" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-238" y="401" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="73" y="433" rotation="0" clip_name="Cloud7"/> <Object type="ammo_ghost" power="3" x="271" y="132" rotation="0" clip_name="AmmoGhost3"/> <Object type="ammo_ghost" power="5" x="357" y="131" rotation="0" clip_name="AmmoGhost5"/> <Object type="points_ghost" power="1000" x="443" y="131" rotation="0" clip_name="PointsGhost1000"/> </Level> ; private static const LEVEL_51:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="519" y="297" rotation="0" clip_name="HangerPoint" cloud_name="TakeAdditionArrows" cloud_prob="1"/> <Object type="shooting_point" x="307" y="295" rotation="59.99946594238281" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="114" y="297" rotation="0" clip_name="HangerPoint" cloud_name="TakeAdditionArrows" cloud_prob="1"/> <Object type="gibbet_obliquely" inverted="false" x="85" y="308" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="67" y="343" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="100" y="292" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="true" x="552" y="309" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="570" y="344" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="536" y="292" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_ground" x="98" y="434" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_ground" x="527" y="437" rotation="0" clip_name="GibbetGround"/> <Object type="ammo_ghost" power="10" x="685" y="28" rotation="0" clip_name="AmmoGhost10"/> <Object type="highlight" size="150" x="311" y="26" rotation="0" clip_name="OnlyOneArrowHint"/> <Object x="0" y="0" rotation="0" clip_name="OnlyOneArrowHint"/> <Object type="cloud" x="192" y="379" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="494" y="404" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-57" y="413" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="692" y="441" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="278" y="416" rotation="0" clip_name="Cloud8"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="511" y="286" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="107" y="286" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="67" y="292" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="569" y="292" rotation="0" clip_name="Screw"/> </Level> ; private static const LEVEL_52:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="StarrySky"/> <Object type="shooting_point" x="325" y="254" rotation="-60.00077819824219" clip_name="BowPoint"/> <Object type="cloud" x="241" y="411" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="639" y="431" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="384" y="357" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-127" y="374" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="73" y="433" rotation="0" clip_name="Cloud7"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="114" y="245" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="115" y="227" rotation="0" clip_name="Brick"/> <Object type="ammo_ghost" power="10" x="116" y="181" rotation="0" clip_name="AmmoGhost10"/> <Object type="points_ghost" power="1000" x="578" y="116" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="578" y="170" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="579" y="223" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="579" y="272" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="578" y="323" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="579" y="373" rotation="0" clip_name="PointsGhost1000"/> <Object type="points_ghost" power="1000" x="579" y="424" rotation="0" clip_name="PointsGhost1000"/> <Object type="highlight" size="150" x="311" y="26" rotation="0" clip_name="NoArrowsHint"/> <Object x="0" y="0" rotation="0" clip_name="NoArrowsHint"/> </Level> ; private static const LEVEL_40:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="307" y="103" rotation="0" clip_name="Mill"/> <Object scaleX="1" scaleY="1" type="background" x="-2" y="352" rotation="0" clip_name="Back3"/> <Object type="static_box" is_stone="true" x="328" y="427" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="294" y="427" rotation="0" clip_name="Stone2"/> <Object type="gibbet_obliquely" inverted="false" x="62" y="354" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="42" y="388" rotation="0" clip_name="GibbetColumn"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="shooting_point" x="520" y="386" rotation="-44.99955749511719" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="101" y="342" rotation="0" clip_name="HangerPoint"/> <Object type="rotor" speed="70" scaleX="0.6999969542292874" scaleY="0.6999969542292874" x="364" y="150" rotation="89.99212646484375" clip_name="MillFan"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="92" y="187" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" type="background" x="307" y="227" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-70" scaleX="0.6999816954403554" scaleY="0.6999816954403554" x="365" y="271" rotation="89.99212646484375" clip_name="MillFan"/> <Object type="static_box" is_stone="true" x="329" y="393" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="328" y="359" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="294" y="393" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="294" y="359" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="294" y="325" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="363" y="427" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="362" y="393" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="396" y="427" rotation="0" clip_name="Stone0"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="223" y="425" rotation="-49.999725341796875" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="223" y="380" rotation="-50.000244140625" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="31" y="270" rotation="39.999755859375" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="false" x="76" y="338" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="42" y="338" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="93" y="332" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="103" y="168" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="136" y="203" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="68" y="134" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="136" y="168" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="136" y="134" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="102" y="134" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="382" y="62" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="348" y="62" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="382" y="27" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="381" y="-5" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="348" y="28" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="347" y="-5" rotation="0" clip_name="Stone0"/> <Object type="points_ghost" power="1000" x="101" y="88" rotation="0" clip_name="PointsGhost1000"/> <Object type="sun" x="576" y="85" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="120" y="426" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="473" y="427" rotation="0" clip_name="herb"/> <Object type="cloud" x="145" y="6" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="418" y="51" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="623" y="18" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-76" y="51" rotation="0" clip_name="Cloud7"/> </Level> ; public static const LEVELS:Array = [LEVEL_0, LEVEL_1, LEVEL_2, LEVEL_3, LEVEL_4, LEVEL_5, LEVEL_6, LEVEL_7, LEVEL_8, LEVEL_9, LEVEL_10, LEVEL_11, LEVEL_12, LEVEL_13, LEVEL_14, LEVEL_15, LEVEL_16, LEVEL_17, LEVEL_18, LEVEL_19, LEVEL_20, LEVEL_21, LEVEL_22, LEVEL_23, LEVEL_24, LEVEL_25, LEVEL_26, LEVEL_27, LEVEL_28, LEVEL_29, LEVEL_30, LEVEL_31, LEVEL_32, LEVEL_33, LEVEL_34, LEVEL_35, LEVEL_36, LEVEL_37, LEVEL_38, LEVEL_39, LEVEL_40, LEVEL_41, LEVEL_42, LEVEL_43, LEVEL_44, LEVEL_45, LEVEL_46, LEVEL_47, LEVEL_48, LEVEL_49, LEVEL_50, LEVEL_51, LEVEL_52]; private static const LEVEL_10:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="353" rotation="0" clip_name="Back3"/> <Object type="gibbet_obliquely" inverted="true" x="575" y="352" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="shooting_point" x="320" y="368" rotation="0.0008697509765625" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="false" x="62" y="354" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="43" y="388" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="80" y="337" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="92" y="342" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="85" y="331" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="43" y="336" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="417" y="426" rotation="0" clip_name="Stone1"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="true" x="231" y="428" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="false" x="593" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="558" y="333" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="546" y="339" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="538" y="328" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="593" y="333" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="true" x="230" y="394" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="230" y="360" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="230" y="326" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="417" y="392" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="417" y="359" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="417" y="325" rotation="0" clip_name="Stone2"/> <Object type="teleport_ghost" x="474" y="406" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="319" y="413" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="164" y="402" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="points_ghost" power="500" x="554" y="296" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="500" x="83" y="299" rotation="0" clip_name="PointsGhost500"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="83" y="425" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="508" y="426" rotation="0" clip_name="herb"/> <Object type="sun" x="317" y="85" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="408" y="50" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="543" y="22" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="67" y="69" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-120" y="37" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="303" y="97" rotation="0" clip_name="Cloud9"/> <Object type="vulture" inverted="false" x="225" y="290" rotation="0" clip_name="VultureHere"/> </Level> ; private static const LEVEL_11:XML = null; private static const LEVEL_12:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-1" y="357" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="449" y="285" rotation="0" clip_name="tree_3"/> <Object type="shooting_point" x="430" y="371" rotation="-49.999725341796875" clip_name="BowPoint"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="dynamic_box" x="234" y="432" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="233" y="407" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="233" y="357" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="233" y="332" rotation="0" clip_name="Box"/> <Object type="gibbet_obliquely" inverted="false" x="69" y="351" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="50" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="50" y="269" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="84" y="334" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="101" y="339" rotation="0" clip_name="HangerPoint"/> <Object type="tnt_barrel" x="463" y="92" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="cloud" x="542" y="26" rotation="0" clip_name="Cloud4"/> <Object type="tnt_barrel" x="596" y="93" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="472" y="131" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="599" y="132" rotation="0" clip_name="Stone1"/> <Object type="dynamic_box" x="233" y="382" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="false" x="172" y="334" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="165" y="340" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="69" y="129" rotation="0" clip_name="GibbetObliquely"/> <Object type="sun" x="68" y="68" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="static_box" is_stone="false" x="50" y="163" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="84" y="113" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="101" y="118" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="172" y="113" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="165" y="118" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="49" y="334" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="50" y="113" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="313" y="425" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="33.6" height="37.6" type="frontground" x="72" y="407" rotation="0" clip_name="flower_1"/> <Object scaleX="1" scaleY="1" width="27.55" height="35.7" type="frontground" x="496" y="406" rotation="0" clip_name="flower_0"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="93" y="107" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="93" y="329" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="157" y="329" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="158" y="107" rotation="0" clip_name="RopeRings"/> <Object type="cloud" x="322" y="79" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="165" y="24" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="380" y="24" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="-92" y="9" rotation="0" clip_name="Cloud5"/> <Object type="highlight" size="150" x="461" y="92" rotation="0" clip_name="ThisIsTNTHint"/> <Object x="0" y="0" rotation="0" clip_name="ThisIsTNTHint"/> </Level> ; private static const LEVEL_13:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="gibbet_obliquely" inverted="true" x="424" y="69" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object scaleX="1.006256103515625" scaleY="1" type="background" x="-4" y="329" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="161" rotation="0" clip_name="tree_7"/> <Object scaleX="1" scaleY="1" type="background" x="364" y="352" rotation="0" clip_name="tree_1"/> <Object type="shooting_point" x="538" y="382" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet_obliquely" inverted="true" x="320" y="354" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="340" y="389" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="305" y="337" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="288" y="342" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="280" y="331" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="340" y="336" rotation="0" clip_name="Screw"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="false" x="445" y="104" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="410" y="53" rotation="180" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="393" y="58" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="385" y="47" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="445" y="53" rotation="0" clip_name="Screw"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="37" y="381" rotation="69.99934387207031" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="137" y="413" rotation="14.0008544921875" clip_name="ArrowGhost1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="293" y="137" rotation="40.00129699707031" clip_name="ArrowGhost1"/> <Object type="gibbet_ground" x="396" y="200" rotation="0" clip_name="GibbetGround"/> <Object type="sun" x="80" y="78" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="273" y="426" rotation="0" clip_name="herb"/> <Object type="cloud" x="458" y="44" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="613" y="85" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="-26" y="39" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="201" y="4" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="-109" y="96" rotation="0" clip_name="Cloud9"/> <Object type="ammo_ghost" power="5" x="411" y="412" rotation="0" clip_name="AmmoGhost5"/> </Level> ; private static const LEVEL_14:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="356" rotation="0" clip_name="Back2"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="293" rotation="0" clip_name="tree_6"/> <Object type="static_box" is_stone="false" x="149" y="464" rotation="0" clip_name="GibbetColumn"/> <Object scaleX="1" scaleY="1" type="background" x="429" y="152" rotation="0" clip_name="tree_5"/> <Object type="gibbet_obliquely" inverted="true" x="478" y="316" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="497" y="464" rotation="0" clip_name="GibbetColumn"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="95" y="86" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="325" y="384" rotation="0" clip_name="BowPoint"/> <Object type="hedhehog_ghost" speed="50" charge="3" x="323" y="251" rotation="-0.0008697509765625" clip_name="ArrowGhost3"/> <Object type="gibbet" pers_id="1" path_to_hang="LEFT_LOWER_LEG" connect_legs="true" chains_count="9" x="214" y="303" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="RIGHT_LOWER_LEG" connect_legs="true" chains_count="9" x="430" y="303" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="168" y="317" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="149" y="348" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="184" y="298" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="497" y="348" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="462" y="298" rotation="0" clip_name="GibbetStick"/> <Object type="cloud" x="382" y="4" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="213" y="73" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="76" y="9" rotation="0" clip_name="Cloud1"/> <Object type="sun" x="562" y="84" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="576" y="53" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-74" y="73" rotation="0" clip_name="Cloud2"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="321" y="129" rotation="-70.0001220703125" clip_name="ArrowGhost1"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="423" y="293" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="207" y="293" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="497" y="298" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="148" y="298" rotation="0" clip_name="Screw"/> <Object type="static_box" is_stone="false" x="22" y="80" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="false" x="67" y="80" rotation="0" clip_name="GibbetStick"/> <Object type="points_ghost" power="500" x="458" y="264" rotation="0" clip_name="PointsGhost500"/> <Object type="points_ghost" power="1000" x="601" y="412" rotation="0" clip_name="PointsGhost1000"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="355" y="400" rotation="0" clip_name="flower_2"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="188" y="427" rotation="0" clip_name="herb"/> <Object x="0" y="0" rotation="0" clip_name="ThisIsHedhehogHint"/> <Object type="highlight" size="150" x="322" y="251" rotation="0" clip_name="ThisIsHedhehogHint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="87" y="75" rotation="0" clip_name="RopeRings"/> </Level> ; private static const LEVEL_15:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-9" y="279" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="110" y="188" rotation="89.9947509765625" clip_name="BowPoint"/> <Object type="tnt_barrel" x="159" y="69" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="395" y="240" rotation="0" clip_name="HangerPoint"/> <Object type="cloud" x="118" y="82" rotation="0" clip_name="Cloud4"/> <Object type="dynamic_box" x="223" y="77" rotation="0" clip_name="Box"/> <Object type="tnt_barrel" x="401" y="69" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object type="static_box" is_stone="true" x="514" y="361" rotation="0" clip_name="Stone1"/> <Object type="gibbet_obliquely" inverted="false" x="349" y="254" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="330" y="288" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="true" x="379" y="361" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="413" y="361" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="447" y="361" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="false" x="366" y="236" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="480" y="361" rotation="0" clip_name="Stone1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="615" y="405" rotation="-41.08119201660156" clip_name="ArrowGhost1"/> <Object type="dynamic_box" x="514" y="330" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="514" y="305" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="514" y="280" rotation="0" clip_name="Box"/> <Object type="static_box" is_stone="true" x="280" y="108" rotation="0" clip_name="ComposedStone1"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="551" y="168" rotation="-139.99972534179688" clip_name="ArrowGhost1"/> <Object type="static_box" is_stone="true" x="311" y="360" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="345" y="360" rotation="0" clip_name="Stone0"/> <Object type="hedhehog_ghost" speed="0" charge="1" x="249" y="439" rotation="66.00038146972656" clip_name="ArrowGhost1"/> <Object type="sun" x="578" y="89" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="330" y="236" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="387" y="231" rotation="0" clip_name="RopeRings"/> <Object type="cloud" x="499" y="53" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="622" y="23" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="56" y="33" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="411" y="111" rotation="0" clip_name="Cloud9"/> </Level> ; private static const LEVEL_16:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="sun" x="77" y="74" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" type="background" x="0" y="357" rotation="0" clip_name="Back2"/> <Object type="static_box" is_stone="true" x="196" y="364" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="196" y="398" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="196" y="432" rotation="0" clip_name="Stone2"/> <Object type="shooting_point" x="582" y="406" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="102" y="337" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="61" y="350" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="43" y="385" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="true" x="162" y="388" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="162" y="422" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="162" y="456" rotation="0" clip_name="Stone0"/> <Object scaleX="1" scaleY="1" type="background" x="210" y="160" rotation="0" clip_name="tree_7"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="false" x="79" y="333" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="42" y="332" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="95" y="327" rotation="0" clip_name="RopeRings"/> <Object type="tnt_barrel" x="160" y="349" rotation="0" clip_name="States.PlayState::TNTBarrel"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="511" y="427" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="232" y="400" rotation="0" clip_name="flower_4"/> <Object type="cloud" x="54" y="68" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="146" y="18" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="342" y="41" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="566" y="15" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-133" y="18" rotation="0" clip_name="Cloud3"/> <Object type="points_ghost" power="300" x="59" y="298" rotation="0" clip_name="PointsGhost300"/> <Object type="points_ghost" power="300" x="301" y="414" rotation="0" clip_name="PointsGhost300"/> </Level> ; private static const LEVEL_17:XML = null; private static const LEVEL_18:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="352" rotation="0" clip_name="Back3"/> <Object scaleX="1" scaleY="1" type="background" x="202" y="314" rotation="0" clip_name="Mill"/> <Object type="static_box" is_stone="false" x="18" y="432" rotation="0" clip_name="GibbetColumn"/> <Object scaleX="1" scaleY="1" type="background" x="335" y="228" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="79" y="107" rotation="0" clip_name="HangerPoint"/> <Object type="shooting_point" x="566" y="336" rotation="-80.00064086914063" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="63" y="319" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="38" y="120" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="21" y="153" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="55" y="103" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_obliquely" inverted="false" x="36" y="332" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="18" y="366" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="52" y="315" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet_ground" x="78" y="247" rotation="0" clip_name="GibbetGround"/> <Object type="rotor" speed="90" scaleX="0.7999877982075193" scaleY="0.7999877982075193" x="260" y="358" rotation="89.99301147460938" clip_name="MillFan"/> <Object scaleX="1" scaleY="1" type="background" x="201" y="162" rotation="0" clip_name="Mill"/> <Object type="rotor" speed="-90" scaleX="1.0000000041909516" scaleY="1.0000000041909516" x="258" y="205" rotation="89.9947509765625" clip_name="MillFan"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="17" y="314" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="20" y="103" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="55" y="309" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="71" y="97" rotation="0" clip_name="RopeRings"/> <Object type="sun" x="561" y="90" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="112" y="427" rotation="0" clip_name="herb"/> <Object type="cloud" x="108" y="4" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="337" y="43" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-163" y="82" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="-68" y="22" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="557" y="15" rotation="0" clip_name="Cloud5"/> </Level> ; private static const LEVEL_19:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="1" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1.0032806396484375" scaleY="1" type="background" x="-3" y="332" rotation="0" clip_name="Back1"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="102" y="231" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="false" x="65" y="241" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="48" y="276" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="83" y="224" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="95" y="219" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="false" x="601" y="123" rotation="0" clip_name="GibbetColumn"/> <Object type="shooting_point" x="516" y="354" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="544" y="77" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="102" y="347" rotation="0" clip_name="HangerPoint"/> <Object type="hedhehog_ghost" speed="80" charge="4" x="422" y="153" rotation="0" clip_name="ArrowGhost4"/> <Object type="gibbet_ground" x="561" y="212" rotation="0" clip_name="GibbetGround"/> <Object type="static_box" is_stone="false" x="565" y="72" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="601" y="72" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="537" y="67" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_obliquely" inverted="false" x="65" y="357" rotation="0" clip_name="GibbetObliquely"/> <Object type="static_box" is_stone="false" x="48" y="398" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="83" y="341" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="317" y="426" rotation="0" clip_name="Stone0"/> <Object scaleX="1" scaleY="1" type="background" x="161" y="255" rotation="0" clip_name="tree_8"/> <Object scaleX="1" scaleY="1" type="background" x="391" y="367" rotation="0" clip_name="tree_2"/> <Object type="ground" x="321" y="461" rotation="0" clip_name="Ground"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="47" y="340" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="95" y="335" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="317" y="392" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="317" y="357" rotation="0" clip_name="Stone2"/> <Object type="sun" x="77" y="92" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="47" y="224" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="115" y="428" rotation="0" clip_name="herb"/> <Object scaleX="1" scaleY="1" width="38.7" height="43.05" type="frontground" x="565" y="400" rotation="0" clip_name="flower_2"/> <Object type="cloud" x="465" y="26" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="646" y="67" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="-36" y="40" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="-159" y="85" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="183" y="30" rotation="0" clip_name="Cloud4"/> <Object type="vulture" inverted="false" x="53" y="196" rotation="0" clip_name="VultureHere"/> </Level> ; private static const LEVEL_20:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object type="static_box" is_stone="true" x="348" y="241" rotation="0" clip_name="ComposedStone98"/> <Object scaleX="1" scaleY="1" type="background" x="-12" y="280" rotation="0" clip_name="BonusGameBack"/> <Object type="shooting_point" x="61" y="344" rotation="45" clip_name="BowPoint"/> <Object type="gibbet_ground" x="563" y="481" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet_obliquely" inverted="true" x="591" y="355" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="610" y="389" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="549" y="343" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="575" y="337" rotation="0" clip_name="GibbetStick"/> <Object type="static_box" is_stone="true" x="246" y="428" rotation="0" clip_name="ComposedStone98"/> <Object type="cow" inverted="true" x="322" y="287" rotation="0" clip_name="InvertedCowHere"/> <Object type="cow" inverted="false" x="272" y="99" rotation="0" clip_name="CowHere"/> <Object type="ammo_ghost" power="10" x="494" y="421" rotation="0" clip_name="AmmoGhost10"/> <Object type="ammo_ghost" power="5" x="578" y="303" rotation="0" clip_name="AmmoGhost5"/> <Object type="gibbet_obliquely" inverted="true" x="558" y="86" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="576" y="120" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_ground" x="534" y="208" rotation="0" clip_name="GibbetGround"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="515" y="74" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="false" x="540" y="68" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="610" y="337" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="576" y="68" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="541" y="332" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="507" y="62" rotation="0" clip_name="RopeRings"/> <Object type="sun" x="93" y="93" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="91" y="14" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="352" y="51" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-68" y="86" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="601" y="71" rotation="0" clip_name="Cloud6"/> </Level> ; private static const LEVEL_22:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="353" rotation="0" clip_name="Back3"/> <Object scaleX="1" scaleY="1" type="background" x="27" y="228" rotation="0" clip_name="tree_4"/> <Object type="shooting_point" x="578" y="94" rotation="-45" clip_name="BowPoint"/> <Object type="gibbet" pers_id="3" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="559" y="340" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="true" x="585" y="352" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="604" y="387" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="569" y="334" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="603" y="334" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="551" y="328" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="true" x="239" y="435" rotation="0" clip_name="Brick"/> <Object scaleX="1" scaleY="1" type="background" x="290" y="350" rotation="0" clip_name="tree_1"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="teleport_ghost" x="92" y="86" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="38" y="413" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="teleport_ghost" x="453" y="411" rotation="0" clip_name="States.PlayState::TeleportGhost"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="311" y="72" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="true" x="336" y="84" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="356" y="118" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="321" y="66" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="355" y="66" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="303" y="60" rotation="0" clip_name="RopeRings"/> <Object type="gibbet_ground" x="315" y="214" rotation="0" clip_name="GibbetGround"/> <Object type="hedhehog_ghost" speed="60" charge="3" x="232" y="286" rotation="0" clip_name="ArrowGhost3"/> <Object type="static_box" is_stone="true" x="144" y="238" rotation="0" clip_name="BrickNoLeft"/> <Object type="static_box" is_stone="true" x="93" y="238" rotation="0" clip_name="BrickNoRightNoLeft"/> <Object type="static_box" is_stone="true" x="43" y="238" rotation="0" clip_name="BrickNoRight"/> <Object type="points_ghost" power="300" x="51" y="191" rotation="0" clip_name="PointsGhost300"/> <Object type="static_box" is_stone="true" x="322" y="292" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="322" y="320" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="322" y="349" rotation="0" clip_name="Brick"/> <Object type="static_box" is_stone="true" x="239" y="406" rotation="0" clip_name="Brick"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="520" y="427" rotation="0" clip_name="herb"/> <Object type="cloud" x="690" y="81" rotation="0" clip_name="Cloud9"/> <Object type="cloud" x="506" y="29" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="-159" y="53" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="343" y="81" rotation="0" clip_name="Cloud6"/> <Object type="cloud" x="-38" y="7" rotation="0" clip_name="Cloud5"/> <Object type="cloud" x="184" y="46" rotation="0" clip_name="Cloud3"/> </Level> ; private static const LEVEL_24:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="352" rotation="0" clip_name="Back3"/> <Object type="shooting_point" x="538" y="405" rotation="-89.99563598632813" clip_name="BowPoint"/> <Object type="static_box" is_stone="true" x="344" y="455" rotation="0" clip_name="Stone0"/> <Object scaleX="1" scaleY="1" type="background" x="401" y="229" rotation="0" clip_name="tree_4"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="static_box" is_stone="true" x="344" y="321" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="2" path_to_hang="LEFT_LOWER_LEG" connect_legs="false" chains_count="8" x="87" y="109" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="84" y="88" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="3" path_to_hang="LEFT_LOWER_HAND" connect_legs="false" chains_count="8" x="261" y="260" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="262" y="240" rotation="0" clip_name="Stone1"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="8" x="170" y="193" rotation="0" clip_name="HangerPoint"/> <Object type="static_box" is_stone="true" x="171" y="173" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="344" y="354" rotation="0" clip_name="Stone3"/> <Object type="static_box" is_stone="true" x="344" y="388" rotation="0" clip_name="Stone2"/> <Object type="static_box" is_stone="true" x="344" y="422" rotation="0" clip_name="Stone0"/> <Object type="static_box" is_stone="true" x="50" y="88" rotation="0" clip_name="Stone1"/> <Object type="static_box" is_stone="true" x="17" y="88" rotation="0" clip_name="Stone3"/> <Object type="cow" inverted="true" x="195" y="321" rotation="0" clip_name="InvertedCowHere"/> <Object type="points_ghost" power="1000" x="69" y="42" rotation="0" clip_name="PointsGhost1000"/> <Object type="sun" x="568" y="85" rotation="0" clip_name="States.PlayState::Sun"/> <Object scaleX="1" scaleY="1" width="27.65" height="18.1" type="frontground" x="235" y="426" rotation="0" clip_name="herb"/> <Object type="cloud" x="605" y="76" rotation="0" clip_name="Cloud8"/> <Object type="cloud" x="479" y="55" rotation="0" clip_name="Cloud7"/> <Object type="cloud" x="171" y="45" rotation="0" clip_name="Cloud4"/> <Object type="cloud" x="-46" y="15" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="-157" y="65" rotation="0" clip_name="Cloud9"/> </Level> ; private static const LEVEL_26:XML = <Level> <Object scaleX="1" scaleY="1" type="background" x="0" y="0" rotation="0" clip_name="Background"/> <Object scaleX="1" scaleY="1" type="background" x="-3" y="331" rotation="0" clip_name="Back1"/> <Object scaleX="1" scaleY="1" type="background" x="20" y="151" rotation="0" clip_name="tree_5"/> <Object type="shooting_point" x="45" y="404" rotation="40.00077819824219" clip_name="BowPoint"/> <Object type="gibbet" pers_id="2" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="559" y="340" rotation="0" clip_name="HangerPoint"/> <Object type="gibbet_obliquely" inverted="true" x="585" y="352" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="604" y="387" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="569" y="334" rotation="0" clip_name="GibbetStick"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="603" y="334" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="551" y="328" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" type="background" x="455" y="370" rotation="0" clip_name="tree_2"/> <Object type="ground" x="320" y="461" rotation="0" clip_name="Ground"/> <Object type="gibbet_obliquely" inverted="true" x="586" y="235" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="604" y="269" rotation="0" clip_name="GibbetColumn"/> <Object type="gibbet_obliquely" inverted="true" x="584" y="117" rotation="0" clip_name="InvertedGibbetObliquely"/> <Object type="static_box" is_stone="false" x="604" y="152" rotation="0" clip_name="GibbetColumn"/> <Object type="static_box" is_stone="false" x="569" y="100" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="1" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="557" y="106" rotation="0" clip_name="HangerPoint" cloud_name="RobinHoodMadeThatMuchBetter" cloud_prob="0.3"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="549" y="94" rotation="0" clip_name="RopeRings"/> <Object type="static_box" is_stone="false" x="569" y="216" rotation="0" clip_name="GibbetStick"/> <Object type="gibbet" pers_id="4" path_to_hang="HEAD" connect_legs="false" chains_count="7" x="557" y="223" rotation="0" clip_name="HangerPoint"/> <Object scaleX="1" scaleY="1" width="15.2" height="11.55" type="frontground" x="549" y="211" rotation="0" clip_name="RopeRings"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="603" y="216" rotation="0" clip_name="Screw"/> <Object scaleX="1" scaleY="1" width="6.3" height="6.3" type="frontground" x="603" y="99" rotation="0" clip_name="Screw"/> <Object type="dynamic_box" x="285" y="431" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="285" y="406" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="285" y="381" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="285" y="356" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="285" y="331" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="285" y="307" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="580" y="82" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="547" y="82" rotation="0" clip_name="Box"/> <Object type="dynamic_box" x="564" y="57" rotation="0" clip_name="Box"/> <Object scaleX="1" scaleY="1" width="28.45" height="36.5" type="frontground" x="352" y="399" rotation="0" clip_name="flower_4"/> <Object type="sun" x="303" y="68" rotation="0" clip_name="States.PlayState::Sun"/> <Object type="cloud" x="-166" y="6" rotation="0" clip_name="Cloud0"/> <Object type="cloud" x="42" y="17" rotation="0" clip_name="Cloud1"/> <Object type="cloud" x="322" y="39" rotation="0" clip_name="Cloud2"/> <Object type="cloud" x="432" y="80" rotation="0" clip_name="Cloud3"/> <Object type="cloud" x="609" y="-2" rotation="0" clip_name="Cloud4"/> </Level> ; } }//package States.PlayState
Section 128
//MapObject (States.PlayState.MapObject) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class MapObject extends MovieClip { protected var m_isDead:Boolean;// = false protected var m_liveTime:Number;// = 0 protected var m_body:b2Body;// = null public function isItYourFixture(_arg1:b2Fixture):Boolean{ return ((_arg1.GetBody() == m_body)); } public function get body():b2Body{ return (m_body); } public function onDead(_arg1:b2World):void{ } public function set body(_arg1:b2Body):void{ m_body = _arg1; } public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ } public function update(_arg1:Number):void{ } public function canStickInMe():Boolean{ return (true); } public function goTop(_arg1:Sprite, _arg2:Sprite, _arg3:Sprite, _arg4:Sprite, _arg5:Sprite):void{ } public function isDead():Boolean{ return (m_isDead); } public function connectWithBody(_arg1:b2Body):void{ this.body = _arg1; m_body.SetUserData(this); } public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ } } }//package States.PlayState
Section 129
//OutOfArrowsEffect (States.PlayState.OutOfArrowsEffect) package States.PlayState { public class OutOfArrowsEffect extends MapObject { private var m_stage:int;// = 0 public function OutOfArrowsEffect(){ x = 320; y = 240; scale = 0; alpha = -1; } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); switch (m_stage){ case 0: alpha = (alpha + (_arg1 * 4)); if ((scale = (scale + (_arg1 * 2))) > 1){ scale = 1; alpha = 1; m_liveTime = 0; m_stage = 1; }; break; case 1: scale = (1 + (Math.sin((m_liveTime * 5)) * 0.07)); break; }; } private function get scale():Number{ return (scaleX); } private function set scale(_arg1:Number):void{ scaleX = _arg1; scaleY = _arg1; } } }//package States.PlayState
Section 130
//PlayState (States.PlayState.PlayState) package States.PlayState { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Utils.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import flash.geom.*; import Main.*; import flash.display.*; import Ragdoll.*; import flash.utils.*; import States.*; import flash.system.*; import flash.ui.*; public class PlayState extends PhysGameState { private const STATE_TELEPORT:int = 3; private const STATE_SHOW_HIGHLIGHT:int = 5; private const STATE_SHOOTING:int = 2; private const STATE_NORMAL:int = 0; private const STATE_TAKE_AIM:int = 1; private const STATE_NOT_INITILIAZED:int = -1; private const STATE_SCROLLING_FORWARD:int = 4; private var m_nextState:GameState;// = null private var m_shootingPower:Number; private var m_arrowsLayer:Sprite; private var m_contactListener:b2ContactListener; private var m_mapObjects:Array; private var m_camera:Camera; private var m_turtorialFrame:TurtorialFrame; private var m_sightClip:MovieClip; private var m_state:int;// = -1 private var m_cloudsLayer:Sprite; private var m_allStones:Array; private var m_guiLayer:Sprite; private var m_arrowHeadsToBodyContacts:Dictionary; private var m_turtorialFrames:Array; private var m_arrowBodyToBodyContacts:Dictionary; private var m_layersContainer:Sprite; private var m_nextStateTimer:Timer; private var m_arrows:Array; private var m_staticLayer:Sprite; private var m_oldSightClip:MovieClip; private var m_frontLayer:Sprite; private var m_arrowsLeft:int; private var m_tmpScores:int;// = 0 private var m_killedCount:int;// = 0 private var m_gibbetsOnLevel:int; private var m_savedCount:int;// = 0 private var m_dynamicLayer:Sprite; private var m_backgroundLayer:Sprite; private var m_bow:Bow; private static var m_instance:PlayState = null; public static var m_currentScores:int = 0; public static var m_deadID:int; public static var m_curLevel:int = 0; public static var m_wasStar:Boolean = true; public static var m_arrowsUsed:int; public function PlayState(_arg1:int){ m_mapObjects = new Array(); m_turtorialFrames = new Array(); m_guiLayer = new Sprite(); m_layersContainer = new Sprite(); m_backgroundLayer = new Sprite(); m_cloudsLayer = new Sprite(); m_staticLayer = new Sprite(); m_dynamicLayer = new Sprite(); m_frontLayer = new Sprite(); m_arrowsLayer = new Sprite(); m_arrows = new Array(); m_contactListener = new MyContactListener(); m_sightClip = new Sight(); m_oldSightClip = new Sight(); m_nextStateTimer = new Timer(2500, 1); m_arrowBodyToBodyContacts = new Dictionary(); m_arrowHeadsToBodyContacts = new Dictionary(); m_allStones = new Array(); super(); m_curLevel = _arg1; m_instance = this; } private function processContacts():void{ var _local1:* = null; for (_local1 in m_arrowBodyToBodyContacts) { onContactWithArrowBody(m_arrowBodyToBodyContacts[_local1], _local1); }; m_arrowBodyToBodyContacts = new Dictionary(); for (_local1 in m_arrowHeadsToBodyContacts) { onContactWithArrowHeadBody(m_arrowHeadsToBodyContacts[_local1], _local1); }; m_arrowHeadsToBodyContacts = new Dictionary(); } public function onHangerSafe(_arg1:int, _arg2:Gibbet):void{ var _local3:b2Vec2; var _local4:int; var _local5:AddPointsEffect; if (!_arg2.isKilled()){ m_savedCount++; _local3 = _arg2.getHeadPosition(); _local4 = ((_arg2.getHealth() * 1000) * _arg1); if (_local4 < 100){ _local4 = 100; }; if (GameData.haveAchievement(Achievements.LEVELS_WITHOUT_LOSE)){ _local4 = (_local4 + 100); }; if (GameData.haveAchievement(Achievements.LEVELS_WITHOUT_INJURE)){ _local4 = (_local4 + 200); }; _local4 = (_local4 - (_local4 % 10)); addScores(_local4); _local5 = new AddPointsEffect(_local4, _arg1, (_local3.x * m_physScale), (_local3.y * m_physScale)); m_frontLayer.addChild(_local5); m_mapObjects.push(_local5); m_gibbetsOnLevel--; recalcGui(); testEndLevel(); }; m_camera.onHangerSave(); } public function onHangerDead(_arg1:Gibbet):void{ m_deadID = _arg1.getPersID(); m_killedCount++; recalcGui(); var _local2:b2Vec2 = _arg1.getHeadPosition(); var _local3:Soul = new ((getDefinitionByName(("Soul" + _arg1.getPersID())) as Class)); addChild(_local3); _local3.x = ((_local2.x * m_physScale) + m_layersContainer.x); _local3.y = ((_local2.y * m_physScale) + m_layersContainer.y); m_mapObjects.push(_local3); lose(); m_camera.onHangerDead(); } public function createGibbetObliquely(_arg1:DisplayObject, _arg2:Boolean):void{ var _local3:b2BodyDef = new b2BodyDef(); _local3.position.x = (_arg1.x / m_physScale); _local3.position.y = (_arg1.y / m_physScale); var _local4:b2PolygonShape = new b2PolygonShape(); var _local5:Array = new Array(); if (_arg2){ _local5.push(new b2Vec2((-22 / m_physScale), (-19 / m_physScale))); _local5.push(new b2Vec2((-14 / m_physScale), (-19 / m_physScale))); _local5.push(new b2Vec2((22 / m_physScale), (12 / m_physScale))); _local5.push(new b2Vec2((22 / m_physScale), (20 / m_physScale))); } else { _local5.push(new b2Vec2((-22 / m_physScale), (20 / m_physScale))); _local5.push(new b2Vec2((-22 / m_physScale), (12 / m_physScale))); _local5.push(new b2Vec2((14 / m_physScale), (-19 / m_physScale))); _local5.push(new b2Vec2((22 / m_physScale), (-19 / m_physScale))); }; _local4.SetAsVector(_local5, _local5.length); var _local6:b2Body = m_world.CreateBody(_local3); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local4; _local6.CreateFixture(_local7); _local6.SetUserData(_arg1); m_staticLayer.addChild(_arg1); } private function recalcGui():void{ m_view.m_arrowsLeftClip.m_text.text = m_arrowsLeft.toString(); var _local1:String = m_currentScores.toString(); switch (m_tmpScores.toString().length){ case 4: _local1 = ("0" + m_tmpScores.toString()); break; case 3: _local1 = ("00" + m_tmpScores.toString()); break; case 2: _local1 = ("000" + m_tmpScores.toString()); break; case 1: _local1 = ("0000" + m_tmpScores.toString()); break; }; m_view.m_scoreClip.m_text.text = _local1; m_view.m_levelClip.m_text.text = (m_curLevel + 1).toString(); } public function getView():Sprite{ return (m_view); } private function lose():void{ if (m_nextState == null){ GameData.onLoseLevel(m_curLevel, m_killedCount); m_nextState = new LoseState(); m_nextStateTimer.start(); }; } public function setLongShootMode():void{ m_camera = new TargetedCamera(); } private function addScores(_arg1:int):void{ m_currentScores = (m_currentScores + _arg1); } private function testEndLevel():void{ if (m_gibbetsOnLevel == 0){ win(); return; }; } public function startTeleportHere(_arg1:b2Vec2):void{ m_bow.startTeleport(new Point((_arg1.x * m_physScale), (_arg1.y * m_physScale))); setState(STATE_TELEPORT); } public function addPointsAt(_arg1:b2Vec2, _arg2:int):void{ addScores(_arg2); var _local3:AddPointsEffect = new AddPointsEffect(_arg2, 1, (_arg1.x * m_physScale), (_arg1.y * m_physScale)); addChild(_local3); m_mapObjects.push(_local3); } private function onNextStateTimer(_arg1:TimerEvent):void{ m_tmpScores = m_currentScores; recalcGui(); StateManager.getInstance().pushState(m_nextState); if ((m_nextState is WinState)){ GameData.onWinLevel(m_curLevel, m_currentScores, m_wasStar, m_savedCount); }; } private function updateTurtorialFrame(_arg1:Number):void{ if (m_turtorialFrame){ m_turtorialFrame.update(_arg1); if (((m_turtorialFrame.isFinished()) && (!(m_turtorialFrame.isShow())))){ m_state = STATE_NORMAL; m_turtorialFrame.removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); this.removeChild(m_turtorialFrame.getTextClip()); this.removeChild(m_turtorialFrame.getClickSign()); this.removeChild(m_turtorialFrame.getCheckBox()); if (m_turtorialFrame.isNeedToHide()){ m_turtorialFrames.length = 0; GameData.hideTips(); }; this.removeChild(m_turtorialFrame); m_turtorialFrame = null; if (m_turtorialFrames.length != 0){ highlightZone(m_turtorialFrames.pop()); }; }; } else { if (m_turtorialFrames.length != 0){ highlightZone(m_turtorialFrames.pop()); }; }; } private function onMenuClick(_arg1:MouseEvent):void{ if ((((m_nextState == null)) || ((m_nextState is LoseState)))){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); }; } private function setState(_arg1:int):void{ m_state = _arg1; switch (_arg1){ case STATE_NORMAL: m_sightClip.visible = false; break; case STATE_TAKE_AIM: m_sightClip.visible = true; break; case STATE_TELEPORT: m_sightClip.visible = false; break; }; } public function getCurrentLevelCompleted():int{ return (m_curLevel); } override public function handleKeyDown(_arg1:KeyboardEvent):void{ super.handleKeyDown(_arg1); if (((Constant.m_debugMode) && ((_arg1.keyCode == Keyboard.DOWN)))){ m_debugSprite.visible = !(m_debugSprite.visible); }; if (_arg1.keyCode == 82){ onReplayClick(null); }; } public function createBlood(_arg1:b2Vec2):void{ var _local3:int; var _local4:b2BodyDef; var _local5:b2Body; var _local6:b2PolygonShape; var _local7:b2FixtureDef; var _local8:b2Fixture; var _local9:Blood; if (GameData.m_isBloodDisabled){ return; }; var _local2:int = MathUtils.RandomRangeInt(3, 8); while (_local3 < _local2) { _local4 = new b2BodyDef(); _local4.position = _arg1; _local4.type = b2Body.b2_dynamicBody; _local4.angle = MathUtils.GradToRad(MathUtils.RandomRange(0, (Math.PI * 2))); _local5 = m_world.CreateBody(_local4); _local6 = new b2PolygonShape(); _local6.SetAsBox((1 / m_physScale), (1 / m_physScale)); _local7 = new b2FixtureDef(); _local7.shape = _local6; _local8 = _local5.CreateFixture(_local7); _local8.SetSensor(true); _local5.ApplyImpulse(new b2Vec2(MathUtils.RandomRange(-0.7, 0.7), MathUtils.RandomRange(0, -3)), _arg1); _local5.ApplyTorque(MathUtils.RandomRange(-1, 1)); _local9 = new Blood(); _local9.connectWithBody(_local5); m_arrowsLayer.addChild(_local9); m_mapObjects.push(_local9); _local3++; }; } public function onContactWithArrowHeadBody(_arg1:Arrow, _arg2:b2Fixture):void{ var _local5:MapObject; var _local6:b2RevoluteJointDef; var _local7:b2AABB; var _local8:b2Vec2; var _local3:Boolean; var _local4:Boolean; for each (_local5 in m_mapObjects) { if (_local5.isItYourFixture(_arg2)){ _local5.onArrowHeadContact(_arg1, _arg2); if ((_local5 is Gibbet)){ _local3 = true; }; if ((_local5 is Sun)){ _local4 = true; }; break; }; }; if (((((((!(_arg2.IsSensor())) && (!(_arg1.isStickIn())))) && (_arg1.canStickIn()))) && ((m_allStones.indexOf(_arg2) == -1)))){ _arg1.stopFly(); _arg1.stickIn(); if (!_local3){ SoundManager.play(SoundConst.STICK_IN_WOOD); } else { SoundManager.play(MathUtils.anyOfString(SoundConst.STICK_IN_BODY_0, SoundConst.STICK_IN_BODY_1, SoundConst.STICK_IN_BODY_2)); m_staticLayer.addChild(_arg1); }; if (_local4){ m_backgroundLayer.addChild(_arg1); }; _local6 = new b2RevoluteJointDef(); _local6.lowerAngle = MathUtils.RandomRange((-(Math.PI) / 8), (-(Math.PI) / 12)); _local6.upperAngle = MathUtils.RandomRange((Math.PI / 12), (Math.PI / 8)); _local6.enableLimit = true; _local7 = _arg1.getHeadFixture().GetAABB(); _local8 = new b2Vec2(((_local7.lowerBound.x + _local7.upperBound.x) / 2), ((_local7.lowerBound.y + _local7.upperBound.y) / 2)); _local6.Initialize(_arg1.getBody(), _arg2.GetBody(), _local8); m_world.CreateJoint(_local6); if (_arg2.GetBody().GetType() == b2Body.b2_dynamicBody){ _arg1.resumeFly(); }; }; if (!_arg2.IsSensor()){ _arg1.onAnyContact(); }; } public function onContactWithArrowBody(_arg1:Arrow, _arg2:b2Fixture):void{ var _local3:MapObject; for each (_local3 in m_mapObjects) { if (_local3.isItYourFixture(_arg2)){ _local3.onArrowContact(_arg1, _arg2); break; }; }; if (!_arg2.IsSensor()){ _arg1.onAnyContact(); }; } public function createArrow(_arg1:b2Vec2, _arg2:b2Vec2):Arrow{ var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position = _arg1; var _local4:b2Body = m_world.CreateBody(_local3); var _local5:b2PolygonShape = new b2PolygonShape(); var _local6:Number = m_physScale; _local5.SetAsArray([new b2Vec2((-(Arrow.m_halfWidth) / _local6), (-(Arrow.m_halfWidth) / _local6)), new b2Vec2(0, ((-(Arrow.m_halfWidth) / _local6) * 1.05)), new b2Vec2((Arrow.m_halfWidth / _local6), (-(Arrow.m_halfWidth) / _local6)), new b2Vec2((Arrow.m_halfWidth / _local6), (Arrow.m_halfWidth / _local6)), new b2Vec2((-(Arrow.m_halfWidth) / _local6), (Arrow.m_halfWidth / _local6))], 5); var _local7:int; while (_local7 < _local5.GetVertexCount()) { _local5.GetVertices()[_local7].Add(new b2Vec2(0, (-((Arrow.m_halfHeight + Arrow.m_halfWidth)) / m_physScale))); _local7++; }; var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local5; _local8.density = 2.5; _local8.friction = 0.5; _local8.restitution = 0.1; _local8.filter.groupIndex = -1; var _local9:b2Fixture = _local4.CreateFixture(_local8); var _local10:b2PolygonShape = new b2PolygonShape(); _local10.SetAsBox((Arrow.m_halfWidth / m_physScale), (Arrow.m_halfHeight / m_physScale)); var _local11:b2FixtureDef = new b2FixtureDef(); _local11.shape = _local10; _local11.density = 2.5; _local11.friction = 0.5; _local11.restitution = 0.1; _local11.filter.groupIndex = -1; var _local12:b2Fixture = _local4.CreateFixture(_local11); _local4.SetLinearVelocity(_arg2); _local4.SetBullet(true); var _local13:Arrow = new Arrow(_local9, _local12, _local4); m_arrows.push(_local13); _local4.SetUserData(_local13); m_arrowsLayer.addChild(_local13); _local13.x = (_arg1.x * m_physScale); _local13.y = (_arg1.y * m_physScale); _local13.rotation = MathUtils.RadToGrad(_local4.GetAngle()); if (((m_curLevel + 1) % 12) == 0){ _local13.setFreeFly(); }; return (_local13); } private function updateScores():void{ if (m_tmpScores < m_currentScores){ m_tmpScores = (m_tmpScores + 31); if (m_tmpScores > m_currentScores){ m_tmpScores = m_currentScores; }; }; } public function createGibbletGround(_arg1:Number, _arg2:Number):void{ var _local3:b2BodyDef = new b2BodyDef(); _local3.position.x = (_arg1 / m_physScale); _local3.position.y = (_arg2 / m_physScale); var _local4:b2PolygonShape = new b2PolygonShape(); var _local5:Array = [new b2Vec2((-75 / m_physScale), (-33 / m_physScale)), new b2Vec2((75 / m_physScale), (-33 / m_physScale)), new b2Vec2((30 / m_physScale), (27 / m_physScale)), new b2Vec2((0 / m_physScale), (38 / m_physScale)), new b2Vec2((-28 / m_physScale), (27 / m_physScale))]; _local4.SetAsArray(_local5, _local5.length); var _local6:b2Body = m_world.CreateBody(_local3); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local4; m_allStones.push(_local6.CreateFixture(_local7)); _local6.SetUserData(new GibbetGround()); m_staticLayer.addChild(_local6.GetUserData()); } public function boomAt(_arg1:b2Body):void{ var _local5:b2Body; var _local6:Object; var _local7:b2Vec2; var _local8:Number; SoundManager.play(SoundConst.EXPLOISON); var _local2:b2Vec2 = _arg1.GetPosition(); var _local3:Array = new Array(); var _local4:b2Body = m_world.GetBodyList(); while (_local4) { if (_arg1 == _local4){ } else { _local6 = _local4.GetUserData(); if ((((_local6 is Box)) || ((_local6 is TNTBarrel)))){ _local7 = _local2.Copy(); _local7.Subtract(_local4.GetPosition()); _local8 = _local7.Length(); _local7.Normalize(); _local7.Multiply((-(Constant.BOMB_IMPULSE) / (_local8 * _local8))); _local4.ApplyImpulse(_local7, _local4.GetPosition()); _local4.ApplyTorque(MathUtils.RandomRange(-0.01, 0.01)); }; }; _local4 = _local4.GetNext(); }; m_world.DestroyBody(_arg1); for each (_local5 in _local3) { m_world.DestroyBody(_local5); }; } private function highlightZone(_arg1:TurtorialFrame):void{ m_state = STATE_SHOW_HIGHLIGHT; if (((m_turtorialFrame) && (m_turtorialFrame.parent))){ if (m_turtorialFrame.getTextClip()){ m_turtorialFrame.getTextClip().removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); }; if (m_turtorialFrame.getClickSign()){ m_turtorialFrame.getClickSign().removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); }; m_turtorialFrame.removeEventListener(MouseEvent.CLICK, onTurtotialFrameClick); this.removeChild(m_turtorialFrame); }; m_turtorialFrame = _arg1; this.addChild(m_turtorialFrame); var _local2:ClickToContinue = new ClickToContinue(); _local2.buttonMode = true; this.addChild(_local2); _local2.x = 320; _local2.y = 460; m_turtorialFrame.setClickSign(_local2); var _local3:HideTipsPanel = new HideTipsPanel(); addChild(_local3); m_turtorialFrame.setCheckBox(_local3); m_turtorialFrame.addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); m_turtorialFrame.getTextClip().addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); m_turtorialFrame.getClickSign().addEventListener(MouseEvent.CLICK, onTurtotialFrameClick); this.addChild(m_turtorialFrame.getTextClip()); } private function onTurtotialFrameClick(_arg1:MouseEvent):void{ if (m_state == STATE_SHOW_HIGHLIGHT){ hideHighlight(); }; } public function addArrows(_arg1:int, _arg2:Number, _arg3:Number):void{ m_arrowsLeft = (m_arrowsLeft + _arg1); recalcGui(); var _local4:AddPointsEffect = new AddPointsEffect(_arg1, 1, _arg2, _arg3, " arrows"); m_frontLayer.addChild(_local4); m_mapObjects.push(_local4); } private function checkOutOfArrows():void{ var _local1:OutOfArrowsEffect; if (m_nextState){ return; }; if (m_arrowsLeft == 0){ if (m_arrows.length == 0){ _local1 = new OutOfArrowsEffect(); addChild(_local1); m_mapObjects.push(_local1); lose(); }; }; } override public function onInit():void{ var _local1:String; var _local2:XML; var _local3:String; var _local4:XML; var _local5:TargetedCamera; super.onInit(); m_view = new PlayStateView(); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonReplay.addEventListener(MouseEvent.CLICK, onReplayClick); m_nextStateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onNextStateTimer); if (m_camera){ SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); } else { if ((m_curLevel % 2)){ SoundManager.playLoop(SoundConst.AMBIENT_1); } else { SoundManager.playLoop(SoundConst.AMBIENT_2); }; }; m_gibbetsOnLevel = 0; m_deadID = -1; m_arrowsUsed = 0; m_currentScores = 0; m_arrowsLeft = GameData.getArrowsLeft(m_curLevel); if (GameData.haveAchievement(Achievements.WITH_STAR_40)){ m_arrowsLeft++; }; m_wasStar = true; setState(STATE_NORMAL); addChild(m_layersContainer); m_layersContainer.addChild(m_backgroundLayer); m_layersContainer.addChild(m_cloudsLayer); m_layersContainer.addChild(m_staticLayer); m_layersContainer.addChild(m_dynamicLayer); m_layersContainer.addChild(m_frontLayer); m_layersContainer.addChild(m_arrowsLayer); addChild(m_debugSprite); addChild(m_guiLayer); m_world.SetContactListener(m_contactListener); m_bow = new Bow(); m_frontLayer.addChild(m_bow); if (Constant.m_debugMode){ _local1 = ((m_curLevel)<10) ? ("Level0" + m_curLevel) : ("Level" + m_curLevel); _local2 = parseClipToXML(new ((ApplicationDomain.currentDomain.getDefinition(_local1) as Class))); trace(_local2); }; if (Levels.LEVELS[m_curLevel]){ parseLevel(Levels.LEVELS[m_curLevel]); } else { _local3 = ((m_curLevel)<10) ? ("Level0" + m_curLevel) : ("Level" + m_curLevel); _local4 = parseClipToXML(new ((ApplicationDomain.currentDomain.getDefinition(_local3) as Class))); parseLevel(_local4); }; m_layersContainer.addChild(m_sightClip); m_sightClip.x = m_bow.x; m_sightClip.y = m_bow.y; recalcGui(); m_guiLayer.addChild(m_view); if (m_state == STATE_NOT_INITILIAZED){ setState(STATE_NORMAL); }; if (m_camera == null){ m_camera = new Camera(); }; m_camera.setStateClip(m_layersContainer); m_camera.setGUILayer(m_guiLayer); update((1 / 30)); if (Constant.m_debugMode){ super.initDebugDraw(); }; m_view.addChild(new MoreGamesPanel(LinksManager.PLAYSTATE_SCREEN, true)); GameData.onStartLevel(m_curLevel); if ((m_camera is TargetedCamera)){ _local5 = (m_camera as TargetedCamera); _local5.setBow(m_bow); _local5.setState(TargetedCamera.SHOW_GIBBET); }; } private function onReplayClick(_arg1:MouseEvent):void{ m_nextStateTimer.stop(); SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState(PlayState.m_curLevel)); GameData.onRestart(); } private function hideHighlight():void{ if (m_turtorialFrame){ m_turtorialFrame.hide(); }; } public function createTeleportGhost(_arg1:DisplayObject):void{ var _local2:b2CircleShape = new b2CircleShape((21 / m_physScale)); var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = _local2; _local3.isSensor = true; var _local4:b2BodyDef = new b2BodyDef(); _local4.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); var _local5:b2Body = m_world.CreateBody(_local4); _local5.CreateFixture(_local3); var _local6:TeleportGhost = new TeleportGhost(); _local6.connectWithBody(_local5); m_dynamicLayer.addChild(_local6); m_mapObjects.push(_local6); } private function parseLevel(_arg1:XML):void{ var _local2:MapObject; var _local3:Number; var _local4:Number; var _local5:b2Vec2; var _local6:Number; var _local7:DisplayObject; var _local8:b2Fixture; var _local9:TurtorialFrame; for each (_arg1 in _arg1.elements("Object")) { _local3 = _arg1.@x; _local4 = _arg1.@y; _local5 = new b2Vec2((_local3 / m_physScale), (_local4 / m_physScale)); _local6 = _arg1.@rotation; if (String(_arg1.@clip_name) != ""){ _local7 = (new ((getDefinitionByName(_arg1.@clip_name) as Class)) as DisplayObject); _local7.x = _local3; _local7.y = _local4; _local7.rotation = _local6; }; switch (String(_arg1.@type)){ case ParserConst.TYPE_EDGE_MARKER: if (_arg1.@is_left == "true"){ _local7.name = Constant.LEFT_EDGE_MARKER_NAME; } else { _local7.name = Constant.RIGHT_EDGE_MARKER_NAME; }; m_layersContainer.addChild(_local7); _local7.alpha = 0; break; case ParserConst.TYPE_STATIC_BOX: _local7.cacheAsBitmap = true; _local8 = createStaticBoxFromClip(_local7, m_staticLayer); if (_arg1.@is_stone == "true"){ m_allStones.push(_local8); }; break; case ParserConst.TYPE_GROUND: _local7.cacheAsBitmap = true; _local7.scaleY = 0.75; createStaticBoxFromClip(_local7, m_staticLayer); _local7.scaleY = 1; break; case ParserConst.TYPE_DYNAMIC_BOX: createDynamicBoxFromClip(m_dynamicLayer, _local7); break; case ParserConst.TYPE_VULTURE: createVulture(_local7, (_arg1.@inverted == "true")); break; case ParserConst.TYPE_TNT_BARREL: createTNTBarrel(_local7); break; case ParserConst.TYPE_CLOUD: createCloud(_local7); break; case ParserConst.TYPE_GIBBET_GROUND: createGibbletGround(_local3, _local4); break; case ParserConst.TYPE_GIBBET: createGibbet(_local5, _arg1.@pers_id, _arg1.@path_to_hang, _arg1.@chains_count, (_arg1.@connect_legs == "true"), _arg1.@cloud_name, _arg1.@cloud_prob); break; case ParserConst.TYPE_SHOOTING_POINT: m_bow.x = _local3; m_bow.y = _local4; m_bow.rotation = (_local6 + 90); break; case ParserConst.TYPE_AMMO_GHOST: createAmmoGhost(_local7, _arg1.@power); break; case ParserConst.TYPE_POINTS_GHOST: createPointsGhost(_local7, _arg1.@power); break; case ParserConst.TYPE_TELEPORT_GHOST: createTeleportGhost(_local7); break; case ParserConst.TYPE_SUN: createSun(_local5); break; case ParserConst.TYPE_BACKGROUND: _local7.cacheAsBitmap = true; _local7.scaleX = _arg1.@scaleX; _local7.scaleY = _arg1.@scaleY; m_backgroundLayer.addChild(_local7); break; case ParserConst.TYPE_FRONTGROUND: _local7.scaleX = _arg1.@scaleX; _local7.scaleY = _arg1.@scaleY; _local7.width = _arg1.@width; _local7.height = _arg1.@height; m_frontLayer.addChild(_local7); break; case ParserConst.TYPE_ROTOR: _local7.scaleX = _arg1.@scaleX; _local7.scaleY = _arg1.@scaleY; createRotorFromClip(_local7, _arg1.@speed); break; case ParserConst.TYPE_HEDHEHOG_GHOST: createHedgehogGhost(_local7, _arg1.@charge, _arg1.@speed); break; case ParserConst.TYPE_HIGHLIGHT: if (((!(GameData.isAlreadyPlayed(m_curLevel))) && (GameData.isHintsOn()))){ _local9 = new TurtorialFrame(_arg1.@size, _local7); _local9.x = _local3; _local9.y = _local4; _local7.x = 0; _local7.y = 0; m_turtorialFrames.push(_local9); }; break; case ParserConst.TYPE_GIBBET_OBLIQUELY: _local7.cacheAsBitmap = true; createGibbetObliquely(_local7, (_arg1.@inverted == "true")); break; case ParserConst.TYPE_COW: createCow(_local7, (_arg1.@inverted == true)); break; }; }; for each (_local2 in m_mapObjects) { _local2.goTop(m_backgroundLayer, m_cloudsLayer, m_staticLayer, m_dynamicLayer, m_frontLayer); }; } override public function handleMouseDown(_arg1:MouseEvent):void{ super.handleMouseDown(_arg1); switch (m_state){ case STATE_NORMAL: if (((m_bow.hitTestPoint(_arg1.stageX, _arg1.stageY)) && (m_camera.canShoot()))){ if (m_arrowsLeft > 0){ m_shootingPower = 10; m_bow.startStretch(); setState(STATE_TAKE_AIM); handleMouseMove(_arg1); }; }; break; }; } public function createCloud(_arg1:DisplayObject):void{ m_cloudsLayer.addChild(_arg1); m_mapObjects.push((_arg1 as Cloud)); } private function createRotorFromClip(_arg1:DisplayObject, _arg2:Number):b2Body{ var _local3:Number = _arg1.rotation; _arg2 = MathUtils.GradToRad(_arg2); _arg1.rotation = 0; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; var _local5:b2Body = m_world.CreateBody(_local4); var _local6:b2PolygonShape = new b2PolygonShape(); var _local7:Array = new Array(); _local7.push(new b2Vec2(((-(_arg1.width) / 2) / m_physScale), ((_arg1.height / 2) / m_physScale))); _local7.push(new b2Vec2(((-(_arg1.width) / 2) / m_physScale), ((-(_arg1.height) / 2) / m_physScale))); _local7.push(new b2Vec2(((_arg1.width / 4) / m_physScale), 0)); _local6.SetAsVector(_local7, _local7.length); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local6; _local8.density = 150; _local8.friction = 0.4; _local8.restitution = 0.1; m_allStones.push(_local5.CreateFixture(_local8)); var _local9:b2PolygonShape = new b2PolygonShape(); var _local10:Array = new Array(); _local10.push(new b2Vec2(((_arg1.width / 2) / m_physScale), ((-(_arg1.height) / 2) / m_physScale))); _local10.push(new b2Vec2(((_arg1.width / 2) / m_physScale), ((_arg1.height / 2) / m_physScale))); _local10.push(new b2Vec2(((-(_arg1.width) / 4) / m_physScale), 0)); _local9.SetAsVector(_local10, _local10.length); var _local11:b2FixtureDef = new b2FixtureDef(); _local11.shape = _local9; _local11.density = 150; _local11.friction = 0.4; _local11.restitution = 0.1; m_allStones.push(_local5.CreateFixture(_local11)); _local5.SetUserData(_arg1); _local5.SetPositionAndAngle(new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)), MathUtils.GradToRad(_local3)); _local5.SetAngularVelocity(_arg2); var _local12:b2RevoluteJointDef = new b2RevoluteJointDef(); _local12.Initialize(m_world.GetGroundBody(), _local5, _local5.GetPosition()); m_world.CreateJoint(_local12); m_dynamicLayer.addChild(_arg1); return (_local5); } public function createSun(_arg1:b2Vec2):void{ var _local2:b2CircleShape = new b2CircleShape((22 / m_physScale)); var _local3:b2FixtureDef = new b2FixtureDef(); _local3.density = 1; _local3.friction = 0.4; _local3.restitution = 0.3; _local3.shape = _local2; var _local4:b2BodyDef = new b2BodyDef(); _local4.position = _arg1; _local4.type = b2Body.b2_dynamicBody; var _local5:b2Body = m_world.CreateBody(_local4); _local5.CreateFixture(_local3); var _local6:Sun = new Sun(); _local6.connectWithBody(_local5); m_backgroundLayer.addChild(_local5.GetUserData()); var _local7:b2RevoluteJointDef = new b2RevoluteJointDef(); _local7.maxMotorTorque = 0.5; _local7.motorSpeed = 0; _local7.enableMotor = true; _local7.Initialize(m_world.GetGroundBody(), _local5, _arg1); m_world.CreateJoint(_local7); m_mapObjects.push(_local6); } private function updateArrows(_arg1:Number):void{ var _local3:Arrow; var _local2:Array = new Array(); for each (_local3 in m_arrows) { _local3.update(_arg1); if (_local3.isNeeded()){ _local2.push(_local3); } else { if (_local3.isDead()){ _local3.destroyBody(m_world); m_arrowsLayer.removeChild(_local3); }; }; }; m_arrows = _local2; } public function onBeginContact(_arg1:b2Contact):void{ var _local4:Arrow; var _local2:b2Fixture = _arg1.GetFixtureA(); var _local3:b2Fixture = _arg1.GetFixtureB(); for each (_local4 in m_arrows) { if (_local2 == _local4.getBodyFixture()){ m_arrowBodyToBodyContacts[_local3] = _local4; }; if (_local3 == _local4.getBodyFixture()){ m_arrowBodyToBodyContacts[_local2] = _local4; }; if (_local2 == _local4.getHeadFixture()){ m_arrowHeadsToBodyContacts[_local3] = _local4; if (((((((((!((_local3.GetFilterData().groupIndex == -1))) && (!(_local3.IsSensor())))) && (!(_local4.isStickIn())))) && (_local4.canStickIn()))) && ((m_allStones.indexOf(_local3) == -1)))){ _local4.stopFly(); }; }; if (_local3 == _local4.getHeadFixture()){ m_arrowHeadsToBodyContacts[_local2] = _local4; if (((((((((!((_local2.GetFilterData().groupIndex == -1))) && (!(_local2.IsSensor())))) && (!(_local4.isStickIn())))) && (_local4.canStickIn()))) && ((m_allStones.indexOf(_local2) == -1)))){ _local4.stopFly(); }; }; }; } private function parseClipToXML(_arg1:MovieClip):XML{ var _local4:XML; var _local5:DisplayObject; var _local2:XML = <Level></Level> ; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = <Object/> ; _local5 = _arg1.getChildAt(_local3); if ((_local5 is StaticBoxIsStone)){ _local4.@type = ParserConst.TYPE_STATIC_BOX; _local4.@is_stone = true; } else { if ((_local5 is RightEdgeMarker)){ _local4.@type = ParserConst.TYPE_EDGE_MARKER; _local4.@is_left = false; } else { if ((_local5 is LeftEdgeMarker)){ _local4.@type = ParserConst.TYPE_EDGE_MARKER; _local4.@is_left = true; } else { if ((_local5 is CowHere)){ _local4.@type = ParserConst.TYPE_COW; _local4.@inverted = false; } else { if ((_local5 is InvertedCowHere)){ _local4.@type = ParserConst.TYPE_COW; _local4.@inverted = true; } else { if ((_local5 is StaticBoxIsNotStone)){ _local4.@type = ParserConst.TYPE_STATIC_BOX; _local4.@is_stone = false; } else { if ((_local5 is Ground)){ _local4.@type = ParserConst.TYPE_GROUND; } else { if ((_local5 is VultureHere)){ _local4.@type = ParserConst.TYPE_VULTURE; _local4.@inverted = false; } else { if ((_local5 is InvertedVultureHere)){ _local4.@type = ParserConst.TYPE_VULTURE; _local4.@inverted = true; } else { if ((_local5 is TNTBarrel)){ _local4.@type = ParserConst.TYPE_TNT_BARREL; } else { if ((_local5 is Box)){ _local4.@type = ParserConst.TYPE_DYNAMIC_BOX; } else { if ((_local5 is Cloud)){ _local4.@type = ParserConst.TYPE_CLOUD; } else { if ((_local5 is GibbetGround)){ _local4.@type = ParserConst.TYPE_GIBBET_GROUND; } else { if ((_local5 is HangerPoint)){ _local4.@type = ParserConst.TYPE_GIBBET; _local4.@pers_id = 1; _local4.@path_to_hang = HumanRagdoll.HEAD; _local4.@connect_legs = false; _local4.@chains_count = 7; } else { if ((_local5 is BowPoint)){ _local4.@type = ParserConst.TYPE_SHOOTING_POINT; } else { if ((_local5 is AmmoGhost3)){ _local4.@type = ParserConst.TYPE_AMMO_GHOST; _local4.@power = 3; } else { if ((_local5 is AmmoGhost5)){ _local4.@type = ParserConst.TYPE_AMMO_GHOST; _local4.@power = 5; } else { if ((_local5 is AmmoGhost10)){ _local4.@type = ParserConst.TYPE_AMMO_GHOST; _local4.@power = 10; } else { if ((_local5 is PointsGhost300)){ _local4.@type = ParserConst.TYPE_POINTS_GHOST; _local4.@power = 300; } else { if ((_local5 is PointsGhost500)){ _local4.@type = ParserConst.TYPE_POINTS_GHOST; _local4.@power = 500; } else { if ((_local5 is PointsGhost1000)){ _local4.@type = ParserConst.TYPE_POINTS_GHOST; _local4.@power = 1000; } else { if ((_local5 is TeleportGhost)){ _local4.@type = ParserConst.TYPE_TELEPORT_GHOST; } else { if ((_local5 is Sun)){ _local4.@type = ParserConst.TYPE_SUN; } else { if ((_local5 is MillFan)){ _local4.@type = ParserConst.TYPE_ROTOR; _local4.@speed = 1.1; _local4.@scaleX = _local5.scaleX; _local4.@scaleY = _local5.scaleY; } else { if ((_local5 is ArrowGhost1)){ _local4.@type = ParserConst.TYPE_HEDHEHOG_GHOST; _local4.@speed = 0; _local4.@charge = 1; } else { if ((_local5 is ArrowGhost3)){ _local4.@type = ParserConst.TYPE_HEDHEHOG_GHOST; _local4.@speed = 0; _local4.@charge = 3; } else { if ((_local5 is ArrowGhost4)){ _local4.@type = ParserConst.TYPE_HEDHEHOG_GHOST; _local4.@speed = 0; _local4.@charge = 4; } else { if ((_local5 is HintPoint)){ _local4.@type = ParserConst.TYPE_HIGHLIGHT; _local4.@size = 150; } else { if ((_local5 is HintText)){ } else { if ((_local5 is GibbetObliquely)){ _local4.@type = ParserConst.TYPE_GIBBET_OBLIQUELY; _local4.@inverted = false; } else { if ((_local5 is InvertedGibbetObliquely)){ _local4.@type = ParserConst.TYPE_GIBBET_OBLIQUELY; _local4.@inverted = true; } else { if ((_local5 is Frontground)){ _local4.@scaleX = _local5.scaleX; _local4.@scaleY = _local5.scaleY; _local4.@width = _local5.width; _local4.@height = _local5.height; _local4.@type = ParserConst.TYPE_FRONTGROUND; } else { _local4.@scaleX = _local5.scaleX; _local4.@scaleY = _local5.scaleY; _local4.@type = ParserConst.TYPE_BACKGROUND; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; _local4.@x = int((_local5.x + 0.5)); _local4.@y = int((_local5.y + 0.5)); _local4.@rotation = _local5.rotation; _local4.@clip_name = getQualifiedClassName(_local5); _local2.appendChild(_local4); _local3++; }; return (_local2); } private function createHedgehogGhost(_arg1:DisplayObject, _arg2:int, _arg3:Number):b2Body{ var _local6:Number; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_staticBody; var _local5:b2Body = m_world.CreateBody(_local4); switch (_arg2){ case 1: _local6 = 18; break; case 3: _local6 = 19; break; case 4: _local6 = 19; break; }; var _local7:b2CircleShape = new b2CircleShape((_local6 / m_physScale)); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local7; _local8.isSensor = true; _local5.CreateFixture(_local8); _local5.SetUserData(_arg1); _local5.SetPositionAndAngle(new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)), 0); var _local9:HedgehogGhost = (_arg1 as HedgehogGhost); _local9.setRotationSpeed(_arg3); _local9.setCharge(_arg2); _local9.initRotation(); _local9.connectWithBody(_local5); m_mapObjects.push(_local9); m_dynamicLayer.addChild(_local9); return (_local5); } public function getArrowsLayer():Sprite{ return (m_arrowsLayer); } override public function onCleanup():void{ m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonReplay.removeEventListener(MouseEvent.CLICK, onReplayClick); m_nextStateTimer.stop(); m_nextStateTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, onNextStateTimer); m_mapObjects = null; m_bow = null; m_turtorialFrames = null; m_turtorialFrame = null; m_guiLayer = null; m_layersContainer = null; m_backgroundLayer = null; m_cloudsLayer = null; m_staticLayer = null; m_dynamicLayer = null; m_frontLayer = null; m_arrowsLayer = null; m_arrows = null; m_contactListener = null; m_sightClip = null; m_nextState = null; m_nextStateTimer = null; m_arrowBodyToBodyContacts = null; m_arrowHeadsToBodyContacts = null; m_allStones = null; m_camera = null; super.onCleanup(); } override public function update(_arg1:Number):void{ super.update(_arg1); updateTurtorialFrame(_arg1); if (((!((m_turtorialFrames.length == 0))) || (!((m_turtorialFrame == null))))){ return; }; updateMapObjects(_arg1); m_bow.update(_arg1); processContacts(); updateArrows(_arg1); m_camera.update(_arg1); checkOutOfArrows(); updateScores(); recalcGui(); if (m_arrows.length == 0){ m_camera.onKillArrow(); }; } public function createAmmoGhost(_arg1:DisplayObject, _arg2):void{ var _local3:b2BodyDef = new b2BodyDef(); _local3.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); var _local4:b2Body = m_world.CreateBody(_local3); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox(((_arg1.width / 2) / m_physScale), ((_arg1.height / 2) / m_physScale)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.isSensor = true; _local6.shape = _local5; var _local7:b2Fixture = _local4.CreateFixture(_local6); var _local8:AmmoGhost = (_arg1 as AmmoGhost); _local8.setPower(_arg2); _local8.connectWithBody(_local4); m_dynamicLayer.addChild(_local8); m_mapObjects.push(_local8); } override public function handleMouseMove(_arg1:MouseEvent):void{ var _local2:Vector3; super.handleMouseMove(_arg1); switch (m_state){ case STATE_TAKE_AIM: _local2 = new Vector3(((m_bow.x + m_layersContainer.x) - _arg1.stageX), ((m_bow.y + m_layersContainer.y) - _arg1.stageY), 0); if (GameData.m_invertedControl){ _local2 = _local2.negate(); }; m_shootingPower = (Constant.MIN_SHOOTING_POWER + ((_local2.length() / 7) * Math.pow((_local2.length() / Constant.MAX_SHOOTING_POWER), 0.4))); if (m_shootingPower < Constant.MIN_SHOOTING_POWER){ m_shootingPower = Constant.MIN_SHOOTING_POWER; }; if (m_shootingPower > Constant.MAX_SHOOTING_POWER){ m_shootingPower = Constant.MAX_SHOOTING_POWER; }; m_sightClip.scaleY = (m_shootingPower / 33); m_sightClip.rotation = _local2.get2DRotation(); m_bow.rotation = (_local2.get2DRotation() + 90); break; case STATE_NORMAL: if (isMouseDown()){ handleMouseDown(_arg1); }; break; }; } public function createPointsGhost(_arg1:DisplayObject, _arg2):void{ var _local3:b2BodyDef = new b2BodyDef(); _local3.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); var _local4:b2Body = m_world.CreateBody(_local3); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox(((_arg1.width / 2) / m_physScale), ((_arg1.height / 2) / m_physScale)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.isSensor = true; _local6.shape = _local5; var _local7:b2Fixture = _local4.CreateFixture(_local6); var _local8:PointsGhost = (_arg1 as PointsGhost); _local8.setPower(_arg2); _local8.connectWithBody(_local4); m_dynamicLayer.addChild(_local8); m_mapObjects.push(_local8); } private function updateMapObjects(_arg1:Number):void{ var _local3:MapObject; var _local2:Array = new Array(); for each (_local3 in m_mapObjects) { _local3.update(_arg1); if (!_local3.isDead()){ _local2.push(_local3); } else { _local3.onDead(m_world); }; }; m_mapObjects = _local2; } public function getWorld():b2World{ return (m_world); } override public function handleMouseUp(_arg1:MouseEvent):void{ var _local2:b2Vec2; var _local3:Arrow; super.handleMouseUp(_arg1); if (m_state == STATE_TAKE_AIM){ m_bow.fire(); SoundManager.play(SoundConst.BOW_SHOOT); setState(STATE_NORMAL); _local2 = new b2Vec2(((m_bow.x + m_layersContainer.x) - _arg1.stageX), ((m_bow.y + m_layersContainer.y) - _arg1.stageY)); if (GameData.m_invertedControl){ _local2.NegativeSelf(); }; _local2.Normalize(); _local2.Multiply(m_shootingPower); _local3 = createArrow(new b2Vec2((m_bow.x / m_physScale), (m_bow.y / m_physScale)), _local2); m_camera.onShoot(_local3); m_arrowsLeft--; m_arrowsUsed++; recalcGui(); if ((m_camera is TargetedCamera)){ m_frontLayer.addChild(m_oldSightClip); m_oldSightClip.x = m_sightClip.x; m_oldSightClip.y = m_sightClip.y; m_oldSightClip.rotation = m_sightClip.rotation; m_oldSightClip.scaleX = m_sightClip.scaleX; m_oldSightClip.scaleY = m_sightClip.scaleY; m_oldSightClip.alpha = 0.25; }; }; super.handleMouseUp(_arg1); } private function win():void{ if (m_nextState == null){ GameData.onWinLevel(m_curLevel, m_currentScores, m_wasStar, m_savedCount); m_nextState = new WinState(); m_nextStateTimer.start(); }; } public function createVulture(_arg1:DisplayObject, _arg2:Boolean):void{ var _local3:int; var _local4:b2BodyDef = new b2BodyDef(); _local4.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); var _local5:b2Body = m_world.CreateBody(_local4); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((((_arg1.width / 2) / m_physScale) * 2), ((((_arg1.height / 2) / m_physScale) / 3) * 2)); _local3 = 0; while (_local3 < 4) { _local6.GetVertices()[_local3].y = (_local6.GetVertices()[_local3].y - ((((_arg1.height / 2) / m_physScale) / 3) * 2)); _local3++; }; var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; var _local8:b2Fixture = _local5.CreateFixture(_local7); _local8.SetSensor(true); var _local9:b2PolygonShape = new b2PolygonShape(); _local9.SetAsBox((((_arg1.width / 2) / m_physScale) * 2), ((((_arg1.height / 2) / m_physScale) / 3) * 2)); _local3 = 0; while (_local3 < 4) { _local9.GetVertices()[_local3].y = (_local9.GetVertices()[_local3].y + ((((_arg1.height / 2) / m_physScale) / 3) * 2)); _local3++; }; var _local10:b2FixtureDef = new b2FixtureDef(); _local10.shape = _local9; var _local11:b2Fixture = _local5.CreateFixture(_local10); _local11.SetSensor(true); var _local12:Vulture = new Vulture(_local8, null, _local11, _arg2); m_staticLayer.addChild(_local12); _local12.connectWithBody(_local5); m_mapObjects.push(_local12); } public function createTNTBarrel(_arg1:DisplayObject):void{ var _local2:b2BodyDef = new b2BodyDef(); _local2.position = new b2Vec2((_arg1.x / m_physScale), (_arg1.y / m_physScale)); _local2.type = b2Body.b2_dynamicBody; var _local3:b2Body = m_world.CreateBody(_local2); var _local4:Number = 0.7; var _local5:b2PolygonShape = new b2PolygonShape(); var _local6:Array = [new b2Vec2(((-(_arg1.width) / 2) / m_physScale), 0), new b2Vec2((((-(_arg1.width) / 2) / m_physScale) * _local4), ((-(_arg1.height) / 2) / m_physScale)), new b2Vec2((((_arg1.width / 2) / m_physScale) * _local4), ((-(_arg1.height) / 2) / m_physScale)), new b2Vec2(((_arg1.width / 2) / m_physScale), 0), new b2Vec2((((_arg1.width / 2) / m_physScale) * _local4), ((_arg1.height / 2) / m_physScale)), new b2Vec2((((-(_arg1.width) / 2) / m_physScale) * _local4), ((_arg1.height / 2) / m_physScale))]; _local5.SetAsArray(_local6, _local6.length); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.density = 1; _local7.friction = 0.5; _local7.restitution = 0.2; _local7.shape = _local5; m_allStones.push(_local3.CreateFixture(_local7)); var _local8:TNTBarrel = new TNTBarrel(); _local8.connectWithBody(_local3); m_dynamicLayer.addChild(_local8); m_mapObjects.push(_local8); } public function createCow(_arg1:DisplayObject, _arg2:Boolean):void{ var _local3:b2BodyDef = new b2BodyDef(); _local3.position.x = (_arg1.x / m_physScale); _local3.position.y = (_arg1.y / m_physScale); var _local4:b2PolygonShape = new b2PolygonShape(); var _local5:Array = parseShapeVectorFromClip((_arg2) ? new InvertedCowMaket() : new CowMaket(), "vertex"); _local4.SetAsVector(_local5, _local5.length); var _local6:b2Body = m_world.CreateBody(_local3); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local4; _local7.friction = 0.8; _local7.restitution = 0.1; _local6.CreateFixture(_local7); var _local8:Cow = new Cow(); if (_arg2){ _local8.scaleX = -1; }; _local8.connectWithBody(_local6); m_mapObjects.push(_local8); m_staticLayer.addChild(_local8); } public function createGibbet(_arg1:b2Vec2, _arg2:int, _arg3:String, _arg4:int, _arg5:Boolean, _arg6:String, _arg7:Number=0):void{ m_gibbetsOnLevel++; var _local8:Gibbet = new Gibbet(_arg1, _arg3, _arg4, m_world, _arg2, _arg5); if (_arg6 != ""){ _local8.setComixCloud(new ((getDefinitionByName(_arg6) as Class)), _arg7); }; m_dynamicLayer.addChild(_local8); m_mapObjects.push(_local8); _local8.getRagdoll().applyImpulse(new b2Vec2(MathUtils.RandomRange(-0.15, 0.15), 0)); if (m_camera){ m_camera.setGibbet(_local8); }; } public function onManCry():void{ if (m_nextState == null){ m_wasStar = false; }; } public function goNormalState():void{ setState(STATE_NORMAL); m_sightClip.x = m_bow.x; m_sightClip.y = m_bow.y; } public static function getInstance():PlayState{ return (m_instance); } } }//package States.PlayState import Box2D.Dynamics.*; import Box2D.Dynamics.Contacts.*; class MyContactListener extends b2ContactListener { private function MyContactListener(){ } override public function BeginContact(_arg1:b2Contact):void{ if ((((_arg1.GetFixtureA().GetBody().GetUserData() is Arrow)) && (_arg1.GetFixtureA().GetBody().GetUserData().isNeeded()))){ PlayState.getInstance().onBeginContact(_arg1); return; }; if ((((_arg1.GetFixtureB().GetBody().GetUserData() is Arrow)) && ((_arg1.GetFixtureB().GetBody().GetUserData() as Arrow).isNeeded()))){ PlayState.getInstance().onBeginContact(_arg1); return; }; } }
Section 131
//PointsGhost (States.PlayState.PointsGhost) package States.PlayState { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class PointsGhost extends MapObject { private var m_isActive:Boolean;// = true private var m_needRun:Boolean;// = false private var m_power:int; override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); m_body.SetPosition(new b2Vec2(m_body.GetPosition().x, (m_body.GetPosition().y + (Math.sin((m_liveTime * 2.5)) * 0.007)))); if (m_needRun){ m_needRun = false; PlayState.getInstance().getWorld().DestroyBody(m_body); PlayState.getInstance().addPointsAt(m_body.GetPosition(), m_power); this.cacheAsBitmap = false; } else { if (!m_isActive){ scaleX = (scaleX + (_arg1 * 1.5)); scaleY = (scaleY + (_arg1 * 1.5)); if ((alpha = (alpha - 0.1)) <= 0){ alpha = 0; m_isDead = true; }; }; }; } override public function isDead():Boolean{ return (m_isDead); } public function setPower(_arg1:int):void{ m_power = _arg1; this.cacheAsBitmap = true; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_isActive = false; m_needRun = true; SoundManager.play(SoundConst.POINTS); }; } } }//package States.PlayState
Section 132
//Soul (States.PlayState.Soul) package States.PlayState { public class Soul extends MapObject { override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); y = (y - (85 * _arg1)); if (m_liveTime > 0.6){ alpha = (alpha - (1.3 * _arg1)); }; } } }//package States.PlayState
Section 133
//StaticBoxIsNotStone (States.PlayState.StaticBoxIsNotStone) package States.PlayState { import flash.display.*; public class StaticBoxIsNotStone extends MovieClip { } }//package States.PlayState
Section 134
//StaticBoxIsStone (States.PlayState.StaticBoxIsStone) package States.PlayState { import flash.display.*; public class StaticBoxIsStone extends MovieClip { } }//package States.PlayState
Section 135
//Sun (States.PlayState.Sun) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class Sun extends MapObject { public var m_sunCircle:MovieClip; public var m_face:MovieClip; public function Sun(){ m_face.stop(); } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_face.currentFrame == 1){ SoundManager.play(SoundConst.SUN_VOICE); m_face.play(); }; } override public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); if (m_face.currentFrame == m_face.totalFrames){ m_face.gotoAndStop(1); }; m_sunCircle.rotation = -(rotation); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ onArrowContact(_arg1, _arg2); } } }//package States.PlayState
Section 136
//TargetedCamera (States.PlayState.TargetedCamera) package States.PlayState { import Utils.*; import flash.geom.*; import flash.display.*; import Ragdoll.*; public class TargetedCamera extends Camera { private const m_ceil:Number = 200; private const m_scrollbackMaxTime:Number = 1; private const m_maxCameraSpeed:Number = 900; private const m_floor:Number = 0; private var m_curPos:Vector3; private var m_scrollBackStartPos:Vector3; private var m_rightEdgeClip:DisplayObject; private var m_guiArrow:DisplayObject; private var m_stateTime:Number; private var m_targetPos:Vector3; private var m_arrow:Arrow; private var m_state:String;// = "AIMING_STATE" private var m_cameraSpeed:Vector3; private var m_gibbetHeadX:Number; private var m_cameraAcceleration:Vector3; private var m_gibbetHead:MovieClip; private var m_leftEdgeClip:DisplayObject; private var m_liveTime:Number;// = 0 private var m_bow:MovieClip; public static const TEST_STATE:String = "TEST_STATE"; public static const ARROW_FLY_STATE:String = "ARROW_FLY_STATE"; public static const COMPLETE_STATE:String = "COMPLETE_STATE"; public static const AIMING_STATE:String = "AIMING_STATE"; public static const SHOW_GIBBET:String = "SHOW_GIBBET"; public static const WAIT_BEFORE_BACK_STATE:String = "WAIT_BEFORE_BACK_STATE"; public static const SCROLL_BACK:String = "SCROLL_BACK"; public function TargetedCamera(){ m_guiArrow = new LongShootArrow(); super(); } override public function onShoot(_arg1:Arrow):void{ m_arrow = _arg1; setState(ARROW_FLY_STATE); } public function setBow(_arg1:MovieClip):void{ m_bow = _arg1; } override public function canShoot():Boolean{ return ((m_state == AIMING_STATE)); } override public function onKillArrow():void{ if (m_state == ARROW_FLY_STATE){ setState(WAIT_BEFORE_BACK_STATE); }; } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; m_liveTime = (m_liveTime + _arg1); m_stateTime = (m_stateTime + _arg1); if (m_stateClip){ switch (m_state){ case SHOW_GIBBET: if (m_gibbetHeadX > 0){ m_stateClip.x = (-(m_gibbetHeadX) + 320); } else { m_stateClip.x = (-(m_gibbetHead.x) + 320); }; m_stateClip.y = (-(m_gibbetHead.y) + 240); if (m_stateTime > 1.5){ setState(SCROLL_BACK); }; break; case AIMING_STATE: break; case ARROW_FLY_STATE: m_stateClip.x = (-(m_arrow.x) + 320); m_stateClip.y = (-(m_arrow.y) + 240); _local3 = m_rightEdgeClip.localToGlobal(new Point()).x; if (_local3 < 640){ setState(WAIT_BEFORE_BACK_STATE); }; _local4 = m_leftEdgeClip.localToGlobal(new Point()).x; if (_local4 > 0){ setState(WAIT_BEFORE_BACK_STATE); }; break; case SCROLL_BACK: if (m_stateTime < m_scrollbackMaxTime){ _local2 = Math.sin((((m_stateTime / m_scrollbackMaxTime) * Math.PI) / 2)); m_stateClip.x = (m_scrollBackStartPos.x + (((-(m_bow.x) + 320) - m_scrollBackStartPos.x) * _local2)); m_stateClip.y = (m_scrollBackStartPos.y + (((-(m_bow.y) + 240) - m_scrollBackStartPos.y) * _local2)); } else { setState(AIMING_STATE); }; break; case WAIT_BEFORE_BACK_STATE: if (m_stateTime > 0.9){ setState(SCROLL_BACK); }; break; }; if (m_stateClip.y < m_floor){ m_stateClip.y = m_floor; }; if (m_stateClip.y > m_ceil){ m_stateClip.y = m_ceil; }; updateHintArrow(); }; } override public function setStateClip(_arg1:Sprite):void{ super.setStateClip(_arg1); m_leftEdgeClip = _arg1.getChildByName(Constant.LEFT_EDGE_MARKER_NAME); m_rightEdgeClip = _arg1.getChildByName(Constant.RIGHT_EDGE_MARKER_NAME); } public function setState(_arg1:String):void{ m_stateTime = 0; m_state = _arg1; switch (m_state){ case SHOW_GIBBET: m_gibbetHeadX = m_gibbetHead.x; break; case AIMING_STATE: m_stateClip.x = (-(m_bow.x) + 320); break; case SCROLL_BACK: m_scrollBackStartPos = new Vector3(m_stateClip.x, m_stateClip.y, 0); break; case WAIT_BEFORE_BACK_STATE: break; }; } override public function setGibbet(_arg1:Gibbet):void{ m_gibbetHead = _arg1.getRagdoll().getBodyByName(HumanRagdoll.HEAD).GetUserData(); m_gibbetHeadX = m_gibbetHead.x; setState(SHOW_GIBBET); } override public function setGUILayer(_arg1:Sprite):void{ super.setGUILayer(_arg1); m_guiLayer.addChild(m_guiArrow); m_guiArrow.visible = false; } override public function onHangerDead():void{ setState(COMPLETE_STATE); } private function updateHintArrow():void{ var _local1:Number; if (m_bow){ _local1 = m_gibbetHead.localToGlobal(new Point()).x; if ((((_local1 > -50)) && ((_local1 < (640 + 50))))){ m_guiArrow.visible = false; } else { m_guiArrow.y = m_gibbetHead.localToGlobal(new Point()).y; if (m_bow.x < m_gibbetHead.x){ m_guiArrow.scaleX = 0.7; m_guiArrow.scaleY = 0.7; m_guiArrow.x = (((640 - m_guiArrow.width) - 10) + (7 * Math.sin((m_liveTime * 5)))); } else { m_guiArrow.scaleX = -0.7; m_guiArrow.scaleY = 0.7; m_guiArrow.x = ((m_guiArrow.width + 10) + (7 * Math.sin((m_liveTime * 5)))); }; m_guiArrow.visible = true; }; }; } override public function onHangerSave():void{ setState(COMPLETE_STATE); } } }//package States.PlayState
Section 137
//TeleportGhost (States.PlayState.TeleportGhost) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class TeleportGhost extends MapObject { private var m_isActive:Boolean;// = true private var m_needRun:Boolean;// = false override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActive){ m_body = body; m_isActive = false; m_needRun = true; _arg1.kill(); }; } override public function update(_arg1:Number):void{ var _local2:Sprite; if (m_needRun){ m_needRun = false; PlayState.getInstance().startTeleportHere(m_body.GetPosition()); PlayState.getInstance().getWorld().DestroyBody(m_body); SoundManager.play(SoundConst.TELEPORT); } else { if (!m_isActive){ _local2 = (m_body.GetUserData() as Sprite); if ((_local2.alpha = (_local2.alpha - 0.1)) <= 0){ _local2.alpha = 0; }; }; }; } } }//package States.PlayState
Section 138
//TNTBarrel (States.PlayState.TNTBarrel) package States.PlayState { import Box2D.Dynamics.*; public class TNTBarrel extends MapObject { private var m_isActivated:Boolean;// = true public function TNTBarrel(){ stop(); } override public function onDead(_arg1:b2World):void{ parent.removeChild(this); } override public function onArrowHeadContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActivated){ m_isActivated = false; PlayState.getInstance().boomAt(m_body); play(); }; } override public function update(_arg1:Number):void{ if (currentFrame == totalFrames){ m_isDead = true; }; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_isActivated){ m_isActivated = false; PlayState.getInstance().boomAt(m_body); play(); }; } } }//package States.PlayState
Section 139
//TurtorialFrame (States.PlayState.TurtorialFrame) package States.PlayState { import flash.events.*; import flash.display.*; public class TurtorialFrame extends MovieClip { private const m_maxShowTime:Number = 0.5; private const m_maxHideTime:Number = 0.2; private var m_endScale:Number;// = 1 private var m_finished:Boolean;// = false private var m_clickSign:MovieClip; private var m_isShow:Boolean;// = true private var m_startScale:Number;// = 9 private var m_needToHide:Boolean;// = false private var m_liveTime:Number;// = 0 private var m_textClip:DisplayObject; private var m_checkBox:HideTipsPanel; public function TurtorialFrame(_arg1:Number, _arg2:DisplayObject):void{ this.buttonMode = true; (_arg2 as MovieClip).buttonMode = true; m_endScale = (_arg1 / 80); m_textClip = _arg2; update(0); } public function isShow():Boolean{ return (m_isShow); } public function update(_arg1:Number):void{ var _local2:Number; m_liveTime = (m_liveTime + _arg1); if (m_clickSign){ m_clickSign.scaleX = ((Math.sin((m_liveTime * 6)) * 0.03) + 1); m_clickSign.scaleY = ((Math.sin((m_liveTime * 6)) * 0.03) + 1); }; if (!m_finished){ if (m_isShow){ _local2 = (m_liveTime / m_maxShowTime); if (_local2 > 1){ m_finished = true; _local2 = 1; }; alpha = (0.6 * _local2); if (m_clickSign){ m_clickSign.scaleX = _local2; m_clickSign.scaleY = _local2; }; if (m_textClip){ m_textClip.alpha = _local2; }; if (m_checkBox){ m_checkBox.alpha = _local2; }; scaleX = (m_startScale + ((m_endScale - m_startScale) * _local2)); scaleY = scaleX; } else { _local2 = (m_liveTime / m_maxHideTime); if (_local2 > 1){ m_finished = true; _local2 = 1; this.visible = false; }; alpha = (0.6 * (1 - _local2)); scaleX = (m_endScale + (2 * _local2)); scaleY = scaleX; if (m_clickSign){ m_clickSign.alpha = (1 - _local2); }; if (m_textClip){ m_textClip.alpha = (1 - _local2); }; if (m_checkBox){ m_checkBox.alpha = (1 - _local2); }; }; }; } public function hide():void{ m_liveTime = 0; m_isShow = false; m_finished = false; } public function isNeedToHide():Boolean{ return (m_needToHide); } public function getCheckBox():HideTipsPanel{ return (m_checkBox); } public function getTextClip():DisplayObject{ return (m_textClip); } public function setClickSign(_arg1:MovieClip):void{ m_clickSign = _arg1; m_clickSign.scaleX = 0; m_clickSign.scaleY = 0; } public function setCheckBox(_arg1:HideTipsPanel):void{ m_checkBox = _arg1; m_checkBox.alpha = 0; _arg1.m_checkBox.addEventListener(CheckBox.EVENT_CHANGE, onCheckBoxChange); } public function getClickSign():MovieClip{ return (m_clickSign); } private function onCheckBoxChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); SoundManager.play(SoundConst.CLICK); m_needToHide = _local2.isChecked(); } public function isFinished():Boolean{ return (m_finished); } } }//package States.PlayState
Section 140
//Vulture (States.PlayState.Vulture) package States.PlayState { import Box2D.Dynamics.*; import flash.display.*; public class Vulture extends MapObject { private var m_anim:MovieClip; private var m_torsoFixture:b2Fixture;// = null private var m_isLeft:Boolean;// = false private var m_legsFixture:b2Fixture;// = null private var m_headFixture:b2Fixture;// = null public function Vulture(_arg1:b2Fixture, _arg2:b2Fixture, _arg3:b2Fixture, _arg4:Boolean){ m_anim = new VultureJump(); super(); m_isLeft = _arg4; m_legsFixture = _arg3; m_torsoFixture = _arg2; m_headFixture = _arg1; m_anim.clip.stop(); addChild(m_anim); if (m_isLeft){ m_anim.scaleX = -1; }; } override public function isItYourFixture(_arg1:b2Fixture):Boolean{ return ((((((_arg1 == m_legsFixture)) || ((_arg1 == m_torsoFixture)))) || ((_arg1 == m_headFixture)))); } override public function update(_arg1:Number):void{ if ((((m_anim.clip.currentFrame == m_anim.clip.totalFrames)) && (!(m_isDead)))){ m_anim.clip.gotoAndStop(1); }; } override public function onArrowContact(_arg1:Arrow, _arg2:b2Fixture):void{ if (m_anim.clip.currentFrame == 1){ removeChild(m_anim); switch (_arg2){ case m_legsFixture: m_anim = new VultureJump(); break; case m_headFixture: m_anim = new VultureBend(); break; case m_torsoFixture: break; }; if (m_isLeft){ m_anim.scaleX = -1; }; addChild(m_anim); m_anim.clip.play(); }; } } }//package States.PlayState
Section 141
//AchievementsState (States.AchievementsState) package States { import flash.events.*; import Main.*; import flash.utils.*; public class AchievementsState extends GameState { private static const BONUS_COLOR:String = "#FFCC00"; private static const REQUIREMENTS_COLOR:String = "#FFCC00"; private static const TITLE_COLOR:String = "#55FF55"; private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } override public function onCleanup():void{ m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); super.onCleanup(); } override public function onInit():void{ var _local2:String; var _local3:Achievement; var _local4:Hint; m_view = new AchievementsStateView(); addChild(m_view); m_view.addChild(new MoreGamesPanel(LinksManager.ACHIEVEMENTS_SCREEN)); var _local1:Dictionary = new Dictionary(); _local1[Achievements.CROWN] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>CROWN</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> get all achievements.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +30 000 points."); _local1[Achievements.HALF_COMPLETED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER GIBBET</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass 24 levels.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +5 000 points."); _local1[Achievements.FULL_COMPLETED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN GIBBET</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass all levels.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +5 secret space levels."); _local1[Achievements.WITH_STAR_40] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>STAR</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> Pass 40 levels with a star rating.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +1 arrow at each level."); _local1[Achievements.ACCURACY_70] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SNIPER CUP</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass minigame with 70% accuracy.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +10 additional arrows in minigame"); _local1[Achievements.SAVES_50] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER STATUETTE OF THE SAVER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> save 50 hangmans.<br>"); _local1[Achievements.SAVES_100] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN STATUETTE OF THE SAVER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> save 100 hangmans.<br>"); _local1[Achievements.KILLED_100] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>STATUETTE OF THE MUFF</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> kill 100 hangmans.<br>"); _local1[Achievements.GRIFS_KILLED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>STATUETTE OF THE VULTURE HUNTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> kill 100 of vultures in minigames.") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +50 score for each killed vulture."); _local1[Achievements.HOUR_PLAYED] = ((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER CUP OF GIBBETS MASTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> play for 1 hour on end.<br>"); _local1[Achievements.TWO_HOURS_PLAYED] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN CUP OF GIBBETS MASTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> play for 2 hour on end.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> Arrows don't hit hangmans at the 51st level."); _local1[Achievements.LEVEL_30_IN_6_SHOT] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER BOW OF SNIPER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 31st level with only 6 arrows shot.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> hangmans suffocate for 10% slower."); _local1[Achievements.LEVEL_44_IN_6_SHOT] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN BOW OF SNIPER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 45th level with only 7 arrows shot.<br>") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> hangmans get 20% less damage from arrows."); _local1[Achievements.LEVELS_WITHOUT_LOSE] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>SILVER CUP OF WINNER</FONT>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 10 levels in row without losses and replays.") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> additional 100 score points for each saved hangman."); _local1[Achievements.LEVELS_WITHOUT_INJURE] = (((((((("<FONT COLOR='" + TITLE_COLOR) + "'>GOLDEN CUP OF WINNER</FONT>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> pass 5 levels in row without losses and replays and damaging of hangmans.") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> additional 200 score points for each saved hangman."); for each (_local2 in Achievements.ALL) { _local3 = (m_view.getChildByName(_local2) as Achievement); if (_local3){ if (!GameData.haveAchievement(_local2)){ _local3.alpha = 0; } else { _local3.alpha = 1; }; _local4 = new Hint(); if (_local1[_local2]){ _local4.setText(_local1[_local2]); }; _local3.setHint(_local4); m_view.addChild(_local4); }; }; m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); } } }//package States
Section 142
//CreditsState (States.CreditsState) package States { import flash.events.*; import Box2D.Common.Math.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class CreditsState extends PhysGameState { private var m_iter:int;// = 0 private var m_mapObjects:Array; private var m_progClouds:Array; private var m_timer:Timer; private var m_progGibbet:Gibbet; public function CreditsState(){ m_mapObjects = new Array(); m_timer = new Timer(4500); m_progClouds = [new ProgrammingCloud()]; super(); } override public function onCleanup():void{ if (Capabilities.language == "ru"){ m_view.m_blogLink.removeEventListener(MouseEvent.CLICK, onBlogClick); } else { m_view.m_mailLink.removeEventListener(MouseEvent.CLICK, onMailClick); }; m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_notdoppler.removeEventListener(MouseEvent.CLICK, onNotdopplerClick); m_timer.stop(); m_timer.removeEventListener(TimerEvent.TIMER, onTick); m_timer = null; m_progGibbet = null; m_progClouds = null; super.onCleanup(); } private function onBlogClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); navigateToURL(new URLRequest("http://smrdis.ya.ru"), "_blank"); } override public function update(_arg1:Number):void{ var _local2:MapObject; super.update(_arg1); for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } private function onNotdopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.CREDITS_SCREEN_NOTDOPPLER_BUTTON); } override public function onInit():void{ var _local1:MovieClip; var _local2:Gibbet; var _local3:MovieClip; var _local4:Gibbet; var _local5:MovieClip; var _local6:int; var _local7:DisplayObject; m_view = new CreditsStateView(); addChild(m_view); if (Capabilities.language == "ru"){ m_view.m_blogLink.visible = true; m_view.m_blogLink.addEventListener(MouseEvent.CLICK, onBlogClick); m_view.m_mailLink.visible = false; } else { m_view.m_blogLink.visible = false; m_view.m_mailLink.visible = true; m_view.m_mailLink.addEventListener(MouseEvent.CLICK, onMailClick); }; super.onInit(); m_view.m_programmingHanger.visible = false; m_view.m_artHanger.visible = false; m_view.m_musicHanger.visible = false; m_progGibbet = new Gibbet(new b2Vec2((m_view.m_programmingHanger.x / m_physScale), (m_view.m_programmingHanger.y / m_physScale)), HumanRagdoll.HEAD, 6, m_world, 1, false); m_progGibbet.makeLookUgly(); m_view.m_sky.addChild(m_progGibbet); m_progGibbet.getRagdoll().applyImpulse(new b2Vec2(-0.2, 0)); m_mapObjects.push(m_progGibbet); for each (_local1 in m_progClouds) { m_view.addChild(_local1); }; onTick(null); _local2 = new Gibbet(new b2Vec2(((m_view.m_artHanger.x / m_physScale) / scaleX), (m_view.m_artHanger.y / m_physScale)), HumanRagdoll.HEAD, 6, m_world, 2, false); _local3 = new ArtCloud(); m_view.addChild(_local3); _local2.setComixCloud(_local3); _local2.showCloudNow(); _local2.makeLookUgly(); m_view.m_sky.addChild(_local2); _local2.getRagdoll().applyImpulse(new b2Vec2(-0.2, 0)); m_mapObjects.push(_local2); _local4 = new Gibbet(new b2Vec2((m_view.m_musicHanger.x / m_physScale), (m_view.m_musicHanger.y / m_physScale)), HumanRagdoll.HEAD, 6, m_world, 4, false); _local5 = new MusicCloud(); m_view.addChild(_local5); _local4.setComixCloud(_local5); _local4.showCloudNow(); _local4.makeLookUgly(); m_view.m_sky.addChild(_local4); _local4.getRagdoll().applyImpulse(new b2Vec2(-0.2, 0)); m_mapObjects.push(_local4); _local6 = 0; while (_local6 < m_view.numChildren) { _local7 = m_view.getChildAt(_local6); if ((_local7 is Cloud)){ m_mapObjects.push((_local7 as Cloud)); }; _local6++; }; m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_notdoppler.addEventListener(MouseEvent.CLICK, onNotdopplerClick); update((1 / 30)); m_view.addChild(new MoreGamesPanel(LinksManager.CREDITS_SCREEN)); m_timer.addEventListener(TimerEvent.TIMER, onTick); m_timer.start(); } private function onMailClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); navigateToURL(new URLRequest("mailto:gibbetsfeedback@gmail.com"), "_blank"); } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } private function onTick(_arg1:TimerEvent):void{ var _local2:MovieClip; m_iter = (++m_iter % m_progClouds.length); for each (_local2 in m_progClouds) { _local2.visible = false; }; m_progClouds[m_iter].visible = true; m_progGibbet.setComixCloud(m_progClouds[m_iter]); m_progGibbet.showCloudNow(); } } }//package States
Section 143
//CurrentPreloaderState (States.CurrentPreloaderState) package States { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Utils.*; import Box2D.Dynamics.Joints.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; import CPMStar.*; import flash.text.*; public class CurrentPreloaderState extends PreloaderState { protected var m_world:b2World; public var m_gibbetFront:MovieClip; public var m_loadingBar:MovieClip; protected var m_physScale:Number;// = 30 public var m_adBox:MovieClip; public var m_playButton:SimpleButton; private var m_needShowPlay:Boolean;// = false private var m_accumulateTime:Number;// = 0 private var m_gibbetPlace:MovieClip; protected var m_mouseDragEnabled:Boolean;// = true private var m_mapObjects:Array; public var m_notDoppler:SimpleButton; public var m_loadingLabel:TextField; public var m_closeButton:SimpleButton; public var m_scrollBar:ScrollBar; protected var m_gravity:b2Vec2; private var m_mouseJoint:b2MouseJoint; public function CurrentPreloaderState(){ m_mapObjects = new Array(); m_gibbetPlace = new MovieClip(); m_gravity = new b2Vec2(0, 10); super(); m_playButton.visible = false; } override public function onCleanup():void{ m_notDoppler.removeEventListener(MouseEvent.CLICK, onNotDopplerClick); super.onCleanup(); } override public function onFinishLoading():void{ m_needShowPlay = true; GameData.load(); m_playButton.visible = true; } public function getMousePhysPos():b2Vec2{ return (new b2Vec2(((stage.mouseX / m_physScale) / m_gibbetPlace.scaleX), ((stage.mouseY / m_physScale) / m_gibbetPlace.scaleY))); } private function onNotDopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.PRELOADER_SCREEN_BANNER); } override public function onInit():void{ var _local3:DisplayObject; super.onInit(); GameData.hideAds(); m_playButton.addEventListener(MouseEvent.CLICK, onPlayClick); var _local1:int; while (_local1 < numChildren) { _local3 = getChildAt(_local1); if ((_local3 is Cloud)){ m_mapObjects.push((_local3 as Cloud)); }; _local1++; }; m_world = new b2World(m_gravity, true); m_world.SetWarmStarting(true); m_world.SetContinuousPhysics(true); m_gibbetPlace.scaleX = 1.6; m_gibbetPlace.scaleY = 1.6; addChild(m_gibbetPlace); var _local2:Gibbet = new Gibbet(new b2Vec2(((345 / m_physScale) / m_gibbetPlace.scaleX), ((105 / m_physScale) / m_gibbetPlace.scaleY)), HumanRagdoll.HEAD, 6, m_world, 3, false); _local2.makeLookUgly(); m_gibbetPlace.addChild(_local2); _local2.getRagdoll().applyImpulse(new b2Vec2(-0.05, 0)); m_mapObjects.push(_local2); addChild(m_gibbetFront); if (GameData.haveAds()){ showAds(); } else { onCloseClick(null); }; m_playButton.x = (m_playButton.x + 200); m_notDoppler.addEventListener(MouseEvent.CLICK, onNotDopplerClick); if (GameData.hasKongregateAPI()){ initKongregateAPI(); }; } override public function update(_arg1:Number):void{ var _local3:MapObject; var _local4:DisplayObject; m_accumulateTime = (m_accumulateTime + _arg1); while (m_accumulateTime > Constant.TIME_STEP) { m_accumulateTime = (m_accumulateTime - Constant.TIME_STEP); m_world.Step(Constant.TIME_STEP, Constant.PHYSICS_VELOCITY_ITERATION_COUNT, Constant.PHYSICS_POSITIONS_ITERATION_COUNT); }; var _local2:b2Body = m_world.GetBodyList(); while (_local2) { if ((_local2.GetUserData() is DisplayObject)){ _local4 = (_local2.GetUserData() as DisplayObject); _local4.x = (_local2.GetPosition().x * m_physScale); _local4.y = (_local2.GetPosition().y * m_physScale); _local4.rotation = MathUtils.RadToGrad(_local2.GetAngle()); }; _local2 = _local2.GetNext(); }; if (Constant.m_debugMode){ m_world.DrawDebugData(); }; super.update(_arg1); m_loadingBar.m_textClip.m_text.text = (("loading: " + int((getPercent() * 100))) + "%"); m_loadingBar.m_bar.gotoAndStop(Math.round((m_loadingBar.m_bar.totalFrames * getPercent()))); for each (_local3 in m_mapObjects) { _local3.update(_arg1); }; if (m_needShowPlay){ m_playButton.x = (m_playButton.x - (400 * _arg1)); if (m_playButton.x <= 523){ m_playButton.x = 523; }; }; } private function onPlayClick(_arg1:MouseEvent):void{ StateManager.getInstance().gotoAndStop(2); GameData.init(); SoundManager.play(SoundConst.CLICK); if (m_loaderInfo.url.indexOf("armorgames.com") != -1){ StateManager.getInstance().changeState(new SponsorIntroState()); } else { StateManager.getInstance().changeState(new UrlLockedState()); }; } private function loadComplete(_arg1:Event):void{ } override public function handleMouseMove(_arg1:MouseEvent):void{ if (m_mouseDragEnabled){ if (m_mouseJoint){ m_mouseJoint.SetTarget(getMousePhysPos()); }; }; } public function initKongregateAPI():void{ } override public function handleMouseDown(_arg1:MouseEvent):void{ var _local2:b2Body; var _local3:b2MouseJointDef; super.handleMouseDown(_arg1); if (m_mouseDragEnabled){ if (!m_mouseJoint){ _local2 = GetBodyAtMouse(); if (_local2){ _local3 = new b2MouseJointDef(); _local3.bodyA = m_world.GetGroundBody(); _local3.bodyB = _local2; _local3.target.SetV(getMousePhysPos()); _local3.collideConnected = true; _local3.maxForce = (10 * _local2.GetMass()); m_mouseJoint = (m_world.CreateJoint(_local3) as b2MouseJoint); }; }; }; } public function GetBodyAtMouse():b2Body{ var mouse_pos:b2Vec2; var fixture:b2Fixture; var GetBodyCallback:Function; GetBodyCallback = function (_arg1:b2Fixture):Boolean{ var _local3:Boolean; var _local2:b2Shape = _arg1.GetShape(); if (_arg1.GetBody().GetType() != b2Body.b2_staticBody){ _local3 = _local2.TestPoint(_arg1.GetBody().GetTransform(), mouse_pos); if (_local3){ body = _arg1.GetBody(); return (false); }; }; return (true); }; mouse_pos = getMousePhysPos(); var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set((mouse_pos.x - 0.001), (mouse_pos.y - 0.001)); aabb.upperBound.Set((mouse_pos.x + 0.001), (mouse_pos.y + 0.001)); var body:b2Body; m_world.QueryAABB(GetBodyCallback, aabb); return (body); } override public function handleMouseUp(_arg1:MouseEvent):void{ super.handleMouseUp(_arg1); if (m_mouseDragEnabled){ if (m_mouseJoint){ m_world.DestroyJoint(m_mouseJoint); m_mouseJoint = null; }; }; } private function onCloseClick(_arg1:MouseEvent):void{ m_adBox.visible = false; m_closeButton.visible = false; } private function showAds():void{ var ad:DisplayObject; try { ad = new AdLoader(Constant.CPMSTAR_PREROLL_CODE); m_adBox.addChild(ad); m_closeButton.addEventListener(MouseEvent.CLICK, onCloseClick); addChild(m_adBox); addChild(m_closeButton); } catch(e:Error) { trace("CPMstar error!", e); }; } override public function onPreInit():void{ setMinimalLoadTime(0.1); } } }//package States
Section 144
//GameCompleteState (States.GameCompleteState) package States { import flash.events.*; import Box2D.Common.Math.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; public class GameCompleteState extends PhysGameState { private var m_mapObjects:Array; public function GameCompleteState(){ m_mapObjects = new Array(); super(); } private function onSubmitClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SubmitScoreState()); } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } override public function onCleanup():void{ m_view.m_buttonSubmit.removeEventListener(MouseEvent.CLICK, onSubmitClick); m_view.m_notDoppler.removeEventListener(MouseEvent.CLICK, onNotDopplerClick); m_view.m_buttonMoreGames.removeEventListener(MouseEvent.CLICK, onMoreGamesClick); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); super.onCleanup(); } override public function update(_arg1:Number):void{ var _local2:MapObject; super.update(_arg1); for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } private function onMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.GAME_COMPLETE_MORE_GAMES_BUTTON); } private function onNotDopplerClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.GAME_COMPLETE_NOTDOPPLER_BUTTON); } override public function onInit():void{ var _local5:DisplayObject; super.onInit(); m_view = new GameCompleteStateView(); addChild(m_view); var _local1:int; while (_local1 < m_view.numChildren) { _local5 = m_view.getChildAt(_local1); if ((_local5 is Cloud)){ m_mapObjects.push((_local5 as Cloud)); }; _local1++; }; var _local2:MovieClip = new MovieClip(); _local2.scaleX = 1.6; _local2.scaleY = 1.6; var _local3:Gibbet = new Gibbet(new b2Vec2(((345 / m_physScale) / _local2.scaleX), ((105 / m_physScale) / _local2.scaleY)), HumanRagdoll.HEAD, 6, m_world, 3, false); _local3.makeLookUgly(); var _local4:GameCompleteCloud = new GameCompleteCloud(); _local3.setComixCloud(_local4); _local3.showCloudNow(); _local2.addChild(_local3); _local2.addChild(_local4); _local3.getRagdoll().applyImpulse(new b2Vec2(-0.05, 0)); m_mapObjects.push(_local3); m_view.addChild(m_view.m_gibbetFront); m_view.addChild(_local2); m_view.m_notDoppler.addEventListener(MouseEvent.CLICK, onNotDopplerClick); m_view.m_buttonMoreGames.addEventListener(MouseEvent.CLICK, onMoreGamesClick); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonSubmit.addEventListener(MouseEvent.CLICK, onSubmitClick); m_view.m_totalScore.m_text.text = GameData.totalScore.toString(); update(Constant.TIME_STEP); SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); m_view.addChild(new MoreGamesPanel(LinksManager.GAME_COMPLETE_SCREEN)); if (!GameData.canSubmitScore()){ m_view.m_buttonSubmit.visible = false; }; } } }//package States
Section 145
//GamePausedState (States.GamePausedState) package States { import flash.events.*; import Main.*; public class GamePausedState extends GameState { override public function update(_arg1:Number):void{ m_view.m_clickToContinue.scaleX = ((Math.sin((m_liveTime * 6)) * 0.03) + 1); m_view.m_clickToContinue.scaleY = ((Math.sin((m_liveTime * 6)) * 0.03) + 1); } override public function handleMouseDown(_arg1:MouseEvent):void{ StateManager.getInstance().popState(); } override public function onInit():void{ m_view = new GamePausedStateView(); addChild(m_view); m_view.buttonMode = true; } } }//package States
Section 146
//GrifShootingWinState (States.GrifShootingWinState) package States { import flash.events.*; import flash.geom.*; import Main.*; import States.GrifShooting.*; public class GrifShootingWinState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const m_endPosition:Point; private const m_cupEndPosition:Point; private const m_startPosition:Point; private const STATE_MOVE_END:int = 2; private const m_cupStartPosition:Point; private const STATE_MOVE_UP:int = 1; private var m_wasStarSound:Boolean;// = false private var m_wasNewAchievement:Boolean;// = false private var m_shader:Shader; private var m_state:int;// = 0 public function GrifShootingWinState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_startPosition = new Point(584, -215); m_endPosition = new Point(493, 62); m_cupStartPosition = new Point(841, 248); m_cupEndPosition = new Point(521, 248); super(); } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; m_shader.update(_arg1); switch (m_state){ case STATE_MOVE_DOWN: if ((m_view.y = (m_view.y + (_arg1 * 1000))) > 20){ m_state = STATE_MOVE_UP; }; break; case STATE_MOVE_UP: if ((m_view.y = (m_view.y - (_arg1 * 150))) < 0){ m_view.y = 0; m_state = STATE_MOVE_END; }; break; }; if (GrifShootingState.m_wasStar){ _local2 = 0.9; _local3 = 1.35; if (m_liveTime > _local2){ m_view.m_star.visible = GrifShootingState.m_wasStar; _local4 = ((m_liveTime - _local2) / (_local3 - _local2)); if (m_liveTime < _local3){ m_view.m_star.x = (m_startPosition.x + ((m_endPosition.x - m_startPosition.x) * _local4)); m_view.m_star.y = (m_startPosition.y + ((m_endPosition.y - m_startPosition.y) * _local4)); } else { m_view.m_star.m_perfectSign.rotation = (Math.sin((m_liveTime * 7)) * 3.5); m_view.m_star.x = m_endPosition.x; m_view.m_star.y = m_endPosition.y; if (!m_wasStarSound){ m_wasStarSound = true; SoundManager.play(SoundConst.PERFECT_STAR); }; }; }; }; if (m_wasNewAchievement){ _local5 = 1.2; _local6 = 1.65; if (m_liveTime > _local5){ _local7 = ((m_liveTime - _local5) / (_local6 - _local5)); if (m_liveTime < _local6){ m_view.m_buttonNewAchievement.x = (m_cupStartPosition.x + ((m_cupEndPosition.x - m_cupStartPosition.x) * _local7)); m_view.m_buttonNewAchievement.y = (m_cupStartPosition.y + ((m_cupEndPosition.y - m_cupStartPosition.y) * _local7)); } else { m_view.m_buttonNewAchievement.x = m_cupEndPosition.x; m_view.m_buttonNewAchievement.y = m_cupEndPosition.y; }; }; }; } override public function onInit():void{ GameData.onWinGrifShootingLevel(GrifShootingState.m_curLevel, GrifShootingState.m_vulturesKilled); addChild(m_shader); m_view = new GrifShootingWinStateView(); addChild(m_view); m_view.y = -480; m_view.m_levelNum.text = (GrifShootingState.m_curLevel + 1).toString(); m_view.m_accuracy.m_text.text = (int(((GrifShootingState.m_vulturesKilled / GrifShootingState.m_arrowsUsed) * 100)) + "%"); m_view.m_currentScore.m_text.text = GrifShootingState.m_currentScores.toString(); m_view.m_bestScore.m_text.text = GameData.getBestScore(GrifShootingState.m_curLevel); m_view.m_star.visible = false; m_view.m_buttonNext.addEventListener(MouseEvent.CLICK, onButtonNextClick); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onButtonMenuClick); m_view.m_buttonNewAchievement.addEventListener(MouseEvent.CLICK, onAchievementsClick); m_wasNewAchievement = GameData.wasNewAchievements(); SoundManager.playFadeOut(SoundConst.WIN); addChild(new MoreGamesPanel(LinksManager.MINIGAME_WIN_SCREEN)); } override public function onCleanup():void{ m_view.m_buttonNext.removeEventListener(MouseEvent.CLICK, onButtonNextClick); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onButtonMenuClick); m_view.m_buttonNewAchievement.removeEventListener(MouseEvent.CLICK, onAchievementsClick); super.onCleanup(); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } private function onButtonNextClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState((GrifShootingState.m_curLevel + 1))); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } } }//package States
Section 147
//LeftToRightMoveTransactionState (States.LeftToRightMoveTransactionState) package States { import Main.*; import flash.display.*; public class LeftToRightMoveTransactionState extends GameState { private var m_type:String;// = null private var m_stateView1:DisplayObject;// = null private var m_stateView2:DisplayObject;// = null private var m_state1:GameState;// = null private var m_state2:GameState;// = null private var m_maxTransitionTime:Number;// = 0.5 public static const RIGHT_TO_LEFT_TRANSACTION:String = "rightToLeft"; public static const TOP_TO_DOWN_TRANSACTION:String = "topToDown"; public static const DOWN_TO_TOP_TRANSACTION:String = "downToTop"; public static const LEFT_TO_RIGHT_TRANSACTION:String = "leftToRight"; public function LeftToRightMoveTransactionState(_arg1:GameState, _arg2:GameState, _arg3:String, _arg4:Number=0.5){ m_type = _arg3; m_state1 = _arg1; m_state2 = _arg2; m_stateView1 = _arg1.getViewClip(); m_stateView2 = _arg2.getViewClip(); m_maxTransitionTime = _arg4; } override public function onCleanup():void{ m_stateView1.x = 0; m_stateView2.x = 0; m_stateView1.y = 0; m_stateView2.y = 0; m_stateView1 = null; m_stateView2 = null; m_state1 = null; m_state2 = null; super.onCleanup(); } override public function update(_arg1:Number):void{ var _local2:Number = (m_liveTime / m_maxTransitionTime); var _local3:Number = 640; var _local4:Number = 480; switch (m_type){ case LEFT_TO_RIGHT_TRANSACTION: m_stateView1.x = (-(_local2) * _local3); m_stateView2.x = (_local3 - (_local2 * _local3)); break; case RIGHT_TO_LEFT_TRANSACTION: m_stateView1.x = (_local2 * _local3); m_stateView2.x = ((_local2 * _local3) - _local3); break; case DOWN_TO_TOP_TRANSACTION: m_stateView1.y = (-(_local2) * _local4); m_stateView2.y = (_local4 - (_local2 * _local4)); break; case TOP_TO_DOWN_TRANSACTION: m_stateView1.y = (_local2 * _local4); m_stateView2.y = ((_local2 * _local4) - _local4); break; }; if (m_liveTime >= m_maxTransitionTime){ StateManager.getInstance().changeState(m_state2); }; } override public function onInit():void{ addChild(m_stateView1); addChild(m_stateView2); update(0); } } }//package States
Section 148
//LoseState (States.LoseState) package States { import flash.events.*; import Box2D.Common.Math.*; import Utils.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; public class LoseState extends PhysGameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_UP:int = 1; private const STATE_MOVE_END:int = 2; private var m_shader:Shader; private var m_state:int;// = 0 public function LoseState(){ m_shader = new Shader(0.7, 1.4, 0, 0.5); super(); } override public function onCleanup():void{ m_view.m_buttonRestart.removeEventListener(MouseEvent.CLICK, onButtonRestartClick); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onButtonMenuClick); m_shader = null; super.onCleanup(); } override public function update(_arg1:Number):void{ super.update(_arg1); m_shader.update(_arg1); switch (m_state){ case STATE_MOVE_DOWN: if ((m_view.y = (m_view.y + (_arg1 * 1000))) > 20){ m_state = STATE_MOVE_UP; }; break; case STATE_MOVE_UP: if ((m_view.y = (m_view.y - (_arg1 * 150))) < 0){ m_view.y = 0; m_state = STATE_MOVE_END; }; break; }; } override public function onInit():void{ super.onInit(); addChild(m_shader); m_view = new LoseStateView(); addChild(m_view); m_view.y = -480; var _local1:MovieClip = new MovieClip(); _local1.scaleX = 1.9; _local1.scaleY = 1.9; m_view.m_window.addChild(_local1); m_view.m_buttonRestart.addEventListener(MouseEvent.CLICK, onButtonRestartClick); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onButtonMenuClick); var _local2:int = PlayState.m_deadID; if (_local2 == -1){ _local2 = MathUtils.RandomRangeInt(1, 4); }; var _local3:Gibbet = new Gibbet(new b2Vec2(((m_view.m_window.width / 4) / m_physScale), (20 / m_physScale)), HumanRagdoll.HEAD, 7, m_world, _local2, false); _local1.addChild(_local3); _local3.getRagdoll().applyImpulse(new b2Vec2(MathUtils.RandomRange(0.1, 0.2), 0)); _local3.makeLookUgly(); SoundManager.playFadeOut(SoundConst.LOSE); addChild(new MoreGamesPanel(LinksManager.LOSE_SCREEN)); } private function onButtonRestartClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState(PlayState.m_curLevel)); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } } }//package States
Section 149
//MainMenuState (States.MainMenuState) package States { import flash.events.*; import Main.*; import flash.display.*; import States.PlayState.*; import Box2D.*; public class MainMenuState extends PhysGameState { private var m_cheat:Array; private var m_phylosophyCloud:MovieClip;// = null private var m_mapObjects:Array; private var m_count:int;// = 1 public function MainMenuState(){ m_mapObjects = new Array(); m_cheat = new Array(); super(); } override public function onCleanup():void{ m_mapObjects = null; m_cheat = null; super.onCleanup(); } override public function handleMouseClick(_arg1:MouseEvent):void{ var right_anim:MovieClip; var left_anim:MovieClip; var e = _arg1; try { right_anim = m_view.m_rightButtonsPanel; left_anim = m_view.m_leftButtonsPanel; if (right_anim.getChildByName("m_buttonPlay").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } else { if (right_anim.getChildByName("m_buttonOptions").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new OptionsState()); } else { if (right_anim.getChildByName("m_buttonCredits").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new CreditsState()); } else { if (m_view.m_notdoppler.hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.MAIN_MENU_NOTDOPPLER_BUTTON); } else { if (left_anim.getChildByName("m_buttonMoreGames").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.MAIN_MENU_MORE_GAMES_BUTTON); } else { if (left_anim.getChildByName("m_buttonGibbetsI").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.GIBBETS_I_URL, LinksManager.MAIN_MENU_GIBBETS_I_BUTTON); }; }; }; }; }; }; } catch(e:Error) { trace("error here", e, e.getStackTrace()); }; if (e.target == m_view.m_vulture){ m_count++; if ((m_count % 10) == 0){ if (m_phylosophyCloud){ m_view.removeChild(m_phylosophyCloud); }; switch (((m_count / 10) % 3)){ case 0: m_phylosophyCloud = new MainMenuCloud1(); break; case 1: m_phylosophyCloud = new MainMenuCloud2(); break; case 2: m_phylosophyCloud = new MainMenuCloud3(); break; }; m_view.addChild(m_phylosophyCloud); m_phylosophyCloud.x = m_view.m_comixCloud.x; m_phylosophyCloud.y = m_view.m_comixCloud.y; SoundManager.play(SoundConst.VULTURE_CRY_4); }; }; } override public function onInit():void{ var _local2:DisplayObject; super.onInit(); m_view = new MainMenuStateView(); addChild(m_view); m_view.m_vulture.buttonMode = true; m_view.m_comixCloud.visible = false; if (!StateManager.getInstance().haveOverlay()){ StateManager.getInstance().setOverlay(new SoundButton()); }; SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); var _local1:int; while (_local1 < m_view.numChildren) { _local2 = m_view.getChildAt(_local1); if ((_local2 is Cloud)){ m_mapObjects.push((_local2 as Cloud)); }; _local1++; }; } override public function update(_arg1:Number):void{ var _local2:MapObject; if (m_view.m_II.currentFrame == 40){ SoundManager.play(SoundConst.STICK_IN_MAIN_MENU); }; for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } override public function handleKeyDown(_arg1:KeyboardEvent):void{ var _local2:int; var _local3:String; m_cheat.push(_arg1.charCode); if (m_cheat.length == 5){ SoundManager.play(SoundConst.VULTURE_CRY_4); if (String.fromCharCode(m_cheat[0], m_cheat[1], m_cheat[2], m_cheat[3], m_cheat[4]) == "iddqd"){ _local2 = 0; while (_local2 < GameData.totalLevelsCount) { GameData.onWinLevel(_local2, 0, false, 0); _local2++; }; for each (_local3 in Achievements.ALL) { GameData.giveAchievement(_local3); }; }; }; } } }//package States
Section 150
//OptionsState (States.OptionsState) package States { import flash.events.*; import flash.geom.*; import Main.*; public class OptionsState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_BACK:int = 3; private const m_endPosition:Point; private const m_startPosition:Point; private const STATE_MOVE_END:int = 2; private const STATE_MOVE_UP:int = 1; private var m_shader:Shader; private var m_state:int;// = 0 public function OptionsState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_startPosition = new Point(584, -215); m_endPosition = new Point(493, 62); super(); } private function onDisableBloodChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); GameData.m_isBloodDisabled = _local2.isChecked(); SoundManager.play(SoundConst.CLICK); } override public function onCleanup():void{ m_view.m_musicVolume.removeEventListener(ScrollBar.EVENT_CHANGE, onMusicVolumeChange); m_view.m_soundVolume.removeEventListener(ScrollBar.EVENT_CHANGE, onSoundVolumeChange); m_view.m_invertControl.removeEventListener(CheckBox.EVENT_CHANGE, onInvertControlChange); m_view.m_disableBlood.removeEventListener(CheckBox.EVENT_CHANGE, onDisableBloodChange); m_view.m_hideTips.removeEventListener(CheckBox.EVENT_CHANGE, onHideTipsChange); m_view.m_buttonOk.removeEventListener(MouseEvent.CLICK, onOkClick); m_view.m_buttonReset.removeEventListener(MouseEvent.CLICK, onResetClick); m_shader = null; super.onCleanup(); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); switch (m_state){ case STATE_MOVE_DOWN: if ((m_view.y = (m_view.y + (_arg1 * 1000))) > 20){ m_state = STATE_MOVE_UP; }; break; case STATE_MOVE_UP: if ((m_view.y = (m_view.y - (_arg1 * 150))) < 0){ m_view.y = 0; m_state = STATE_MOVE_END; }; break; case STATE_MOVE_BACK: if ((m_view.y = (m_view.y - (_arg1 * 1300))) < -480){ StateManager.getInstance().popState(); }; break; }; } override public function onInit():void{ m_view = new OptionsStateView(); addChild(m_shader); addChild(m_view); m_view.y = -480; m_view.m_musicVolume.setProgress(SoundManager.getMusicVolume()); m_view.m_soundVolume.setProgress(SoundManager.getSoundVolume()); m_view.m_musicVolume.addEventListener(ScrollBar.EVENT_CHANGE, onMusicVolumeChange); m_view.m_soundVolume.addEventListener(ScrollBar.EVENT_CHANGE, onSoundVolumeChange); m_view.m_invertControl.setChecked(GameData.m_invertedControl); m_view.m_invertControl.addEventListener(CheckBox.EVENT_CHANGE, onInvertControlChange); m_view.m_disableBlood.setChecked(GameData.m_isBloodDisabled); m_view.m_disableBlood.addEventListener(CheckBox.EVENT_CHANGE, onDisableBloodChange); m_view.m_hideTips.setChecked(!(GameData.m_isHintsOn)); m_view.m_hideTips.addEventListener(CheckBox.EVENT_CHANGE, onHideTipsChange); m_view.m_buttonOk.addEventListener(MouseEvent.CLICK, onOkClick); m_view.m_buttonReset.addEventListener(MouseEvent.CLICK, onResetClick); super.onInit(); } private function onMusicVolumeChange(_arg1:Event):void{ SoundManager.setMusicVolume(m_view.m_musicVolume.getProgress()); } private function onInvertControlChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); GameData.m_invertedControl = _local2.isChecked(); SoundManager.play(SoundConst.CLICK); } private function onHideTipsChange(_arg1:Event):void{ var _local2:CheckBox = (_arg1.target as CheckBox); GameData.setHideTips(_local2.isChecked()); SoundManager.play(SoundConst.CLICK); } private function onOkClick(_arg1:MouseEvent):void{ GameData.save(); SoundManager.play(SoundConst.CLICK); m_state = STATE_MOVE_BACK; removeChild(m_shader); m_shader = new Shader(0, 0.25, m_shader.getShade(), 0); addChildAt(m_shader, 0); } private function onResetClick(_arg1:MouseEvent):void{ trace("onResetClick"); SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new YesNoState()); } private function onSoundVolumeChange(_arg1:Event):void{ SoundManager.play(SoundConst.CLICK); SoundManager.setSoundVolume(m_view.m_soundVolume.getProgress()); } } }//package States
Section 151
//ParserConst (States.ParserConst) package States { public class ParserConst { public static const TYPE_TELEPORT_GHOST:String = "teleport_ghost"; public static const TYPE_DYNAMIC_BOX:String = "dynamic_box"; public static const TYPE_FRONTGROUND:String = "frontground"; public static const TYPE_STATIC_BOX:String = "static_box"; public static const TYPE_HIGHLIGHT:String = "highlight"; public static const TYPE_TNT_BARREL:String = "tnt_barrel"; public static const TYPE_HEDHEHOG_GHOST:String = "hedhehog_ghost"; public static const TYPE_BACKGROUND:String = "background"; public static const TYPE_ARROW_GHOST:String = "arrow_ghost"; public static const TYPE_CLOUD:String = "cloud"; public static const TYPE_EDGE_MARKER:String = "edge_marker"; public static const TYPE_VULTURE:String = "vulture"; public static const ATTRIBUTE_TYPE:String = "type"; public static const TYPE_AMMO_GHOST:String = "ammo_ghost"; public static const TYPE_ROTOR:String = "rotor"; public static const TYPE_GIBBET_OBLIQUELY:String = "gibbet_obliquely"; public static const TYPE_SUN:String = "sun"; public static const TYPE_GIBBET_GROUND:String = "gibbet_ground"; public static const TYPE_GROUND:String = "ground"; public static const TYPE_COW:String = "cow"; public static const TYPE_GIBBET:String = "gibbet"; public static const TYPE_POINTS_GHOST:String = "points_ghost"; public static const TYPE_SHOOTING_POINT:String = "shooting_point"; } }//package States
Section 152
//SelectLevelButton (States.SelectLevelButton) package States { import flash.events.*; import flash.display.*; import flash.text.*; public class SelectLevelButton extends MovieClip { private var m_textDown:TextField; private var m_down:MovieClip; private var m_isShowStar:Boolean;// = false private var m_starOver:MovieClip; private var m_starUp:MovieClip; private var m_starDown:MovieClip; private var m_unenable:MovieClip; private var m_textOver:TextField; private var m_up:MovieClip; private var m_over:MovieClip; private var m_textUp:TextField; private var m_state:String;// = "up" public static const DOWN:String = "down"; public static const OVER:String = "over"; public static const UP:String = "up"; public static const UNENABLE:String = "unenable"; public function SelectLevelButton(){ m_textDown = (getChildByName("m_textDown") as TextField); m_textUp = (getChildByName("m_textUp") as TextField); m_textOver = (getChildByName("m_textOver") as TextField); m_starDown = (getChildByName("m_starDown") as MovieClip); m_starUp = (getChildByName("m_starUp") as MovieClip); m_starOver = (getChildByName("m_starOver") as MovieClip); m_down = (getChildByName("m_down") as MovieClip); m_up = (getChildByName("m_up") as MovieClip); m_over = (getChildByName("m_over") as MovieClip); m_unenable = (getChildByName("m_unenable") as MovieClip); buttonMode = true; this.mouseChildren = false; addEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver); addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut); addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); addEventListener(MouseEvent.MOUSE_UP, handleMouseUp); setState(UP); } private function handleRemoveFromStage(_arg1:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); removeEventListener(MouseEvent.MOUSE_OVER, handleMouseOver); removeEventListener(MouseEvent.MOUSE_OUT, handleMouseOut); removeEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp); m_state = null; m_textUp = null; m_up = null; m_starUp = null; m_textOver = null; m_over = null; m_starOver = null; m_textDown = null; m_down = null; m_starDown = null; m_unenable = null; } private function hide():void{ m_textUp.visible = false; m_up.visible = false; m_starUp.visible = false; m_textOver.visible = false; m_over.visible = false; m_starOver.visible = false; m_textDown.visible = false; m_down.visible = false; m_starDown.visible = false; m_unenable.visible = false; } public function setState(_arg1:String):void{ hide(); buttonMode = true; switch (_arg1){ case UNENABLE: buttonMode = false; m_unenable.visible = true; break; case UP: m_up.visible = true; m_textUp.visible = true; if (m_isShowStar){ m_starUp.visible = true; }; break; case DOWN: m_down.visible = true; m_textDown.visible = true; if (m_isShowStar){ m_starDown.visible = true; }; break; case OVER: m_over.visible = true; m_textOver.visible = true; if (m_isShowStar){ m_starOver.visible = true; }; break; }; m_state = _arg1; } private function handleMouseOver(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(OVER); }; } public function hideStar():void{ m_isShowStar = false; setState(m_state); } public function unenable():void{ setState(UNENABLE); } private function handleMouseUp(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(OVER); }; } public function setText(_arg1:String):void{ m_textUp.text = _arg1; m_textOver.text = _arg1; m_textDown.text = _arg1; setState(UP); } private function handleMouseOut(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(UP); }; } public function showStar():void{ m_isShowStar = true; setState(m_state); } private function handleMouseDown(_arg1:MouseEvent):void{ if (m_state != UNENABLE){ setState(DOWN); }; } } }//package States
Section 153
//SelectLevelState (States.SelectLevelState) package States { import flash.events.*; import Main.*; import flash.display.*; import States.PlayState.*; import flash.filters.*; public class SelectLevelState extends GameState { private var m_mapObjects:Array; private static var m_isSecondPart:Boolean = false; public function SelectLevelState(_arg1:Boolean):void{ m_mapObjects = new Array(); super(); m_isSecondPart = _arg1; } private function onArrowUpClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().changeState(new LeftToRightMoveTransactionState(this, new SelectSecretLevelState(), LeftToRightMoveTransactionState.TOP_TO_DOWN_TRANSACTION, 1)); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } override public function update(_arg1:Number):void{ var _local2:MapObject; for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; } override public function handleMouseClick(_arg1:MouseEvent):void{ var _local4:int; var _local2:int = GameData.levelsCompleted; var _local3:int; while (_local3 < 24) { _local4 = _local3; if (m_isSecondPart){ _local4 = (_local4 + 24); }; if (m_view.m_buttonsPanel.getChildByName(("m_level" + _local3)).hitTestPoint(_arg1.stageX, _arg1.stageY)){ if (_local4 <= _local2){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState(_local4)); return; }; }; _local3++; }; } private function prepareView(_arg1:MovieClip):void{ var _local2:int = GameData.levelsCompleted; _arg1.m_totalScore.m_text.text = GameData.totalScore.toString(); prepareLevelsList(_arg1.m_buttonsPanel); } override public function onInit():void{ var _local2:DisplayObject; SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); if (m_isSecondPart){ GameData.onEnterSelectLevelScreen(GameData.SCREEN_25_48); } else { GameData.onEnterSelectLevelScreen(GameData.SCREEN_1_24); }; m_view = new SelectLevelStateView(); prepareView(m_view); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_buttonAchievements.addEventListener(MouseEvent.CLICK, onAchievementsClick); if (GameData.levelsCompleted >= 48){ m_view.m_arrowUp.addEventListener(MouseEvent.CLICK, onArrowUpClick); } else { m_view.m_arrowUp.visible = false; }; m_view.m_arrowRight.addEventListener(MouseEvent.CLICK, onArrowRightClick); addChild(m_view); m_view.addChild(new MoreGamesPanel(LinksManager.SELECT_LEVEL_SCREEN)); m_view.m_buttonSubmit.addEventListener(MouseEvent.CLICK, onSubmitClick); if (!GameData.canSubmitScore()){ m_view.m_buttonSubmit.visible = false; }; var _local1:int; while (_local1 < m_view.numChildren) { _local2 = m_view.getChildAt(_local1); if ((_local2 is Cloud)){ m_mapObjects.push((_local2 as Cloud)); }; _local1++; }; } private function onSubmitClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SubmitScoreState()); } override public function getViewClip():DisplayObject{ var _local1:SelectLevelStateView; var _local2:int; var _local3:DisplayObject; _local1 = new SelectLevelStateView(); prepareView(_local1); if (m_view){ _local2 = 0; while (_local2 < m_view.numChildren) { _local3 = m_view.getChildAt(_local2); if ((_local3 is Cloud)){ _local1.getChildAt(_local2).x = _local3.x; _local1.getChildAt(_local2).y = _local3.y; }; _local2++; }; }; if (!GameData.canSubmitScore()){ _local1.m_buttonSubmit.visible = false; }; _local1.addChild(new MoreGamesPanel(LinksManager.NO_SCREEN)); return (_local1); } private function onArrowRightClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); m_isSecondPart = !(m_isSecondPart); prepareLevelsList(m_view.m_buttonsPanel); if (m_isSecondPart){ GameData.onEnterSelectLevelScreen(GameData.SCREEN_25_48); } else { GameData.onEnterSelectLevelScreen(GameData.SCREEN_1_24); }; } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } private function prepareLevelsList(_arg1:MovieClip):void{ var _local3:SelectLevelButton; var _local4:int; var _local2:int; while (_local2 < 24) { _local3 = (_arg1.getChildByName(("m_level" + _local2)) as SelectLevelButton); _local4 = _local2; if (m_isSecondPart){ _local4 = (_local4 + 24); }; if (_local4 <= GameData.levelsCompleted){ _local3.setText((_local4 + 1).toString()); } else { _local3.unenable(); }; if (GameData.isLevelWithStar(_local4)){ _local3.showStar(); } else { _local3.hideStar(); }; _local2++; }; } override public function onCleanup():void{ m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_arrowUp.removeEventListener(MouseEvent.CLICK, onArrowUpClick); m_view.m_arrowRight.removeEventListener(MouseEvent.CLICK, onArrowRightClick); m_view.m_buttonAchievements.removeEventListener(MouseEvent.CLICK, onAchievementsClick); m_view.m_buttonSubmit.removeEventListener(MouseEvent.CLICK, onSubmitClick); m_mapObjects = null; super.onCleanup(); } } }//package States
Section 154
//SelectSecretLevelState (States.SelectSecretLevelState) package States { import flash.events.*; import Main.*; import flash.display.*; import States.PlayState.*; import CPMStar.*; public class SelectSecretLevelState extends GameState { private var m_mapObjects:Array; public function SelectSecretLevelState(){ m_mapObjects = new Array(); super(); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } override public function update(_arg1:Number):void{ var _local2:MapObject; for each (_local2 in m_mapObjects) { _local2.update(_arg1); }; if (((GameData.haveAds()) && ((m_liveTime > 0.5)))){ if (m_view.m_adBox.x < 150){ m_view.m_adBox.x = (m_view.m_adBox.x + (1600 * _arg1)); m_view.m_closeButton.x = (m_view.m_closeButton.x + (1600 * _arg1)); }; }; } private function onMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new MainMenuState()); } override public function getViewClip():DisplayObject{ var _local2:int; var _local3:DisplayObject; var _local1:MovieClip = new SelectSecretLevelStateView(); prepareView(_local1); if (m_view){ _local2 = 0; while (_local2 < m_view.numChildren) { _local3 = m_view.getChildAt(_local2); if ((_local3 is Cloud)){ _local1.getChildAt(_local2).x = _local3.x; _local1.getChildAt(_local2).y = _local3.y; }; _local2++; }; }; _local1.addChild(new MoreGamesPanel(LinksManager.NO_SCREEN)); if (!GameData.canSubmitScore()){ _local1.m_buttonSubmit.visible = false; }; return (_local1); } private function prepareView(_arg1:MovieClip):void{ var _local4:SelectLevelButton; _arg1.m_totalScore.m_text.text = GameData.totalScore.toString(); var _local2:int = GameData.levelsCompleted; var _local3 = 48; while (_local3 < (48 + 5)) { _local4 = _arg1[("m_level" + _local3)]; if (_local3 <= _local2){ _local4.setText((_local3 + 1).toString()); if (GameData.isLevelWithStar(_local3)){ _local4.showStar(); }; } else { _local4.unenable(); }; _local3++; }; } override public function onInit():void{ var _local2:DisplayObject; SoundManager.playLoop(SoundConst.MAIN_MENU_MUSIC); GameData.onEnterSelectLevelScreen(GameData.SCREEN_49_54); m_view = new SelectSecretLevelStateView(); addChild(m_view); prepareView(m_view); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_arrowDown.addEventListener(MouseEvent.CLICK, onArrowDownClick); m_view.m_buttonAchievements.addEventListener(MouseEvent.CLICK, onAchievementsClick); m_view.m_buttonSubmit.addEventListener(MouseEvent.CLICK, onSubmitClick); var _local1:int; while (_local1 < m_view.numChildren) { _local2 = m_view.getChildAt(_local1); if ((_local2 is Cloud)){ m_mapObjects.push((_local2 as Cloud)); }; _local1++; }; m_view.addChild(new MoreGamesPanel(LinksManager.SELECT_SECRET_LEVEL_SCREEN)); if (GameData.haveAds()){ showAds(); }; if (!GameData.canSubmitScore()){ m_view.m_buttonSubmit.visible = false; }; } private function onSubmitClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().pushState(new SubmitScoreState()); } override public function handleMouseClick(_arg1:MouseEvent):void{ var _local4:int; var _local2:int = GameData.levelsCompleted; var _local3:int; while (_local3 < 5) { _local4 = (_local3 + 48); if (m_view.getChildByName(("m_level" + _local4)).hitTestPoint(_arg1.stageX, _arg1.stageY)){ if (_local4 <= _local2){ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState(_local4)); return; }; }; _local3++; }; } private function showAds():void{ var ad:DisplayObject; try { ad = new AdLoader(Constant.CPMSTAR_INTER_LEVEL_CODE); m_view.m_adBox.addChild(ad); m_view.m_closeButton.addEventListener(MouseEvent.CLICK, onCloseClick); } catch(e:Error) { trace("CPMstar error!", e); }; } private function onCloseClick(_arg1:MouseEvent):void{ m_view.m_adBox.visible = false; m_view.m_closeButton.visible = false; } private function onArrowDownClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().changeState(new LeftToRightMoveTransactionState(this, new SelectLevelState(true), LeftToRightMoveTransactionState.DOWN_TO_TOP_TRANSACTION, 1)); } override public function onCleanup():void{ try { m_view.m_buttonSubmit.removeEventListener(MouseEvent.CLICK, onSubmitClick); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onMenuClick); m_view.m_arrowDown.removeEventListener(MouseEvent.CLICK, onArrowDownClick); m_view.m_buttonAchievements.removeEventListener(MouseEvent.CLICK, onAchievementsClick); m_view.m_closeButton.removeEventListener(MouseEvent.CLICK, onCloseClick); m_mapObjects = null; super.onCleanup(); } catch(e:Error) { trace(e, e.getStackTrace()); }; } } }//package States
Section 155
//ShadeInState (States.ShadeInState) package States { import Main.*; public class ShadeInState extends GameState { private var m_nextState:GameState;// = null private var m_shader:InShader;// = null override public function onPreInit():void{ m_shader = new InShader(0.3, 1); addChild(m_shader); } override public function onCleanup():void{ m_shader = null; m_nextState = null; super.onCleanup(); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); if (m_shader.isMaxTime()){ if (m_nextState != null){ StateManager.getInstance().changeState(m_nextState); StateManager.getInstance().pushState(new ShadeOutState()); }; }; } public function setNextState(_arg1:GameState):void{ m_nextState = _arg1; } override public function onInit():void{ m_shader.restart(); } } }//package States
Section 156
//ShadeOutState (States.ShadeOutState) package States { import Main.*; public class ShadeOutState extends GameState { private var m_shader:OutShader; override public function onPreInit():void{ m_shader = new OutShader(0.3, 1); addChild(m_shader); } override public function onCleanup():void{ m_shader = null; super.onCleanup(); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); if (m_shader.isMaxTime()){ StateManager.getInstance().popState(); }; } override public function onInit():void{ m_shader.restart(); } } }//package States
Section 157
//SponsorIntroState (States.SponsorIntroState) package States { import flash.events.*; import Main.*; import flash.display.*; import flash.media.*; public class SponsorIntroState extends GameState { private var m_introClip:MovieClip; private var m_introButton:SimpleButton; private var m_sound:SoundChannel; override public function onCleanup():void{ m_introButton.removeEventListener(MouseEvent.CLICK, onIntroClick); try { m_sound.stop(); } catch(e:Error) { trace(e, e.getStackTrace()); }; var sound_button:SoundButton = new SoundButton(); StateManager.getInstance().setOverlay(sound_button); m_introClip = null; m_sound = null; m_introButton = null; super.onCleanup(); } override public function update(_arg1:Number):void{ if (m_introClip.currentFrame == m_introClip.totalFrames){ StateManager.getInstance().changeState(new MainMenuState()); }; } private function onIntroClick(_arg1:MouseEvent):void{ LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.INTRO_SCREEN_BUTTON); } override public function onInit():void{ var sound:Sound; m_introClip = new SponsorIntro(); m_introButton = new IntroButton(); m_introButton.addEventListener(MouseEvent.CLICK, onIntroClick); addChild(m_introClip); addChild(m_introButton); try { sound = new SponsorMusic(); m_sound = sound.play(); } catch(e:Error) { trace(e, e.getStackTrace()); }; } } }//package States
Section 158
//SubmitScoreState (States.SubmitScoreState) package States { import flash.events.*; import Main.*; import flash.display.*; public class SubmitScoreState extends GameState { private const HIDE:int = 4; private const SHOW:int = 0; private var m_closeCross:SimpleButton; private var hs_game:String;// = "gibbets2" private var m_shader:Shader; private var hs_view:Number;// = 2 private var hs_URL:String;// = "http://www.notdoppler.com/gibbets2-highscores.php?ref=gibbets2&game=gibbets2" private var hs_score:Number; private var m_state:int; public function SubmitScoreState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_state = SHOW; hs_score = GameData.totalScore; m_closeCross = new CloseCross(); super(); } override public function onCleanup():void{ m_closeCross.removeEventListener(MouseEvent.CLICK, onCloseClick); removeChild(m_shader); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); switch (m_state){ case HIDE: if (m_shader.getShade() <= 0){ StateManager.getInstance().popState(); }; break; }; } override public function onInit():void{ addChild(m_shader); addChild(StateManager.getInstance().hsloader); StateManager.getInstance().hsloader.loadHighscores(hs_game, hs_score, hs_view, hs_URL); addChild(m_closeCross); m_closeCross.x = 479; m_closeCross.y = 160; m_closeCross.addEventListener(MouseEvent.CLICK, onCloseClick); } private function onCloseClick(_arg1:MouseEvent):void{ removeChild(StateManager.getInstance().hsloader); removeChild(m_closeCross); removeChild(m_shader); m_shader = new Shader(0, 0.25, m_shader.getShade(), 0); addChild(m_shader); m_state = HIDE; } } }//package States
Section 159
//UrlLockedState (States.UrlLockedState) package States { import flash.events.*; import Main.*; public class UrlLockedState extends GameState { public function UrlLockedState(){ super(); m_view = new UrlLockedStateView(); addChild(m_view); m_view.m_notDoppler.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ LinksManager.goURL(LinksManager.GIBBETS_II_URL, ""); }); } } }//package States
Section 160
//WinState (States.WinState) package States { import flash.events.*; import flash.geom.*; import Main.*; import States.PlayState.*; public class WinState extends GameState { private const STATE_MOVE_DOWN:int = 0; private const m_endPosition:Point; private const m_cupEndPosition:Point; private const m_startPosition:Point; private const STATE_MOVE_END:int = 2; private const m_cupStartPosition:Point; private const STATE_MOVE_UP:int = 1; private var m_wasStarSound:Boolean;// = false private var m_wasNewAchievement:Boolean;// = false private var m_shader:Shader; private var m_state:int;// = 0 public function WinState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_startPosition = new Point(584, -215); m_endPosition = new Point(493, 62); m_cupStartPosition = new Point(841, 248); m_cupEndPosition = new Point(521, 248); super(); } override public function update(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; m_view.m_bestScore.m_text.text = GameData.getBestScore(PlayState.m_curLevel); m_shader.update(_arg1); switch (m_state){ case STATE_MOVE_DOWN: if ((m_view.y = (m_view.y + (_arg1 * 1000))) > 20){ m_state = STATE_MOVE_UP; }; break; case STATE_MOVE_UP: if ((m_view.y = (m_view.y - (_arg1 * 150))) < 0){ m_view.y = 0; m_state = STATE_MOVE_END; }; break; }; if (PlayState.m_wasStar){ _local2 = 0.9; _local3 = 1.35; if (m_liveTime > _local2){ m_view.m_star.visible = true; _local4 = ((m_liveTime - _local2) / (_local3 - _local2)); if (m_liveTime < _local3){ m_view.m_star.x = (m_startPosition.x + ((m_endPosition.x - m_startPosition.x) * _local4)); m_view.m_star.y = (m_startPosition.y + ((m_endPosition.y - m_startPosition.y) * _local4)); } else { m_view.m_star.m_perfectSign.rotation = (Math.sin((m_liveTime * 7)) * 3.5); m_view.m_star.x = m_endPosition.x; m_view.m_star.y = m_endPosition.y; if (!m_wasStarSound){ m_wasStarSound = true; SoundManager.play(SoundConst.PERFECT_STAR); }; }; }; }; if (m_wasNewAchievement){ _local5 = 1.2; _local6 = 1.65; if (m_liveTime > _local5){ _local7 = ((m_liveTime - _local5) / (_local6 - _local5)); if (m_liveTime < _local6){ m_view.m_buttonNewAchievement.x = (m_cupStartPosition.x + ((m_cupEndPosition.x - m_cupStartPosition.x) * _local7)); m_view.m_buttonNewAchievement.y = (m_cupStartPosition.y + ((m_cupEndPosition.y - m_cupStartPosition.y) * _local7)); } else { m_view.m_buttonNewAchievement.x = m_cupEndPosition.x; m_view.m_buttonNewAchievement.y = m_cupEndPosition.y; }; }; }; } override public function onInit():void{ if ((((PlayState.m_curLevel == 30)) && ((PlayState.m_arrowsUsed == 6)))){ GameData.giveAchievement(Achievements.LEVEL_30_IN_6_SHOT); }; if ((((PlayState.m_curLevel == 44)) && ((PlayState.m_arrowsUsed == 7)))){ GameData.giveAchievement(Achievements.LEVEL_44_IN_6_SHOT); }; addChild(m_shader); m_view = new WinStateView(); addChild(m_view); m_view.y = -480; m_view.m_levelNum.text = (PlayState.m_curLevel + 1).toString(); m_view.m_arrowsUsed.m_text.text = PlayState.m_arrowsUsed.toString(); m_view.m_currentScore.m_text.text = PlayState.m_currentScores.toString(); m_view.m_bestScore.m_text.text = GameData.getBestScore(PlayState.m_curLevel); m_view.m_star.visible = false; m_view.m_buttonNext.addEventListener(MouseEvent.CLICK, onButtonNextClick); m_view.m_buttonMenu.addEventListener(MouseEvent.CLICK, onButtonMenuClick); m_view.m_buttonNewAchievement.addEventListener(MouseEvent.CLICK, onAchievementsClick); m_wasNewAchievement = GameData.wasNewAchievements(); SoundManager.playFadeOut(SoundConst.WIN); addChild(new MoreGamesPanel(LinksManager.WIN_SCREEN)); } override public function onCleanup():void{ m_view.m_buttonNext.removeEventListener(MouseEvent.CLICK, onButtonNextClick); m_view.m_buttonMenu.removeEventListener(MouseEvent.CLICK, onButtonMenuClick); m_view.m_buttonNewAchievement.removeEventListener(MouseEvent.CLICK, onAchievementsClick); m_shader = null; super.onCleanup(); } private function onAchievementsClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(new AchievementsState()); } private function onButtonNextClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getNextState((PlayState.m_curLevel + 1))); } private function onButtonMenuClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); StateManager.getInstance().coolChangeState(GameData.getSelectLevelScreen()); } } }//package States
Section 161
//YesNoState (States.YesNoState) package States { import flash.events.*; import flash.geom.*; import Main.*; public class YesNoState extends GameState { private const m_endPosition:Point; private const STATE_MOVE_DOWN:int = 0; private const STATE_MOVE_BACK:int = 3; private const STATE_MOVE_UP:int = 1; private const m_startPosition:Point; private const STATE_MOVE_END:int = 2; private var m_shader:Shader; private var m_state:int;// = 0 public function YesNoState(){ m_shader = new Shader(0.6, 1.2, 0, 0.5); m_startPosition = new Point(584, -215); m_endPosition = new Point(493, 62); super(); } private function onYesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); m_state = STATE_MOVE_BACK; removeChild(m_shader); m_shader = new Shader(0, 0.25, m_shader.getShade(), 0); addChildAt(m_shader, 0); GameData.resetGame(); } override public function onCleanup():void{ m_view.m_buttonYes.removeEventListener(MouseEvent.CLICK, onYesClick); m_view.m_buttonNo.removeEventListener(MouseEvent.CLICK, onNoClick); super.onCleanup(); } private function onNoClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); m_state = STATE_MOVE_BACK; removeChild(m_shader); m_shader = new Shader(0, 0.25, m_shader.getShade(), 0); addChildAt(m_shader, 0); } override public function update(_arg1:Number):void{ m_shader.update(_arg1); switch (m_state){ case STATE_MOVE_DOWN: if ((m_view.y = (m_view.y + (_arg1 * 1000))) > 20){ m_state = STATE_MOVE_UP; }; break; case STATE_MOVE_UP: if ((m_view.y = (m_view.y - (_arg1 * 150))) < 0){ m_view.y = 0; m_state = STATE_MOVE_END; }; break; case STATE_MOVE_BACK: if ((m_view.y = (m_view.y - (_arg1 * 1300))) < -480){ StateManager.getInstance().popState(); }; break; }; } override public function onInit():void{ super.onInit(); m_view = new YesNoStateView(); addChild(m_shader); addChild(m_view); m_view.y = -480; m_view.m_buttonYes.addEventListener(MouseEvent.CLICK, onYesClick); m_view.m_buttonNo.addEventListener(MouseEvent.CLICK, onNoClick); } } }//package States
Section 162
//MathUtils (Utils.MathUtils) package Utils { public class MathUtils { private static const m_radToGradKoef:Number = 57.2957795130823; private static const m_gradToRadKoef:Number = 0.0174532925199433; public static function GradToRad(_arg1:Number):Number{ return ((_arg1 * m_gradToRadKoef)); } public static function Round(_arg1:Number):int{ return (int((_arg1 + 0.5))); } public static function anyOfNumber(... _args):Number{ return ((_args[int((_args.length * Math.random()))] as Number)); } public static function anyOfString(... _args):String{ return ((_args[int((_args.length * Math.random()))] as String)); } public static function RandomRangeInt(_arg1:int, _arg2:Number):int{ return (Round((_arg1 + ((_arg2 - _arg1) * Math.random())))); } public static function rangeToInt(... _args):int{ var _local2:* = _args[0]; var _local3:int = _args.length; while (_local3 > 0) { trace(_local2, _args[_local3]); if (_local2 > _args[_local3]){ return ((_local3 - 1)); }; _local3--; }; return (-2); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ return ((_arg1 + ((_arg2 - _arg1) * Math.random()))); } public static function Sign(_arg1:Number):Number{ if (_arg1 > 0){ return (1); }; if (_arg1 < 0){ return (-1); }; return (0); } public static function RadToGrad(_arg1:Number):Number{ return ((_arg1 * m_radToGradKoef)); } } }//package Utils
Section 163
//Utils (Utils.Utils) package Utils { import flash.geom.*; import flash.display.*; public class Utils { public static function AnyOf(_arg1:Array){ return (_arg1[int((Math.random() * _arg1.length))]); } public static function RandomRangeInt(_arg1:int, _arg2:int):int{ return (Math.round((_arg1 + (Math.random() * (_arg2 - _arg1))))); } public static function InRange(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ return ((((_arg1 >= _arg2)) && ((_arg1 <= _arg3)))); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ return ((_arg1 + (Math.random() * (_arg2 - _arg1)))); } public static function SetPosition(_arg1:DisplayObject, _arg2:Point):void{ _arg1.x = _arg2.x; _arg1.y = _arg2.y; } public static function Sign(_arg1:Number):Number{ if (_arg1 == 0){ return (0); }; return (((_arg1 < 0)) ? -1 : 1); } public static function intToTimeString(_arg1:int):String{ var _local3:String; var _local5:String; var _local2:int = (_arg1 / 60); if (_local2 < 10){ _local3 = ("0" + _local2); } else { _local3 = _local2.toString(); }; var _local4:int = (_arg1 % 60); if (_local4 < 10){ _local5 = ("0" + _local4); } else { _local5 = _local4.toString(); }; return (((_local3 + ":") + _local5)); } } }//package Utils
Section 164
//Vector3 (Utils.Vector3) package Utils { import Box2D.Common.Math.*; import flash.geom.*; public final class Vector3 { public var z:Number; public var x:Number; public var y:Number; public function Vector3(_arg1:Number, _arg2:Number, _arg3:Number){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } final public function sub(_arg1:Vector3):Vector3{ return (new Vector3((x - _arg1.x), (y - _arg1.y), (z - _arg1.z))); } final public function negate():Vector3{ return (new Vector3(-(x), -(y), -(z))); } final public function getAngleWith(_arg1:Vector3):Number{ var _local2:Number = (((x * _arg1.x) + (y * _arg1.y)) / (length() * _arg1.length())); if (_local2 > 1){ _local2 = 1; }; if (_local2 < -1){ _local2 = -1; }; return (Math.acos(_local2)); } final public function mul(_arg1:Number):Vector3{ return (new Vector3((x * _arg1), (y * _arg1), (z * _arg1))); } final public function get2DRotation():Number{ var _local1:Number = ((180 * getAngleWith(new Vector3(0, -1, 0))) / Math.PI); if (this.x < 0){ _local1 = (_local1 * -1); }; return (_local1); } final public function normalizedCopy():Vector3{ var _local1:Number = (1 / length()); if (_local1 != 0){ return (new Vector3((x * _local1), (y * _local1), (z * _local1))); }; return (zero()); } final public function normalize():Vector3{ var _local1:Number = (1 / length()); x = (x * _local1); y = (y * _local1); z = (z * _local1); return (this); } final public function crossProduct(_arg1:Vector3):Vector3{ return (new Vector3(((y * _arg1.z) - (z * _arg1.y)), ((z * _arg1.x) - (x * _arg1.z)), ((x * _arg1.y) - (y * _arg1.x)))); } public function toPoint():Point{ return (new Point(x, y)); } final public function clone():Vector3{ return (new Vector3(x, y, z)); } final public function add(_arg1:Vector3):Vector3{ return (new Vector3((x + _arg1.x), (y + _arg1.y), (z + _arg1.z))); } final public function dotProduct(_arg1:Vector3):Number{ return ((((x * _arg1.x) + (y * _arg1.y)) + (z * _arg1.z))); } final public function isLengthLess(_arg1:Number):Boolean{ return ((squaredLength() < (_arg1 * _arg1))); } final public function isEqual(_arg1:Vector3):Boolean{ return ((((((x == _arg1.x)) && ((y == _arg1.y)))) && ((z == _arg1.z)))); } final public function toString():String{ return ((((((((("v: " + "x=") + x.toFixed(3)) + ", ") + "y=") + y.toFixed(3)) + ", ") + "z=") + z.toFixed(3))); } final public function length():Number{ return (Math.sqrt(squaredLength())); } final public function haveNaN():Boolean{ return (((((isNaN(z)) || (isNaN(y)))) || (isNaN(z)))); } final public function squaredLength():Number{ return ((((x * x) + (y * y)) + (z * z))); } final public function killNaN():void{ if (isNaN(x)){ x = 0; }; if (isNaN(y)){ y = 0; }; if (isNaN(z)){ z = 0; }; } public static function fromb2Vec2(_arg1:b2Vec2):Vector3{ return (new Vector3(_arg1.x, _arg1.y, 0)); } public static function getProjection(_arg1:Vector3, _arg2:Vector3):Vector3{ return (_arg1.mul((_arg1.dotProduct(_arg2) / _arg1.squaredLength()))); } public static function fromPoint(_arg1:Point):Vector3{ return (new Vector3(_arg1.x, _arg1.y, 0)); } public static function zero():Vector3{ return (new Vector3(0, 0, 0)); } } }//package Utils
Section 165
//ach_1 (ach_1) package { public dynamic class ach_1 extends Achievement { } }//package
Section 166
//ach_10 (ach_10) package { public dynamic class ach_10 extends Achievement { } }//package
Section 167
//ach_11 (ach_11) package { public dynamic class ach_11 extends Achievement { } }//package
Section 168
//ach_12 (ach_12) package { public dynamic class ach_12 extends Achievement { } }//package
Section 169
//ach_13 (ach_13) package { public dynamic class ach_13 extends Achievement { } }//package
Section 170
//ach_14 (ach_14) package { public dynamic class ach_14 extends Achievement { } }//package
Section 171
//ach_15 (ach_15) package { public dynamic class ach_15 extends Achievement { } }//package
Section 172
//ach_2 (ach_2) package { public dynamic class ach_2 extends Achievement { } }//package
Section 173
//ach_3 (ach_3) package { public dynamic class ach_3 extends Achievement { } }//package
Section 174
//ach_4 (ach_4) package { public dynamic class ach_4 extends Achievement { } }//package
Section 175
//ach_5 (ach_5) package { public dynamic class ach_5 extends Achievement { } }//package
Section 176
//ach_6 (ach_6) package { public dynamic class ach_6 extends Achievement { } }//package
Section 177
//ach_7 (ach_7) package { public dynamic class ach_7 extends Achievement { } }//package
Section 178
//ach_8 (ach_8) package { public dynamic class ach_8 extends Achievement { } }//package
Section 179
//ach_9 (ach_9) package { public dynamic class ach_9 extends Achievement { } }//package
Section 180
//Achievement (Achievement) package { import flash.events.*; import flash.display.*; public class Achievement extends MovieClip { private var m_hint:Hint;// = null public function Achievement(){ buttonMode = true; addEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); addEventListener(Event.ENTER_FRAME, update); addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function onRemoveFromStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onRemoveFromStage); removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut); removeEventListener(Event.ENTER_FRAME, update); removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function onMouseMove(_arg1:MouseEvent):void{ if (m_hint){ m_hint.x = _arg1.stageX; m_hint.y = _arg1.stageY; }; } public function setHint(_arg1:Hint):void{ m_hint = _arg1; m_hint.x = x; m_hint.y = y; } private function update(_arg1:Event):void{ if (m_hint){ m_hint.update(); }; } private function onMouseOver(_arg1:MouseEvent):void{ if (m_hint){ m_hint.show(); }; } private function onMouseOut(_arg1:MouseEvent):void{ if (m_hint){ m_hint.hide(); }; } } }//package
Section 181
//Achievements (Achievements) package { public class Achievements { public static const ALL:Array = [HALF_COMPLETED, FULL_COMPLETED, WITH_STAR_40, ACCURACY_70, GRIFS_KILLED, SAVES_50, SAVES_100, KILLED_100, CROWN, HOUR_PLAYED, TWO_HOURS_PLAYED, LEVELS_WITHOUT_LOSE, LEVELS_WITHOUT_INJURE, LEVEL_30_IN_6_SHOT, LEVEL_44_IN_6_SHOT]; public static const SAVES_50:String = "SAVES_50"; public static const HOUR_PLAYED:String = "HOUR_PLAYED"; public static const WITH_STAR_40:String = "WITH_STAR_40"; public static const TWO_HOURS_PLAYED:String = "TWO_HOURS_PLAYED"; public static const LEVELS_WITHOUT_LOSE:String = "LEVELS_WITHOUT_LOSE"; public static const LEVEL_30_IN_6_SHOT:String = "LEVEL_30_IN_6_SHOT"; public static const HALF_COMPLETED:String = "HALF_COMPLETED"; public static const CROWN:String = "CROWN"; public static const SAVES_100:String = "SAVES_100"; public static const LEVELS_WITHOUT_INJURE:String = "LEVELS_WITHOUT_INJURE"; public static const KILLED_100:String = "KILLED_100"; public static const GRIFS_KILLED:String = "GRIFS_KILLED"; public static const ACCURACY_70:String = "ACCURACY_70"; public static const LEVEL_44_IN_6_SHOT:String = "LEVEL_44_IN_6_SHOT"; public static const FULL_COMPLETED:String = "FULL_COMPLETED"; } }//package
Section 182
//AchievementsStateView (AchievementsStateView) package { import flash.display.*; public dynamic class AchievementsStateView extends MovieClip { public var m_buttonMenu:SimpleButton; public var SAVES_50:ach_5; public var HOUR_PLAYED:ach_7; public var TWO_HOURS_PLAYED:ach_8; public var CROWN:ach_15; public var LEVEL_30_IN_6_SHOT:ach_1; public var ACCURACY_70:ach_13; public var LEVELS_WITHOUT_LOSE:ach_3; public var HALF_COMPLETED:ach_9; public var SAVES_100:ach_6; public var LEVELS_WITHOUT_INJURE:ach_4; public var KILLED_100:ach_14; public var GRIFS_KILLED:ach_12; public var WITH_STAR_40:ach_11; public var LEVEL_44_IN_6_SHOT:ach_2; public var FULL_COMPLETED:ach_10; } }//package
Section 183
//add_arrows_sound_0 (add_arrows_sound_0) package { import flash.media.*; public dynamic class add_arrows_sound_0 extends Sound { } }//package
Section 184
//add_arrows_sound_1 (add_arrows_sound_1) package { import flash.media.*; public dynamic class add_arrows_sound_1 extends Sound { } }//package
Section 185
//AddArrowClip (AddArrowClip) package { import flash.display.*; import flash.text.*; public dynamic class AddArrowClip extends MovieClip { public var m_text:TextField; } }//package
Section 186
//ambient_1 (ambient_1) package { import flash.media.*; public dynamic class ambient_1 extends Sound { } }//package
Section 187
//ambient_2 (ambient_2) package { import flash.media.*; public dynamic class ambient_2 extends Sound { } }//package
Section 188
//AmmoGhost10 (AmmoGhost10) package { import States.PlayState.*; public dynamic class AmmoGhost10 extends AmmoGhost { } }//package
Section 189
//AmmoGhost3 (AmmoGhost3) package { import States.PlayState.*; public dynamic class AmmoGhost3 extends AmmoGhost { } }//package
Section 190
//AmmoGhost5 (AmmoGhost5) package { import States.PlayState.*; public dynamic class AmmoGhost5 extends AmmoGhost { } }//package
Section 191
//AmmoHint (AmmoHint) package { import States.PlayState.*; public dynamic class AmmoHint extends HintText { } }//package
Section 192
//arrow_ghost (arrow_ghost) package { import flash.media.*; public dynamic class arrow_ghost extends Sound { } }//package
Section 193
//ArrowGhost1 (ArrowGhost1) package { import States.PlayState.*; public dynamic class ArrowGhost1 extends HedgehogGhost { } }//package
Section 194
//ArrowGhost3 (ArrowGhost3) package { import States.PlayState.*; public dynamic class ArrowGhost3 extends HedgehogGhost { } }//package
Section 195
//ArrowGhost4 (ArrowGhost4) package { import States.PlayState.*; public dynamic class ArrowGhost4 extends HedgehogGhost { } }//package
Section 196
//ArrowGhostHint (ArrowGhostHint) package { import States.PlayState.*; public dynamic class ArrowGhostHint extends HintText { } }//package
Section 197
//ArtCloud (ArtCloud) package { import flash.display.*; public dynamic class ArtCloud extends MovieClip { } }//package
Section 198
//AsyncClip (AsyncClip) package { import flash.display.*; public class AsyncClip extends MovieClip { public function AsyncClip(){ gotoAndPlay(int((totalFrames * Math.random()))); } } }//package
Section 199
//Back1 (Back1) package { import flash.display.*; public dynamic class Back1 extends MovieClip { } }//package
Section 200
//Back2 (Back2) package { import flash.display.*; public dynamic class Back2 extends MovieClip { } }//package
Section 201
//Back3 (Back3) package { import flash.display.*; public dynamic class Back3 extends MovieClip { } }//package
Section 202
//Back4 (Back4) package { import flash.display.*; public dynamic class Back4 extends MovieClip { } }//package
Section 203
//Background (Background) package { import flash.display.*; public dynamic class Background extends MovieClip { } }//package
Section 204
//BgStones (BgStones) package { import flash.display.*; public dynamic class BgStones extends MovieClip { } }//package
Section 205
//black_square (black_square) package { import flash.display.*; public dynamic class black_square extends MovieClip { } }//package
Section 206
//BonusGameBack (BonusGameBack) package { import flash.display.*; public dynamic class BonusGameBack extends MovieClip { } }//package
Section 207
//bow_shoot (bow_shoot) package { import flash.media.*; public dynamic class bow_shoot extends Sound { } }//package
Section 208
//BowClip (BowClip) package { import flash.display.*; public dynamic class BowClip extends MovieClip { public var m_field:black_square; public function BowClip(){ addFrameScript(0, frame1, 9, frame10, 17, frame18); } function frame1(){ stop(); } function frame18(){ stop(); } function frame10(){ stop(); } } }//package
Section 209
//BowPoint (BowPoint) package { import flash.display.*; public dynamic class BowPoint extends MovieClip { } }//package
Section 210
//Box (Box) package { import flash.display.*; public dynamic class Box extends MovieClip { } }//package
Section 211
//Brick (Brick) package { import States.PlayState.*; public dynamic class Brick extends StaticBoxIsStone { } }//package
Section 212
//BrickNoLeft (BrickNoLeft) package { import States.PlayState.*; public dynamic class BrickNoLeft extends StaticBoxIsStone { } }//package
Section 213
//BrickNoRight (BrickNoRight) package { import States.PlayState.*; public dynamic class BrickNoRight extends StaticBoxIsStone { } }//package
Section 214
//BrickNoRightNoLeft (BrickNoRightNoLeft) package { import States.PlayState.*; public dynamic class BrickNoRightNoLeft extends StaticBoxIsStone { } }//package
Section 215
//CheckBox (CheckBox) package { import flash.events.*; import flash.display.*; public class CheckBox extends MovieClip { private var m_isChecked:Boolean;// = false public static const EVENT_CHANGE:String = "checkChange"; public function CheckBox(){ buttonMode = true; stop(); addEventListener(MouseEvent.CLICK, onClick); addEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); } public function setChecked(_arg1:Boolean):void{ m_isChecked = _arg1; if (m_isChecked){ gotoAndStop(2); } else { gotoAndStop(1); }; } public function handleRemoveFromStage(_arg1:Event):void{ removeEventListener(MouseEvent.CLICK, onClick); removeEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); } private function onClick(_arg1:MouseEvent):void{ setChecked(!(m_isChecked)); dispatchEvent(new Event(EVENT_CHANGE)); } public function isChecked():Boolean{ return (m_isChecked); } } }//package
Section 216
//click (click) package { import flash.media.*; public dynamic class click extends Sound { } }//package
Section 217
//ClickToContinue (ClickToContinue) package { import flash.display.*; public dynamic class ClickToContinue extends MovieClip { } }//package
Section 218
//CloseCross (CloseCross) package { import flash.display.*; public dynamic class CloseCross extends SimpleButton { } }//package
Section 219
//Cloud0 (Cloud0) package { import States.PlayState.*; public dynamic class Cloud0 extends Cloud { } }//package
Section 220
//Cloud1 (Cloud1) package { import States.PlayState.*; public dynamic class Cloud1 extends Cloud { } }//package
Section 221
//Cloud2 (Cloud2) package { import States.PlayState.*; public dynamic class Cloud2 extends Cloud { } }//package
Section 222
//Cloud3 (Cloud3) package { import States.PlayState.*; public dynamic class Cloud3 extends Cloud { } }//package
Section 223
//Cloud4 (Cloud4) package { import States.PlayState.*; public dynamic class Cloud4 extends Cloud { } }//package
Section 224
//Cloud5 (Cloud5) package { import States.PlayState.*; public dynamic class Cloud5 extends Cloud { } }//package
Section 225
//Cloud6 (Cloud6) package { import States.PlayState.*; public dynamic class Cloud6 extends Cloud { } }//package
Section 226
//Cloud7 (Cloud7) package { import States.PlayState.*; public dynamic class Cloud7 extends Cloud { } }//package
Section 227
//Cloud8 (Cloud8) package { import States.PlayState.*; public dynamic class Cloud8 extends Cloud { } }//package
Section 228
//Cloud9 (Cloud9) package { import States.PlayState.*; public dynamic class Cloud9 extends Cloud { } }//package
Section 229
//ComboSave2Hint (ComboSave2Hint) package { import States.PlayState.*; public dynamic class ComboSave2Hint extends HintText { } }//package
Section 230
//ComboSave3Hint (ComboSave3Hint) package { import States.PlayState.*; public dynamic class ComboSave3Hint extends HintText { } }//package
Section 231
//ComposedStone1 (ComposedStone1) package { import States.PlayState.*; public dynamic class ComposedStone1 extends StaticBoxIsStone { } }//package
Section 232
//ComposedStone2 (ComposedStone2) package { import States.PlayState.*; public dynamic class ComposedStone2 extends StaticBoxIsStone { } }//package
Section 233
//ComposedStone55 (ComposedStone55) package { import States.PlayState.*; public dynamic class ComposedStone55 extends StaticBoxIsStone { } }//package
Section 234
//ComposedStone96 (ComposedStone96) package { import States.PlayState.*; public dynamic class ComposedStone96 extends StaticBoxIsStone { } }//package
Section 235
//ComposedStone98 (ComposedStone98) package { import States.PlayState.*; public dynamic class ComposedStone98 extends StaticBoxIsStone { } }//package
Section 236
//ComposedStone99 (ComposedStone99) package { import States.PlayState.*; public dynamic class ComposedStone99 extends StaticBoxIsStone { } }//package
Section 237
//Constant (Constant) package { public class Constant { public static const RIGHT_EDGE_MARKER_NAME:String = "RIGHT_EDGE_MARKER_NAME"; public static const WINDOW_HEIGHT:Number = 480; public static const WINDOW_WIDTH:Number = 640; public static const CPMSTAR_INTER_LEVEL_CODE:String = "2153Q1350F46C"; public static const BOMB_KILL_DISTANCE:Number = 70; public static const PHYSICS_POSITIONS_ITERATION_COUNT:int = 1; public static const PHYSICS_VELOCITY_ITERATION_COUNT:int = 5; public static const LEFT_EDGE_MARKER_NAME:String = "LEFT_EDGE_MARKER_NAME"; public static const CPMSTAR_PREROLL_CODE:String = "2152Q6209380B"; public static const MAX_SHOOTING_POWER:Number = 25; public static const SHARED_OBJECT_NAME:String = "Gibbets_II_so_name"; public static const BOMB_DISTANCE:Number = 100; public static const MIN_SHOOTING_POWER:Number = 4; public static const BOMB_IMPULSE:Number = 50; public static const PHYS_SCALE:Number = 30; public static const TIME_STEP:Number = 0.025; public static var m_debugMode:Boolean = false; } }//package
Section 238
//CowCry (CowCry) package { import flash.display.*; public dynamic class CowCry extends MovieClip { public function CowCry(){ addFrameScript(56, frame57); } function frame57(){ stop(); } } }//package
Section 239
//CowHere (CowHere) package { import flash.display.*; public dynamic class CowHere extends MovieClip { } }//package
Section 240
//CowMaket (CowMaket) package { import flash.display.*; public dynamic class CowMaket extends MovieClip { public var vertex0:HangerPoint; public var vertex1:HangerPoint; public var vertex2:HangerPoint; public var vertex3:HangerPoint; public var vertex4:HangerPoint; public var vertex5:HangerPoint; public var vertex6:HangerPoint; } }//package
Section 241
//CowNormal (CowNormal) package { import flash.display.*; public dynamic class CowNormal extends MovieClip { } }//package
Section 242
//CreditsStateView (CreditsStateView) package { import flash.display.*; public dynamic class CreditsStateView extends MovieClip { public var m_buttonMenu:SimpleButton; public var m_mailLink:SimpleButton; public var m_blogLink:SimpleButton; public var m_sky:MovieClip; public var m_artHanger:HangerPoint; public var m_musicHanger:HangerPoint; public var m_notdoppler:SimpleButton; public var m_programmingHanger:HangerPoint; } }//package
Section 243
//cry_0 (cry_0) package { import flash.media.*; public dynamic class cry_0 extends Sound { } }//package
Section 244
//cry_1 (cry_1) package { import flash.media.*; public dynamic class cry_1 extends Sound { } }//package
Section 245
//cry_2 (cry_2) package { import flash.media.*; public dynamic class cry_2 extends Sound { } }//package
Section 246
//cry_3 (cry_3) package { import flash.media.*; public dynamic class cry_3 extends Sound { } }//package
Section 247
//cry_4 (cry_4) package { import flash.media.*; public dynamic class cry_4 extends Sound { } }//package
Section 248
//cry_5 (cry_5) package { import flash.media.*; public dynamic class cry_5 extends Sound { } }//package
Section 249
//cry_6 (cry_6) package { import flash.media.*; public dynamic class cry_6 extends Sound { } }//package
Section 250
//cry_7 (cry_7) package { import flash.media.*; public dynamic class cry_7 extends Sound { } }//package
Section 251
//death_cry (death_cry) package { import flash.media.*; public dynamic class death_cry extends Sound { } }//package
Section 252
//DoubleSave (DoubleSave) package { import flash.display.*; public dynamic class DoubleSave extends MovieClip { } }//package
Section 253
//exploison (exploison) package { import flash.media.*; public dynamic class exploison extends Sound { } }//package
Section 254
//FaceColors_1 (FaceColors_1) package { import flash.display.*; public dynamic class FaceColors_1 extends MovieClip { } }//package
Section 255
//FaceColors_2 (FaceColors_2) package { import flash.display.*; public dynamic class FaceColors_2 extends MovieClip { } }//package
Section 256
//FaceColors_3 (FaceColors_3) package { import flash.display.*; public dynamic class FaceColors_3 extends MovieClip { } }//package
Section 257
//FaceColors_4 (FaceColors_4) package { import flash.display.*; public dynamic class FaceColors_4 extends MovieClip { } }//package
Section 258
//flower_0 (flower_0) package { import States.PlayState.*; public dynamic class flower_0 extends Frontground { } }//package
Section 259
//flower_1 (flower_1) package { import States.PlayState.*; public dynamic class flower_1 extends Frontground { } }//package
Section 260
//flower_2 (flower_2) package { import States.PlayState.*; public dynamic class flower_2 extends Frontground { } }//package
Section 261
//flower_3 (flower_3) package { import States.PlayState.*; public dynamic class flower_3 extends Frontground { } }//package
Section 262
//flower_4 (flower_4) package { import States.PlayState.*; public dynamic class flower_4 extends Frontground { } }//package
Section 263
//flower_5 (flower_5) package { import States.PlayState.*; public dynamic class flower_5 extends Frontground { } }//package
Section 264
//flower_6 (flower_6) package { import States.PlayState.*; public dynamic class flower_6 extends Frontground { } }//package
Section 265
//GameCompleteCloud (GameCompleteCloud) package { import flash.display.*; public dynamic class GameCompleteCloud extends MovieClip { } }//package
Section 266
//GameCompleteStateView (GameCompleteStateView) package { import flash.display.*; public dynamic class GameCompleteStateView extends MovieClip { public var m_totalScore:MovieClip; public var m_buttonMenu:SimpleButton; public var m_gibbetFront:MovieClip; public var m_buttonMoreGames:SimpleButton; public var m_notDoppler:SimpleButton; public var m_buttonSubmit:SimpleButton; } }//package
Section 267
//GameData (GameData) package { import Main.*; import States.PlayState.*; import States.GrifShooting.*; import States.*; import flash.net.*; public class GameData { public static const totalLevelsCount:int = 53; public static const SCREEN_25_48:String = "screen_25_48"; public static const SCREEN_1_24:String = "screen_1_24"; public static const SCREEN_49_54:String = "screen_49_54"; private static var m_lastPlayedLevelNum:int = -1; private static var m_curSelectLevelScreen:String = null; private static var m_grifsCount:int = 0; public static var m_isKongregate:Boolean = false; private static var m_achievements:Array = new Array(); private static var m_killedCount:int = 0; private static var m_levelsInRaw:int = 0; private static var m_scorePerLevel:Array = new Array(); public static var m_isBloodDisabled:Boolean = false; private static var m_levelsCompleted:int = 0; private static var m_noInjureInRaw:int = 0; private static var m_oldAchiemeventCount:int; public static var m_invertedControl:Boolean = false; private static var m_levelsWithStar:Array = new Array(); private static var m_savedCount:int = 0; public static var kongregate; private static var m_haveAds:Boolean = true; public static var m_isHintsOn:Boolean = true; private static var m_alreadyPlayed:Array = new Array(); public static function onStartLevel(_arg1:int):void{ m_alreadyPlayed[_arg1] = true; m_oldAchiemeventCount = m_achievements.length; } public static function onWinLevel(_arg1:int, _arg2:int, _arg3:Boolean, _arg4:int):void{ if (((((_arg1 - m_lastPlayedLevelNum) == 1)) || (((_arg1 - m_lastPlayedLevelNum) == 2)))){ if (_arg3){ m_noInjureInRaw++; } else { m_noInjureInRaw = 0; }; if (m_noInjureInRaw >= 5){ giveAchievement(Achievements.LEVELS_WITHOUT_INJURE); }; m_levelsInRaw++; if (m_levelsInRaw >= 10){ giveAchievement(Achievements.LEVELS_WITHOUT_LOSE); }; } else { if (_arg1 != m_lastPlayedLevelNum){ m_levelsInRaw = 0; m_noInjureInRaw = 0; }; }; m_savedCount = (m_savedCount + _arg4); if (m_savedCount >= 50){ giveAchievement(Achievements.SAVES_50); }; if (m_savedCount >= 100){ giveAchievement(Achievements.SAVES_100); }; if (StateManager.getInstance().getSeconds() >= (60 * 60)){ giveAchievement(Achievements.HOUR_PLAYED); }; if (StateManager.getInstance().getSeconds() >= ((60 * 60) * 2)){ giveAchievement(Achievements.TWO_HOURS_PLAYED); }; if (_arg1 == m_levelsCompleted){ m_levelsCompleted++; if (m_levelsCompleted == 24){ giveAchievement(Achievements.HALF_COMPLETED); onEnterSelectLevelScreen(SCREEN_25_48); }; if (m_levelsCompleted == 48){ giveAchievement(Achievements.FULL_COMPLETED); onEnterSelectLevelScreen(SCREEN_49_54); }; }; var _local5:int; var _local6:int; while (_local6 < m_levelsCompleted) { if (isLevelWithStar(_local6)){ _local5++; }; _local6++; }; if (_local5 >= 40){ giveAchievement(Achievements.WITH_STAR_40); }; m_scorePerLevel[_arg1] = Math.max(m_scorePerLevel[_arg1], _arg2); if (_arg3){ m_levelsWithStar[_arg1] = true; }; save(); m_lastPlayedLevelNum = _arg1; submitKongregateLevel(); submitKongregateScore(); } public static function init():void{ var _local1:int; while (_local1 < totalLevelsCount) { m_alreadyPlayed.push(false); _local1++; }; } public static function hideAds():void{ m_haveAds = false; } public static function setHideTips(_arg1:Boolean):void{ if (_arg1){ hideTips(); } else { showTips(); }; } public static function hideTips():void{ m_isHintsOn = false; save(); } public static function get levelsCompleted():int{ return (m_levelsCompleted); } public static function getArrowsLeft(_arg1:int):int{ var _local2:Array = [30, 30, 1, 4, 9, 1000, 14, 10, 12, 6, 20, 99, 8, 4, 2, 7, 5, 1000, 5, 5, 3, 20, 12, 99, 15, 3, 11, 2, 7, 1000, 14, 15, 4, 10, 15, 99, 3, 10, 4, 1, 10, 1000, 5, 5, 14, 1, 1, 99, 20, 18, 3, 1, 0]; if (_arg1 >= _local2.length){ return (55); }; return (_local2[_arg1]); } public static function getNextState(_arg1:int):GameState{ var _local2:PlayState; if (_arg1 >= totalLevelsCount){ return (new GameCompleteState()); }; if (((_arg1 + 1) % 6) != 0){ return (new PlayState(_arg1)); }; if (((_arg1 + 1) % 12) == 0){ _local2 = new PlayState(_arg1); _local2.setLongShootMode(); return (_local2); }; return (new GrifShootingState(_arg1)); } public static function get totalScore():int{ var _local2:int; var _local1:int; for each (_local2 in m_scorePerLevel) { _local1 = (_local1 + _local2); }; if (haveAchievement(Achievements.HALF_COMPLETED)){ _local1 = (_local1 + 10000); }; if (haveAchievement(Achievements.CROWN)){ _local1 = (_local1 + 30000); }; return (_local1); } public static function haveAds():Boolean{ return (m_haveAds); } public static function onRestart():void{ m_noInjureInRaw = 0; m_levelsInRaw = 0; } private static function submitKongregateLevel():void{ if (hasKongregateAPI()){ try { kongregate.stats.submit("LevelsCompleted", levelsCompleted); } catch(e:Error) { trace(e, e.getStackTrace()); }; }; } public static function wasNewAchievements():Boolean{ return (!((m_oldAchiemeventCount == m_achievements.length))); } public static function getSelectLevelScreen():GameState{ if (m_curSelectLevelScreen == null){ if (levelsCompleted < 24){ return (new SelectLevelState(false)); }; if (levelsCompleted < 48){ return (new SelectLevelState(true)); }; return (new SelectSecretLevelState()); } else { switch (m_curSelectLevelScreen){ case SCREEN_1_24: return (new SelectLevelState(false)); case SCREEN_25_48: return (new SelectLevelState(true)); case SCREEN_49_54: return (new SelectSecretLevelState()); }; }; return (null); } public static function haveAchievement(_arg1:String):Boolean{ return (!((m_achievements.indexOf(_arg1) == -1))); } public static function isHintsOn():Boolean{ return (m_isHintsOn); } public static function hasKongregateAPI():Boolean{ return (m_isKongregate); } private static function submitKongregateScore():void{ if (hasKongregateAPI()){ try { kongregate.stats.submit("Score", totalScore); } catch(e:Error) { trace(e, e.getStackTrace()); }; }; } public static function isAlreadyPlayed(_arg1):Boolean{ return (m_alreadyPlayed[_arg1]); } public static function onLoseLevel(_arg1:int, _arg2:int):void{ m_levelsInRaw = 0; m_noInjureInRaw = 0; m_killedCount = (m_killedCount + _arg2); if (m_killedCount >= 100){ giveAchievement(Achievements.KILLED_100); }; save(); } public static function isLevelWithStar(_arg1):Boolean{ return (m_levelsWithStar[_arg1]); } public static function onEnterSelectLevelScreen(_arg1:String):void{ m_curSelectLevelScreen = _arg1; } public static function getBestScore(_arg1:int):int{ return (m_scorePerLevel[_arg1]); } public static function showTips():void{ var _local1:int; while (_local1 < m_alreadyPlayed.length) { m_alreadyPlayed[_local1] = false; _local1++; }; m_isHintsOn = true; save(); } public static function resetGame():void{ var _local1:int; m_savedCount = 0; m_killedCount = 0; m_grifsCount = 0; m_levelsInRaw = 0; m_noInjureInRaw = 0; m_scorePerLevel = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_scorePerLevel.push(0); _local1++; }; m_levelsWithStar = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_levelsWithStar.push(false); _local1++; }; m_levelsCompleted = 0; m_achievements = new Array(); onEnterSelectLevelScreen(SCREEN_1_24); save(); } public static function giveAchievement(_arg1:String):void{ if (Constant.m_debugMode){ trace("try to give", _arg1); }; if (!haveAchievement(_arg1)){ if (Constant.m_debugMode){ trace("give", _arg1); }; m_achievements.push(_arg1); }; if (m_achievements.length == (Achievements.ALL.length - 1)){ if (!haveAchievement(Achievements.CROWN)){ giveAchievement(Achievements.CROWN); }; }; } public static function load():void{ var _local1:int; var _local2:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME, "/", false); if (_local2.size != 0){ m_levelsCompleted = _local2.data.m_levelsCompleted; m_scorePerLevel = _local2.data.m_scorePerLevel; m_levelsWithStar = _local2.data.m_levelsWithStar; m_achievements = _local2.data.m_achievements; m_savedCount = _local2.data.m_savedCount; m_killedCount = _local2.data.m_killedCount; m_grifsCount = _local2.data.m_grifsCount; m_isHintsOn = _local2.data.m_isHintsOn; m_invertedControl = _local2.data.m_invertedControl; SoundManager.setSoundVolume(_local2.data.m_soundVolume); SoundManager.setMusicVolume(_local2.data.m_musicVolume); } else { m_scorePerLevel = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_scorePerLevel.push(0); _local1++; }; m_levelsWithStar = new Array(); _local1 = 0; while (_local1 < totalLevelsCount) { m_levelsWithStar.push(false); _local1++; }; }; if (m_achievements == null){ m_achievements = new Array(); }; } public static function canSubmitScore():Boolean{ return (false); } public static function getBestScoreOnLevel(_arg1:int):int{ return (m_scorePerLevel[_arg1]); } public static function onWinGrifShootingLevel(_arg1:int, _arg2:int):void{ m_grifsCount = (m_grifsCount + _arg2); if (m_grifsCount >= 100){ giveAchievement(Achievements.GRIFS_KILLED); }; submitKongregateScore(); save(); } public static function save():void{ var _local1:SharedObject = SharedObject.getLocal(Constant.SHARED_OBJECT_NAME, "/"); _local1.data.m_levelsCompleted = m_levelsCompleted; _local1.data.m_scorePerLevel = m_scorePerLevel; _local1.data.m_levelsWithStar = m_levelsWithStar; _local1.data.m_achievements = m_achievements; _local1.data.m_soundVolume = SoundManager.getSoundVolume(); _local1.data.m_musicVolume = SoundManager.getMusicVolume(); _local1.data.m_savedCount = m_savedCount; _local1.data.m_killedCount = m_killedCount; _local1.data.m_grifsCount = m_grifsCount; _local1.data.m_isHintsOn = m_isHintsOn; _local1.data.m_invertedControl = m_invertedControl; _local1.flush(); _local1.close(); } } }//package
Section 268
//GamePausedStateView (GamePausedStateView) package { import flash.display.*; public dynamic class GamePausedStateView extends MovieClip { public var m_clickToContinue:ClickToContinue; } }//package
Section 269
//GiantSky (GiantSky) package { import flash.display.*; public dynamic class GiantSky extends MovieClip { } }//package
Section 270
//GibbetColumn (GibbetColumn) package { import States.PlayState.*; public dynamic class GibbetColumn extends StaticBoxIsNotStone { } }//package
Section 271
//GibbetGround (GibbetGround) package { import flash.display.*; public dynamic class GibbetGround extends MovieClip { } }//package
Section 272
//GibbetObliquely (GibbetObliquely) package { import flash.display.*; public dynamic class GibbetObliquely extends MovieClip { } }//package
Section 273
//GibbetStick (GibbetStick) package { import States.PlayState.*; public dynamic class GibbetStick extends StaticBoxIsNotStone { } }//package
Section 274
//GrifShootingStateView (GrifShootingStateView) package { import flash.display.*; public dynamic class GrifShootingStateView extends MovieClip { public var m_scoreClip:MovieClip; public var m_arrowsLeftClip:MovieClip; public var m_timeLeftClip:MovieClip; public var m_buttonMenu:SimpleButton; public var m_buttonReplay:SimpleButton; } }//package
Section 275
//GrifShootingWinStateView (GrifShootingWinStateView) package { import flash.display.*; import flash.text.*; public dynamic class GrifShootingWinStateView extends MovieClip { public var m_buttonMenu:SimpleButton; public var m_star:MovieClip; public var m_currentScore:MovieClip; public var m_accuracy:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_levelNum:TextField; public var m_buttonNext:SimpleButton; public var m_bestScore:MovieClip; } }//package
Section 276
//Ground (Ground) package { import flash.display.*; public dynamic class Ground extends MovieClip { } }//package
Section 277
//GuiArrow (GuiArrow) package { import flash.display.*; public dynamic class GuiArrow extends SimpleButton { } }//package
Section 278
//HangerFace (HangerFace) package { import flash.display.*; public dynamic class HangerFace extends MovieClip { public function HangerFace(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 279
//HangerPoint (HangerPoint) package { import flash.display.*; public dynamic class HangerPoint extends MovieClip { } }//package
Section 280
//HeadShotCloud (HeadShotCloud) package { import flash.display.*; public dynamic class HeadShotCloud extends MovieClip { } }//package
Section 281
//HealthBar (HealthBar) package { import flash.display.*; public dynamic class HealthBar extends MovieClip { } }//package
Section 282
//herb (herb) package { import States.PlayState.*; public dynamic class herb extends Frontground { } }//package
Section 283
//HideTipsPanel (HideTipsPanel) package { import flash.display.*; public dynamic class HideTipsPanel extends MovieClip { public var m_checkBox:CheckBox; } }//package
Section 284
//Hint (Hint) package { import flash.display.*; import flash.text.*; public class Hint extends MovieClip { private const m_hideSpeed:Number = 0.3; private const m_showSpeed:Number = 0.2; private var m_isShow:Boolean;// = false public var m_text:TextField; public function Hint(){ mouseEnabled = false; mouseChildren = false; alpha = 0; } public function hide():void{ m_isShow = false; } public function isShow():Boolean{ return (m_isShow); } public function update():void{ if (m_isShow){ if ((alpha = (alpha + m_showSpeed)) > 1){ alpha = 1; }; } else { if ((alpha = (alpha - m_hideSpeed)) < 0){ alpha = 0; }; }; } public function setText(_arg1:String):void{ m_text.autoSize = TextFieldAutoSize.CENTER; m_text.htmlText = _arg1; m_text.y = ((height / 2) - (m_text.height / 2)); } override public function set y(_arg1:Number):void{ super.y = _arg1; if (super.y < 0){ super.y = 0; }; if ((super.y + height) > 480){ super.y = (480 - height); }; } override public function set x(_arg1:Number):void{ super.x = _arg1; if (super.x < 0){ super.x = 0; }; if ((super.x + width) > 640){ super.x = (640 - width); }; } public function show():void{ m_isShow = true; } } }//package
Section 285
//HintPoint (HintPoint) package { import flash.display.*; public dynamic class HintPoint extends MovieClip { } }//package
Section 286
//ILikeToHangCloud (ILikeToHangCloud) package { import flash.display.*; public dynamic class ILikeToHangCloud extends MovieClip { } }//package
Section 287
//InShader (InShader) package { import flash.display.*; public class InShader extends MovieClip { private var m_maxShade:Number; private var m_maxShadeTime:Number; private var m_blackSquare:MovieClip; private var m_liveTime:Number;// = 0 public function InShader(_arg1:Number, _arg2:Number){ m_blackSquare = new black_square(); super(); m_maxShadeTime = _arg1; m_maxShade = _arg2; m_blackSquare.alpha = 0; addChild(m_blackSquare); } public function isMaxTime():Boolean{ return ((m_liveTime >= m_maxShadeTime)); } public function update(_arg1:Number):void{ if ((m_liveTime = (m_liveTime + _arg1)) > m_maxShadeTime){ m_liveTime = m_maxShadeTime; }; m_blackSquare.alpha = ((m_liveTime / m_maxShadeTime) * m_maxShade); } public function restart():void{ m_liveTime = 0; m_blackSquare.alpha = 0; } } }//package
Section 288
//IntroButton (IntroButton) package { import flash.display.*; public dynamic class IntroButton extends SimpleButton { } }//package
Section 289
//InvertControlHint (InvertControlHint) package { import States.PlayState.*; public dynamic class InvertControlHint extends HintText { } }//package
Section 290
//InvertedCowHere (InvertedCowHere) package { import flash.display.*; public dynamic class InvertedCowHere extends MovieClip { } }//package
Section 291
//InvertedCowMaket (InvertedCowMaket) package { import flash.display.*; public dynamic class InvertedCowMaket extends MovieClip { public var vertex0:HangerPoint; public var vertex1:HangerPoint; public var vertex2:HangerPoint; public var vertex3:HangerPoint; public var vertex4:HangerPoint; public var vertex5:HangerPoint; public var vertex6:HangerPoint; } }//package
Section 292
//InvertedGibbetObliquely (InvertedGibbetObliquely) package { import flash.display.*; public dynamic class InvertedGibbetObliquely extends MovieClip { } }//package
Section 293
//InvertedVultureHere (InvertedVultureHere) package { import flash.display.*; public dynamic class InvertedVultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 294
//LeftEdgeMarker (LeftEdgeMarker) package { import flash.display.*; public dynamic class LeftEdgeMarker extends MovieClip { } }//package
Section 295
//LeftLowerHand_1 (LeftLowerHand_1) package { import flash.display.*; public dynamic class LeftLowerHand_1 extends MovieClip { } }//package
Section 296
//LeftLowerHand_2 (LeftLowerHand_2) package { import flash.display.*; public dynamic class LeftLowerHand_2 extends MovieClip { } }//package
Section 297
//LeftLowerHand_3 (LeftLowerHand_3) package { import flash.display.*; public dynamic class LeftLowerHand_3 extends MovieClip { } }//package
Section 298
//LeftLowerHand_4 (LeftLowerHand_4) package { import flash.display.*; public dynamic class LeftLowerHand_4 extends MovieClip { } }//package
Section 299
//LeftLowerLeg_1 (LeftLowerLeg_1) package { import flash.display.*; public dynamic class LeftLowerLeg_1 extends MovieClip { } }//package
Section 300
//LeftLowerLeg_2 (LeftLowerLeg_2) package { import flash.display.*; public dynamic class LeftLowerLeg_2 extends MovieClip { } }//package
Section 301
//LeftLowerLeg_3 (LeftLowerLeg_3) package { import flash.display.*; public dynamic class LeftLowerLeg_3 extends MovieClip { } }//package
Section 302
//LeftLowerLeg_4 (LeftLowerLeg_4) package { import flash.display.*; public dynamic class LeftLowerLeg_4 extends MovieClip { } }//package
Section 303
//LeftUpperHand_1 (LeftUpperHand_1) package { import flash.display.*; public dynamic class LeftUpperHand_1 extends MovieClip { } }//package
Section 304
//LeftUpperHand_2 (LeftUpperHand_2) package { import flash.display.*; public dynamic class LeftUpperHand_2 extends MovieClip { } }//package
Section 305
//LeftUpperHand_3 (LeftUpperHand_3) package { import flash.display.*; public dynamic class LeftUpperHand_3 extends MovieClip { } }//package
Section 306
//LeftUpperHand_4 (LeftUpperHand_4) package { import flash.display.*; public dynamic class LeftUpperHand_4 extends MovieClip { } }//package
Section 307
//LeftUpperLeg_1 (LeftUpperLeg_1) package { import flash.display.*; public dynamic class LeftUpperLeg_1 extends MovieClip { } }//package
Section 308
//LeftUpperLeg_2 (LeftUpperLeg_2) package { import flash.display.*; public dynamic class LeftUpperLeg_2 extends MovieClip { } }//package
Section 309
//LeftUpperLeg_3 (LeftUpperLeg_3) package { import flash.display.*; public dynamic class LeftUpperLeg_3 extends MovieClip { } }//package
Section 310
//LeftUpperLeg_4 (LeftUpperLeg_4) package { import flash.display.*; public dynamic class LeftUpperLeg_4 extends MovieClip { } }//package
Section 311
//Level00 (Level00) package { import flash.display.*; public dynamic class Level00 extends MovieClip { } }//package
Section 312
//Level01 (Level01) package { import flash.display.*; public dynamic class Level01 extends MovieClip { } }//package
Section 313
//Level02 (Level02) package { import flash.display.*; public dynamic class Level02 extends MovieClip { } }//package
Section 314
//Level03 (Level03) package { import flash.display.*; public dynamic class Level03 extends MovieClip { } }//package
Section 315
//Level04 (Level04) package { import flash.display.*; public dynamic class Level04 extends MovieClip { } }//package
Section 316
//Level05 (Level05) package { import flash.display.*; public dynamic class Level05 extends MovieClip { } }//package
Section 317
//Level06 (Level06) package { import flash.display.*; public dynamic class Level06 extends MovieClip { } }//package
Section 318
//Level07 (Level07) package { import flash.display.*; public dynamic class Level07 extends MovieClip { } }//package
Section 319
//Level08 (Level08) package { import flash.display.*; public dynamic class Level08 extends MovieClip { } }//package
Section 320
//Level09 (Level09) package { import flash.display.*; public dynamic class Level09 extends MovieClip { } }//package
Section 321
//Level10 (Level10) package { import flash.display.*; public dynamic class Level10 extends MovieClip { } }//package
Section 322
//Level11 (Level11) package { import flash.display.*; public dynamic class Level11 extends MovieClip { } }//package
Section 323
//Level12 (Level12) package { import flash.display.*; public dynamic class Level12 extends MovieClip { } }//package
Section 324
//Level13 (Level13) package { import flash.display.*; public dynamic class Level13 extends MovieClip { } }//package
Section 325
//Level14 (Level14) package { import flash.display.*; public dynamic class Level14 extends MovieClip { } }//package
Section 326
//Level15 (Level15) package { import flash.display.*; public dynamic class Level15 extends MovieClip { } }//package
Section 327
//Level16 (Level16) package { import flash.display.*; public dynamic class Level16 extends MovieClip { } }//package
Section 328
//Level17 (Level17) package { import flash.display.*; public dynamic class Level17 extends MovieClip { } }//package
Section 329
//Level18 (Level18) package { import flash.display.*; public dynamic class Level18 extends MovieClip { } }//package
Section 330
//Level19 (Level19) package { import flash.display.*; public dynamic class Level19 extends MovieClip { } }//package
Section 331
//Level20 (Level20) package { import flash.display.*; public dynamic class Level20 extends MovieClip { } }//package
Section 332
//Level21 (Level21) package { import flash.display.*; public dynamic class Level21 extends MovieClip { } }//package
Section 333
//Level22 (Level22) package { import flash.display.*; public dynamic class Level22 extends MovieClip { } }//package
Section 334
//Level23 (Level23) package { import flash.display.*; public dynamic class Level23 extends MovieClip { } }//package
Section 335
//Level24 (Level24) package { import flash.display.*; public dynamic class Level24 extends MovieClip { } }//package
Section 336
//Level25 (Level25) package { import flash.display.*; public dynamic class Level25 extends MovieClip { } }//package
Section 337
//Level26 (Level26) package { import flash.display.*; public dynamic class Level26 extends MovieClip { } }//package
Section 338
//Level27 (Level27) package { import flash.display.*; public dynamic class Level27 extends MovieClip { } }//package
Section 339
//Level28 (Level28) package { import flash.display.*; public dynamic class Level28 extends MovieClip { } }//package
Section 340
//Level29 (Level29) package { import flash.display.*; public dynamic class Level29 extends MovieClip { } }//package
Section 341
//Level30 (Level30) package { import flash.display.*; public dynamic class Level30 extends MovieClip { } }//package
Section 342
//Level31 (Level31) package { import flash.display.*; public dynamic class Level31 extends MovieClip { } }//package
Section 343
//Level32 (Level32) package { import flash.display.*; public dynamic class Level32 extends MovieClip { } }//package
Section 344
//Level33 (Level33) package { import flash.display.*; public dynamic class Level33 extends MovieClip { } }//package
Section 345
//Level34 (Level34) package { import flash.display.*; public dynamic class Level34 extends MovieClip { } }//package
Section 346
//Level35 (Level35) package { import flash.display.*; public dynamic class Level35 extends MovieClip { } }//package
Section 347
//Level36 (Level36) package { import flash.display.*; public dynamic class Level36 extends MovieClip { } }//package
Section 348
//Level37 (Level37) package { import flash.display.*; public dynamic class Level37 extends MovieClip { } }//package
Section 349
//Level38 (Level38) package { import flash.display.*; public dynamic class Level38 extends MovieClip { } }//package
Section 350
//Level39 (Level39) package { import flash.display.*; public dynamic class Level39 extends MovieClip { } }//package
Section 351
//Level40 (Level40) package { import flash.display.*; public dynamic class Level40 extends MovieClip { } }//package
Section 352
//Level41 (Level41) package { import flash.display.*; public dynamic class Level41 extends MovieClip { } }//package
Section 353
//Level42 (Level42) package { import flash.display.*; public dynamic class Level42 extends MovieClip { } }//package
Section 354
//Level43 (Level43) package { import flash.display.*; public dynamic class Level43 extends MovieClip { } }//package
Section 355
//Level44 (Level44) package { import flash.display.*; public dynamic class Level44 extends MovieClip { } }//package
Section 356
//Level45 (Level45) package { import flash.display.*; public dynamic class Level45 extends MovieClip { } }//package
Section 357
//Level46 (Level46) package { import flash.display.*; public dynamic class Level46 extends MovieClip { } }//package
Section 358
//Level47 (Level47) package { import flash.display.*; public dynamic class Level47 extends MovieClip { } }//package
Section 359
//Level48 (Level48) package { import flash.display.*; public dynamic class Level48 extends MovieClip { } }//package
Section 360
//Level49 (Level49) package { import flash.display.*; public dynamic class Level49 extends MovieClip { } }//package
Section 361
//Level50 (Level50) package { import flash.display.*; public dynamic class Level50 extends MovieClip { } }//package
Section 362
//Level51 (Level51) package { import flash.display.*; public dynamic class Level51 extends MovieClip { } }//package
Section 363
//Level52 (Level52) package { import flash.display.*; public dynamic class Level52 extends MovieClip { } }//package
Section 364
//LinksManager (LinksManager) package { import flash.net.*; public class LinksManager { public static const MAIN_MENU_HIGH_SCORE_BUTTON:String = "main_menu_high_score_button"; public static const MINIGAME_WIN_SCREEN:String = "MINIGAME_WIN_SCREEN"; public static const GRIF_SHOOTING_WIN_STATE_BUTTON:String = "grif_shooting_win_state_button"; public static const SELECT_LEVEL_SCREEN:String = "SELECT_LEVEL_SCREEN"; public static const SELECT_SECRET_LEVEL_SCREEN:String = "SELECT_SECRET_LEVEL_SCREEN"; public static const WALKROUTGH_URL:String = "http://www.notdoppler.com/gibbets2-walkthrough.php?ref=gibbets2"; public static const MAIN_MENU_NOTDOPPLER_BUTTON:String = "main_menu_notdoppler_button"; public static const GAME_COMPLETE_NOTDOPPLER_BUTTON:String = "game_complete_notdoppler_button"; public static const SELECT_LEVEL_STATE_WALKTHROUGH:String = "SELECT_LEVEL_STATE_WALKTHROUGH"; public static const MAIN_MENU_MORE_GAMES_BUTTON:String = "main_menu_more_games_button"; public static const GAME_COMPLETE_MORE_GAMES_BUTTON:String = "game_complete_more_games_button"; public static const HIGH_SCORE_URL:String = "http://www.notdoppler.com/gibbets2-highscores.php?ref=gibbets2&game=gibbets2"; public static const GAME_COMPLETE_SUBMIT_BUTTON:String = "game_submit_button"; public static const MINIGAME_SCREEN:String = "MINIGAME_SCREEN"; public static const NO_SCREEN:String = "NO_SCREEN"; public static const PLAYSTATE_SCREEN:String = "PLAYSTATE_SCREEN"; public static const INTRO_SCREEN_BUTTON:String = "intro_screen_button"; public static const PRELOADER_SCREEN_BANNER:String = "PRELOADER_SCREEN_BANNER"; public static const SECRET_LEVEL_STATE_MORE_GAMES:String = "SECRET_LEVEL_STATE_MORE_GAMES"; public static const MAIN_MENU_GIBBETS_I_BUTTON:String = "main_menu_gibbets_I_button"; public static const PLAYSTATE_WALKTHROUGH:String = "PLAYSTATE_WALKTHROUGH"; public static const CREDITS_SCREEN_NOTDOPPLER_BUTTON:String = "credits_screen_notdoppler_button"; public static const LOSE_STATE_MORE_GAMES_BUTTON:String = "lose_state_more_games_button"; public static const SECRET_LEVEL_STATE_WALKTHROUGH:String = "SECRET_LEVEL_STATE_WALKTHROUGH"; public static const WIN_SCREEN:String = "WIN_SCREEN"; public static const CREDITS_SCREEN:String = "CREDITS_SCREEN"; public static const LOSE_SCREEN:String = "LOSE_SCREEN"; public static const SELECT_LEVEL_STATE_MORE_GAMES:String = "SELECT_LEVEL_STATE_MORE_GAMES"; public static const GAME_COMPLETE_SCREEN:String = "GAME_COMPLETE_SCREEN"; public static const ACHIEVEMENTS_SCREEN:String = "ACHIEVEMENTS_SCREEN"; public static const WIN_STATE_MORE_GAMES_BUTTON:String = "win_state_more_games_button"; public static const MAIN_PAGE_URL:String = "http://www.notdoppler.com/?ref=gibbets2"; public static const GIBBETS_II_URL:String = "http://www.notdoppler.com/gibbets2.php"; public static const PLAYSTATE_MORE_GAMES:String = "PLAYSTATE_MORE_GAMES"; public static const GIBBETS_I_URL:String = "http://www.notdoppler.com/gibbets.php?ref=gibbets2"; public static function goURL(_arg1:String, _arg2:String):void{ navigateToURL(new URLRequest(_arg1), "_blank"); } } }//package
Section 365
//LongBack (LongBack) package { import flash.display.*; public dynamic class LongBack extends MovieClip { } }//package
Section 366
//LongShootArrow (LongShootArrow) package { import flash.display.*; public dynamic class LongShootArrow extends MovieClip { } }//package
Section 367
//lose_sound (lose_sound) package { import flash.media.*; public dynamic class lose_sound extends Sound { } }//package
Section 368
//LoseStateView (LoseStateView) package { import flash.display.*; public dynamic class LoseStateView extends MovieClip { public var m_window:MovieClip; public var m_buttonMenu:SimpleButton; public var m_buttonRestart:SimpleButton; } }//package
Section 369
//main_menu_arrow_sound (main_menu_arrow_sound) package { import flash.media.*; public dynamic class main_menu_arrow_sound extends Sound { } }//package
Section 370
//main_menu_music (main_menu_music) package { import flash.media.*; public dynamic class main_menu_music extends Sound { } }//package
Section 371
//MainMenuCloud1 (MainMenuCloud1) package { import flash.display.*; public dynamic class MainMenuCloud1 extends MovieClip { } }//package
Section 372
//MainMenuCloud2 (MainMenuCloud2) package { import flash.display.*; public dynamic class MainMenuCloud2 extends MovieClip { } }//package
Section 373
//MainMenuCloud3 (MainMenuCloud3) package { import flash.display.*; public dynamic class MainMenuCloud3 extends MovieClip { } }//package
Section 374
//MainMenuStateView (MainMenuStateView) package { import flash.display.*; public dynamic class MainMenuStateView extends MovieClip { public var m_rightButtonsPanel:MovieClip; public var m_vulture:MovieClip; public var m_II:MovieClip; public var m_notdoppler:SimpleButton; public var m_comixCloud:MainMenuCloud1; public var m_leftButtonsPanel:MovieClip; } }//package
Section 375
//Mill (Mill) package { import flash.display.*; public dynamic class Mill extends MovieClip { } }//package
Section 376
//MillFan (MillFan) package { import flash.display.*; public dynamic class MillFan extends MovieClip { } }//package
Section 377
//moo (moo) package { import flash.media.*; public dynamic class moo extends Sound { } }//package
Section 378
//MoreGamesPanel (MoreGamesPanel) package { import flash.events.*; import Main.*; import flash.display.*; import States.*; public class MoreGamesPanel extends MovieClip { public var m_walkthrough:SimpleButton; public var m_moreGames:SimpleButton; private var m_isNeedPause:Boolean; private var m_source:String; public function MoreGamesPanel(_arg1:String, _arg2:Boolean=false){ m_isNeedPause = _arg2; m_source = _arg1; m_moreGames.addEventListener(MouseEvent.CLICK, onMoreGamesClick); m_walkthrough.addEventListener(MouseEvent.CLICK, onWalkthroughClick); addEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); } private function onRemoveFromStage(_arg1:Event):void{ m_moreGames.removeEventListener(MouseEvent.CLICK, onMoreGamesClick); m_walkthrough.removeEventListener(MouseEvent.CLICK, onWalkthroughClick); removeEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); } private function onWalkthroughClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.WALKROUTGH_URL, m_source); if (m_isNeedPause){ StateManager.getInstance().pushState(new GamePausedState()); }; } private function onMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, m_source); if (m_isNeedPause){ StateManager.getInstance().pushState(new GamePausedState()); }; } } }//package
Section 379
//MusicCloud (MusicCloud) package { import flash.display.*; public dynamic class MusicCloud extends MovieClip { } }//package
Section 380
//MyBlogCloud (MyBlogCloud) package { import flash.display.*; public dynamic class MyBlogCloud extends MovieClip { } }//package
Section 381
//MyMailCloud (MyMailCloud) package { import flash.display.*; public dynamic class MyMailCloud extends MovieClip { } }//package
Section 382
//NoArrowsHint (NoArrowsHint) package { import States.PlayState.*; public dynamic class NoArrowsHint extends HintText { } }//package
Section 383
//OnlyOneArrowHint (OnlyOneArrowHint) package { import States.PlayState.*; public dynamic class OnlyOneArrowHint extends HintText { } }//package
Section 384
//OptionsStateView (OptionsStateView) package { import flash.display.*; public dynamic class OptionsStateView extends MovieClip { public var m_buttonOk:SimpleButton; public var m_disableBlood:CheckBox; public var m_buttonReset:SimpleButton; public var m_hideTips:CheckBox; public var m_musicVolume:ScrollBar; public var m_invertControl:CheckBox; public var m_soundVolume:ScrollBar; } }//package
Section 385
//OutShader (OutShader) package { import flash.display.*; public class OutShader extends MovieClip { private var m_maxShade:Number; private var m_maxShadeTime:Number; private var m_blackSquare:MovieClip; private var m_liveTime:Number;// = 0 public function OutShader(_arg1:Number, _arg2:Number){ m_blackSquare = new black_square(); super(); m_maxShadeTime = _arg1; m_maxShade = _arg2; m_blackSquare.alpha = 1; addChild(m_blackSquare); } public function isMaxTime():Boolean{ return ((m_liveTime >= m_maxShadeTime)); } public function update(_arg1:Number):void{ if ((m_liveTime = (m_liveTime + _arg1)) > m_maxShadeTime){ m_liveTime = m_maxShadeTime; }; m_blackSquare.alpha = ((1 - (m_liveTime / m_maxShadeTime)) * m_maxShade); } public function restart():void{ m_liveTime = 0; m_blackSquare.alpha = m_maxShade; } } }//package
Section 386
//OvercastSky (OvercastSky) package { import flash.display.*; public dynamic class OvercastSky extends MovieClip { } }//package
Section 387
//perfect_star (perfect_star) package { import flash.media.*; public dynamic class perfect_star extends Sound { } }//package
Section 388
//PlayStateView (PlayStateView) package { import flash.display.*; public dynamic class PlayStateView extends MovieClip { public var m_scoreClip:MovieClip; public var m_levelClip:MovieClip; public var m_buttonMenu:SimpleButton; public var m_arrowsLeftClip:MovieClip; public var m_buttonReplay:SimpleButton; } }//package
Section 389
//points (points) package { import flash.media.*; public dynamic class points extends Sound { } }//package
Section 390
//PointsGhost1000 (PointsGhost1000) package { import States.PlayState.*; public dynamic class PointsGhost1000 extends PointsGhost { } }//package
Section 391
//PointsGhost300 (PointsGhost300) package { import States.PlayState.*; public dynamic class PointsGhost300 extends PointsGhost { } }//package
Section 392
//PointsGhost500 (PointsGhost500) package { import States.PlayState.*; public dynamic class PointsGhost500 extends PointsGhost { } }//package
Section 393
//ProgrammingCloud (ProgrammingCloud) package { import flash.display.*; public dynamic class ProgrammingCloud extends MovieClip { } }//package
Section 394
//RightEdgeMarker (RightEdgeMarker) package { import flash.display.*; public dynamic class RightEdgeMarker extends MovieClip { } }//package
Section 395
//RightLowerHand_1 (RightLowerHand_1) package { import flash.display.*; public dynamic class RightLowerHand_1 extends MovieClip { } }//package
Section 396
//RightLowerHand_2 (RightLowerHand_2) package { import flash.display.*; public dynamic class RightLowerHand_2 extends MovieClip { } }//package
Section 397
//RightLowerHand_3 (RightLowerHand_3) package { import flash.display.*; public dynamic class RightLowerHand_3 extends MovieClip { } }//package
Section 398
//RightLowerHand_4 (RightLowerHand_4) package { import flash.display.*; public dynamic class RightLowerHand_4 extends MovieClip { } }//package
Section 399
//RightLowerLeg_1 (RightLowerLeg_1) package { import flash.display.*; public dynamic class RightLowerLeg_1 extends MovieClip { } }//package
Section 400
//RightLowerLeg_2 (RightLowerLeg_2) package { import flash.display.*; public dynamic class RightLowerLeg_2 extends MovieClip { } }//package
Section 401
//RightLowerLeg_3 (RightLowerLeg_3) package { import flash.display.*; public dynamic class RightLowerLeg_3 extends MovieClip { } }//package
Section 402
//RightLowerLeg_4 (RightLowerLeg_4) package { import flash.display.*; public dynamic class RightLowerLeg_4 extends MovieClip { } }//package
Section 403
//RightUpperHand_1 (RightUpperHand_1) package { import flash.display.*; public dynamic class RightUpperHand_1 extends MovieClip { } }//package
Section 404
//RightUpperHand_2 (RightUpperHand_2) package { import flash.display.*; public dynamic class RightUpperHand_2 extends MovieClip { } }//package
Section 405
//RightUpperHand_3 (RightUpperHand_3) package { import flash.display.*; public dynamic class RightUpperHand_3 extends MovieClip { } }//package
Section 406
//RightUpperHand_4 (RightUpperHand_4) package { import flash.display.*; public dynamic class RightUpperHand_4 extends MovieClip { } }//package
Section 407
//RightUpperLeg_1 (RightUpperLeg_1) package { import flash.display.*; public dynamic class RightUpperLeg_1 extends MovieClip { } }//package
Section 408
//RightUpperLeg_2 (RightUpperLeg_2) package { import flash.display.*; public dynamic class RightUpperLeg_2 extends MovieClip { } }//package
Section 409
//RightUpperLeg_3 (RightUpperLeg_3) package { import flash.display.*; public dynamic class RightUpperLeg_3 extends MovieClip { } }//package
Section 410
//RightUpperLeg_4 (RightUpperLeg_4) package { import flash.display.*; public dynamic class RightUpperLeg_4 extends MovieClip { } }//package
Section 411
//RobinHoodMadeThatMuchBetter (RobinHoodMadeThatMuchBetter) package { import flash.display.*; public dynamic class RobinHoodMadeThatMuchBetter extends MovieClip { } }//package
Section 412
//Rope (Rope) package { import flash.display.*; public dynamic class Rope extends MovieClip { } }//package
Section 413
//RopeRings (RopeRings) package { import States.PlayState.*; public dynamic class RopeRings extends Frontground { } }//package
Section 414
//Screw (Screw) package { import States.PlayState.*; public dynamic class Screw extends Frontground { } }//package
Section 415
//ScrollBar (ScrollBar) package { import flash.events.*; import flash.display.*; public class ScrollBar extends MovieClip { private var m_isMouseDown:Boolean;// = false private var m_maxWidth:Number; public var m_slider:MovieClip; private var m_progress:Number; public static const EVENT_CHANGE:String = "eventChange"; public function ScrollBar(){ buttonMode = true; mouseChildren = false; addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); addEventListener(Event.ADDED_TO_STAGE, handleAddToStage); addEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); m_maxWidth = width; } public function getProgress():Number{ return (m_progress); } public function setProgress(_arg1:Number):void{ if (_arg1 < 0){ _arg1 = 0; }; if (_arg1 > 1){ _arg1 = 1; }; m_progress = _arg1; m_slider.x = (m_maxWidth * m_progress); } private function handleRemoveFromStage(_arg1:Event):void{ removeEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); removeEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); removeEventListener(Event.ADDED_TO_STAGE, handleAddToStage); removeEventListener(Event.REMOVED_FROM_STAGE, handleRemoveFromStage); stage.removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp); } private function handleAddToStage(_arg1:Event):void{ stage.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp); } private function handleMouseDown(_arg1:MouseEvent):void{ m_isMouseDown = true; handleMouseMove(_arg1); } private function handleMouseMove(_arg1:MouseEvent):void{ if (m_isMouseDown){ setProgress((_arg1.localX / m_maxWidth)); dispatchEvent(new Event(EVENT_CHANGE)); }; } private function handleMouseUp(_arg1:MouseEvent):void{ m_isMouseDown = false; } } }//package
Section 416
//SelectLevelBonusButton (SelectLevelBonusButton) package { import States.*; public dynamic class SelectLevelBonusButton extends SelectLevelButton { } }//package
Section 417
//SelectLevelButton (SelectLevelButton) package { import States.*; public dynamic class SelectLevelButton extends SelectLevelButton { } }//package
Section 418
//SelectLevelStateView (SelectLevelStateView) package { import flash.display.*; public dynamic class SelectLevelStateView extends MovieClip { public var m_totalScore:MovieClip; public var m_buttonMenu:SimpleButton; public var m_arrowRight:GuiArrow; public var m_buttonAchievements:SimpleButton; public var m_arrowUp:GuiArrow; public var m_buttonsPanel:MovieClip; public var m_buttonSubmit:SimpleButton; } }//package
Section 419
//SelectSecretLevelStateView (SelectSecretLevelStateView) package { import flash.display.*; public dynamic class SelectSecretLevelStateView extends MovieClip { public var m_totalScore:MovieClip; public var m_buttonMenu:SimpleButton; public var m_buttonAchievements:SimpleButton; public var m_level50:SelectLevelButton; public var m_level51:SelectLevelButton; public var m_level52:SelectLevelButton; public var m_adBox:MovieClip; public var m_level48:SelectLevelButton; public var m_level49:SelectLevelButton; public var m_closeButton:CloseCross; public var m_arrowDown:GuiArrow; public var m_buttonSubmit:SimpleButton; } }//package
Section 420
//Shader (Shader) package { import flash.display.*; public class Shader extends MovieClip { private var m_clip:black_square; private var m_endShade:Number; private var m_liveTime:Number;// = 0 private var m_startTime:Number; private var m_endTime:Number; private var m_startShade:Number; public function Shader(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){ m_clip = new black_square(); super(); addChild(m_clip); m_startTime = _arg1; m_endTime = _arg2; m_startShade = _arg3; m_endShade = _arg4; m_clip.alpha = _arg3; } public function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); var _local2:Number = (m_startShade + (((m_liveTime - m_startTime) / (m_endTime - m_startTime)) * (m_endShade - m_startShade))); if (_local2 > Math.max(m_startShade, m_endShade)){ _local2 = Math.max(m_startShade, m_endShade); }; if (_local2 < Math.min(m_startShade, m_endShade)){ _local2 = Math.min(m_startShade, m_endShade); }; m_clip.alpha = _local2; } public function getShade():Number{ return (m_clip.alpha); } } }//package
Section 421
//ShotTheRopeNotMeCloud (ShotTheRopeNotMeCloud) package { import flash.display.*; public dynamic class ShotTheRopeNotMeCloud extends MovieClip { } }//package
Section 422
//Sight (Sight) package { import flash.display.*; public dynamic class Sight extends MovieClip { } }//package
Section 423
//Soul1 (Soul1) package { import States.PlayState.*; public dynamic class Soul1 extends Soul { } }//package
Section 424
//Soul2 (Soul2) package { import States.PlayState.*; public dynamic class Soul2 extends Soul { } }//package
Section 425
//Soul3 (Soul3) package { import States.PlayState.*; public dynamic class Soul3 extends Soul { } }//package
Section 426
//Soul4 (Soul4) package { import States.PlayState.*; public dynamic class Soul4 extends Soul { } }//package
Section 427
//SoundButton (SoundButton) package { import flash.events.*; import flash.display.*; public class SoundButton extends MovieClip { private var m_isSoundOn:Boolean;// = false private var m_sound:DisplayObject;// = null public function SoundButton(){ onSoundClick(null); } private function onSoundClick(_arg1:MouseEvent):void{ m_isSoundOn = !(m_isSoundOn); if (m_sound){ m_sound.removeEventListener(MouseEvent.CLICK, onSoundClick); removeChild(m_sound); }; if (m_isSoundOn){ m_sound = new SoundOn(); } else { m_sound = new SoundOff(); }; m_sound.x = (640 - 40); m_sound.y = 20; addChild(m_sound); m_sound.addEventListener(MouseEvent.CLICK, onSoundClick); SoundManager.setSoundEnable(m_isSoundOn); } } }//package
Section 428
//SoundConst (SoundConst) package { public class SoundConst { public static const CRY_5:String = "cry_5"; public static const CRY_6:String = "cry_6"; public static const STICK_IN_MAIN_MENU:String = "main_menu_arrow_sound"; public static const CRY_3:String = "cry_3"; public static const CRY_7:String = "cry_7"; public static const LOSE:String = "lose_sound"; public static const ARROW_GHOST:String = "arrow_ghost"; public static const STICK_IN_BODY_0:String = "stick_in_body_0"; public static const STICK_IN_BODY_1:String = "stick_in_body_1"; public static const STICK_IN_BODY_2:String = "stick_in_body_2"; public static const VULTURE_CRY_4:String = "vulture_cry_4"; public static const VULTURE_CRY_1:String = "vulture_cry_1"; public static const VULTURE_CRY_2:String = "vulture_cry_2"; public static const VULTURE_CRY_3:String = "vulture_cry_3"; public static const AMBIENT_1:String = "ambient_1"; public static const AMBIENT_2:String = "ambient_2"; public static const BOW_SHOOT:String = "bow_shoot"; public static const VULTURE_CACLE_2:String = "vulture_cacle_2"; public static const STICK_IN_WOOD:String = "stick_in_wood"; public static const ADD_ARROWS_0:String = "add_arrows_sound_0"; public static const ADD_ARROWS_1:String = "add_arrows_sound_1"; public static const SUN_VOICE:String = "sun_voice"; public static const VULTURE_CACLE_1:String = "vulture_cacle_1"; public static const WIN:String = "win_sound"; public static const EXPLOISON:String = "exploison"; public static const DEATH_CRY:String = "death_cry"; public static const TAPE_ROPE_0:String = "tape_rope_0"; public static const TAPE_ROPE_1:String = "tape_rope_1"; public static const TAPE_ROPE_2:String = "tape_rope_2"; public static const POINTS:String = "points"; public static const CLICK:String = "click"; public static const MAIN_MENU_MUSIC:String = "main_menu_music"; public static const MOO:String = "moo"; public static const TELEPORT:String = "teleport"; public static const PERFECT_STAR:String = "perfect_star"; public static const CRY_0:String = "cry_0"; public static const CRY_1:String = "cry_1"; public static const CRY_2:String = "cry_2"; public static const CRY_4:String = "cry_4"; } }//package
Section 429
//SoundManager (SoundManager) package { import flash.media.*; import flash.system.*; public class SoundManager { private static const vtNormal:int = 2; private static const vtFadeOut:int = 0; private static const vtFadeIn:int = 1; private static var m_volumeType:int = 2; private static var m_musicVolume:Number = 1; private static var m_isSoundEnable:Boolean = true; private static var m_currentLoop:SoundChannel; private static var m_musicVolumeBackup:Number; private static var m_liveTime:Number; private static var m_soundVolume:Number = 1; private static var m_currentLoopName:String; private static var m_soundAfterFade:String; public static function playFadeOut(_arg1:String):void{ m_musicVolumeBackup = m_musicVolume; m_volumeType = vtFadeOut; m_soundAfterFade = _arg1; } public static function setSoundVolume(_arg1:Number):void{ m_soundVolume = _arg1; } public static function update(_arg1:Number):void{ m_liveTime = (m_liveTime + _arg1); if (m_isSoundEnable){ switch (m_volumeType){ case vtFadeOut: setMusicVolume((m_musicVolume - (0.8 * _arg1))); if (m_musicVolume <= 0.15){ play(m_soundAfterFade); m_volumeType = vtNormal; m_liveTime = 0; }; break; case vtNormal: if ((((m_liveTime > 2.3)) && (m_soundAfterFade))){ m_soundAfterFade = null; m_volumeType = vtFadeIn; }; break; case vtFadeIn: setMusicVolume((m_musicVolume + (1.5 * _arg1))); if (m_musicVolume >= m_musicVolumeBackup){ setMusicVolume(m_musicVolumeBackup); m_volumeType = vtNormal; }; break; }; }; } public static function getSoundVolume():Number{ return (m_soundVolume); } public static function setMusicVolume(_arg1:Number):void{ var _local2:SoundTransform; if (_arg1 < 0.01){ _arg1 = 0; }; if (_arg1 > 1){ _arg1 = 1; }; m_musicVolume = _arg1; if (m_currentLoop){ _local2 = m_currentLoop.soundTransform; _local2.volume = _arg1; m_currentLoop.soundTransform = _local2; }; } public static function getMusicVolume():Number{ return (m_musicVolume); } public static function forcedPlay(_arg1:String):void{ var sound_class:Class; var sound:Sound; var channel:SoundChannel; var transform:SoundTransform; var name = _arg1; try { sound_class = (ApplicationDomain.currentDomain.getDefinition(name) as Class); sound = new (sound_class); channel = sound.play(); transform = channel.soundTransform; transform.volume = m_soundVolume; channel.soundTransform = transform; } catch(e:Error) { if (Constant.m_debugMode){ trace(e); }; }; } public static function setSoundEnable(_arg1:Boolean):void{ var _local2:String; m_volumeType = vtNormal; m_isSoundEnable = _arg1; if (m_isSoundEnable){ _local2 = m_currentLoopName; m_currentLoopName = ""; playLoop(_local2); } else { if (m_currentLoop){ m_currentLoop.stop(); }; }; } public static function play(_arg1:String):void{ var sound_class:Class; var sound:Sound; var channel:SoundChannel; var transform:SoundTransform; var name = _arg1; if (m_isSoundEnable){ try { sound_class = (ApplicationDomain.currentDomain.getDefinition(name) as Class); sound = new (sound_class); channel = sound.play(); transform = channel.soundTransform; transform.volume = m_soundVolume; channel.soundTransform = transform; } catch(e:Error) { if (Constant.m_debugMode){ trace(e); }; }; }; } public static function playLoop(_arg1:String):void{ var sound_class:Class; var sound:Sound; var transform:SoundTransform; var name = _arg1; try { if (m_isSoundEnable){ if (m_currentLoopName != name){ if (m_currentLoop != null){ m_currentLoop.stop(); }; sound_class = (ApplicationDomain.currentDomain.getDefinition(name) as Class); sound = new (sound_class); m_currentLoop = sound.play(0, int.MAX_VALUE); transform = m_currentLoop.soundTransform; transform.volume = m_musicVolume; m_currentLoop.soundTransform = transform; }; }; m_currentLoopName = name; } catch(e:Error) { if (Constant.m_debugMode){ trace("SoundManager::playLoop", e); }; }; } } }//package
Section 430
//SoundOff (SoundOff) package { import flash.display.*; public dynamic class SoundOff extends SimpleButton { } }//package
Section 431
//SoundOn (SoundOn) package { import flash.display.*; public dynamic class SoundOn extends SimpleButton { } }//package
Section 432
//SponsorIntro (SponsorIntro) package { import flash.display.*; public dynamic class SponsorIntro extends MovieClip { } }//package
Section 433
//SponsorMusic (SponsorMusic) package { import flash.media.*; public dynamic class SponsorMusic extends Sound { } }//package
Section 434
//StarrySky (StarrySky) package { import flash.display.*; public dynamic class StarrySky extends MovieClip { } }//package
Section 435
//stick_in_body_0 (stick_in_body_0) package { import flash.media.*; public dynamic class stick_in_body_0 extends Sound { } }//package
Section 436
//stick_in_body_1 (stick_in_body_1) package { import flash.media.*; public dynamic class stick_in_body_1 extends Sound { } }//package
Section 437
//stick_in_body_2 (stick_in_body_2) package { import flash.media.*; public dynamic class stick_in_body_2 extends Sound { } }//package
Section 438
//stick_in_wood (stick_in_wood) package { import flash.media.*; public dynamic class stick_in_wood extends Sound { } }//package
Section 439
//Stone0 (Stone0) package { import States.PlayState.*; public dynamic class Stone0 extends StaticBoxIsStone { } }//package
Section 440
//Stone1 (Stone1) package { import States.PlayState.*; public dynamic class Stone1 extends StaticBoxIsStone { } }//package
Section 441
//Stone2 (Stone2) package { import States.PlayState.*; public dynamic class Stone2 extends StaticBoxIsStone { } }//package
Section 442
//Stone3 (Stone3) package { import States.PlayState.*; public dynamic class Stone3 extends StaticBoxIsStone { } }//package
Section 443
//StopItCloud (StopItCloud) package { import flash.display.*; public dynamic class StopItCloud extends MovieClip { } }//package
Section 444
//sun_voice (sun_voice) package { import flash.media.*; public dynamic class sun_voice extends Sound { } }//package
Section 445
//TakeAdditionArrows (TakeAdditionArrows) package { import flash.display.*; public dynamic class TakeAdditionArrows extends MovieClip { } }//package
Section 446
//tape_rope_0 (tape_rope_0) package { import flash.media.*; public dynamic class tape_rope_0 extends Sound { } }//package
Section 447
//tape_rope_1 (tape_rope_1) package { import flash.media.*; public dynamic class tape_rope_1 extends Sound { } }//package
Section 448
//tape_rope_2 (tape_rope_2) package { import flash.media.*; public dynamic class tape_rope_2 extends Sound { } }//package
Section 449
//teleport (teleport) package { import flash.media.*; public dynamic class teleport extends Sound { } }//package
Section 450
//TeleportBack (TeleportBack) package { import flash.display.*; public dynamic class TeleportBack extends MovieClip { } }//package
Section 451
//TeleportHint (TeleportHint) package { import States.PlayState.*; public dynamic class TeleportHint extends HintText { } }//package
Section 452
//ThatBecauseIAmBlack (ThatBecauseIAmBlack) package { import flash.display.*; public dynamic class ThatBecauseIAmBlack extends MovieClip { } }//package
Section 453
//TheAmountOfArrows (TheAmountOfArrows) package { import States.PlayState.*; public dynamic class TheAmountOfArrows extends HintText { } }//package
Section 454
//ThisIsBonusHint (ThisIsBonusHint) package { import States.PlayState.*; public dynamic class ThisIsBonusHint extends HintText { } }//package
Section 455
//ThisIsHedhehogHint (ThisIsHedhehogHint) package { import States.PlayState.*; public dynamic class ThisIsHedhehogHint extends HintText { } }//package
Section 456
//ThisIsSingleHedhehogHint (ThisIsSingleHedhehogHint) package { import States.PlayState.*; public dynamic class ThisIsSingleHedhehogHint extends HintText { } }//package
Section 457
//ThisIsTNTHint (ThisIsTNTHint) package { import States.PlayState.*; public dynamic class ThisIsTNTHint extends HintText { } }//package
Section 458
//TimeIsOutEffect (TimeIsOutEffect) package { import States.PlayState.*; public dynamic class TimeIsOutEffect extends OutOfArrowsEffect { } }//package
Section 459
//ToPullBowHint (ToPullBowHint) package { import States.PlayState.*; public dynamic class ToPullBowHint extends HintText { } }//package
Section 460
//Torso1_1 (Torso1_1) package { import flash.display.*; public dynamic class Torso1_1 extends MovieClip { } }//package
Section 461
//Torso1_2 (Torso1_2) package { import flash.display.*; public dynamic class Torso1_2 extends MovieClip { } }//package
Section 462
//Torso1_3 (Torso1_3) package { import flash.display.*; public dynamic class Torso1_3 extends MovieClip { } }//package
Section 463
//Torso1_4 (Torso1_4) package { import flash.display.*; public dynamic class Torso1_4 extends MovieClip { } }//package
Section 464
//Torso2_1 (Torso2_1) package { import flash.display.*; public dynamic class Torso2_1 extends MovieClip { } }//package
Section 465
//Torso2_2 (Torso2_2) package { import flash.display.*; public dynamic class Torso2_2 extends MovieClip { } }//package
Section 466
//Torso2_3 (Torso2_3) package { import flash.display.*; public dynamic class Torso2_3 extends MovieClip { } }//package
Section 467
//Torso2_4 (Torso2_4) package { import flash.display.*; public dynamic class Torso2_4 extends MovieClip { } }//package
Section 468
//Torso3_1 (Torso3_1) package { import flash.display.*; public dynamic class Torso3_1 extends MovieClip { } }//package
Section 469
//Torso3_2 (Torso3_2) package { import flash.display.*; public dynamic class Torso3_2 extends MovieClip { } }//package
Section 470
//Torso3_3 (Torso3_3) package { import flash.display.*; public dynamic class Torso3_3 extends MovieClip { } }//package
Section 471
//Torso3_4 (Torso3_4) package { import flash.display.*; public dynamic class Torso3_4 extends MovieClip { } }//package
Section 472
//tree_1 (tree_1) package { import flash.display.*; public dynamic class tree_1 extends MovieClip { } }//package
Section 473
//tree_10 (tree_10) package { import flash.display.*; public dynamic class tree_10 extends MovieClip { } }//package
Section 474
//tree_2 (tree_2) package { import flash.display.*; public dynamic class tree_2 extends MovieClip { } }//package
Section 475
//tree_3 (tree_3) package { import flash.display.*; public dynamic class tree_3 extends MovieClip { } }//package
Section 476
//tree_4 (tree_4) package { import flash.display.*; public dynamic class tree_4 extends MovieClip { } }//package
Section 477
//tree_5 (tree_5) package { import flash.display.*; public dynamic class tree_5 extends MovieClip { } }//package
Section 478
//tree_6 (tree_6) package { import flash.display.*; public dynamic class tree_6 extends MovieClip { } }//package
Section 479
//tree_7 (tree_7) package { import flash.display.*; public dynamic class tree_7 extends MovieClip { } }//package
Section 480
//tree_8 (tree_8) package { import flash.display.*; public dynamic class tree_8 extends MovieClip { } }//package
Section 481
//tree_9 (tree_9) package { import flash.display.*; public dynamic class tree_9 extends MovieClip { } }//package
Section 482
//TripleSave (TripleSave) package { import flash.display.*; public dynamic class TripleSave extends MovieClip { } }//package
Section 483
//TryToAimHint (TryToAimHint) package { import States.PlayState.*; public dynamic class TryToAimHint extends HintText { } }//package
Section 484
//TryToShotMyLegsToShakeMeCloud (TryToShotMyLegsToShakeMeCloud) package { import flash.display.*; public dynamic class TryToShotMyLegsToShakeMeCloud extends MovieClip { } }//package
Section 485
//UrlLockedStateView (UrlLockedStateView) package { import flash.display.*; import flash.text.*; public dynamic class UrlLockedStateView extends MovieClip { public var m_notDoppler:TextField; } }//package
Section 486
//UseYouForceLuke (UseYouForceLuke) package { import flash.display.*; public dynamic class UseYouForceLuke extends MovieClip { } }//package
Section 487
//vulture_cry_1 (vulture_cry_1) package { import flash.media.*; public dynamic class vulture_cry_1 extends Sound { } }//package
Section 488
//vulture_cry_2 (vulture_cry_2) package { import flash.media.*; public dynamic class vulture_cry_2 extends Sound { } }//package
Section 489
//vulture_cry_3 (vulture_cry_3) package { import flash.media.*; public dynamic class vulture_cry_3 extends Sound { } }//package
Section 490
//vulture_cry_4 (vulture_cry_4) package { import flash.media.*; public dynamic class vulture_cry_4 extends Sound { } }//package
Section 491
//VultureBend (VultureBend) package { import flash.display.*; public dynamic class VultureBend extends MovieClip { public var clip:MovieClip; } }//package
Section 492
//VultureDie (VultureDie) package { import flash.display.*; public dynamic class VultureDie extends MovieClip { public var clip:MovieClip; } }//package
Section 493
//VultureFeathers (VultureFeathers) package { import States.PlayState.*; public dynamic class VultureFeathers extends AutoreleaseClip { } }//package
Section 494
//VultureHere (VultureHere) package { import flash.display.*; public dynamic class VultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 495
//VultureJump (VultureJump) package { import flash.display.*; public dynamic class VultureJump extends MovieClip { public var clip:MovieClip; } }//package
Section 496
//VultureShootingRules (VultureShootingRules) package { import States.PlayState.*; public dynamic class VultureShootingRules extends AutoreleaseClip { } }//package
Section 497
//win_sound (win_sound) package { import flash.media.*; public dynamic class win_sound extends Sound { } }//package
Section 498
//WinStateView (WinStateView) package { import flash.display.*; import flash.text.*; public dynamic class WinStateView extends MovieClip { public var m_buttonMenu:SimpleButton; public var m_star:MovieClip; public var m_currentScore:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_levelNum:TextField; public var m_buttonNext:SimpleButton; public var m_arrowsUsed:MovieClip; public var m_bestScore:MovieClip; } }//package
Section 499
//YesNoStateView (YesNoStateView) package { import flash.display.*; public dynamic class YesNoStateView extends MovieClip { public var m_buttonYes:SimpleButton; public var m_buttonNo:SimpleButton; } }//package
Section 500
//YouWillGetAStar (YouWillGetAStar) package { import States.PlayState.*; public dynamic class YouWillGetAStar extends HintText { } }//package
Section 501
//блик_1 (блик_1) package { public dynamic class блик_1 extends AsyncClip { } }//package
Section 502
//блик_10 (блик_10) package { public dynamic class блик_10 extends AsyncClip { } }//package
Section 503
//блик_11 (блик_11) package { public dynamic class блик_11 extends AsyncClip { } }//package
Section 504
//блик_12 (блик_12) package { public dynamic class блик_12 extends AsyncClip { } }//package
Section 505
//блик_13 (блик_13) package { public dynamic class блик_13 extends AsyncClip { } }//package
Section 506
//блик_14 (блик_14) package { public dynamic class блик_14 extends AsyncClip { } }//package
Section 507
//блик_15 (блик_15) package { public dynamic class блик_15 extends AsyncClip { } }//package
Section 508
//блик_2 (блик_2) package { public dynamic class блик_2 extends AsyncClip { } }//package
Section 509
//блик_3 (блик_3) package { public dynamic class блик_3 extends AsyncClip { } }//package
Section 510
//блик_4 (блик_4) package { public dynamic class блик_4 extends AsyncClip { } }//package
Section 511
//блик_5 (блик_5) package { public dynamic class блик_5 extends AsyncClip { } }//package
Section 512
//блик_6 (блик_6) package { public dynamic class блик_6 extends AsyncClip { } }//package
Section 513
//блик_7 (блик_7) package { public dynamic class блик_7 extends AsyncClip { } }//package
Section 514
//блик_8 (блик_8) package { public dynamic class блик_8 extends AsyncClip { } }//package
Section 515
//блик_9 (блик_9) package { public dynamic class блик_9 extends AsyncClip { } }//package
Section 516
//звёздочка (звёздочка) package { public dynamic class звёздочка extends AsyncClip { } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClip {Background}Uses:1Used by:141 463 697 842 1145 1241 1263 1298 1380 1398 1421 1458 1471 1496 1498 1499 1500 1501 1503 1504 1505 1506 1507 1508 1510 1511 1512 1513 1514 1517 1520 1522 1524 1529 1532 1538 1546 1547 1548 1549 1564 1565
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClipUses:3Used by:5
Symbol 5 MovieClip {Cloud3}Uses:4Used by:141 1145 1263 1298 1398 1421 1432 1435 1436 1439 1458 1462 1509 1511 1512 1513 1520 1522 1532 1546 1547 1548 1549 1564 1565
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClipUses:6Used by:8
Symbol 8 MovieClip {Cloud5}Uses:7Used by:141 842 1145 1263 1298 1324 1398 1421 1442 1444 1458 1471 1496 1499 1500 1506 1508 1509 1510 1512 1513 1514 1517 1520 1522 1529 1532 1533 1538 1546 1547 1548 1549 1552 1565
Symbol 9 GraphicUsed by:14
Symbol 10 GraphicUsed by:11
Symbol 11 MovieClipUses:10Used by:14
Symbol 12 GraphicUsed by:14
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClipUses:9 11 12 13Used by:18
Symbol 15 FontUsed by:16 205 398 508 584 587 588 589 590 604 755 761 764 772 775 812 815 818 862 863 877 881 883 885 887 889 891 901 917 921 934 974 1553
Symbol 16 EditableTextUses:15 939Used by:17
Symbol 17 MovieClipUses:16Used by:18
Symbol 18 MovieClipUses:14 17Used by:141
Symbol 19 GraphicUsed by:20 25 196 200 204 393 397 579 583 606 609 611 683 686 690 779 783 854 857 861 876 952
Symbol 20 MovieClipUses:19Used by:24 25 682 683
Symbol 21 GraphicUsed by:22 23 25
Symbol 22 MovieClipUses:21Used by:25
Symbol 23 MovieClipUses:21Used by:24 25
Symbol 24 MovieClipUses:20 23Used by:25
Symbol 25 ButtonUses:20 22 24 23 19 21Used by:141 671
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClipUses:26Used by:28
Symbol 28 MovieClip {Cloud6}Uses:27Used by:141 523 697 1145 1298 1324 1380 1398 1421 1464 1496 1498 1499 1500 1504 1508 1510 1512 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1546 1547 1548 1549 1564
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClipUses:29Used by:31
Symbol 31 MovieClip {Cloud1}Uses:30Used by:141 842 1145 1241 1263 1298 1324 1380 1398 1421 1442 1444 1458 1462 1499 1501 1504 1505 1506 1507 1508 1509 1511 1513 1514 1517 1520 1521 1524 1532 1546 1547 1548 1549 1552
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClipUses:32Used by:34
Symbol 34 MovieClip {Cloud4}Uses:33Used by:141 1145 1324 1380 1462 1464 1471 1498 1500 1505 1507 1510 1511 1514 1520 1521 1529 1533 1538 1546 1547 1548 1549 1552
Symbol 35 GraphicUsed by:36
Symbol 36 MovieClipUses:35Used by:37
Symbol 37 MovieClip {Cloud7}Uses:36Used by:141 523 842 1145 1241 1432 1435 1436 1439 1442 1444 1464 1471 1496 1498 1500 1501 1505 1507 1508 1510 1512 1521 1522 1532 1533 1538 1546 1547 1548 1549 1552 1565
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:38Used by:40
Symbol 40 MovieClip {Cloud8}Uses:39Used by:141 697 1145 1241 1380 1398 1421 1432 1435 1436 1439 1442 1444 1464 1471 1496 1500 1501 1504 1506 1507 1509 1512 1517 1529 1546 1547 1548 1549 1564
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClipUses:41Used by:43
Symbol 43 MovieClip {Cloud0}Uses:42Used by:141 697 1145 1241 1263 1324 1432 1435 1436 1439 1458 1462 1464 1499 1501 1504 1506 1509 1511 1513 1521 1524 1546 1547 1548 1549 1564 1565
Symbol 44 GraphicUsed by:48
Symbol 45 GraphicUsed by:48
Symbol 46 GraphicUsed by:48
Symbol 47 GraphicUsed by:48
Symbol 48 MovieClip {Torso3_3}Uses:44 45 46 47Used by:141
Symbol 49 GraphicUsed by:53
Symbol 50 GraphicUsed by:53
Symbol 51 GraphicUsed by:53
Symbol 52 GraphicUsed by:53
Symbol 53 MovieClip {Torso2_3}Uses:49 50 51 52Used by:141
Symbol 54 GraphicUsed by:56
Symbol 55 GraphicUsed by:56
Symbol 56 MovieClip {Torso1_3}Uses:54 55Used by:141
Symbol 57 GraphicUsed by:61
Symbol 58 GraphicUsed by:61
Symbol 59 GraphicUsed by:61
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClip {RightUpperLeg_3}Uses:57 58 59 60Used by:141
Symbol 62 GraphicUsed by:66
Symbol 63 GraphicUsed by:66
Symbol 64 GraphicUsed by:66
Symbol 65 GraphicUsed by:66
Symbol 66 MovieClip {RightUpperHand_3}Uses:62 63 64 65Used by:141
Symbol 67 GraphicUsed by:71
Symbol 68 GraphicUsed by:71
Symbol 69 GraphicUsed by:71
Symbol 70 GraphicUsed by:71
Symbol 71 MovieClip {RightLowerLeg_3}Uses:67 68 69 70Used by:141
Symbol 72 GraphicUsed by:76
Symbol 73 GraphicUsed by:76
Symbol 74 GraphicUsed by:76
Symbol 75 GraphicUsed by:76
Symbol 76 MovieClip {RightLowerHand_3}Uses:72 73 74 75Used by:141
Symbol 77 GraphicUsed by:81
Symbol 78 GraphicUsed by:81
Symbol 79 GraphicUsed by:81
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClip {LeftUpperLeg_3}Uses:77 78 79 80Used by:141
Symbol 82 GraphicUsed by:86
Symbol 83 GraphicUsed by:86
Symbol 84 GraphicUsed by:86
Symbol 85 GraphicUsed by:86
Symbol 86 MovieClip {LeftUpperHand_3}Uses:82 83 84 85Used by:141
Symbol 87 GraphicUsed by:91
Symbol 88 GraphicUsed by:91
Symbol 89 GraphicUsed by:91
Symbol 90 GraphicUsed by:91
Symbol 91 MovieClip {LeftLowerLeg_3}Uses:87 88 89 90Used by:141
Symbol 92 GraphicUsed by:96
Symbol 93 GraphicUsed by:96
Symbol 94 GraphicUsed by:96
Symbol 95 GraphicUsed by:96
Symbol 96 MovieClip {LeftLowerHand_3}Uses:92 93 94 95Used by:141
Symbol 97 GraphicUsed by:98
Symbol 98 MovieClip {GibbetObliquely}Uses:97Used by:113 1241 1298 1324 1380 1432 1442 1444 1453 1455 1458 1462 1471 1496 1498 1505 1509 1520 1521 1522 1529 1533 1538 1564 1565
Symbol 99 GraphicUsed by:100
Symbol 100 MovieClip {GibbetColumn}Uses:99Used by:113 1241 1263 1298 1324 1380 1398 1421 1432 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1500 1504 1505 1509 1511 1512 1513 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1564 1565
Symbol 101 GraphicUsed by:105
Symbol 102 GraphicUsed by:103
Symbol 103 MovieClipUses:102Used by:105
Symbol 104 GraphicUsed by:105
Symbol 105 MovieClipUses:101 103 104Used by:106
Symbol 106 MovieClip {GibbetGround}Uses:105Used by:113 1380 1442 1453 1458 1462 1496 1504 1512 1520 1524 1529
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClip {GibbetStick}Uses:107Used by:113 1241 1263 1298 1324 1380 1398 1421 1432 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1500 1504 1505 1509 1511 1512 1513 1517 1520 1521 1522 1524 1529 1532 1533 1538 1564 1565
Symbol 109 GraphicUsed by:110 486
Symbol 110 MovieClip {Screw}Uses:109Used by:113 1241 1263 1298 1324 1380 1398 1421 1432 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1500 1504 1505 1509 1511 1512 1513 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1564 1565
Symbol 111 GraphicUsed by:112
Symbol 112 MovieClip {RopeRings}Uses:111Used by:113 1241 1263 1298 1324 1380 1398 1421 1432 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1500 1504 1505 1509 1511 1512 1513 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1564 1565
Symbol 113 MovieClipUses:98 100 106 108 110 112Used by:141 1145
Symbol 114 GraphicUsed by:115
Symbol 115 MovieClipUses:114Used by:141 1552
Symbol 116 GraphicUsed by:117
Symbol 117 MovieClipUses:116Used by:119
Symbol 118 GraphicUsed by:119 797
Symbol 119 Button {CloseCross}Uses:117 118Used by:141 1552
Symbol 120 GraphicUsed by:121
Symbol 121 MovieClip {Rope}Uses:120Used by:141
Symbol 122 GraphicUsed by:134
Symbol 123 GraphicUsed by:134
Symbol 124 GraphicUsed by:134
Symbol 125 GraphicUsed by:134
Symbol 126 GraphicUsed by:134
Symbol 127 GraphicUsed by:134
Symbol 128 GraphicUsed by:134
Symbol 129 GraphicUsed by:134
Symbol 130 GraphicUsed by:134
Symbol 131 GraphicUsed by:134
Symbol 132 GraphicUsed by:134
Symbol 133 GraphicUsed by:134
Symbol 134 MovieClip {FaceColors_3}Uses:122 123 124 125 126 127 128 129 130 131 132 133Used by:141
Symbol 135 FontUsed by:136 137 138 139 422 423
Symbol 136 TextUses:135Used by:140
Symbol 137 TextUses:135Used by:140
Symbol 138 TextUses:135Used by:140
Symbol 139 TextUses:135Used by:140
Symbol 140 ButtonUses:136 137 138 139Used by:141 523 697 1145
Symbol 141 MovieClip {States.CurrentPreloaderState}Uses:2 5 8 18 25 28 31 34 37 40 43 48 53 56 61 66 71 76 81 86 91 96 113 115 119 121 134 140Used by:Timeline
Symbol 142 FontUsed by:143 144
Symbol 143 TextUses:142Used by:145
Symbol 144 TextUses:142Used by:145
Symbol 145 MovieClip {Gibbets_II_fla.highscoreloader_54}Uses:143 144Used by:Timeline
Symbol 146 Sound {win_sound}
Symbol 147 Sound {vulture_cry_4}
Symbol 148 Sound {vulture_cry_3}
Symbol 149 Sound {vulture_cry_2}
Symbol 150 Sound {vulture_cry_1}
Symbol 151 Sound {teleport}
Symbol 152 Sound {tape_rope_2}
Symbol 153 Sound {tape_rope_1}
Symbol 154 Sound {tape_rope_0}
Symbol 155 Sound {sun_voice}
Symbol 156 Sound {stick_in_wood}
Symbol 157 Sound {stick_in_body_2}
Symbol 158 Sound {stick_in_body_1}
Symbol 159 Sound {stick_in_body_0}
Symbol 160 Sound {points}
Symbol 161 Sound {perfect_star}
Symbol 162 Sound {moo}
Symbol 163 Sound {main_menu_music}
Symbol 164 Sound {main_menu_arrow_sound}
Symbol 165 Sound {lose_sound}
Symbol 166 Sound {exploison}
Symbol 167 Sound {death_cry}
Symbol 168 Sound {cry_7}
Symbol 169 Sound {cry_6}
Symbol 170 Sound {cry_5}
Symbol 171 Sound {cry_4}
Symbol 172 Sound {cry_3}
Symbol 173 Sound {cry_2}
Symbol 174 Sound {cry_1}
Symbol 175 Sound {cry_0}
Symbol 176 Sound {click}
Symbol 177 Sound {bow_shoot}
Symbol 178 Sound {arrow_ghost}
Symbol 179 Sound {ambient_2}
Symbol 180 Sound {ambient_1}
Symbol 181 Sound {add_arrows_sound_1}
Symbol 182 Sound {add_arrows_sound_0}
Symbol 183 Sound {SponsorMusic}
Symbol 184 GraphicUsed by:185
Symbol 185 MovieClipUses:184Used by:207
Symbol 186 GraphicUsed by:207
Symbol 187 GraphicUsed by:207
Symbol 188 GraphicUsed by:189 847
Symbol 189 MovieClipUses:188Used by:194
Symbol 190 GraphicUsed by:191
Symbol 191 MovieClipUses:190Used by:194
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClipUses:192Used by:194
Symbol 194 MovieClipUses:189 191 193Used by:207
Symbol 195 GraphicUsed by:207
Symbol 196 MovieClipUses:19Used by:199 200 203 204
Symbol 197 GraphicUsed by:198 200
Symbol 198 MovieClipUses:197Used by:199 200
Symbol 199 MovieClipUses:196 198Used by:200
Symbol 200 ButtonUses:196 198 199 19 197Used by:207
Symbol 201 GraphicUsed by:202 204
Symbol 202 MovieClipUses:201Used by:203 204
Symbol 203 MovieClipUses:196 202Used by:204
Symbol 204 ButtonUses:196 202 203 19 201Used by:207
Symbol 205 TextUses:15Used by:206
Symbol 206 MovieClipUses:205Used by:207
Symbol 207 MovieClip {YesNoStateView}Uses:185 186 187 194 195 200 204 206
Symbol 208 GraphicUsed by:218
Symbol 209 GraphicUsed by:218
Symbol 210 GraphicUsed by:218
Symbol 211 GraphicUsed by:218
Symbol 212 GraphicUsed by:218
Symbol 213 GraphicUsed by:218
Symbol 214 GraphicUsed by:218
Symbol 215 GraphicUsed by:218
Symbol 216 GraphicUsed by:218
Symbol 217 GraphicUsed by:218
Symbol 218 MovieClip {FaceColors_4}Uses:208 209 210 211 212 213 214 215 216 217
Symbol 219 GraphicUsed by:231
Symbol 220 GraphicUsed by:231
Symbol 221 GraphicUsed by:231
Symbol 222 GraphicUsed by:231
Symbol 223 GraphicUsed by:231
Symbol 224 GraphicUsed by:231
Symbol 225 GraphicUsed by:231
Symbol 226 GraphicUsed by:231
Symbol 227 GraphicUsed by:231
Symbol 228 GraphicUsed by:231
Symbol 229 GraphicUsed by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClip {FaceColors_2}Uses:219 220 221 222 223 224 225 226 227 228 229 230
Symbol 232 GraphicUsed by:245
Symbol 233 GraphicUsed by:245
Symbol 234 GraphicUsed by:245
Symbol 235 GraphicUsed by:245
Symbol 236 GraphicUsed by:245
Symbol 237 GraphicUsed by:245
Symbol 238 GraphicUsed by:245
Symbol 239 GraphicUsed by:245
Symbol 240 GraphicUsed by:245
Symbol 241 GraphicUsed by:245
Symbol 242 GraphicUsed by:245
Symbol 243 GraphicUsed by:245
Symbol 244 GraphicUsed by:245
Symbol 245 MovieClip {FaceColors_1}Uses:232 233 234 235 236 237 238 239 240 241 242 243 244
Symbol 246 GraphicUsed by:247
Symbol 247 MovieClipUses:246Used by:248
Symbol 248 MovieClip {TripleSave}Uses:247
Symbol 249 GraphicUsed by:250
Symbol 250 MovieClipUses:249Used by:251
Symbol 251 MovieClip {DoubleSave}Uses:250
Symbol 252 GraphicUsed by:257
Symbol 253 GraphicUsed by:254
Symbol 254 MovieClipUses:253Used by:257
Symbol 255 FontUsed by:256 511 512 513 515 517 518 519 521 529 531 536 539 542 545 547 549 552 554 556 558 613
Symbol 256 EditableTextUses:255Used by:257
Symbol 257 MovieClip {Hint}Uses:252 254 256
Symbol 258 GraphicUsed by:259
Symbol 259 MovieClipUses:258Used by:290
Symbol 260 GraphicUsed by:285
Symbol 261 GraphicUsed by:263
Symbol 262 GraphicUsed by:263
Symbol 263 MovieClipUses:261 262Used by:273 285
Symbol 264 GraphicUsed by:265
Symbol 265 MovieClipUses:264Used by:266
Symbol 266 MovieClipUses:265Used by:273 285
Symbol 267 GraphicUsed by:269
Symbol 268 GraphicUsed by:269
Symbol 269 MovieClipUses:267 268Used by:273 285
Symbol 270 GraphicUsed by:285
Symbol 271 GraphicUsed by:273
Symbol 272 GraphicUsed by:273
Symbol 273 MovieClipUses:271 263 266 269 272Used by:285
Symbol 274 GraphicUsed by:276 281
Symbol 275 GraphicUsed by:276 281
Symbol 276 MovieClipUses:274 275Used by:285
Symbol 277 GraphicUsed by:279 280
Symbol 278 GraphicUsed by:279 280
Symbol 279 MovieClipUses:277 278Used by:285
Symbol 280 MovieClipUses:277 278Used by:285
Symbol 281 MovieClipUses:274 275Used by:285
Symbol 282 GraphicUsed by:285
Symbol 283 GraphicUsed by:285
Symbol 284 GraphicUsed by:285
Symbol 285 MovieClipUses:260 263 266 269 270 273 276 279 280 281 282 283 284Used by:290
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClipUses:286Used by:288 289
Symbol 288 MovieClipUses:287Used by:290
Symbol 289 MovieClipUses:287Used by:290
Symbol 290 MovieClip {StarrySky}Uses:259 285 288 289Used by:401 1432 1435 1436 1439 1442 1552
Symbol 291 GraphicUsed by:292
Symbol 292 MovieClipUses:291Used by:293 294 348 351
Symbol 293 MovieClipUses:292Used by:401
Symbol 294 MovieClipUses:292Used by:401
Symbol 295 GraphicUsed by:296
Symbol 296 MovieClipUses:295Used by:297 298 354 357
Symbol 297 MovieClipUses:296Used by:401
Symbol 298 MovieClipUses:296Used by:401
Symbol 299 GraphicUsed by:302
Symbol 300 GraphicUsed by:301
Symbol 301 MovieClipUses:300Used by:302
Symbol 302 MovieClipUses:299 301Used by:303 360
Symbol 303 MovieClipUses:302Used by:401
Symbol 304 GraphicUsed by:307
Symbol 305 GraphicUsed by:306
Symbol 306 MovieClipUses:305Used by:307 325 334
Symbol 307 MovieClipUses:304 306Used by:308 363
Symbol 308 MovieClipUses:307Used by:401
Symbol 309 GraphicUsed by:310
Symbol 310 MovieClipUses:309Used by:311 312 366 369
Symbol 311 MovieClipUses:310Used by:401
Symbol 312 MovieClipUses:310Used by:401
Symbol 313 GraphicUsed by:318
Symbol 314 GraphicUsed by:317
Symbol 315 GraphicUsed by:316
Symbol 316 MovieClipUses:315Used by:317
Symbol 317 MovieClipUses:314 316Used by:318
Symbol 318 MovieClipUses:313 317Used by:319 320 372 375
Symbol 319 MovieClipUses:318Used by:401
Symbol 320 MovieClipUses:318Used by:401
Symbol 321 GraphicUsed by:322
Symbol 322 MovieClipUses:321Used by:323 378
Symbol 323 MovieClipUses:322Used by:401
Symbol 324 GraphicUsed by:325
Symbol 325 MovieClipUses:324 306Used by:326 382
Symbol 326 MovieClipUses:325Used by:401
Symbol 327 GraphicUsed by:331
Symbol 328 GraphicUsed by:329
Symbol 329 MovieClipUses:328Used by:331
Symbol 330 GraphicUsed by:331
Symbol 331 MovieClipUses:327 329 330Used by:332 386
Symbol 332 MovieClipUses:331Used by:401
Symbol 333 GraphicUsed by:334
Symbol 334 MovieClipUses:333 306Used by:335 345
Symbol 335 MovieClipUses:334Used by:401
Symbol 336 GraphicUsed by:337
Symbol 337 MovieClipUses:336Used by:338
Symbol 338 MovieClipUses:337Used by:401
Symbol 339 GraphicUsed by:341
Symbol 340 GraphicUsed by:341 347 350 353 356 359 362 365 368 371 374 377 380 384 391
Symbol 341 MovieClip {блик_13}Uses:339 340Used by:345
Symbol 342 GraphicUsed by:343 841 912
Symbol 343 MovieClip {звёздочка}Uses:342Used by:345 348 351 354 357 360 363 366 369 372 375 378 382 386 392 841 912
Symbol 344 GraphicUsed by:345 348 351 354 357 360 363 366 369 372 375 378
Symbol 345 MovieClip {ach_14}Uses:334 341 343 344Used by:401
Symbol 346 GraphicUsed by:347
Symbol 347 MovieClip {блик_1}Uses:346 340Used by:348
Symbol 348 MovieClip {ach_1}Uses:292 347 343 344Used by:401
Symbol 349 GraphicUsed by:350
Symbol 350 MovieClip {блик_2}Uses:349 340Used by:351
Symbol 351 MovieClip {ach_2}Uses:292 350 343 344Used by:401
Symbol 352 GraphicUsed by:353
Symbol 353 MovieClip {блик_3}Uses:352 340Used by:354
Symbol 354 MovieClip {ach_3}Uses:296 353 343 344Used by:401
Symbol 355 GraphicUsed by:356
Symbol 356 MovieClip {блик_4}Uses:355 340Used by:357
Symbol 357 MovieClip {ach_4}Uses:296 356 343 344Used by:401
Symbol 358 GraphicUsed by:359
Symbol 359 MovieClip {блик_5}Uses:358 340Used by:360
Symbol 360 MovieClip {ach_5}Uses:302 359 343 344Used by:401
Symbol 361 GraphicUsed by:362
Symbol 362 MovieClip {блик_6}Uses:361 340Used by:363
Symbol 363 MovieClip {ach_6}Uses:307 362 343 344Used by:401
Symbol 364 GraphicUsed by:365
Symbol 365 MovieClip {блик_7}Uses:364 340Used by:366
Symbol 366 MovieClip {ach_7}Uses:310 365 343 344Used by:401
Symbol 367 GraphicUsed by:368
Symbol 368 MovieClip {блик_8}Uses:367 340Used by:369
Symbol 369 MovieClip {ach_8}Uses:310 368 343 344Used by:401
Symbol 370 GraphicUsed by:371
Symbol 371 MovieClip {блик_14}Uses:370 340Used by:372
Symbol 372 MovieClip {ach_9}Uses:318 371 343 344Used by:401
Symbol 373 GraphicUsed by:374
Symbol 374 MovieClip {блик_9}Uses:373 340Used by:375
Symbol 375 MovieClip {ach_10}Uses:318 374 343 344Used by:401
Symbol 376 GraphicUsed by:377
Symbol 377 MovieClip {блик_10}Uses:376 340Used by:378
Symbol 378 MovieClip {ach_11}Uses:322 377 343 344Used by:401
Symbol 379 GraphicUsed by:380
Symbol 380 MovieClip {блик_11}Uses:379 340Used by:382
Symbol 381 GraphicUsed by:382
Symbol 382 MovieClip {ach_12}Uses:325 380 343 381Used by:401
Symbol 383 GraphicUsed by:384
Symbol 384 MovieClip {блик_12}Uses:383 340Used by:386
Symbol 385 GraphicUsed by:386
Symbol 386 MovieClip {ach_13}Uses:331 384 343 385Used by:401
Symbol 387 GraphicUsed by:388
Symbol 388 MovieClipUses:387Used by:392
Symbol 389 GraphicUsed by:391
Symbol 390 GraphicUsed by:391
Symbol 391 MovieClip {блик_15}Uses:389 340 390Used by:392
Symbol 392 MovieClip {ach_15}Uses:388 343 391Used by:401
Symbol 393 MovieClipUses:19Used by:396 397 951 952
Symbol 394 GraphicUsed by:395 397 855 857
Symbol 395 MovieClipUses:394Used by:396 397
Symbol 396 MovieClipUses:393 395Used by:397
Symbol 397 ButtonUses:393 395 396 19 394Used by:401 523 842 953 1145 1552 1558
Symbol 398 TextUses:15Used by:400
Symbol 399 GraphicUsed by:400 509 773 1550
Symbol 400 MovieClipUses:398 399Used by:401
Symbol 401 MovieClip {AchievementsStateView}Uses:290 293 294 297 298 303 308 311 312 319 320 323 326 332 335 338 345 348 351 354 357 360 363 366 369 372 375 378 382 386 392 397 400
Symbol 402 GraphicUsed by:405
Symbol 403 GraphicUsed by:405
Symbol 404 GraphicUsed by:405
Symbol 405 MovieClip {HangerFace}Uses:402 403 404
Symbol 406 GraphicUsed by:410
Symbol 407 ShapeTweeningUsed by:409 410
Symbol 408 GraphicUsed by:409
Symbol 409 MovieClip {Gibbets_II_fla.introFlash_608}Uses:407 408Used by:410
Symbol 410 Button {IntroButton}Uses:406 409 407
Symbol 411 ShapeTweeningUsed by:426
Symbol 412 GraphicUsed by:426
Symbol 413 GraphicUsed by:426
Symbol 414 ShapeTweeningUsed by:426
Symbol 415 GraphicUsed by:426
Symbol 416 ShapeTweeningUsed by:426
Symbol 417 GraphicUsed by:426
Symbol 418 ShapeTweeningUsed by:426
Symbol 419 GraphicUsed by:426 1152 1541
Symbol 420 ShapeTweeningUsed by:426
Symbol 421 GraphicUsed by:426
Symbol 422 TextUses:135Used by:424
Symbol 423 TextUses:135Used by:424
Symbol 424 MovieClipUses:422 423Used by:426
Symbol 425 ShapeTweeningUsed by:426
Symbol 426 MovieClip {SponsorIntro}Uses:411 412 413 414 415 416 417 418 419 420 421 424 425
Symbol 427 GraphicUsed by:460
Symbol 428 GraphicUsed by:430
Symbol 429 GraphicUsed by:430
Symbol 430 MovieClipUses:428 429Used by:460 1418
Symbol 431 GraphicUsed by:460
Symbol 432 GraphicUsed by:460
Symbol 433 GraphicUsed by:460
Symbol 434 GraphicUsed by:460 1418
Symbol 435 GraphicUsed by:460 1418
Symbol 436 GraphicUsed by:439
Symbol 437 GraphicUsed by:439
Symbol 438 GraphicUsed by:439
Symbol 439 MovieClipUses:436 437 438Used by:460 1418
Symbol 440 GraphicUsed by:441
Symbol 441 MovieClipUses:440Used by:460 1418
Symbol 442 GraphicUsed by:460 1418
Symbol 443 GraphicUsed by:460 1418
Symbol 444 GraphicUsed by:460 1418
Symbol 445 GraphicUsed by:460 1418
Symbol 446 GraphicUsed by:460 1418
Symbol 447 GraphicUsed by:460
Symbol 448 GraphicUsed by:460
Symbol 449 GraphicUsed by:460
Symbol 450 GraphicUsed by:460
Symbol 451 GraphicUsed by:460
Symbol 452 GraphicUsed by:460
Symbol 453 GraphicUsed by:460
Symbol 454 GraphicUsed by:460
Symbol 455 GraphicUsed by:460
Symbol 456 GraphicUsed by:460
Symbol 457 GraphicUsed by:460
Symbol 458 GraphicUsed by:460
Symbol 459 GraphicUsed by:460
Symbol 460 MovieClip {CowCry}Uses:427 430 431 432 433 434 435 439 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459
Symbol 461 GraphicUsed by:462
Symbol 462 MovieClip {Back4}Uses:461Used by:463 1324 1444 1462 1464 1509 1521 1533
Symbol 463 MovieClipUses:2 462Used by:523
Symbol 464 GraphicUsed by:465
Symbol 465 MovieClipUses:464Used by:466
Symbol 466 MovieClip {Cloud9}Uses:465Used by:523 697 842 1241 1380 1398 1421 1442 1444 1471 1496 1498 1499 1500 1504 1505 1507 1509 1512 1517 1521 1522 1529 1533 1538 1546 1547 1548 1549 1552 1564
Symbol 467 GraphicUsed by:472
Symbol 468 FontUsed by:469 470 471 474 475 476 490 491 492 493 494
Symbol 469 TextUses:468Used by:472
Symbol 470 TextUses:468Used by:472
Symbol 471 TextUses:468Used by:472
Symbol 472 MovieClipUses:467 469 470 471Used by:523
Symbol 473 GraphicUsed by:477
Symbol 474 TextUses:468Used by:477
Symbol 475 TextUses:468Used by:477
Symbol 476 TextUses:468Used by:477
Symbol 477 MovieClipUses:473 474 475 476Used by:523
Symbol 478 GraphicUsed by:479
Symbol 479 MovieClip {HangerPoint}Uses:478Used by:523 1241 1263 1298 1324 1380 1398 1421 1432 1435 1436 1439 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1499 1500 1501 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1564 1565 1566 1567
Symbol 480 GraphicUsed by:481
Symbol 481 MovieClipUses:480Used by:523
Symbol 482 GraphicUsed by:483
Symbol 483 MovieClipUses:482Used by:523
Symbol 484 GraphicUsed by:485
Symbol 485 MovieClipUses:484Used by:523
Symbol 486 MovieClipUses:109Used by:523
Symbol 487 GraphicUsed by:488
Symbol 488 MovieClipUses:487Used by:523
Symbol 489 GraphicUsed by:495
Symbol 490 TextUses:468Used by:495
Symbol 491 TextUses:468Used by:495
Symbol 492 TextUses:468Used by:495
Symbol 493 TextUses:468Used by:495
Symbol 494 TextUses:468Used by:495
Symbol 495 MovieClipUses:489 490 491 492 493 494Used by:523
Symbol 496 GraphicUsed by:500
Symbol 497 GraphicUsed by:500
Symbol 498 GraphicUsed by:499
Symbol 499 MovieClipUses:498Used by:500
Symbol 500 MovieClipUses:496 497 499Used by:523
Symbol 501 GraphicUsed by:502
Symbol 502 MovieClipUses:501Used by:503
Symbol 503 MovieClipUses:502Used by:523
Symbol 504 GraphicUsed by:523
Symbol 505 GraphicUsed by:506
Symbol 506 MovieClipUses:505Used by:507
Symbol 507 MovieClip {Cloud2}Uses:506Used by:523 1241 1263 1298 1380 1398 1421 1458 1462 1505 1508 1511 1513 1514 1517 1524 1546 1547 1548 1549 1564
Symbol 508 TextUses:15Used by:509
Symbol 509 MovieClipUses:508 399Used by:510
Symbol 510 MovieClipUses:509Used by:523
Symbol 511 EditableTextUses:255Used by:516
Symbol 512 EditableTextUses:255Used by:516
Symbol 513 EditableTextUses:255Used by:516
Symbol 514 GraphicUsed by:516
Symbol 515 EditableTextUses:255Used by:516
Symbol 516 ButtonUses:511 512 513 514 515Used by:523
Symbol 517 EditableTextUses:255Used by:522
Symbol 518 EditableTextUses:255Used by:522
Symbol 519 EditableTextUses:255Used by:522
Symbol 520 GraphicUsed by:522
Symbol 521 EditableTextUses:255Used by:522
Symbol 522 ButtonUses:517 518 519 520 521Used by:523
Symbol 523 MovieClip {CreditsStateView}Uses:463 466 28 37 472 477 479 481 483 485 486 488 495 500 503 504 507 510 397 140 516 522
Symbol 524 GraphicUsed by:525
Symbol 525 MovieClip {MusicCloud}Uses:524
Symbol 526 GraphicUsed by:527
Symbol 527 MovieClip {GameCompleteCloud}Uses:526
Symbol 528 GraphicUsed by:530 532
Symbol 529 TextUses:255Used by:530
Symbol 530 MovieClip {MyBlogCloud}Uses:528 529
Symbol 531 TextUses:255Used by:532
Symbol 532 MovieClip {MyMailCloud}Uses:528 531
Symbol 533 GraphicUsed by:534
Symbol 534 MovieClip {ProgrammingCloud}Uses:533
Symbol 535 GraphicUsed by:537
Symbol 536 TextUses:255Used by:537
Symbol 537 MovieClip {MainMenuCloud3}Uses:535 536
Symbol 538 GraphicUsed by:540 614
Symbol 539 TextUses:255Used by:540
Symbol 540 MovieClip {MainMenuCloud2}Uses:538 539
Symbol 541 GraphicUsed by:543 548 550 555 557 559
Symbol 542 TextUses:255Used by:543
Symbol 543 MovieClip {TryToShotMyLegsToShakeMeCloud}Uses:541 542
Symbol 544 GraphicUsed by:546
Symbol 545 TextUses:255Used by:546
Symbol 546 MovieClip {TakeAdditionArrows}Uses:544 545
Symbol 547 TextUses:255Used by:548
Symbol 548 MovieClip {RobinHoodMadeThatMuchBetter}Uses:541 547
Symbol 549 TextUses:255Used by:550
Symbol 550 MovieClip {ThatBecauseIAmBlack}Uses:541 549
Symbol 551 GraphicUsed by:553
Symbol 552 TextUses:255Used by:553
Symbol 553 MovieClip {ILikeToHangCloud}Uses:551 552
Symbol 554 TextUses:255Used by:555
Symbol 555 MovieClip {HeadShotCloud}Uses:541 554
Symbol 556 TextUses:255Used by:557
Symbol 557 MovieClip {UseYouForceLuke}Uses:541 556
Symbol 558 TextUses:255Used by:559
Symbol 559 MovieClip {StopItCloud}Uses:541 558
Symbol 560 GraphicUsed by:561
Symbol 561 MovieClip {ShotTheRopeNotMeCloud}Uses:560
Symbol 562 GraphicUsed by:563
Symbol 563 MovieClip {ArtCloud}Uses:562
Symbol 564 GraphicUsed by:565
Symbol 565 MovieClipUses:564Used by:578
Symbol 566 GraphicUsed by:578
Symbol 567 GraphicUsed by:578
Symbol 568 GraphicUsed by:569
Symbol 569 MovieClipUses:568Used by:574
Symbol 570 GraphicUsed by:571
Symbol 571 MovieClipUses:570Used by:574
Symbol 572 GraphicUsed by:573
Symbol 573 MovieClipUses:572Used by:574
Symbol 574 MovieClipUses:569 571 573Used by:578
Symbol 575 GraphicUsed by:578
Symbol 576 GraphicUsed by:578
Symbol 577 GraphicUsed by:578
Symbol 578 MovieClipUses:565 566 567 574 575 576 577Used by:612
Symbol 579 MovieClipUses:19Used by:582 583
Symbol 580 GraphicUsed by:581 583
Symbol 581 MovieClipUses:580Used by:582 583
Symbol 582 MovieClipUses:579 581Used by:583
Symbol 583 ButtonUses:579 581 582 19 580Used by:612
Symbol 584 TextUses:15Used by:586
Symbol 585 GraphicUsed by:586
Symbol 586 MovieClipUses:584 585Used by:612
Symbol 587 TextUses:15Used by:612
Symbol 588 TextUses:15Used by:612
Symbol 589 TextUses:15Used by:612
Symbol 590 TextUses:15Used by:612
Symbol 591 GraphicUsed by:596
Symbol 592 GraphicUsed by:593
Symbol 593 MovieClipUses:592Used by:596
Symbol 594 GraphicUsed by:595
Symbol 595 MovieClipUses:594Used by:596
Symbol 596 MovieClip {CheckBox}Uses:591 593 595Used by:612 1582
Symbol 597 GraphicUsed by:600
Symbol 598 GraphicUsed by:599
Symbol 599 MovieClipUses:598Used by:600
Symbol 600 MovieClipUses:597 599Used by:603
Symbol 601 GraphicUsed by:602
Symbol 602 MovieClipUses:601Used by:603
Symbol 603 MovieClip {ScrollBar}Uses:600 602Used by:612
Symbol 604 TextUses:15Used by:605
Symbol 605 MovieClipUses:604Used by:612 1582
Symbol 606 MovieClipUses:19Used by:611
Symbol 607 GraphicUsed by:608 611
Symbol 608 MovieClipUses:607Used by:610 611
Symbol 609 MovieClipUses:19Used by:610 611
Symbol 610 MovieClipUses:609 608Used by:611
Symbol 611 ButtonUses:606 608 610 609 19 607Used by:612
Symbol 612 MovieClip {OptionsStateView}Uses:578 583 586 587 588 589 590 596 603 605 611
Symbol 613 TextUses:255Used by:614
Symbol 614 MovieClip {MainMenuCloud1}Uses:538 613Used by:697
Symbol 615 GraphicUsed by:697
Symbol 616 GraphicUsed by:697
Symbol 617 GraphicUsed by:620
Symbol 618 GraphicUsed by:620
Symbol 619 GraphicUsed by:620
Symbol 620 MovieClipUses:617 618 619Used by:697
Symbol 621 GraphicUsed by:622
Symbol 622 MovieClipUses:621Used by:623
Symbol 623 MovieClipUses:622Used by:697
Symbol 624 GraphicUsed by:625
Symbol 625 MovieClipUses:624Used by:697
Symbol 626 GraphicUsed by:697
Symbol 627 GraphicUsed by:628
Symbol 628 MovieClipUses:627Used by:697
Symbol 629 GraphicUsed by:630
Symbol 630 MovieClipUses:629Used by:697
Symbol 631 GraphicUsed by:651
Symbol 632 GraphicUsed by:651
Symbol 633 GraphicUsed by:651 721 742 744
Symbol 634 GraphicUsed by:651
Symbol 635 GraphicUsed by:651
Symbol 636 GraphicUsed by:651
Symbol 637 GraphicUsed by:651
Symbol 638 GraphicUsed by:651
Symbol 639 GraphicUsed by:651
Symbol 640 GraphicUsed by:651
Symbol 641 GraphicUsed by:651
Symbol 642 GraphicUsed by:651
Symbol 643 GraphicUsed by:651
Symbol 644 GraphicUsed by:651
Symbol 645 GraphicUsed by:651
Symbol 646 GraphicUsed by:647
Symbol 647 MovieClipUses:646Used by:651
Symbol 648 GraphicUsed by:651 721 742 744
Symbol 649 GraphicUsed by:650
Symbol 650 MovieClipUses:649Used by:651
Symbol 651 MovieClip {Gibbets_II_fla.shirt_39_519}Uses:631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 647 648 650Used by:697
Symbol 652 GraphicUsed by:658
Symbol 653 GraphicUsed by:658
Symbol 654 GraphicUsed by:658
Symbol 655 GraphicUsed by:658
Symbol 656 GraphicUsed by:658
Symbol 657 GraphicUsed by:658
Symbol 658 MovieClipUses:652 653 654 655 656 657Used by:697
Symbol 659 GraphicUsed by:660
Symbol 660 MovieClipUses:659Used by:697
Symbol 661 GraphicUsed by:662
Symbol 662 MovieClipUses:661Used by:663
Symbol 663 MovieClipUses:662Used by:664
Symbol 664 MovieClip {Gibbets_II_fla.shirt_41_524}Uses:663Used by:697
Symbol 665 GraphicUsed by:666
Symbol 666 MovieClipUses:665Used by:667
Symbol 667 MovieClipUses:666Used by:670
Symbol 668 GraphicUsed by:670
Symbol 669 GraphicUsed by:670
Symbol 670 MovieClip {Gibbets_II_fla.shirt_42_527}Uses:667 668 669Used by:697
Symbol 671 ButtonUses:25Used by:685
Symbol 672 GraphicUsed by:673 677 691 695 1140 1144
Symbol 673 MovieClipUses:672Used by:676 677
Symbol 674 GraphicUsed by:675 677
Symbol 675 MovieClipUses:674Used by:676 677
Symbol 676 MovieClipUses:673 675Used by:677
Symbol 677 ButtonUses:673 675 676 672 674Used by:678
Symbol 678 ButtonUses:677Used by:685
Symbol 679 GraphicUsed by:680 681 683
Symbol 680 MovieClipUses:679Used by:683
Symbol 681 MovieClipUses:679Used by:682 683
Symbol 682 MovieClipUses:20 681Used by:683
Symbol 683 ButtonUses:20 680 682 681 19 679Used by:684
Symbol 684 ButtonUses:683Used by:685
Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530}Uses:671 678 684Used by:697
Symbol 686 MovieClipUses:19Used by:689 690
Symbol 687 GraphicUsed by:688 690
Symbol 688 MovieClipUses:687Used by:689 690
Symbol 689 MovieClipUses:686 688Used by:690
Symbol 690 ButtonUses:686 688 689 19 687Used by:696
Symbol 691 MovieClipUses:672Used by:694 695
Symbol 692 GraphicUsed by:693 695
Symbol 693 MovieClipUses:692Used by:694 695
Symbol 694 MovieClipUses:691 693Used by:695
Symbol 695 ButtonUses:691 693 694 672 692Used by:696
Symbol 696 MovieClip {Gibbets_II_fla.LeftPanel_542}Uses:690 695Used by:697
Symbol 697 MovieClip {MainMenuStateView}Uses:615 2 43 28 466 40 616 620 623 625 626 628 630 651 658 660 664 670 685 696 614 140
Symbol 698 GraphicUsed by:699
Symbol 699 MovieClipUses:698Used by:700
Symbol 700 MovieClip {VultureShootingRules}Uses:699
Symbol 701 GraphicUsed by:702
Symbol 702 MovieClip {VultureFeathers}Uses:701
Symbol 703 GraphicUsed by:721
Symbol 704 GraphicUsed by:721
Symbol 705 GraphicUsed by:721
Symbol 706 GraphicUsed by:721
Symbol 707 GraphicUsed by:721
Symbol 708 GraphicUsed by:721
Symbol 709 GraphicUsed by:721
Symbol 710 GraphicUsed by:721
Symbol 711 GraphicUsed by:721
Symbol 712 GraphicUsed by:721
Symbol 713 GraphicUsed by:721
Symbol 714 GraphicUsed by:721
Symbol 715 GraphicUsed by:721
Symbol 716 GraphicUsed by:721
Symbol 717 GraphicUsed by:718
Symbol 718 MovieClipUses:717Used by:721
Symbol 719 GraphicUsed by:720
Symbol 720 MovieClipUses:719Used by:721
Symbol 721 MovieClip {Gibbets_II_fla.vulture_copy3_506}Uses:703 704 633 705 706 707 708 709 710 711 712 713 714 715 716 718 648 720Used by:722
Symbol 722 MovieClip {VultureDie}Uses:721
Symbol 723 GraphicUsed by:742 744
Symbol 724 GraphicUsed by:742 744
Symbol 725 GraphicUsed by:742 744
Symbol 726 GraphicUsed by:742 744
Symbol 727 GraphicUsed by:742 744
Symbol 728 GraphicUsed by:742 744
Symbol 729 GraphicUsed by:742 744
Symbol 730 GraphicUsed by:742 744
Symbol 731 GraphicUsed by:742 744
Symbol 732 GraphicUsed by:742 744
Symbol 733 GraphicUsed by:742 744
Symbol 734 GraphicUsed by:742 744
Symbol 735 GraphicUsed by:742 744
Symbol 736 GraphicUsed by:742 744
Symbol 737 GraphicUsed by:742 744
Symbol 738 GraphicUsed by:739
Symbol 739 MovieClipUses:738Used by:742 744
Symbol 740 GraphicUsed by:741
Symbol 741 MovieClipUses:740Used by:742 744
Symbol 742 MovieClipUses:723 724 725 633 726 727 728 729 730 731 732 733 734 735 736 737 739 648 741Used by:743
Symbol 743 MovieClip {VultureBend}Uses:742
Symbol 744 MovieClipUses:723 724 725 633 726 727 728 729 730 731 732 733 734 735 736 737 739 648 741Used by:745 1397 1443
Symbol 745 MovieClip {VultureJump}Uses:744
Symbol 746 GraphicUsed by:747
Symbol 747 MovieClip {States.GrifShooting.VultureShelf}Uses:746
Symbol 748 GraphicUsed by:749
Symbol 749 MovieClipUses:748Used by:750
Symbol 750 MovieClipUses:749Used by:754 760 763 767 811 814 817 819
Symbol 751 GraphicUsed by:754 767 811 819
Symbol 752 GraphicUsed by:753
Symbol 753 MovieClipUses:752Used by:754 760 763 767
Symbol 754 MovieClipUses:750 751 753Used by:768
Symbol 755 EditableTextUses:15 939Used by:768
Symbol 756 GraphicUsed by:757
Symbol 757 MovieClipUses:756Used by:758
Symbol 758 MovieClipUses:757Used by:768 820
Symbol 759 GraphicUsed by:760
Symbol 760 MovieClipUses:750 759 753Used by:768
Symbol 761 EditableTextUses:15 939Used by:768
Symbol 762 GraphicUsed by:763
Symbol 763 MovieClipUses:750 762 753Used by:768
Symbol 764 EditableTextUses:15 939Used by:768
Symbol 765 GraphicUsed by:766
Symbol 766 MovieClipUses:765Used by:767 819
Symbol 767 MovieClipUses:750 751 766 753Used by:768
Symbol 768 MovieClip {SelectLevelBonusButton}Uses:754 755 758 760 761 763 764 767Used by:821
Symbol 769 GraphicUsed by:770
Symbol 770 MovieClip {Back2}Uses:769Used by:842 1263 1298 1398 1471 1500 1508 1510 1517 1522 1529 1532
Symbol 771 GraphicUsed by:842
Symbol 772 TextUses:15Used by:773 1550
Symbol 773 MovieClipUses:772 399Used by:774
Symbol 774 MovieClipUses:773Used by:842
Symbol 775 EditableTextUses:15 939Used by:778
Symbol 776 GraphicUsed by:777
Symbol 777 MovieClipUses:776Used by:778
Symbol 778 MovieClipUses:775 777Used by:842 1145 1552
Symbol 779 MovieClipUses:19Used by:782 783
Symbol 780 GraphicUsed by:781 783
Symbol 781 MovieClipUses:780Used by:782 783
Symbol 782 MovieClipUses:779 781Used by:783
Symbol 783 ButtonUses:779 781 782 19 780Used by:842 1145 1552
Symbol 784 GraphicUsed by:791
Symbol 785 GraphicUsed by:790
Symbol 786 GraphicUsed by:787
Symbol 787 MovieClipUses:786Used by:790
Symbol 788 GraphicUsed by:790
Symbol 789 GraphicUsed by:790
Symbol 790 MovieClipUses:785 787 788 789Used by:791
Symbol 791 MovieClip {tree_4}Uses:784 790Used by:842 1458 1507 1512 1517 1564
Symbol 792 GraphicUsed by:793
Symbol 793 MovieClip {herb}Uses:792Used by:842 1263 1298 1398 1421 1453 1455 1456 1457 1458 1471 1496 1500 1503 1504 1505 1506 1507 1508 1510 1512 1513 1514 1517 1520 1522 1529 1538 1564 1565
Symbol 794 GraphicUsed by:797
Symbol 795 GraphicUsed by:796
Symbol 796 MovieClipUses:795Used by:797
Symbol 797 MovieClipUses:118 794 796Used by:801
Symbol 798 GraphicUsed by:799
Symbol 799 MovieClipUses:798Used by:800
Symbol 800 MovieClipUses:799Used by:801
Symbol 801 MovieClip {Ground}Uses:797 800Used by:842 1241 1263 1298 1324 1398 1421 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1500 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1517 1520 1521 1522 1529 1532 1533 1538 1564 1565
Symbol 802 GraphicUsed by:803
Symbol 803 MovieClipUses:802Used by:810
Symbol 804 GraphicUsed by:809
Symbol 805 GraphicUsed by:806
Symbol 806 MovieClipUses:805Used by:809 1269
Symbol 807 GraphicUsed by:809
Symbol 808 GraphicUsed by:809
Symbol 809 MovieClipUses:804 806 807 808Used by:810
Symbol 810 MovieClip {tree_6}Uses:803 809Used by:842 1298 1538
Symbol 811 MovieClipUses:750 751Used by:820
Symbol 812 EditableTextUses:15 939Used by:820
Symbol 813 GraphicUsed by:814
Symbol 814 MovieClipUses:750 813Used by:820
Symbol 815 EditableTextUses:15 939Used by:820
Symbol 816 GraphicUsed by:817
Symbol 817 MovieClipUses:750 816Used by:820
Symbol 818 EditableTextUses:15 939Used by:820
Symbol 819 MovieClipUses:750 751 766Used by:820
Symbol 820 MovieClip {SelectLevelButton}Uses:811 812 758 814 815 817 818 819Used by:821 1552
Symbol 821 MovieClipUses:820 768Used by:842
Symbol 822 GraphicUsed by:825 828 830
Symbol 823 GraphicUsed by:824 830
Symbol 824 MovieClipUses:823Used by:825
Symbol 825 MovieClipUses:822 824Used by:830
Symbol 826 GraphicUsed by:827
Symbol 827 MovieClipUses:826Used by:828
Symbol 828 MovieClipUses:822 827Used by:829
Symbol 829 MovieClip {LongShootArrow}Uses:828Used by:830
Symbol 830 Button {GuiArrow}Uses:825 829 822 823Used by:842 1552
Symbol 831 GraphicUsed by:832 841
Symbol 832 MovieClipUses:831Used by:833
Symbol 833 MovieClipUses:832Used by:838 840 841
Symbol 834 GraphicUsed by:835 841
Symbol 835 MovieClipUses:834Used by:838 840 841
Symbol 836 GraphicUsed by:841
Symbol 837 GraphicUsed by:838
Symbol 838 MovieClipUses:833 835 837Used by:841
Symbol 839 GraphicUsed by:840 841
Symbol 840 MovieClipUses:833 835 839Used by:841
Symbol 841 ButtonUses:833 835 836 343 838 840 831 834 839 342Used by:842 1552
Symbol 842 MovieClip {SelectLevelStateView}Uses:2 31 37 8 466 770 771 774 778 783 397 791 793 801 810 821 830 841
Symbol 843 GraphicUsed by:844
Symbol 844 MovieClipUses:843Used by:869 913 922
Symbol 845 GraphicUsed by:869
Symbol 846 GraphicUsed by:869
Symbol 847 MovieClipUses:188Used by:852
Symbol 848 GraphicUsed by:849
Symbol 849 MovieClipUses:848Used by:852
Symbol 850 GraphicUsed by:851
Symbol 851 MovieClipUses:850Used by:852
Symbol 852 MovieClipUses:847 849 851Used by:869 913 922
Symbol 853 GraphicUsed by:869
Symbol 854 MovieClipUses:19Used by:856 857 860 861 875 876
Symbol 855 MovieClipUses:394Used by:856 857
Symbol 856 MovieClipUses:854 855Used by:857
Symbol 857 ButtonUses:854 855 856 19 394Used by:869 913 922
Symbol 858 GraphicUsed by:859 861 950 952
Symbol 859 MovieClipUses:858Used by:860 861
Symbol 860 MovieClipUses:854 859Used by:861
Symbol 861 ButtonUses:854 859 860 19 858Used by:869
Symbol 862 TextUses:15Used by:866
Symbol 863 TextUses:15Used by:866
Symbol 864 GraphicUsed by:866
Symbol 865 GraphicUsed by:866
Symbol 866 MovieClipUses:862 863 864 865Used by:869
Symbol 867 GraphicUsed by:869
Symbol 868 GraphicUsed by:869
Symbol 869 MovieClip {LoseStateView}Uses:844 845 846 852 853 857 861 866 867 868
Symbol 870 GraphicUsed by:913
Symbol 871 GraphicUsed by:913
Symbol 872 GraphicUsed by:913
Symbol 873 GraphicUsed by:874 876
Symbol 874 MovieClipUses:873Used by:875 876
Symbol 875 MovieClipUses:854 874Used by:876
Symbol 876 ButtonUses:854 874 875 19 873Used by:913 922
Symbol 877 TextUses:15Used by:878
Symbol 878 MovieClipUses:877Used by:880
Symbol 879 GraphicUsed by:880
Symbol 880 MovieClipUses:878 879Used by:913 922
Symbol 881 TextUses:15Used by:882
Symbol 882 MovieClipUses:881Used by:913
Symbol 883 TextUses:15Used by:884
Symbol 884 MovieClipUses:883Used by:913 922
Symbol 885 TextUses:15Used by:886
Symbol 886 MovieClipUses:885Used by:913 922
Symbol 887 EditableTextUses:15 939Used by:888
Symbol 888 MovieClipUses:887Used by:913 922
Symbol 889 EditableTextUses:15 939Used by:890
Symbol 890 MovieClipUses:889Used by:913 922
Symbol 891 EditableTextUses:15 939Used by:892
Symbol 892 MovieClipUses:891Used by:913 922
Symbol 893 GraphicUsed by:913
Symbol 894 GraphicUsed by:913
Symbol 895 GraphicUsed by:896
Symbol 896 MovieClipUses:895Used by:900
Symbol 897 GraphicUsed by:898
Symbol 898 MovieClipUses:897Used by:899
Symbol 899 MovieClipUses:898Used by:900
Symbol 900 MovieClipUses:896 899Used by:913 922
Symbol 901 EditableTextUses:15 939Used by:913
Symbol 902 GraphicUsed by:903 912
Symbol 903 MovieClipUses:902Used by:904
Symbol 904 MovieClipUses:903Used by:909 911 912
Symbol 905 GraphicUsed by:906 912
Symbol 906 MovieClipUses:905Used by:909 911 912
Symbol 907 GraphicUsed by:912
Symbol 908 GraphicUsed by:909
Symbol 909 MovieClipUses:904 906 908Used by:912
Symbol 910 GraphicUsed by:911 912
Symbol 911 MovieClipUses:904 906 910Used by:912
Symbol 912 ButtonUses:904 906 907 343 909 911 902 905 910 342Used by:913 922
Symbol 913 MovieClip {GrifShootingWinStateView}Uses:844 870 871 852 872 857 876 880 882 884 886 888 890 892 893 894 900 901 912
Symbol 914 GraphicUsed by:922
Symbol 915 GraphicUsed by:922
Symbol 916 GraphicUsed by:922
Symbol 917 TextUses:15Used by:918
Symbol 918 MovieClipUses:917Used by:922
Symbol 919 GraphicUsed by:922
Symbol 920 GraphicUsed by:922
Symbol 921 EditableTextUses:15 939Used by:922
Symbol 922 MovieClip {WinStateView}Uses:844 914 915 852 880 916 857 876 918 884 886 888 890 892 919 920 921 900 912
Symbol 923 GraphicUsed by:924 928
Symbol 924 MovieClipUses:923Used by:927
Symbol 925 GraphicUsed by:926 929
Symbol 926 MovieClipUses:925Used by:927
Symbol 927 MovieClipUses:924 926Used by:932
Symbol 928 MovieClipUses:923Used by:930 933
Symbol 929 MovieClipUses:925Used by:930
Symbol 930 MovieClipUses:928 929Used by:932
Symbol 931 GraphicUsed by:932 933
Symbol 932 Button {SoundOff}Uses:927 930 931
Symbol 933 Button {SoundOn}Uses:928 931
Symbol 934 EditableTextUses:15 939Used by:935
Symbol 935 MovieClipUses:934Used by:953 1558
Symbol 936 GraphicUsed by:937 938
Symbol 937 MovieClipUses:936Used by:938
Symbol 938 ButtonUses:937 936Used by:953
Symbol 939 FontUsed by:16 755 761 764 775 812 815 818 887 889 891 901 921 934 940 945 974 1553
Symbol 940 EditableTextUses:939Used by:941
Symbol 941 MovieClipUses:940Used by:953
Symbol 942 GraphicUsed by:943
Symbol 943 MovieClipUses:942Used by:944
Symbol 944 MovieClipUses:943Used by:953 1558
Symbol 945 EditableTextUses:939Used by:946
Symbol 946 MovieClipUses:945Used by:953 1558
Symbol 947 GraphicUsed by:948
Symbol 948 MovieClipUses:947Used by:949
Symbol 949 MovieClipUses:948Used by:953 1558
Symbol 950 MovieClipUses:858Used by:951 952
Symbol 951 MovieClipUses:393 950Used by:952
Symbol 952 ButtonUses:393 950 951 19 858Used by:953 1558
Symbol 953 MovieClip {PlayStateView}Uses:397 935 938 941 944 946 949 952
Symbol 954 GraphicUsed by:958
Symbol 955 GraphicUsed by:956
Symbol 956 MovieClipUses:955Used by:957
Symbol 957 MovieClipUses:956Used by:958
Symbol 958 MovieClip {TeleportBack}Uses:954 957
Symbol 959 GraphicUsed by:961
Symbol 960 GraphicUsed by:961
Symbol 961 MovieClipUses:959 960Used by:964 967 970 973
Symbol 962 GraphicUsed by:963
Symbol 963 MovieClipUses:962Used by:964
Symbol 964 MovieClip {Soul4}Uses:961 963
Symbol 965 GraphicUsed by:966
Symbol 966 MovieClipUses:965Used by:967
Symbol 967 MovieClip {Soul2}Uses:961 966
Symbol 968 GraphicUsed by:969
Symbol 969 MovieClipUses:968Used by:970
Symbol 970 MovieClip {Soul1}Uses:961 969
Symbol 971 GraphicUsed by:972
Symbol 972 MovieClipUses:971Used by:973
Symbol 973 MovieClip {Soul3}Uses:961 972
Symbol 974 EditableTextUses:15 939Used by:975
Symbol 975 MovieClip {States.PlayState.AddPointsEffect}Uses:974
Symbol 976 GraphicUsed by:977
Symbol 977 MovieClipUses:976Used by:978
Symbol 978 MovieClip {States.PlayState.OutOfArrowsEffect}Uses:977
Symbol 979 GraphicUsed by:980
Symbol 980 MovieClip {States.PlayState.TurtorialFrame}Uses:979
Symbol 981 GraphicUsed by:985
Symbol 982 GraphicUsed by:985
Symbol 983 GraphicUsed by:985
Symbol 984 GraphicUsed by:985
Symbol 985 MovieClip {RightLowerHand_4}Uses:981 982 983 984
Symbol 986 GraphicUsed by:990
Symbol 987 GraphicUsed by:990
Symbol 988 GraphicUsed by:990
Symbol 989 GraphicUsed by:990
Symbol 990 MovieClip {LeftLowerHand_4}Uses:986 987 988 989
Symbol 991 GraphicUsed by:995
Symbol 992 GraphicUsed by:995
Symbol 993 GraphicUsed by:995
Symbol 994 GraphicUsed by:995
Symbol 995 MovieClip {LeftUpperHand_4}Uses:991 992 993 994
Symbol 996 GraphicUsed by:1000
Symbol 997 GraphicUsed by:1000
Symbol 998 GraphicUsed by:1000
Symbol 999 GraphicUsed by:1000
Symbol 1000 MovieClip {RightUpperHand_4}Uses:996 997 998 999
Symbol 1001 GraphicUsed by:1003
Symbol 1002 GraphicUsed by:1003
Symbol 1003 MovieClip {Torso1_4}Uses:1001 1002
Symbol 1004 GraphicUsed by:1008
Symbol 1005 GraphicUsed by:1008
Symbol 1006 GraphicUsed by:1008
Symbol 1007 GraphicUsed by:1008
Symbol 1008 MovieClip {Torso3_4}Uses:1004 1005 1006 1007
Symbol 1009 GraphicUsed by:1013
Symbol 1010 GraphicUsed by:1013
Symbol 1011 GraphicUsed by:1013
Symbol 1012 GraphicUsed by:1013
Symbol 1013 MovieClip {Torso2_4}Uses:1009 1010 1011 1012
Symbol 1014 GraphicUsed by:1018
Symbol 1015 GraphicUsed by:1018
Symbol 1016 GraphicUsed by:1018
Symbol 1017 GraphicUsed by:1018
Symbol 1018 MovieClip {LeftUpperLeg_4}Uses:1014 1015 1016 1017
Symbol 1019 GraphicUsed by:1023
Symbol 1020 GraphicUsed by:1023
Symbol 1021 GraphicUsed by:1023
Symbol 1022 GraphicUsed by:1023
Symbol 1023 MovieClip {RightUpperLeg_4}Uses:1019 1020 1021 1022
Symbol 1024 GraphicUsed by:1028
Symbol 1025 GraphicUsed by:1028
Symbol 1026 GraphicUsed by:1028
Symbol 1027 GraphicUsed by:1028
Symbol 1028 MovieClip {RightLowerLeg_4}Uses:1024 1025 1026 1027
Symbol 1029 GraphicUsed by:1033
Symbol 1030 GraphicUsed by:1033
Symbol 1031 GraphicUsed by:1033
Symbol 1032 GraphicUsed by:1033
Symbol 1033 MovieClip {LeftLowerLeg_4}Uses:1029 1030 1031 1032
Symbol 1034 GraphicUsed by:1038
Symbol 1035 GraphicUsed by:1038
Symbol 1036 GraphicUsed by:1038
Symbol 1037 GraphicUsed by:1038
Symbol 1038 MovieClip {RightUpperHand_2}Uses:1034 1035 1036 1037
Symbol 1039 GraphicUsed by:1043
Symbol 1040 GraphicUsed by:1043
Symbol 1041 GraphicUsed by:1043
Symbol 1042 GraphicUsed by:1043
Symbol 1043 MovieClip {LeftLowerHand_2}Uses:1039 1040 1041 1042
Symbol 1044 GraphicUsed by:1048
Symbol 1045 GraphicUsed by:1048
Symbol 1046 GraphicUsed by:1048
Symbol 1047 GraphicUsed by:1048
Symbol 1048 MovieClip {LeftUpperHand_2}Uses:1044 1045 1046 1047
Symbol 1049 GraphicUsed by:1051
Symbol 1050 GraphicUsed by:1051
Symbol 1051 MovieClip {Torso1_2}Uses:1049 1050
Symbol 1052 GraphicUsed by:1056
Symbol 1053 GraphicUsed by:1056
Symbol 1054 GraphicUsed by:1056
Symbol 1055 GraphicUsed by:1056
Symbol 1056 MovieClip {Torso2_2}Uses:1052 1053 1054 1055
Symbol 1057 GraphicUsed by:1061
Symbol 1058 GraphicUsed by:1061
Symbol 1059 GraphicUsed by:1061
Symbol 1060 GraphicUsed by:1061
Symbol 1061 MovieClip {Torso3_2}Uses:1057 1058 1059 1060
Symbol 1062 GraphicUsed by:1066
Symbol 1063 GraphicUsed by:1066
Symbol 1064 GraphicUsed by:1066
Symbol 1065 GraphicUsed by:1066
Symbol 1066 MovieClip {LeftUpperLeg_2}Uses:1062 1063 1064 1065
Symbol 1067 GraphicUsed by:1071
Symbol 1068 GraphicUsed by:1071
Symbol 1069 GraphicUsed by:1071
Symbol 1070 GraphicUsed by:1071
Symbol 1071 MovieClip {RightLowerLeg_2}Uses:1067 1068 1069 1070
Symbol 1072 GraphicUsed by:1076
Symbol 1073 GraphicUsed by:1076
Symbol 1074 GraphicUsed by:1076
Symbol 1075 GraphicUsed by:1076
Symbol 1076 MovieClip {RightUpperLeg_2}Uses:1072 1073 1074 1075
Symbol 1077 GraphicUsed by:1081
Symbol 1078 GraphicUsed by:1081
Symbol 1079 GraphicUsed by:1081
Symbol 1080 GraphicUsed by:1081
Symbol 1081 MovieClip {LeftLowerLeg_2}Uses:1077 1078 1079 1080
Symbol 1082 GraphicUsed by:1086
Symbol 1083 GraphicUsed by:1086
Symbol 1084 GraphicUsed by:1086
Symbol 1085 GraphicUsed by:1086
Symbol 1086 MovieClip {RightLowerHand_2}Uses:1082 1083 1084 1085
Symbol 1087 GraphicUsed by:1091
Symbol 1088 GraphicUsed by:1091
Symbol 1089 GraphicUsed by:1091
Symbol 1090 GraphicUsed by:1091
Symbol 1091 MovieClip {LeftUpperHand_1}Uses:1087 1088 1089 1090
Symbol 1092 GraphicUsed by:1096
Symbol 1093 GraphicUsed by:1096
Symbol 1094 GraphicUsed by:1096
Symbol 1095 GraphicUsed by:1096
Symbol 1096 MovieClip {LeftLowerHand_1}Uses:1092 1093 1094 1095
Symbol 1097 GraphicUsed by:1101
Symbol 1098 GraphicUsed by:1101
Symbol 1099 GraphicUsed by:1101
Symbol 1100 GraphicUsed by:1101
Symbol 1101 MovieClip {RightUpperHand_1}Uses:1097 1098 1099 1100
Symbol 1102 GraphicUsed by:1106
Symbol 1103 GraphicUsed by:1106
Symbol 1104 GraphicUsed by:1106
Symbol 1105 GraphicUsed by:1106
Symbol 1106 MovieClip {Torso2_1}Uses:1102 1103 1104 1105
Symbol 1107 GraphicUsed by:1109
Symbol 1108 GraphicUsed by:1109
Symbol 1109 MovieClip {Torso1_1}Uses:1107 1108
Symbol 1110 GraphicUsed by:1114
Symbol 1111 GraphicUsed by:1114
Symbol 1112 GraphicUsed by:1114
Symbol 1113 GraphicUsed by:1114
Symbol 1114 MovieClip {Torso3_1}Uses:1110 1111 1112 1113
Symbol 1115 GraphicUsed by:1119
Symbol 1116 GraphicUsed by:1119
Symbol 1117 GraphicUsed by:1119
Symbol 1118 GraphicUsed by:1119
Symbol 1119 MovieClip {LeftUpperLeg_1}Uses:1115 1116 1117 1118
Symbol 1120 GraphicUsed by:1124
Symbol 1121 GraphicUsed by:1124
Symbol 1122 GraphicUsed by:1124
Symbol 1123 GraphicUsed by:1124
Symbol 1124 MovieClip {RightLowerLeg_1}Uses:1120 1121 1122 1123
Symbol 1125 GraphicUsed by:1129
Symbol 1126 GraphicUsed by:1129
Symbol 1127 GraphicUsed by:1129
Symbol 1128 GraphicUsed by:1129
Symbol 1129 MovieClip {RightUpperLeg_1}Uses:1125 1126 1127 1128
Symbol 1130 GraphicUsed by:1134
Symbol 1131 GraphicUsed by:1134
Symbol 1132 GraphicUsed by:1134
Symbol 1133 GraphicUsed by:1134
Symbol 1134 MovieClip {LeftLowerLeg_1}Uses:1130 1131 1132 1133
Symbol 1135 GraphicUsed by:1139
Symbol 1136 GraphicUsed by:1139
Symbol 1137 GraphicUsed by:1139
Symbol 1138 GraphicUsed by:1139
Symbol 1139 MovieClip {RightLowerHand_1}Uses:1135 1136 1137 1138
Symbol 1140 MovieClipUses:672Used by:1143 1144
Symbol 1141 GraphicUsed by:1142 1144
Symbol 1142 MovieClipUses:1141Used by:1143 1144
Symbol 1143 MovieClipUses:1140 1142Used by:1144
Symbol 1144 ButtonUses:1140 1142 1143 672 1141Used by:1145
Symbol 1145 MovieClip {GameCompleteStateView}Uses:2 8 28 31 34 37 113 40 5 43 778 783 397 1144 140
Symbol 1146 GraphicUsed by:1147
Symbol 1147 MovieClip {Sight}Uses:1146
Symbol 1148 GraphicUsed by:1161
Symbol 1149 GraphicUsed by:1150
Symbol 1150 MovieClipUses:1149Used by:1161
Symbol 1151 GraphicUsed by:1161
Symbol 1152 MovieClip {black_square}Uses:419Used by:1161 1581
Symbol 1153 ShapeTweeningUsed by:1161
Symbol 1154 ShapeTweeningUsed by:1161
Symbol 1155 ShapeTweeningUsed by:1161
Symbol 1156 GraphicUsed by:1161
Symbol 1157 GraphicUsed by:1161
Symbol 1158 GraphicUsed by:1161
Symbol 1159 GraphicUsed by:1161
Symbol 1160 GraphicUsed by:1161
Symbol 1161 MovieClip {BowClip}Uses:1148 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160
Symbol 1162 GraphicUsed by:1165
Symbol 1163 GraphicUsed by:1165
Symbol 1164 GraphicUsed by:1165
Symbol 1165 MovieClip {HealthBar}Uses:1162 1163 1164
Symbol 1166 GraphicUsed by:1167
Symbol 1167 MovieClip {States.PlayState.Arrow}Uses:1166
Symbol 1168 GraphicUsed by:1172
Symbol 1169 GraphicUsed by:1170
Symbol 1170 MovieClip {AsyncClip}Uses:1169Used by:1172
Symbol 1171 GraphicUsed by:1172
Symbol 1172 MovieClip {Back3}Uses:1168 1170 1171Used by:1241 1421 1458 1505 1507 1512 1514 1565
Symbol 1173 GraphicUsed by:1174
Symbol 1174 MovieClip {BowPoint}Uses:1173Used by:1241 1263 1298 1324 1380 1398 1421 1432 1435 1436 1439 1442 1444 1453 1455 1456 1457 1458 1462 1464 1471 1496 1498 1499 1500 1501 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1517 1520 1521 1522 1524 1529 1532 1533 1538 1546 1547 1548 1549 1564 1565
Symbol 1175 GraphicUsed by:1186
Symbol 1176 GraphicUsed by:1181
Symbol 1177 GraphicUsed by:1178
Symbol 1178 MovieClipUses:1177Used by:1181 1185 1255
Symbol 1179 GraphicUsed by:1181
Symbol 1180 GraphicUsed by:1181
Symbol 1181 MovieClipUses:1176 1178 1179 1180Used by:1186
Symbol 1182 GraphicUsed by:1185
Symbol 1183 GraphicUsed by:1185
Symbol 1184 GraphicUsed by:1185
Symbol 1185 MovieClipUses:1182 1178 1183 1184Used by:1186
Symbol 1186 MovieClip {tree_8}Uses:1175 1181 1185Used by:1241 1506 1514 1520
Symbol 1187 GraphicUsed by:1188
Symbol 1188 MovieClipUses:1187Used by:1195
Symbol 1189 GraphicUsed by:1194
Symbol 1190 GraphicUsed by:1191
Symbol 1191 MovieClipUses:1190Used by:1194
Symbol 1192 GraphicUsed by:1194
Symbol 1193 GraphicUsed by:1194
Symbol 1194 MovieClipUses:1189 1191 1192 1193Used by:1195
Symbol 1195 MovieClip {tree_1}Uses:1188 1194Used by:1241 1504 1506 1512 1529
Symbol 1196 GraphicUsed by:1203
Symbol 1197 GraphicUsed by:1203
Symbol 1198 GraphicUsed by:1199 1203
Symbol 1199 MovieClipUses:1198Used by:1203
Symbol 1200 GraphicUsed by:1203
Symbol 1201 GraphicUsed by:1203
Symbol 1202 GraphicUsed by:1203
Symbol 1203 MovieClip {flower_4}Uses:1196 1197 1199 1200 1201 1202 1198Used by:1241 1453 1455 1456 1457 1511 1522 1564
Symbol 1204 GraphicUsed by:1205
Symbol 1205 MovieClip {Stone0}Uses:1204Used by:1241 1398 1444 1454 1462 1471 1497 1498 1499 1501 1502 1503 1505 1507 1513 1514 1517 1520 1521 1522 1523 1538 1546 1565
Symbol 1206 GraphicUsed by:1207
Symbol 1207 MovieClip {Stone1}Uses:1206Used by:1241 1398 1454 1462 1471 1497 1498 1499 1501 1502 1503 1505 1506 1507 1508 1513 1514 1517 1520 1521 1522 1523 1538 1546 1548 1565
Symbol 1208 GraphicUsed by:1209
Symbol 1209 MovieClip {Stone2}Uses:1208Used by:1241 1398 1454 1462 1497 1499 1501 1502 1503 1505 1507 1508 1513 1514 1520 1521 1522 1523 1532 1538 1546 1565
Symbol 1210 GraphicUsed by:1212
Symbol 1211 GraphicUsed by:1212
Symbol 1212 MovieClipUses:1210 1211Used by:1213
Symbol 1213 MovieClipUses:1212Used by:1231
Symbol 1214 GraphicUsed by:1215
Symbol 1215 MovieClipUses:1214Used by:1216
Symbol 1216 MovieClipUses:1215Used by:1231
Symbol 1217 GraphicUsed by:1218
Symbol 1218 MovieClipUses:1217Used by:1230
Symbol 1219 GraphicUsed by:1220
Symbol 1220 MovieClipUses:1219Used by:1230
Symbol 1221 GraphicUsed by:1230
Symbol 1222 GraphicUsed by:1230
Symbol 1223 GraphicUsed by:1230
Symbol 1224 GraphicUsed by:1230
Symbol 1225 GraphicUsed by:1230
Symbol 1226 GraphicUsed by:1230
Symbol 1227 GraphicUsed by:1230
Symbol 1228 GraphicUsed by:1230
Symbol 1229 GraphicUsed by:1230
Symbol 1230 MovieClipUses:1218 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229Used by:1231
Symbol 1231 MovieClip {States.PlayState.Sun}Uses:1213 1216 1230Used by:1241 1263 1298 1380 1398 1421 1458 1471 1496 1498 1500 1501 1504 1505 1506 1507 1508 1510 1511 1513 1514 1517 1520 1522 1524 1529 1532 1538 1547 1564 1565
Symbol 1232 GraphicUsed by:1233 1271 1277 1281 1307
Symbol 1233 MovieClipUses:1232Used by:1238 1391 1438
Symbol 1234 GraphicUsed by:1235
Symbol 1235 MovieClipUses:1234Used by:1238 1391 1438
Symbol 1236 FontUsed by:1237 1243 1390 1437 1540
Symbol 1237 TextUses:1236Used by:1238
Symbol 1238 MovieClip {AmmoGhost3}Uses:1233 1235 1237Used by:1241 1439 1444 1533
Symbol 1239 GraphicUsed by:1240
Symbol 1240 MovieClip {flower_0}Uses:1239Used by:1241 1263 1453 1455 1456 1457 1471 1496 1508 1538
Symbol 1241 MovieClip {Level39}Uses:2 98 1172 1174 100 108 479 1186 1195 801 1203 112 1205 1207 1209 1231 110 1238 1240 43 466 40 37 507 31
Symbol 1242 FontUsed by:1243 1539 1540
Symbol 1243 EditableTextUses:1236 1242Used by:1244
Symbol 1244 MovieClip {AddArrowClip}Uses:1243
Symbol 1245 GraphicUsed by:1246
Symbol 1246 MovieClip {InvertedGibbetObliquely}Uses:1245Used by:1263 1298 1380 1398 1421 1442 1456 1457 1462 1464 1496 1500 1504 1505 1511 1512 1513 1524 1529 1532 1538 1564
Symbol 1247 FontUsed by:1248 1257 1259 1296 1433 1440 1469 1494 1515 1525 1527 1530 1534 1536 1542 1562
Symbol 1248 TextUses:1247Used by:1249
Symbol 1249 MovieClip {ToPullBowHint}Uses:1248Used by:1263
Symbol 1250 GraphicUsed by:1251
Symbol 1251 MovieClipUses:1250Used by:1256
Symbol 1252 GraphicUsed by:1255
Symbol 1253 GraphicUsed by:1255
Symbol 1254 GraphicUsed by:1255
Symbol 1255 MovieClipUses:1252 1178 1253 1254Used by:1256
Symbol 1256 MovieClip {tree_2}Uses:1251 1255Used by:1263 1421 1510 1511 1520 1532
Symbol 1257 TextUses:1247Used by:1258
Symbol 1258 MovieClip {TryToAimHint}Uses:1257Used by:1263
Symbol 1259 TextUses:1247Used by:1260
Symbol 1260 MovieClip {YouWillGetAStar}Uses:1259Used by:1263
Symbol 1261 GraphicUsed by:1262
Symbol 1262 MovieClip {HintPoint}Uses:1261Used by:1263 1298 1435 1442 1471 1496 1517 1529 1532 1538 1564
Symbol 1263 MovieClip {Level00}Uses:2 1246 5 1249 507 770 1256 801 31 1258 43 1231 8 1240 793 1260 100 108 479 1174 1262 112 110
Symbol 1264 GraphicUsed by:1265
Symbol 1265 MovieClipUses:1264Used by:1270
Symbol 1266 GraphicUsed by:1269
Symbol 1267 GraphicUsed by:1269
Symbol 1268 GraphicUsed by:1269
Symbol 1269 MovieClipUses:1266 806 1267 1268Used by:1270
Symbol 1270 MovieClip {tree_5}Uses:1265 1269Used by:1298 1511 1529
Symbol 1271 MovieClipUses:1232Used by:1272
Symbol 1272 MovieClipUses:1271Used by:1276
Symbol 1273 GraphicUsed by:1274
Symbol 1274 MovieClipUses:1273Used by:1275
Symbol 1275 MovieClipUses:1274Used by:1276
Symbol 1276 MovieClip {ArrowGhost3}Uses:1272 1275Used by:1298 1462 1464 1506 1512
Symbol 1277 MovieClipUses:1232Used by:1280 1519
Symbol 1278 GraphicUsed by:1279
Symbol 1279 MovieClipUses:1278Used by:1280 1518
Symbol 1280 MovieClip {ArrowGhost1}Uses:1277 1279Used by:1298 1380 1439 1464 1498 1500 1503 1504 1508 1509 1510 1513 1532 1565
Symbol 1281 MovieClipUses:1232Used by:1284 1287 1396
Symbol 1282 GraphicUsed by:1283
Symbol 1283 MovieClipUses:1282Used by:1284
Symbol 1284 MovieClip {PointsGhost500}Uses:1281 1283Used by:1298 1380 1398 1436 1496 1499 1500 1501 1505 1509 1510 1513 1532 1538 1564
Symbol 1285 GraphicUsed by:1286
Symbol 1286 MovieClipUses:1285Used by:1287
Symbol 1287 MovieClip {PointsGhost1000}Uses:1281 1286Used by:1298 1435 1436 1439 1462 1500 1503 1507 1510 1514 1517 1565
Symbol 1288 GraphicUsed by:1289
Symbol 1289 MovieClipUses:1288Used by:1295
Symbol 1290 GraphicUsed by:1295
Symbol 1291 GraphicUsed by:1295
Symbol 1292 GraphicUsed by:1295
Symbol 1293 GraphicUsed by:1295
Symbol 1294 GraphicUsed by:1295
Symbol 1295 MovieClip {flower_2}Uses:1289 1290 1291 1292 1293 1294Used by:1298 1520 1529
Symbol 1296 TextUses:1247Used by:1297
Symbol 1297 MovieClip {ThisIsHedhehogHint}Uses:1296Used by:1298
Symbol 1298 MovieClip {Level14}Uses:2 770 810 100 1270 1246 801 479 1174 1276 98 108 8 28 31 1231 5 507 1280 112 110 1284 1287 1295 793 1297 1262
Symbol 1299 GraphicUsed by:1300
Symbol 1300 MovieClip {OvercastSky}Uses:1299Used by:1324 1444 1462 1464 1509 1521 1533
Symbol 1301 GraphicUsed by:1302
Symbol 1302 MovieClipUses:1301Used by:1303
Symbol 1303 MovieClip {tree_9}Uses:1302Used by:1324 1444 1464 1521
Symbol 1304 GraphicUsed by:1305
Symbol 1305 MovieClipUses:1304Used by:1306
Symbol 1306 MovieClip {tree_10}Uses:1305Used by:1324 1462 1509 1533
Symbol 1307 MovieClipUses:1232Used by:1311
Symbol 1308 GraphicUsed by:1309
Symbol 1309 MovieClipUses:1308Used by:1310
Symbol 1310 MovieClipUses:1309Used by:1311
Symbol 1311 MovieClip {States.PlayState.TeleportGhost}Uses:1307 1310Used by:1324 1432 1462 1496 1499 1503 1505 1508 1509 1512 1521
Symbol 1312 GraphicUsed by:1320
Symbol 1313 GraphicUsed by:1314
Symbol 1314 MovieClipUses:1313Used by:1320
Symbol 1315 GraphicUsed by:1316
Symbol 1316 MovieClipUses:1315Used by:1320
Symbol 1317 GraphicUsed by:1318
Symbol 1318 MovieClipUses:1317Used by:1320
Symbol 1319 GraphicUsed by:1320
Symbol 1320 MovieClip {BgStones}Uses:1312 1314 1316 1318 1319Used by:1324 1444 1464 1521 1533
Symbol 1321 GraphicUsed by:1322
Symbol 1322 MovieClipUses:1321Used by:1323
Symbol 1323 MovieClip {flower_6}Uses:1322Used by:1324 1444 1462 1464 1509
Symbol 1324 MovieClip {Level32}Uses:1300 8 462 1303 1306 100 801 479 1174 34 98 108 43 1311 112 110 1320 1323 31 28
Symbol 1325 GraphicUsed by:1326
Symbol 1326 MovieClip {BonusGameBack}Uses:1325Used by:1380 1498 1499 1501 1524 1546 1547 1548 1549
Symbol 1327 GraphicUsed by:1328
Symbol 1328 MovieClipUses:1327Used by:1329
Symbol 1329 MovieClip {Box}Uses:1328Used by:1380 1398 1471 1498 1508 1511 1533
Symbol 1330 GraphicUsed by:1331
Symbol 1331 MovieClipUses:1330Used by:1332
Symbol 1332 MovieClip {Brick}Uses:1331Used by:1380 1435 1436 1439 1501 1512
Symbol 1333 GraphicUsed by:1334
Symbol 1334 MovieClipUses:1333Used by:1379
Symbol 1335 GraphicUsed by:1379
Symbol 1336 GraphicUsed by:1337
Symbol 1337 MovieClipUses:1336Used by:1379
Symbol 1338 BitmapUsed by:1339 1341 1343 1345 1347 1349 1351 1353 1355 1357
Symbol 1339 GraphicUses:1338Used by:1340
Symbol 1340 MovieClipUses:1339Used by:1379
Symbol 1341 GraphicUses:1338Used by:1342
Symbol 1342 MovieClipUses:1341Used by:1379
Symbol 1343 GraphicUses:1338Used by:1344
Symbol 1344 MovieClipUses:1343Used by:1379
Symbol 1345 GraphicUses:1338Used by:1346
Symbol 1346 MovieClipUses:1345Used by:1379
Symbol 1347 GraphicUses:1338Used by:1348
Symbol 1348 MovieClipUses:1347Used by:1379
Symbol 1349 GraphicUses:1338Used by:1350
Symbol 1350 MovieClipUses:1349Used by:1379
Symbol 1351 GraphicUses:1338Used by:1352
Symbol 1352 MovieClipUses:1351Used by:1379
Symbol 1353 GraphicUses:1338Used by:1354
Symbol 1354 MovieClipUses:1353Used by:1379
Symbol 1355 GraphicUses:1338Used by:1356
Symbol 1356 MovieClipUses:1355Used by:1379
Symbol 1357 GraphicUses:1338Used by:1358
Symbol 1358 MovieClipUses:1357Used by:1379
Symbol 1359 GraphicUsed by:1360
Symbol 1360 MovieClipUses:1359Used by:1379
Symbol 1361 GraphicUsed by:1362
Symbol 1362 MovieClipUses:1361Used by:1379
Symbol 1363 GraphicUsed by:1364
Symbol 1364 MovieClipUses:1363Used by:1379
Symbol 1365 GraphicUsed by:1366
Symbol 1366 MovieClipUses:1365Used by:1379
Symbol 1367 GraphicUsed by:1368
Symbol 1368 MovieClipUses:1367Used by:1379
Symbol 1369 GraphicUsed by:1370
Symbol 1370 MovieClipUses:1369Used by:1379
Symbol 1371 GraphicUsed by:1372
Symbol 1372 MovieClipUses:1371Used by:1379
Symbol 1373 GraphicUsed by:1374
Symbol 1374 MovieClipUses:1373Used by:1379
Symbol 1375 GraphicUsed by:1376
Symbol 1376 MovieClipUses:1375Used by:1379
Symbol 1377 GraphicUsed by:1378
Symbol 1378 MovieClipUses:1377Used by:1379
Symbol 1379 MovieClip {States.PlayState.TNTBarrel}Uses:1334 1335 1337 1340 1342 1344 1346 1348 1350 1352 1354 1356 1358 1360 1362 1364 1366 1368 1370 1372 1374 1376 1378Used by:1380 1398 1432 1471 1498 1508 1522
Symbol 1380 MovieClip {Level33}Uses:2 1326 1246 100 479 1174 1329 106 108 110 112 1332 1379 1280 98 1231 1284 28 40 466 31 507 34
Symbol 1381 GraphicUsed by:1382
Symbol 1382 MovieClipUses:1381Used by:1389
Symbol 1383 GraphicUsed by:1388
Symbol 1384 GraphicUsed by:1385
Symbol 1385 MovieClipUses:1384Used by:1388
Symbol 1386 GraphicUsed by:1388
Symbol 1387 GraphicUsed by:1388
Symbol 1388 MovieClipUses:1383 1385 1386 1387Used by:1389
Symbol 1389 MovieClip {tree_3}Uses:1382 1388Used by:1398 1471 1508 1532
Symbol 1390 TextUses:1236Used by:1391
Symbol 1391 MovieClip {AmmoGhost10}Uses:1233 1235 1390Used by:1398 1435 1442 1524 1529
Symbol 1392 GraphicUsed by:1393
Symbol 1393 MovieClip {Stone3}Uses:1392Used by:1398 1454 1462 1463 1497 1498 1499 1501 1502 1503 1505 1506 1507 1510 1514 1517 1521 1523 1538 1546 1565
Symbol 1394 GraphicUsed by:1395
Symbol 1395 MovieClipUses:1394Used by:1396
Symbol 1396 MovieClip {PointsGhost300}Uses:1281 1395Used by:1398 1436 1500 1510 1512 1522 1533
Symbol 1397 MovieClip {InvertedVultureHere}Uses:744Used by:1398 1462 1496 1499 1510
Symbol 1398 MovieClip {Level36}Uses:2 770 1389 801 1174 40 1246 100 108 112 110 466 28 1231 8 5 507 31 479 1391 1379 1329 1205 1207 1393 1209 1396 1284 793 1397
Symbol 1399 GraphicUsed by:1403
Symbol 1400 GraphicUsed by:1401
Symbol 1401 MovieClipUses:1400Used by:1403
Symbol 1402 GraphicUsed by:1403
Symbol 1403 MovieClipUses:1399 1401 1402Used by:1408
Symbol 1404 GraphicUsed by:1405
Symbol 1405 MovieClipUses:1404Used by:1408
Symbol 1406 GraphicUsed by:1407
Symbol 1407 MovieClipUses:1406Used by:1408
Symbol 1408 MovieClip {Mill}Uses:1403 1405 1407Used by:1421 1458 1565
Symbol 1409 GraphicUsed by:1412
Symbol 1410 GraphicUsed by:1411
Symbol 1411 MovieClipUses:1410Used by:1412
Symbol 1412 MovieClip {MillFan}Uses:1409 1411Used by:1421 1458 1565
Symbol 1413 GraphicUsed by:1418
Symbol 1414 GraphicUsed by:1418
Symbol 1415 GraphicUsed by:1418
Symbol 1416 GraphicUsed by:1418
Symbol 1417 GraphicUsed by:1418
Symbol 1418 MovieClip {CowNormal}Uses:1413 430 1414 1415 434 435 439 441 442 443 444 445 446 1416 1417Used by:1419 1567
Symbol 1419 MovieClip {CowHere}Uses:1418Used by:1420 1506 1524 1566
Symbol 1420 MovieClip {InvertedCowHere}Uses:1419Used by:1421 1507 1517 1524
Symbol 1421 MovieClip {Level37}Uses:2 1172 100 801 479 1174 1246 108 40 1408 1412 112 110 1231 793 1256 466 28 8 5 507 31 1420
Symbol 1422 GraphicUsed by:1423
Symbol 1423 MovieClipUses:1422Used by:1424
Symbol 1424 MovieClip {BrickNoRight}Uses:1423Used by:1431 1439 1512
Symbol 1425 GraphicUsed by:1426
Symbol 1426 MovieClipUses:1425Used by:1427
Symbol 1427 MovieClip {BrickNoRightNoLeft}Uses:1426Used by:1431 1439 1512
Symbol 1428 GraphicUsed by:1429
Symbol 1429 MovieClipUses:1428Used by:1430
Symbol 1430 MovieClip {BrickNoLeft}Uses:1429Used by:1431 1439 1512
Symbol 1431 MovieClip {ComposedStone96}Uses:1424 1427 1430Used by:1432
Symbol 1432 MovieClip {Level48}Uses:290 98 479 1174 43 5 37 40 1431 100 1379 1311 108 112 110
Symbol 1433 TextUses:1247Used by:1434
Symbol 1434 MovieClip {NoArrowsHint}Uses:1433Used by:1435
Symbol 1435 MovieClip {Level52}Uses:290 1174 43 5 37 40 479 1332 1391 1287 1262 1434
Symbol 1436 MovieClip {Level49}Uses:290 479 1174 43 5 37 40 1332 1396 1284 1287
Symbol 1437 TextUses:1236Used by:1438
Symbol 1438 MovieClip {AmmoGhost5}Uses:1233 1235 1437Used by:1439 1504 1509 1524 1529
Symbol 1439 MovieClip {Level50}Uses:290 479 1174 1280 1424 1427 1430 1332 43 5 37 40 1238 1438 1287
Symbol 1440 TextUses:1247Used by:1441
Symbol 1441 MovieClip {OnlyOneArrowHint}Uses:1440Used by:1442
Symbol 1442 MovieClip {Level51}Uses:290 479 1174 98 100 108 1246 106 1391 1262 1441 466 37 8 31 40 112 110
Symbol 1443 MovieClip {VultureHere}Uses:744Used by:1444 1499 1505 1509 1520 1521
Symbol 1444 MovieClip {Level45}Uses:1300 462 1303 1174 98 100 479 108 801 1238 1205 1443 1320 1323 466 40 37 8 31 110 112
Symbol 1445 GraphicUsed by:1446
Symbol 1446 MovieClip {GiantSky}Uses:1445Used by:1453 1455 1456 1457
Symbol 1447 GraphicUsed by:1448
Symbol 1448 MovieClip {LongBack}Uses:1447Used by:1453 1455 1456 1457
Symbol 1449 GraphicUsed by:1450
Symbol 1450 MovieClip {LeftEdgeMarker}Uses:1449Used by:1453 1455 1456 1457
Symbol 1451 GraphicUsed by:1452
Symbol 1452 MovieClip {RightEdgeMarker}Uses:1451Used by:1453 1455 1456 1457
Symbol 1453 MovieClip {Level11}Uses:1446 1448 479 801 98 100 1174 793 1240 1203 108 112 110 106 1450 1452
Symbol 1454 MovieClip {ComposedStone2}Uses:1205 1207 1209 1393Used by:1455 1500
Symbol 1455 MovieClip {Level47}Uses:1446 1448 479 100 801 1454 98 1174 793 1240 1203 108 112 110 1450 1452
Symbol 1456 MovieClip {Level35}Uses:1446 1448 479 100 801 1246 1174 793 1240 1203 108 112 110 1450 1452
Symbol 1457 MovieClip {Level23}Uses:1446 1246 1448 479 100 801 1174 793 1240 1203 108 112 110 1450 1452
Symbol 1458 MovieClip {Level18}Uses:2 1172 1408 100 791 801 479 1174 98 108 106 1412 110 112 1231 793 43 31 507 5 8
Symbol 1459 GraphicUsed by:1460
Symbol 1460 MovieClipUses:1459Used by:1461
Symbol 1461 MovieClip {flower_5}Uses:1460Used by:1462 1509 1521
Symbol 1462 MovieClip {Level38}Uses:1300 98 479 462 1306 1174 1276 1205 1207 1209 1393 801 1246 100 106 108 112 1311 110 1287 1461 1323 43 31 507 5 34 1397
Symbol 1463 MovieClip {ComposedStone99}Uses:1393Used by:1464 1509
Symbol 1464 MovieClip {Level43}Uses:1300 479 1246 100 462 1303 1174 108 1320 1323 801 1276 112 34 37 40 1280 110 1463 28 43
Symbol 1465 GraphicUsed by:1468
Symbol 1466 GraphicUsed by:1468
Symbol 1467 GraphicUsed by:1468
Symbol 1468 MovieClip {flower_1}Uses:1465 1466 1467Used by:1471
Symbol 1469 TextUses:1247Used by:1470
Symbol 1470 MovieClip {ThisIsTNTHint}Uses:1469Used by:1471
Symbol 1471 MovieClip {Level12}Uses:2 770 1389 1174 801 1329 98 100 108 479 1379 34 1205 1207 1231 110 793 1468 1240 112 466 40 37 8 1262 1470
Symbol 1472 GraphicUsed by:1473
Symbol 1473 MovieClip {Back1}Uses:1472Used by:1496 1503 1504 1506 1511 1513 1520 1538 1564
Symbol 1474 GraphicUsed by:1475
Symbol 1475 MovieClipUses:1474Used by:1486
Symbol 1476 GraphicUsed by:1481
Symbol 1477 GraphicUsed by:1478
Symbol 1478 MovieClipUses:1477Used by:1481 1485
Symbol 1479 GraphicUsed by:1481
Symbol 1480 GraphicUsed by:1481
Symbol 1481 MovieClipUses:1476 1478 1479 1480Used by:1486
Symbol 1482 GraphicUsed by:1485
Symbol 1483 GraphicUsed by:1485
Symbol 1484 GraphicUsed by:1485
Symbol 1485 MovieClipUses:1482 1478 1483 1484Used by:1486
Symbol 1486 MovieClip {tree_7}Uses:1475 1481 1485Used by:1496 1504 1513 1522
Symbol 1487 GraphicUsed by:1493
Symbol 1488 GraphicUsed by:1493
Symbol 1489 GraphicUsed by:1493
Symbol 1490 GraphicUsed by:1493
Symbol 1491 GraphicUsed by:1493
Symbol 1492 GraphicUsed by:1493
Symbol 1493 MovieClip {flower_3}Uses:1487 1488 1489 1490 1491 1492Used by:1496 1532 1538
Symbol 1494 TextUses:1247Used by:1495
Symbol 1495 MovieClip {TeleportHint}Uses:1494Used by:1496
Symbol 1496 MovieClip {Level06}Uses:2 1473 1486 801 1174 1246 100 479 106 108 98 1311 1262 112 1284 110 1493 1240 793 1231 1397 8 28 37 40 466 1495
Symbol 1497 MovieClip {ComposedStone1}Uses:1207 1209 1393 1205Used by:1498
Symbol 1498 MovieClip {Level15}Uses:2 1326 1174 1379 479 34 1329 1207 98 100 1393 1205 108 1280 1497 1231 110 112 37 28 466
Symbol 1499 MovieClip {Level44}Uses:2 1174 479 1205 1207 1209 1393 1326 1311 1284 1443 1397 43 31 8 28 466
Symbol 1500 MovieClip {Level09}Uses:2 770 1454 1174 1246 100 479 108 112 110 801 1231 1280 1396 1284 1287 793 466 40 37 28 8 34
Symbol 1501 MovieClip {Level30}Uses:2 1326 1174 479 1332 1205 1207 1209 1393 1284 1231 43 31 40 37
Symbol 1502 MovieClip {ComposedStone55}Uses:1205 1207 1209 1393Used by:1503
Symbol 1503 MovieClip {Level31}Uses:2 1473 1502 801 479 1174 1311 1205 1207 1209 1393 1287 1280 793
Symbol 1504 MovieClip {Level13}Uses:2 1246 1473 1486 1195 1174 100 108 479 112 110 801 1280 106 1231 793 28 40 31 43 466 1438
Symbol 1505 MovieClip {Level10}Uses:2 1172 1246 1174 98 100 108 479 112 110 1207 801 1209 1393 1205 1311 1284 793 1231 37 34 507 31 466 1443
Symbol 1506 MovieClip {Level34}Uses:2 1473 1174 1195 1186 801 479 1207 1393 1276 1419 793 40 8 31 43 1231
Symbol 1507 MovieClip {Level24}Uses:2 1172 1174 1205 791 801 1207 479 1393 1209 1420 1287 1231 793 40 37 34 31 466
Symbol 1508 MovieClip {Level28}Uses:2 770 1389 1329 1174 801 479 1379 1207 1209 1311 1280 793 1240 1231 8 28 37 507 31
Symbol 1509 MovieClip {Level27}Uses:1300 462 1174 479 1306 801 1280 98 100 1463 108 1311 1438 1284 1323 1461 1443 466 40 8 5 31 43 112 110
Symbol 1510 MovieClip {Level46}Uses:2 770 1174 479 801 1256 1280 1396 1284 1287 1393 1231 1397 793 37 28 8 34
Symbol 1511 MovieClip {Level26}Uses:2 1473 1270 1174 479 1246 100 108 110 112 1256 801 1329 1203 1231 43 31 507 5 34
Symbol 1512 MovieClip {Level22}Uses:2 1172 791 1174 479 1246 100 108 110 112 1332 1195 801 1311 106 1276 1430 1427 1424 1396 793 466 40 37 28 8 5
Symbol 1513 MovieClip {Level21}Uses:2 1473 1486 1174 1209 801 479 1280 1246 100 108 1207 1205 1231 110 112 1284 793 43 31 507 5 8
Symbol 1514 MovieClip {Level42}Uses:2 1231 1172 1205 1207 1209 1174 1186 801 100 479 507 1393 1287 110 112 793 28 8 34 31
Symbol 1515 TextUses:1247Used by:1516
Symbol 1516 MovieClip {InvertControlHint}Uses:1515Used by:1517
Symbol 1517 MovieClip {Level04}Uses:2 770 791 1205 1207 1393 1174 479 801 1231 100 108 1420 793 466 40 28 8 507 31 1287 112 110 1516 1262
Symbol 1518 MovieClipUses:1279Used by:1519
Symbol 1519 MovieClip {ArrowGhost4}Uses:1277 1518Used by:1520 1521
Symbol 1520 MovieClip {Level19}Uses:2 1473 479 98 100 108 112 1174 1519 106 110 1205 1186 1256 801 1207 1209 1231 793 1295 31 5 8 28 34 1443
Symbol 1521 MovieClip {Level25}Uses:1300 462 1174 479 98 100 1205 1207 1209 1393 1303 801 1519 1311 108 110 112 1320 1443 43 31 34 28 37 466 1461
Symbol 1522 MovieClip {Level16}Uses:2 1231 770 1205 1207 1209 1174 479 98 100 1486 801 108 110 112 1379 793 1203 466 37 28 8 5 1396
Symbol 1523 MovieClip {ComposedStone98}Uses:1205 1207 1209 1393Used by:1524
Symbol 1524 MovieClip {Level20}Uses:2 1523 1326 1174 106 1246 100 479 108 1420 1419 1391 1438 110 112 1231 43 31 507 28
Symbol 1525 TextUses:1247Used by:1526
Symbol 1526 MovieClip {AmmoHint}Uses:1525Used by:1529
Symbol 1527 TextUses:1247Used by:1528
Symbol 1528 MovieClip {TheAmountOfArrows}Uses:1527Used by:1529
Symbol 1529 MovieClip {Level02}Uses:2 770 1195 1270 1174 479 98 100 108 801 112 110 1438 1391 1246 106 1262 1526 793 1295 1231 466 40 28 8 34 1528
Symbol 1530 TextUses:1247Used by:1531
Symbol 1531 MovieClip {ArrowGhostHint}Uses:1530Used by:1532
Symbol 1532 MovieClip {Level07}Uses:2 770 1389 1246 1256 1174 479 100 108 801 112 110 1231 1280 1262 1209 1531 1284 1493 37 28 8 5 31
Symbol 1533 MovieClip {Level08}Uses:1300 462 1329 1174 479 98 100 108 1306 801 112 110 37 28 8 34 466 1396 1320 1238
Symbol 1534 TextUses:1247Used by:1535
Symbol 1535 MovieClip {ComboSave2Hint}Uses:1534Used by:1538
Symbol 1536 TextUses:1247Used by:1537
Symbol 1537 MovieClip {ComboSave3Hint}Uses:1536Used by:1538
Symbol 1538 MovieClip {Level03}Uses:2 1246 1473 1393 1174 479 98 100 108 1205 1207 1209 810 801 112 110 793 1240 1493 1231 37 28 8 34 466 1284 1262 1535 1537
Symbol 1539 TextUses:1242Used by:1541
Symbol 1540 EditableTextUses:1236 1242Used by:1541
Symbol 1541 MovieClip {UrlLockedStateView}Uses:419 1539 1540
Symbol 1542 TextUses:1247Used by:1543
Symbol 1543 MovieClip {ThisIsSingleHedhehogHint}Uses:1542
Symbol 1544 GraphicUsed by:1545
Symbol 1545 MovieClip {States.PlayState.Blood}Uses:1544
Symbol 1546 MovieClip {Level41}Uses:2 1326 1174 507 5 34 8 28 37 40 466 31 43 1205 1207 1209 1393
Symbol 1547 MovieClip {Level29}Uses:2 1326 1174 507 5 34 8 28 37 40 466 31 43 1231
Symbol 1548 MovieClip {Level17}Uses:2 1326 1174 507 5 34 8 28 37 40 466 1207 31 43
Symbol 1549 MovieClip {Level05}Uses:2 1326 1174 43 31 507 5 34 8 28 37 40 466
Symbol 1550 MovieClipUses:772 399Used by:1551
Symbol 1551 MovieClipUses:1550Used by:1552
Symbol 1552 MovieClip {SelectSecretLevelStateView}Uses:290 466 37 8 34 1551 778 783 397 820 830 31 841 115 119
Symbol 1553 EditableTextUses:15 939Used by:1554
Symbol 1554 MovieClipUses:1553Used by:1558
Symbol 1555 GraphicUsed by:1556
Symbol 1556 MovieClipUses:1555Used by:1557
Symbol 1557 MovieClipUses:1556Used by:1558
Symbol 1558 MovieClip {GrifShootingStateView}Uses:397 935 944 946 949 952 1554 1557
Symbol 1559 GraphicUsed by:1560
Symbol 1560 MovieClipUses:1559Used by:1561
Symbol 1561 MovieClip {TimeIsOutEffect}Uses:1560
Symbol 1562 TextUses:1247Used by:1563
Symbol 1563 MovieClip {ThisIsBonusHint}Uses:1562Used by:1564
Symbol 1564 MovieClip {Level01}Uses:2 1246 1473 791 98 100 108 479 112 110 801 1174 1284 1262 1231 43 507 5 28 40 466 793 1563 1203
Symbol 1565 MovieClip {Level40}Uses:2 1408 1172 1207 1209 98 100 801 1174 479 1412 1393 1205 1280 108 110 112 1287 1231 793 43 5 8 37
Symbol 1566 MovieClip {InvertedCowMaket}Uses:1419 479
Symbol 1567 MovieClip {CowMaket}Uses:1418 479
Symbol 1568 GraphicUsed by:1569 1571
Symbol 1569 MovieClipUses:1568Used by:1571
Symbol 1570 GraphicUsed by:1571 1574
Symbol 1571 ButtonUses:1569 1570 1568Used by:1575
Symbol 1572 GraphicUsed by:1573 1574
Symbol 1573 MovieClipUses:1572Used by:1574
Symbol 1574 ButtonUses:1573 1570 1572Used by:1575
Symbol 1575 MovieClip {MoreGamesPanel}Uses:1571 1574
Symbol 1576 FontUsed by:1577 1579
Symbol 1577 TextUses:1576Used by:1578
Symbol 1578 MovieClip {ClickToContinue}Uses:1577Used by:1581
Symbol 1579 TextUses:1576Used by:1580
Symbol 1580 MovieClipUses:1579Used by:1581
Symbol 1581 MovieClip {GamePausedStateView}Uses:1152 1580 1578
Symbol 1582 MovieClip {HideTipsPanel}Uses:605 596

Instance Names

"m_preloaderClip"Frame 1Symbol 141 MovieClip {States.CurrentPreloaderState}
"hsloader"Frame 1Symbol 145 MovieClip {Gibbets_II_fla.highscoreloader_54}
"m_text"Symbol 17 MovieClip Frame 1Symbol 16 EditableText
"m_bar"Symbol 18 MovieClip Frame 1Symbol 14 MovieClip
"m_textClip"Symbol 18 MovieClip Frame 1Symbol 17 MovieClip
"m_loadingBar"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 18 MovieClip
"m_playButton"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 25 Button
"m_gibbetFront"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 113 MovieClip
"m_adBox"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 115 MovieClip
"m_closeButton"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 119 Button {CloseCross}
"m_notDoppler"Symbol 141 MovieClip {States.CurrentPreloaderState} Frame 1Symbol 140 Button
"m_buttonYes"Symbol 207 MovieClip {YesNoStateView} Frame 1Symbol 200 Button
"m_buttonNo"Symbol 207 MovieClip {YesNoStateView} Frame 1Symbol 204 Button
"m_text"Symbol 257 MovieClip {Hint} Frame 1Symbol 256 EditableText
"KILLED_100"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 345 MovieClip {ach_14}
"LEVEL_30_IN_6_SHOT"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 348 MovieClip {ach_1}
"LEVEL_44_IN_6_SHOT"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 351 MovieClip {ach_2}
"LEVELS_WITHOUT_LOSE"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 354 MovieClip {ach_3}
"LEVELS_WITHOUT_INJURE"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 357 MovieClip {ach_4}
"SAVES_50"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 360 MovieClip {ach_5}
"SAVES_100"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 363 MovieClip {ach_6}
"HOUR_PLAYED"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 366 MovieClip {ach_7}
"TWO_HOURS_PLAYED"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 369 MovieClip {ach_8}
"HALF_COMPLETED"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 372 MovieClip {ach_9}
"FULL_COMPLETED"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 375 MovieClip {ach_10}
"WITH_STAR_40"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 378 MovieClip {ach_11}
"GRIFS_KILLED"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 382 MovieClip {ach_12}
"ACCURACY_70"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 386 MovieClip {ach_13}
"CROWN"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 392 MovieClip {ach_15}
"m_buttonMenu"Symbol 401 MovieClip {AchievementsStateView} Frame 1Symbol 397 Button
"m_sky"Symbol 463 MovieClip Frame 1Symbol 2 MovieClip {Background}
"m_sky"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 463 MovieClip
"m_artHanger"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 479 MovieClip {HangerPoint}
"m_musicHanger"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 479 MovieClip {HangerPoint}
"m_programmingHanger"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 479 MovieClip {HangerPoint}
"m_buttonMenu"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 397 Button
"m_notdoppler"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 140 Button
"m_blogLink"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 516 Button
"m_mailLink"Symbol 523 MovieClip {CreditsStateView} Frame 1Symbol 522 Button
"m_slider"Symbol 603 MovieClip {ScrollBar} Frame 1Symbol 602 MovieClip
"m_buttonOk"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 583 Button
"m_invertControl"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 596 MovieClip {CheckBox}
"m_disableBlood"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 596 MovieClip {CheckBox}
"m_soundVolume"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 603 MovieClip {ScrollBar}
"m_musicVolume"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 603 MovieClip {ScrollBar}
"m_hideTips"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 596 MovieClip {CheckBox}
"m_buttonReset"Symbol 612 MovieClip {OptionsStateView} Frame 1Symbol 611 Button
"m_buttonPlay"Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530} Frame 1Symbol 671 Button
"m_buttonOptions"Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530} Frame 1Symbol 678 Button
"m_buttonCredits"Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530} Frame 1Symbol 684 Button
"m_buttonGibbetsI"Symbol 696 MovieClip {Gibbets_II_fla.LeftPanel_542} Frame 1Symbol 690 Button
"m_buttonMoreGames"Symbol 696 MovieClip {Gibbets_II_fla.LeftPanel_542} Frame 1Symbol 695 Button
"m_vulture"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 651 MovieClip {Gibbets_II_fla.shirt_39_519}
"m_II"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 670 MovieClip {Gibbets_II_fla.shirt_42_527}
"m_rightButtonsPanel"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530}
"m_leftButtonsPanel"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 696 MovieClip {Gibbets_II_fla.LeftPanel_542}
"m_comixCloud"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 614 MovieClip {MainMenuCloud1}
"m_notdoppler"Symbol 697 MovieClip {MainMenuStateView} Frame 1Symbol 140 Button
"clip"Symbol 722 MovieClip {VultureDie} Frame 1Symbol 721 MovieClip {Gibbets_II_fla.vulture_copy3_506}
"clip"Symbol 743 MovieClip {VultureBend} Frame 1Symbol 742 MovieClip
"clip"Symbol 745 MovieClip {VultureJump} Frame 1Symbol 744 MovieClip
"m_up"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 754 MovieClip
"m_textUp"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 755 EditableText
"m_starUp"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 758 MovieClip
"m_over"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 760 MovieClip
"m_textOver"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 761 EditableText
"m_starOver"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 758 MovieClip
"m_down"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 763 MovieClip
"m_starDown"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 758 MovieClip
"m_textDown"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 764 EditableText
"m_unenable"Symbol 768 MovieClip {SelectLevelBonusButton} Frame 1Symbol 767 MovieClip
"m_text"Symbol 778 MovieClip Frame 1Symbol 775 EditableText
"m_up"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 811 MovieClip
"m_textUp"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 812 EditableText
"m_starUp"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 758 MovieClip
"m_over"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 814 MovieClip
"m_textOver"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 815 EditableText
"m_starOver"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 758 MovieClip
"m_down"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 817 MovieClip
"m_textDown"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 818 EditableText
"m_starDown"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 758 MovieClip
"m_unenable"Symbol 820 MovieClip {SelectLevelButton} Frame 1Symbol 819 MovieClip
"m_level0"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level1"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level5"Symbol 821 MovieClip Frame 1Symbol 768 MovieClip {SelectLevelBonusButton}
"m_level2"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level3"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level4"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level6"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level7"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level11"Symbol 821 MovieClip Frame 1Symbol 768 MovieClip {SelectLevelBonusButton}
"m_level8"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level9"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level10"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level12"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level13"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level17"Symbol 821 MovieClip Frame 1Symbol 768 MovieClip {SelectLevelBonusButton}
"m_level14"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level15"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level16"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level18"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level19"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level23"Symbol 821 MovieClip Frame 1Symbol 768 MovieClip {SelectLevelBonusButton}
"m_level20"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level21"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level22"Symbol 821 MovieClip Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_totalScore"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 778 MovieClip
"m_buttonSubmit"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 783 Button
"m_buttonMenu"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 397 Button
"m_buttonsPanel"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 821 MovieClip
"m_arrowRight"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 830 Button {GuiArrow}
"m_arrowUp"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 830 Button {GuiArrow}
"m_buttonAchievements"Symbol 842 MovieClip {SelectLevelStateView} Frame 1Symbol 841 Button
"m_window"Symbol 869 MovieClip {LoseStateView} Frame 1Symbol 852 MovieClip
"m_buttonMenu"Symbol 869 MovieClip {LoseStateView} Frame 1Symbol 857 Button
"m_buttonRestart"Symbol 869 MovieClip {LoseStateView} Frame 1Symbol 861 Button
"m_tmpClip"Symbol 880 MovieClip Frame 1Symbol 878 MovieClip
"m_text"Symbol 888 MovieClip Frame 1Symbol 887 EditableText
"m_text"Symbol 890 MovieClip Frame 1Symbol 889 EditableText
"m_text"Symbol 892 MovieClip Frame 1Symbol 891 EditableText
"m_perfectSign"Symbol 900 MovieClip Frame 1Symbol 899 MovieClip
"m_buttonMenu"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 857 Button
"m_buttonNext"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 876 Button
"m_accuracy"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 888 MovieClip
"m_currentScore"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 890 MovieClip
"m_bestScore"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 892 MovieClip
"m_star"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 900 MovieClip
"m_levelNum"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 901 EditableText
"m_buttonNewAchievement"Symbol 913 MovieClip {GrifShootingWinStateView} Frame 1Symbol 912 Button
"m_buttonMenu"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 857 Button
"m_buttonNext"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 876 Button
"m_arrowsUsed"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 888 MovieClip
"m_currentScore"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 890 MovieClip
"m_bestScore"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 892 MovieClip
"m_levelNum"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 921 EditableText
"m_star"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 900 MovieClip
"m_buttonNewAchievement"Symbol 922 MovieClip {WinStateView} Frame 1Symbol 912 Button
"m_text"Symbol 935 MovieClip Frame 1Symbol 934 EditableText
"m_text"Symbol 941 MovieClip Frame 1Symbol 940 EditableText
"m_text"Symbol 946 MovieClip Frame 1Symbol 945 EditableText
"m_buttonMenu"Symbol 953 MovieClip {PlayStateView} Frame 1Symbol 397 Button
"m_scoreClip"Symbol 953 MovieClip {PlayStateView} Frame 1Symbol 935 MovieClip
"m_levelClip"Symbol 953 MovieClip {PlayStateView} Frame 1Symbol 941 MovieClip
"m_arrowsLeftClip"Symbol 953 MovieClip {PlayStateView} Frame 1Symbol 946 MovieClip
"m_buttonReplay"Symbol 953 MovieClip {PlayStateView} Frame 1Symbol 952 Button
"m_label"Symbol 975 MovieClip {States.PlayState.AddPointsEffect} Frame 1Symbol 974 EditableText
"m_gibbetFront"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 113 MovieClip
"m_totalScore"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 778 MovieClip
"m_buttonSubmit"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 783 Button
"m_buttonMenu"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 397 Button
"m_buttonMoreGames"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 1144 Button
"m_notDoppler"Symbol 1145 MovieClip {GameCompleteStateView} Frame 1Symbol 140 Button
"m_field"Symbol 1161 MovieClip {BowClip} Frame 1Symbol 1152 MovieClip {black_square}
"m_sunCircle"Symbol 1231 MovieClip {States.PlayState.Sun} Frame 1Symbol 1216 MovieClip
"m_face"Symbol 1231 MovieClip {States.PlayState.Sun} Frame 1Symbol 1230 MovieClip
"m_text"Symbol 1244 MovieClip {AddArrowClip} Frame 1Symbol 1243 EditableText
"m_ovalClip"Symbol 1276 MovieClip {ArrowGhost3} Frame 1Symbol 1272 MovieClip
"m_rotatedPath"Symbol 1276 MovieClip {ArrowGhost3} Frame 1Symbol 1275 MovieClip
"m_rotatedPath"Symbol 1280 MovieClip {ArrowGhost1} Frame 1Symbol 1279 MovieClip
"clip"Symbol 1397 MovieClip {InvertedVultureHere} Frame 1Symbol 744 MovieClip
"clip"Symbol 1443 MovieClip {VultureHere} Frame 1Symbol 744 MovieClip
"m_ovalClip"Symbol 1519 MovieClip {ArrowGhost4} Frame 1Symbol 1277 MovieClip
"m_rotatedPath"Symbol 1519 MovieClip {ArrowGhost4} Frame 1Symbol 1518 MovieClip
"m_notDoppler"Symbol 1541 MovieClip {UrlLockedStateView} Frame 1Symbol 1540 EditableText
"m_totalScore"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 778 MovieClip
"m_buttonSubmit"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 783 Button
"m_buttonMenu"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 397 Button
"m_level48"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level49"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level50"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level51"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_level52"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 820 MovieClip {SelectLevelButton}
"m_arrowDown"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 830 Button {GuiArrow}
"m_buttonAchievements"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 841 Button
"m_adBox"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 115 MovieClip
"m_closeButton"Symbol 1552 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 119 Button {CloseCross}
"m_text"Symbol 1554 MovieClip Frame 1Symbol 1553 EditableText
"m_buttonMenu"Symbol 1558 MovieClip {GrifShootingStateView} Frame 1Symbol 397 Button
"m_scoreClip"Symbol 1558 MovieClip {GrifShootingStateView} Frame 1Symbol 935 MovieClip
"m_arrowsLeftClip"Symbol 1558 MovieClip {GrifShootingStateView} Frame 1Symbol 946 MovieClip
"m_buttonReplay"Symbol 1558 MovieClip {GrifShootingStateView} Frame 1Symbol 952 Button
"m_timeLeftClip"Symbol 1558 MovieClip {GrifShootingStateView} Frame 1Symbol 1554 MovieClip
"vertex6"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex2"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex1"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex3"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex4"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex5"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex0"Symbol 1566 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex0"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex4"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex5"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex3"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex2"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex1"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex6"Symbol 1567 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"m_moreGames"Symbol 1575 MovieClip {MoreGamesPanel} Frame 1Symbol 1571 Button
"m_walkthrough"Symbol 1575 MovieClip {MoreGamesPanel} Frame 1Symbol 1574 Button
"m_clickToContinue"Symbol 1581 MovieClip {GamePausedStateView} Frame 1Symbol 1578 MovieClip {ClickToContinue}
"m_checkBox"Symbol 1582 MovieClip {HideTipsPanel} Frame 1Symbol 596 MovieClip {CheckBox}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 11284 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."
Protect (24)Timeline Frame 131 bytes "..$1$Kt$McsnFYEKsMvUAgB1PzTpb1."

Labels

"normal"Symbol 1161 MovieClip {BowClip} Frame 1
"stretch"Symbol 1161 MovieClip {BowClip} Frame 2
"fire"Symbol 1161 MovieClip {BowClip} Frame 11




https://swfchan.com/53/263407/info.shtml
Created: 24/3 -2026 05:40:51 Last modified: 24/3 -2026 05:40:51 Server time: 24/03 -2026 08:11:58