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

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/22283970?noj=FRM22283970-2DC" width="1" height="1"></div>

Gibbets.swf

This is the info page for
Flash #84693

(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 until May 13.
You can still play the game until then 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.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; 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{ trace("resendData"); if (readytoSend){ as2Ready(); }; } } }//package Gibbets_II_fla
Section 97
//introFlash_612 (Gibbets_II_fla.introFlash_612) package Gibbets_II_fla { import flash.display.*; public dynamic class introFlash_612 extends MovieClip { public function introFlash_612(){ 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_buttonHighScores:SimpleButton; 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.Dynamics.Joints.*; import Box2D.Collision.*; import Utils.*; 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(){ MochiBot.track(this, "bb4d2594"); } 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.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; 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.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; import Box2D.Common.*; import Utils.*; 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.GRIFS_KILLED)){ 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.ACCURACY_70)){ _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.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; import Box2D.Common.*; import Utils.*; 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.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.*; import Box2D.Common.*; import Utils.*; 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_sightClip:MovieClip; private var m_state:int;// = -1 private var m_turtorialFrame:TurtorialFrame; 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_frontLayer:Sprite; private var m_oldSightClip:MovieClip; private var m_arrowsLeft:int; private var m_tmpScores: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; } public function onHangerDead(_arg1:Gibbet):void{ m_deadID = _arg1.getPersID(); 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 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 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{ 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; }; }; } 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()); } 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 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(); }; }; } 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); } 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(); }; }; }; } public function getArrowsLayer():Sprite{ return (m_arrowsLayer); } 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); } 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(); } 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); } 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 goNormalState():void{ setState(STATE_NORMAL); m_sightClip.x = m_bow.x; m_sightClip.y = m_bow.y; } 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; }; } 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 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> +5 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 GRIFFON HUNTER</FONT><br>") + "<br><FONT COLOR='") + REQUIREMENTS_COLOR) + "'>Requirements:</FONT> kill 100 of griffons in minigames.") + "<br><FONT COLOR='") + BONUS_COLOR) + "'>Bonus:</FONT> +50 score for each killed griffin."); _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.Dynamics.Joints.*; import Box2D.Collision.*; import Utils.*; import Main.*; import flash.display.*; import States.PlayState.*; import Ragdoll.*; import CPMStar.*; import flash.net.*; import flash.text.*; import flash.system.*; 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(); if (((((((((((!((m_loaderInfo.url.indexOf("notdoppler.com") == -1))) || (!((m_loaderInfo.url.indexOf("addictinggames.com") == -1))))) || (!((m_loaderInfo.url.indexOf("andkon.com") == -1))))) || (!((m_loaderInfo.url.indexOf("armorgames.com") == -1))))) || (!((m_loaderInfo.url.indexOf("agame.com") == -1))))) || (!((m_loaderInfo.url.indexOf("kongregate.com") == -1))))){ GameData.hideAds(); }; if (m_loaderInfo.url.indexOf("kongregate.com") != -1){ GameData.m_isKongregate = true; }; 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); StateManager.getInstance().changeState(new SponsorIntroState()); } private function loadComplete(_arg1:Event):void{ var event = _arg1; try { GameData.kongregate = event.target.content; GameData.kongregate.services.connect(); } catch(e:Error) { trace(e, e.getStackTrace()); }; } override public function handleMouseMove(_arg1:MouseEvent):void{ if (m_mouseDragEnabled){ if (m_mouseJoint){ m_mouseJoint.SetTarget(getMousePhysPos()); }; }; } public function initKongregateAPI():void{ var paramObj:Object; var apiPath:String; var request:URLRequest; var loader:Loader; try { paramObj = LoaderInfo(root.loaderInfo).parameters; apiPath = ((paramObj.kongregate_api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf")); trace("api path:", apiPath); Security.allowDomain(apiPath); request = new URLRequest(apiPath); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); loader.load(request); StateManager.getInstance().addChild(loader); } catch(e:Error) { trace(e, e.getStackTrace()); }; } 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; }; }; }; } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.GRIF_SHOOTING_WIN_STATE_BUTTON); } 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_buttonMoreGames.addEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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_buttonMoreGames.removeEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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_view.m_buttonMoreGames.removeEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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; }; } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.LOSE_STATE_MORE_GAMES_BUTTON); } 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); m_view.m_buttonMoreGames.addEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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 (left_anim.getChildByName("m_buttonHighScores").hitTestPoint(e.stageX, e.stageY, true)){ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.HIGH_SCORE_URL, ""); } 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
//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; }; }; }; } private function onButtonMoreGamesClick(_arg1:MouseEvent):void{ SoundManager.play(SoundConst.CLICK); LinksManager.goURL(LinksManager.MAIN_PAGE_URL, LinksManager.WIN_STATE_MORE_GAMES_BUTTON); } 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_buttonMoreGames.addEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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_buttonMoreGames.removeEventListener(MouseEvent.CLICK, onButtonMoreGamesClick); 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 160
//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 161
//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 162
//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 163
//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 164
//ach_1 (ach_1) package { public dynamic class ach_1 extends Achievement { } }//package
Section 165
//ach_10 (ach_10) package { public dynamic class ach_10 extends Achievement { } }//package
Section 166
//ach_11 (ach_11) package { public dynamic class ach_11 extends Achievement { } }//package
Section 167
//ach_12 (ach_12) package { public dynamic class ach_12 extends Achievement { } }//package
Section 168
//ach_13 (ach_13) package { public dynamic class ach_13 extends Achievement { } }//package
Section 169
//ach_14 (ach_14) package { public dynamic class ach_14 extends Achievement { } }//package
Section 170
//ach_15 (ach_15) package { public dynamic class ach_15 extends Achievement { } }//package
Section 171
//ach_2 (ach_2) package { public dynamic class ach_2 extends Achievement { } }//package
Section 172
//ach_3 (ach_3) package { public dynamic class ach_3 extends Achievement { } }//package
Section 173
//ach_4 (ach_4) package { public dynamic class ach_4 extends Achievement { } }//package
Section 174
//ach_5 (ach_5) package { public dynamic class ach_5 extends Achievement { } }//package
Section 175
//ach_6 (ach_6) package { public dynamic class ach_6 extends Achievement { } }//package
Section 176
//ach_7 (ach_7) package { public dynamic class ach_7 extends Achievement { } }//package
Section 177
//ach_8 (ach_8) package { public dynamic class ach_8 extends Achievement { } }//package
Section 178
//ach_9 (ach_9) package { public dynamic class ach_9 extends Achievement { } }//package
Section 179
//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 180
//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 181
//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 182
//add_arrows_sound_0 (add_arrows_sound_0) package { import flash.media.*; public dynamic class add_arrows_sound_0 extends Sound { } }//package
Section 183
//add_arrows_sound_1 (add_arrows_sound_1) package { import flash.media.*; public dynamic class add_arrows_sound_1 extends Sound { } }//package
Section 184
//AddArrowClip (AddArrowClip) package { import flash.display.*; import flash.text.*; public dynamic class AddArrowClip extends MovieClip { public var m_text:TextField; } }//package
Section 185
//ambient_1 (ambient_1) package { import flash.media.*; public dynamic class ambient_1 extends Sound { } }//package
Section 186
//ambient_2 (ambient_2) package { import flash.media.*; public dynamic class ambient_2 extends Sound { } }//package
Section 187
//AmmoGhost10 (AmmoGhost10) package { import States.PlayState.*; public dynamic class AmmoGhost10 extends AmmoGhost { } }//package
Section 188
//AmmoGhost3 (AmmoGhost3) package { import States.PlayState.*; public dynamic class AmmoGhost3 extends AmmoGhost { } }//package
Section 189
//AmmoGhost5 (AmmoGhost5) package { import States.PlayState.*; public dynamic class AmmoGhost5 extends AmmoGhost { } }//package
Section 190
//AmmoHint (AmmoHint) package { import States.PlayState.*; public dynamic class AmmoHint extends HintText { } }//package
Section 191
//arrow_ghost (arrow_ghost) package { import flash.media.*; public dynamic class arrow_ghost extends Sound { } }//package
Section 192
//ArrowGhost1 (ArrowGhost1) package { import States.PlayState.*; public dynamic class ArrowGhost1 extends HedgehogGhost { } }//package
Section 193
//ArrowGhost3 (ArrowGhost3) package { import States.PlayState.*; public dynamic class ArrowGhost3 extends HedgehogGhost { } }//package
Section 194
//ArrowGhost4 (ArrowGhost4) package { import States.PlayState.*; public dynamic class ArrowGhost4 extends HedgehogGhost { } }//package
Section 195
//ArrowGhostHint (ArrowGhostHint) package { import States.PlayState.*; public dynamic class ArrowGhostHint extends HintText { } }//package
Section 196
//ArtCloud (ArtCloud) package { import flash.display.*; public dynamic class ArtCloud extends MovieClip { } }//package
Section 197
//AsyncClip (AsyncClip) package { import flash.display.*; public class AsyncClip extends MovieClip { public function AsyncClip(){ gotoAndPlay(int((totalFrames * Math.random()))); } } }//package
Section 198
//Back1 (Back1) package { import flash.display.*; public dynamic class Back1 extends MovieClip { } }//package
Section 199
//Back2 (Back2) package { import flash.display.*; public dynamic class Back2 extends MovieClip { } }//package
Section 200
//Back3 (Back3) package { import flash.display.*; public dynamic class Back3 extends MovieClip { } }//package
Section 201
//Back4 (Back4) package { import flash.display.*; public dynamic class Back4 extends MovieClip { } }//package
Section 202
//Background (Background) package { import flash.display.*; public dynamic class Background extends MovieClip { } }//package
Section 203
//BgStones (BgStones) package { import flash.display.*; public dynamic class BgStones extends MovieClip { } }//package
Section 204
//black_square (black_square) package { import flash.display.*; public dynamic class black_square extends MovieClip { } }//package
Section 205
//BonusGameBack (BonusGameBack) package { import flash.display.*; public dynamic class BonusGameBack extends MovieClip { } }//package
Section 206
//bow_shoot (bow_shoot) package { import flash.media.*; public dynamic class bow_shoot extends Sound { } }//package
Section 207
//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 208
//BowPoint (BowPoint) package { import flash.display.*; public dynamic class BowPoint extends MovieClip { } }//package
Section 209
//Box (Box) package { import flash.display.*; public dynamic class Box extends MovieClip { } }//package
Section 210
//Brick (Brick) package { import States.PlayState.*; public dynamic class Brick extends StaticBoxIsStone { } }//package
Section 211
//BrickNoLeft (BrickNoLeft) package { import States.PlayState.*; public dynamic class BrickNoLeft extends StaticBoxIsStone { } }//package
Section 212
//BrickNoRight (BrickNoRight) package { import States.PlayState.*; public dynamic class BrickNoRight extends StaticBoxIsStone { } }//package
Section 213
//BrickNoRightNoLeft (BrickNoRightNoLeft) package { import States.PlayState.*; public dynamic class BrickNoRightNoLeft extends StaticBoxIsStone { } }//package
Section 214
//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 215
//click (click) package { import flash.media.*; public dynamic class click extends Sound { } }//package
Section 216
//ClickToContinue (ClickToContinue) package { import flash.display.*; public dynamic class ClickToContinue extends MovieClip { } }//package
Section 217
//CloseCross (CloseCross) package { import flash.display.*; public dynamic class CloseCross extends SimpleButton { } }//package
Section 218
//Cloud0 (Cloud0) package { import States.PlayState.*; public dynamic class Cloud0 extends Cloud { } }//package
Section 219
//Cloud1 (Cloud1) package { import States.PlayState.*; public dynamic class Cloud1 extends Cloud { } }//package
Section 220
//Cloud2 (Cloud2) package { import States.PlayState.*; public dynamic class Cloud2 extends Cloud { } }//package
Section 221
//Cloud3 (Cloud3) package { import States.PlayState.*; public dynamic class Cloud3 extends Cloud { } }//package
Section 222
//Cloud4 (Cloud4) package { import States.PlayState.*; public dynamic class Cloud4 extends Cloud { } }//package
Section 223
//Cloud5 (Cloud5) package { import States.PlayState.*; public dynamic class Cloud5 extends Cloud { } }//package
Section 224
//Cloud6 (Cloud6) package { import States.PlayState.*; public dynamic class Cloud6 extends Cloud { } }//package
Section 225
//Cloud7 (Cloud7) package { import States.PlayState.*; public dynamic class Cloud7 extends Cloud { } }//package
Section 226
//Cloud8 (Cloud8) package { import States.PlayState.*; public dynamic class Cloud8 extends Cloud { } }//package
Section 227
//Cloud9 (Cloud9) package { import States.PlayState.*; public dynamic class Cloud9 extends Cloud { } }//package
Section 228
//ComboSave2Hint (ComboSave2Hint) package { import States.PlayState.*; public dynamic class ComboSave2Hint extends HintText { } }//package
Section 229
//ComboSave3Hint (ComboSave3Hint) package { import States.PlayState.*; public dynamic class ComboSave3Hint extends HintText { } }//package
Section 230
//ComposedStone1 (ComposedStone1) package { import States.PlayState.*; public dynamic class ComposedStone1 extends StaticBoxIsStone { } }//package
Section 231
//ComposedStone2 (ComposedStone2) package { import States.PlayState.*; public dynamic class ComposedStone2 extends StaticBoxIsStone { } }//package
Section 232
//ComposedStone55 (ComposedStone55) package { import States.PlayState.*; public dynamic class ComposedStone55 extends StaticBoxIsStone { } }//package
Section 233
//ComposedStone96 (ComposedStone96) package { import States.PlayState.*; public dynamic class ComposedStone96 extends StaticBoxIsStone { } }//package
Section 234
//ComposedStone98 (ComposedStone98) package { import States.PlayState.*; public dynamic class ComposedStone98 extends StaticBoxIsStone { } }//package
Section 235
//ComposedStone99 (ComposedStone99) package { import States.PlayState.*; public dynamic class ComposedStone99 extends StaticBoxIsStone { } }//package
Section 236
//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 237
//CowCry (CowCry) package { import flash.display.*; public dynamic class CowCry extends MovieClip { public function CowCry(){ addFrameScript(56, frame57); } function frame57(){ stop(); } } }//package
Section 238
//CowHere (CowHere) package { import flash.display.*; public dynamic class CowHere extends MovieClip { } }//package
Section 239
//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 240
//CowNormal (CowNormal) package { import flash.display.*; public dynamic class CowNormal extends MovieClip { } }//package
Section 241
//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 242
//cry_0 (cry_0) package { import flash.media.*; public dynamic class cry_0 extends Sound { } }//package
Section 243
//cry_1 (cry_1) package { import flash.media.*; public dynamic class cry_1 extends Sound { } }//package
Section 244
//cry_2 (cry_2) package { import flash.media.*; public dynamic class cry_2 extends Sound { } }//package
Section 245
//cry_3 (cry_3) package { import flash.media.*; public dynamic class cry_3 extends Sound { } }//package
Section 246
//cry_4 (cry_4) package { import flash.media.*; public dynamic class cry_4 extends Sound { } }//package
Section 247
//cry_5 (cry_5) package { import flash.media.*; public dynamic class cry_5 extends Sound { } }//package
Section 248
//cry_6 (cry_6) package { import flash.media.*; public dynamic class cry_6 extends Sound { } }//package
Section 249
//cry_7 (cry_7) package { import flash.media.*; public dynamic class cry_7 extends Sound { } }//package
Section 250
//death_cry (death_cry) package { import flash.media.*; public dynamic class death_cry extends Sound { } }//package
Section 251
//DoubleSave (DoubleSave) package { import flash.display.*; public dynamic class DoubleSave extends MovieClip { } }//package
Section 252
//exploison (exploison) package { import flash.media.*; public dynamic class exploison extends Sound { } }//package
Section 253
//FaceColors_1 (FaceColors_1) package { import flash.display.*; public dynamic class FaceColors_1 extends MovieClip { } }//package
Section 254
//FaceColors_2 (FaceColors_2) package { import flash.display.*; public dynamic class FaceColors_2 extends MovieClip { } }//package
Section 255
//FaceColors_3 (FaceColors_3) package { import flash.display.*; public dynamic class FaceColors_3 extends MovieClip { } }//package
Section 256
//FaceColors_4 (FaceColors_4) package { import flash.display.*; public dynamic class FaceColors_4 extends MovieClip { } }//package
Section 257
//flower_0 (flower_0) package { import States.PlayState.*; public dynamic class flower_0 extends Frontground { } }//package
Section 258
//flower_1 (flower_1) package { import States.PlayState.*; public dynamic class flower_1 extends Frontground { } }//package
Section 259
//flower_2 (flower_2) package { import States.PlayState.*; public dynamic class flower_2 extends Frontground { } }//package
Section 260
//flower_3 (flower_3) package { import States.PlayState.*; public dynamic class flower_3 extends Frontground { } }//package
Section 261
//flower_4 (flower_4) package { import States.PlayState.*; public dynamic class flower_4 extends Frontground { } }//package
Section 262
//flower_5 (flower_5) package { import States.PlayState.*; public dynamic class flower_5 extends Frontground { } }//package
Section 263
//flower_6 (flower_6) package { import States.PlayState.*; public dynamic class flower_6 extends Frontground { } }//package
Section 264
//GameCompleteCloud (GameCompleteCloud) package { import flash.display.*; public dynamic class GameCompleteCloud extends MovieClip { } }//package
Section 265
//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 266
//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 (true); } 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 267
//GamePausedStateView (GamePausedStateView) package { import flash.display.*; public dynamic class GamePausedStateView extends MovieClip { public var m_clickToContinue:ClickToContinue; } }//package
Section 268
//GiantSky (GiantSky) package { import flash.display.*; public dynamic class GiantSky extends MovieClip { } }//package
Section 269
//GibbetColumn (GibbetColumn) package { import States.PlayState.*; public dynamic class GibbetColumn extends StaticBoxIsNotStone { } }//package
Section 270
//GibbetGround (GibbetGround) package { import flash.display.*; public dynamic class GibbetGround extends MovieClip { } }//package
Section 271
//GibbetObliquely (GibbetObliquely) package { import flash.display.*; public dynamic class GibbetObliquely extends MovieClip { } }//package
Section 272
//GibbetStick (GibbetStick) package { import States.PlayState.*; public dynamic class GibbetStick extends StaticBoxIsNotStone { } }//package
Section 273
//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 274
//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_buttonMoreGames:SimpleButton; public var m_accuracy:MovieClip; public var m_currentScore:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_levelNum:TextField; public var m_bestScore:MovieClip; public var m_buttonNext:SimpleButton; } }//package
Section 275
//Ground (Ground) package { import flash.display.*; public dynamic class Ground extends MovieClip { } }//package
Section 276
//GuiArrow (GuiArrow) package { import flash.display.*; public dynamic class GuiArrow extends SimpleButton { } }//package
Section 277
//HangerFace (HangerFace) package { import flash.display.*; public dynamic class HangerFace extends MovieClip { public function HangerFace(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 278
//HangerPoint (HangerPoint) package { import flash.display.*; public dynamic class HangerPoint extends MovieClip { } }//package
Section 279
//HeadShotCloud (HeadShotCloud) package { import flash.display.*; public dynamic class HeadShotCloud extends MovieClip { } }//package
Section 280
//HealthBar (HealthBar) package { import flash.display.*; public dynamic class HealthBar extends MovieClip { } }//package
Section 281
//herb (herb) package { import States.PlayState.*; public dynamic class herb extends Frontground { } }//package
Section 282
//HideTipsPanel (HideTipsPanel) package { import flash.display.*; public dynamic class HideTipsPanel extends MovieClip { public var m_checkBox:CheckBox; } }//package
Section 283
//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 284
//HintPoint (HintPoint) package { import flash.display.*; public dynamic class HintPoint extends MovieClip { } }//package
Section 285
//ILikeToHangCloud (ILikeToHangCloud) package { import flash.display.*; public dynamic class ILikeToHangCloud extends MovieClip { } }//package
Section 286
//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 287
//IntroButton (IntroButton) package { import flash.display.*; public dynamic class IntroButton extends SimpleButton { } }//package
Section 288
//InvertControlHint (InvertControlHint) package { import States.PlayState.*; public dynamic class InvertControlHint extends HintText { } }//package
Section 289
//InvertedCowHere (InvertedCowHere) package { import flash.display.*; public dynamic class InvertedCowHere extends MovieClip { } }//package
Section 290
//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 291
//InvertedGibbetObliquely (InvertedGibbetObliquely) package { import flash.display.*; public dynamic class InvertedGibbetObliquely extends MovieClip { } }//package
Section 292
//InvertedVultureHere (InvertedVultureHere) package { import flash.display.*; public dynamic class InvertedVultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 293
//LeftEdgeMarker (LeftEdgeMarker) package { import flash.display.*; public dynamic class LeftEdgeMarker extends MovieClip { } }//package
Section 294
//LeftLowerHand_1 (LeftLowerHand_1) package { import flash.display.*; public dynamic class LeftLowerHand_1 extends MovieClip { } }//package
Section 295
//LeftLowerHand_2 (LeftLowerHand_2) package { import flash.display.*; public dynamic class LeftLowerHand_2 extends MovieClip { } }//package
Section 296
//LeftLowerHand_3 (LeftLowerHand_3) package { import flash.display.*; public dynamic class LeftLowerHand_3 extends MovieClip { } }//package
Section 297
//LeftLowerHand_4 (LeftLowerHand_4) package { import flash.display.*; public dynamic class LeftLowerHand_4 extends MovieClip { } }//package
Section 298
//LeftLowerLeg_1 (LeftLowerLeg_1) package { import flash.display.*; public dynamic class LeftLowerLeg_1 extends MovieClip { } }//package
Section 299
//LeftLowerLeg_2 (LeftLowerLeg_2) package { import flash.display.*; public dynamic class LeftLowerLeg_2 extends MovieClip { } }//package
Section 300
//LeftLowerLeg_3 (LeftLowerLeg_3) package { import flash.display.*; public dynamic class LeftLowerLeg_3 extends MovieClip { } }//package
Section 301
//LeftLowerLeg_4 (LeftLowerLeg_4) package { import flash.display.*; public dynamic class LeftLowerLeg_4 extends MovieClip { } }//package
Section 302
//LeftUpperHand_1 (LeftUpperHand_1) package { import flash.display.*; public dynamic class LeftUpperHand_1 extends MovieClip { } }//package
Section 303
//LeftUpperHand_2 (LeftUpperHand_2) package { import flash.display.*; public dynamic class LeftUpperHand_2 extends MovieClip { } }//package
Section 304
//LeftUpperHand_3 (LeftUpperHand_3) package { import flash.display.*; public dynamic class LeftUpperHand_3 extends MovieClip { } }//package
Section 305
//LeftUpperHand_4 (LeftUpperHand_4) package { import flash.display.*; public dynamic class LeftUpperHand_4 extends MovieClip { } }//package
Section 306
//LeftUpperLeg_1 (LeftUpperLeg_1) package { import flash.display.*; public dynamic class LeftUpperLeg_1 extends MovieClip { } }//package
Section 307
//LeftUpperLeg_2 (LeftUpperLeg_2) package { import flash.display.*; public dynamic class LeftUpperLeg_2 extends MovieClip { } }//package
Section 308
//LeftUpperLeg_3 (LeftUpperLeg_3) package { import flash.display.*; public dynamic class LeftUpperLeg_3 extends MovieClip { } }//package
Section 309
//LeftUpperLeg_4 (LeftUpperLeg_4) package { import flash.display.*; public dynamic class LeftUpperLeg_4 extends MovieClip { } }//package
Section 310
//Level00 (Level00) package { import flash.display.*; public dynamic class Level00 extends MovieClip { } }//package
Section 311
//Level01 (Level01) package { import flash.display.*; public dynamic class Level01 extends MovieClip { } }//package
Section 312
//Level02 (Level02) package { import flash.display.*; public dynamic class Level02 extends MovieClip { } }//package
Section 313
//Level03 (Level03) package { import flash.display.*; public dynamic class Level03 extends MovieClip { } }//package
Section 314
//Level04 (Level04) package { import flash.display.*; public dynamic class Level04 extends MovieClip { } }//package
Section 315
//Level05 (Level05) package { import flash.display.*; public dynamic class Level05 extends MovieClip { } }//package
Section 316
//Level06 (Level06) package { import flash.display.*; public dynamic class Level06 extends MovieClip { } }//package
Section 317
//Level07 (Level07) package { import flash.display.*; public dynamic class Level07 extends MovieClip { } }//package
Section 318
//Level08 (Level08) package { import flash.display.*; public dynamic class Level08 extends MovieClip { } }//package
Section 319
//Level09 (Level09) package { import flash.display.*; public dynamic class Level09 extends MovieClip { } }//package
Section 320
//Level10 (Level10) package { import flash.display.*; public dynamic class Level10 extends MovieClip { } }//package
Section 321
//Level11 (Level11) package { import flash.display.*; public dynamic class Level11 extends MovieClip { } }//package
Section 322
//Level12 (Level12) package { import flash.display.*; public dynamic class Level12 extends MovieClip { } }//package
Section 323
//Level13 (Level13) package { import flash.display.*; public dynamic class Level13 extends MovieClip { } }//package
Section 324
//Level14 (Level14) package { import flash.display.*; public dynamic class Level14 extends MovieClip { } }//package
Section 325
//Level15 (Level15) package { import flash.display.*; public dynamic class Level15 extends MovieClip { } }//package
Section 326
//Level16 (Level16) package { import flash.display.*; public dynamic class Level16 extends MovieClip { } }//package
Section 327
//Level17 (Level17) package { import flash.display.*; public dynamic class Level17 extends MovieClip { } }//package
Section 328
//Level18 (Level18) package { import flash.display.*; public dynamic class Level18 extends MovieClip { } }//package
Section 329
//Level19 (Level19) package { import flash.display.*; public dynamic class Level19 extends MovieClip { } }//package
Section 330
//Level20 (Level20) package { import flash.display.*; public dynamic class Level20 extends MovieClip { } }//package
Section 331
//Level21 (Level21) package { import flash.display.*; public dynamic class Level21 extends MovieClip { } }//package
Section 332
//Level22 (Level22) package { import flash.display.*; public dynamic class Level22 extends MovieClip { } }//package
Section 333
//Level23 (Level23) package { import flash.display.*; public dynamic class Level23 extends MovieClip { } }//package
Section 334
//Level24 (Level24) package { import flash.display.*; public dynamic class Level24 extends MovieClip { } }//package
Section 335
//Level25 (Level25) package { import flash.display.*; public dynamic class Level25 extends MovieClip { } }//package
Section 336
//Level26 (Level26) package { import flash.display.*; public dynamic class Level26 extends MovieClip { } }//package
Section 337
//Level27 (Level27) package { import flash.display.*; public dynamic class Level27 extends MovieClip { } }//package
Section 338
//Level28 (Level28) package { import flash.display.*; public dynamic class Level28 extends MovieClip { } }//package
Section 339
//Level29 (Level29) package { import flash.display.*; public dynamic class Level29 extends MovieClip { } }//package
Section 340
//Level30 (Level30) package { import flash.display.*; public dynamic class Level30 extends MovieClip { } }//package
Section 341
//Level31 (Level31) package { import flash.display.*; public dynamic class Level31 extends MovieClip { } }//package
Section 342
//Level32 (Level32) package { import flash.display.*; public dynamic class Level32 extends MovieClip { } }//package
Section 343
//Level33 (Level33) package { import flash.display.*; public dynamic class Level33 extends MovieClip { } }//package
Section 344
//Level34 (Level34) package { import flash.display.*; public dynamic class Level34 extends MovieClip { } }//package
Section 345
//Level35 (Level35) package { import flash.display.*; public dynamic class Level35 extends MovieClip { } }//package
Section 346
//Level36 (Level36) package { import flash.display.*; public dynamic class Level36 extends MovieClip { } }//package
Section 347
//Level37 (Level37) package { import flash.display.*; public dynamic class Level37 extends MovieClip { } }//package
Section 348
//Level38 (Level38) package { import flash.display.*; public dynamic class Level38 extends MovieClip { } }//package
Section 349
//Level39 (Level39) package { import flash.display.*; public dynamic class Level39 extends MovieClip { } }//package
Section 350
//Level40 (Level40) package { import flash.display.*; public dynamic class Level40 extends MovieClip { } }//package
Section 351
//Level41 (Level41) package { import flash.display.*; public dynamic class Level41 extends MovieClip { } }//package
Section 352
//Level42 (Level42) package { import flash.display.*; public dynamic class Level42 extends MovieClip { } }//package
Section 353
//Level43 (Level43) package { import flash.display.*; public dynamic class Level43 extends MovieClip { } }//package
Section 354
//Level44 (Level44) package { import flash.display.*; public dynamic class Level44 extends MovieClip { } }//package
Section 355
//Level45 (Level45) package { import flash.display.*; public dynamic class Level45 extends MovieClip { } }//package
Section 356
//Level46 (Level46) package { import flash.display.*; public dynamic class Level46 extends MovieClip { } }//package
Section 357
//Level47 (Level47) package { import flash.display.*; public dynamic class Level47 extends MovieClip { } }//package
Section 358
//Level48 (Level48) package { import flash.display.*; public dynamic class Level48 extends MovieClip { } }//package
Section 359
//Level49 (Level49) package { import flash.display.*; public dynamic class Level49 extends MovieClip { } }//package
Section 360
//Level50 (Level50) package { import flash.display.*; public dynamic class Level50 extends MovieClip { } }//package
Section 361
//Level51 (Level51) package { import flash.display.*; public dynamic class Level51 extends MovieClip { } }//package
Section 362
//Level52 (Level52) package { import flash.display.*; public dynamic class Level52 extends MovieClip { } }//package
Section 363
//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 364
//LongBack (LongBack) package { import flash.display.*; public dynamic class LongBack extends MovieClip { } }//package
Section 365
//LongShootArrow (LongShootArrow) package { import flash.display.*; public dynamic class LongShootArrow extends MovieClip { } }//package
Section 366
//lose_sound (lose_sound) package { import flash.media.*; public dynamic class lose_sound extends Sound { } }//package
Section 367
//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_buttonMoreGames:SimpleButton; public var m_buttonRestart:SimpleButton; } }//package
Section 368
//main_menu_arrow_sound (main_menu_arrow_sound) package { import flash.media.*; public dynamic class main_menu_arrow_sound extends Sound { } }//package
Section 369
//main_menu_music (main_menu_music) package { import flash.media.*; public dynamic class main_menu_music extends Sound { } }//package
Section 370
//MainMenuCloud1 (MainMenuCloud1) package { import flash.display.*; public dynamic class MainMenuCloud1 extends MovieClip { } }//package
Section 371
//MainMenuCloud2 (MainMenuCloud2) package { import flash.display.*; public dynamic class MainMenuCloud2 extends MovieClip { } }//package
Section 372
//MainMenuCloud3 (MainMenuCloud3) package { import flash.display.*; public dynamic class MainMenuCloud3 extends MovieClip { } }//package
Section 373
//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 374
//Mill (Mill) package { import flash.display.*; public dynamic class Mill extends MovieClip { } }//package
Section 375
//MillFan (MillFan) package { import flash.display.*; public dynamic class MillFan extends MovieClip { } }//package
Section 376
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//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
//win_sound (win_sound) package { import flash.media.*; public dynamic class win_sound extends Sound { } }//package
Section 488
//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_buttonMoreGames:SimpleButton; public var m_currentScore:MovieClip; public var m_buttonNewAchievement:SimpleButton; public var m_levelNum:TextField; public var m_arrowsUsed:MovieClip; public var m_bestScore:MovieClip; public var m_buttonNext:SimpleButton; } }//package
Section 489
//vulture_cry_1 (vulture_cry_1) package { import flash.media.*; public dynamic class vulture_cry_1 extends Sound { } }//package
Section 490
//vulture_cry_2 (vulture_cry_2) package { import flash.media.*; public dynamic class vulture_cry_2 extends Sound { } }//package
Section 491
//vulture_cry_3 (vulture_cry_3) package { import flash.media.*; public dynamic class vulture_cry_3 extends Sound { } }//package
Section 492
//vulture_cry_4 (vulture_cry_4) package { import flash.media.*; public dynamic class vulture_cry_4 extends Sound { } }//package
Section 493
//VultureBend (VultureBend) package { import flash.display.*; public dynamic class VultureBend extends MovieClip { public var clip:MovieClip; } }//package
Section 494
//VultureDie (VultureDie) package { import flash.display.*; public dynamic class VultureDie extends MovieClip { public var clip:MovieClip; } }//package
Section 495
//VultureFeathers (VultureFeathers) package { import States.PlayState.*; public dynamic class VultureFeathers extends AutoreleaseClip { } }//package
Section 496
//VultureHere (VultureHere) package { import flash.display.*; public dynamic class VultureHere extends MovieClip { public var clip:MovieClip; } }//package
Section 497
//VultureJump (VultureJump) package { import flash.display.*; public dynamic class VultureJump extends MovieClip { public var clip:MovieClip; } }//package
Section 498
//VultureShootingRules (VultureShootingRules) package { import States.PlayState.*; public dynamic class VultureShootingRules extends AutoreleaseClip { } }//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 702 847 1150 1246 1268 1303 1385 1403 1426 1463 1476 1501 1503 1504 1505 1506 1508 1509 1510 1511 1512 1513 1515 1516 1517 1518 1519 1522 1525 1527 1529 1534 1537 1543 1551 1552 1553 1554 1569 1570
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClipUses:3Used by:5
Symbol 5 MovieClip {Cloud3}Uses:4Used by:141 1150 1268 1303 1403 1426 1437 1440 1441 1444 1463 1467 1514 1516 1517 1518 1525 1527 1537 1551 1552 1553 1554 1569 1570
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClipUses:6Used by:8
Symbol 8 MovieClip {Cloud5}Uses:7Used by:141 847 1150 1268 1303 1329 1403 1426 1447 1449 1463 1476 1501 1504 1505 1511 1513 1514 1515 1517 1518 1519 1522 1525 1527 1534 1537 1538 1543 1551 1552 1553 1554 1557 1570
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 760 766 769 777 780 817 820 823 872 873 887 891 893 895 897 899 901 911 927 931 944 984 1558
Symbol 16 EditableTextUses:15 949Used 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 700 784 788 859 862 866 886 962
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 702 1150 1303 1329 1385 1403 1426 1469 1501 1503 1504 1505 1509 1513 1515 1517 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1551 1552 1553 1554 1569
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClipUses:29Used by:31
Symbol 31 MovieClip {Cloud1}Uses:30Used by:141 847 1150 1246 1268 1303 1329 1385 1403 1426 1447 1449 1463 1467 1504 1506 1509 1510 1511 1512 1513 1514 1516 1518 1519 1522 1525 1526 1529 1537 1551 1552 1553 1554 1557
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClipUses:32Used by:34
Symbol 34 MovieClip {Cloud4}Uses:33Used by:141 1150 1329 1385 1467 1469 1476 1503 1505 1510 1512 1515 1516 1519 1525 1526 1534 1538 1543 1551 1552 1553 1554 1557
Symbol 35 GraphicUsed by:36
Symbol 36 MovieClipUses:35Used by:37
Symbol 37 MovieClip {Cloud7}Uses:36Used by:141 523 847 1150 1246 1437 1440 1441 1444 1447 1449 1469 1476 1501 1503 1505 1506 1510 1512 1513 1515 1517 1526 1527 1537 1538 1543 1551 1552 1553 1554 1557 1570
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:38Used by:40
Symbol 40 MovieClip {Cloud8}Uses:39Used by:141 702 1150 1246 1385 1403 1426 1437 1440 1441 1444 1447 1449 1469 1476 1501 1505 1506 1509 1511 1512 1514 1517 1522 1534 1551 1552 1553 1554 1569
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClipUses:41Used by:43
Symbol 43 MovieClip {Cloud0}Uses:42Used by:141 702 1150 1246 1268 1329 1437 1440 1441 1444 1463 1467 1469 1504 1506 1509 1511 1514 1516 1518 1526 1529 1551 1552 1553 1554 1569 1570
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 1246 1303 1329 1385 1437 1447 1449 1458 1460 1463 1467 1476 1501 1503 1510 1514 1525 1526 1527 1534 1538 1543 1569 1570
Symbol 99 GraphicUsed by:100
Symbol 100 MovieClip {GibbetColumn}Uses:99Used by:113 1246 1268 1303 1329 1385 1403 1426 1437 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1505 1509 1510 1514 1516 1517 1518 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1569 1570
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 1385 1447 1458 1463 1467 1501 1509 1517 1525 1529 1534
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClip {GibbetStick}Uses:107Used by:113 1246 1268 1303 1329 1385 1403 1426 1437 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1505 1509 1510 1514 1516 1517 1518 1522 1525 1526 1527 1529 1534 1537 1538 1543 1569 1570
Symbol 109 GraphicUsed by:110 486
Symbol 110 MovieClip {Screw}Uses:109Used by:113 1246 1268 1303 1329 1385 1403 1426 1437 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1505 1509 1510 1514 1516 1517 1518 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1569 1570
Symbol 111 GraphicUsed by:112
Symbol 112 MovieClip {RopeRings}Uses:111Used by:113 1246 1268 1303 1329 1385 1403 1426 1437 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1505 1509 1510 1514 1516 1517 1518 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1569 1570
Symbol 113 MovieClipUses:98 100 106 108 110 112Used by:141 1150
Symbol 114 GraphicUsed by:115
Symbol 115 MovieClipUses:114Used by:141 1557
Symbol 116 GraphicUsed by:117
Symbol 117 MovieClipUses:116Used by:119
Symbol 118 GraphicUsed by:119 802
Symbol 119 Button {CloseCross}Uses:117 118Used by:141 1557
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 702 1150
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 852
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 1437 1440 1441 1444 1447 1557
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 846 922
Symbol 343 MovieClip {звёздочка}Uses:342Used by:345 348 351 354 357 360 363 366 369 372 375 378 382 386 392 846 922
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 961 962
Symbol 394 GraphicUsed by:395 397 860 862
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 847 963 1150 1557 1563
Symbol 398 TextUses:15Used by:400
Symbol 399 GraphicUsed by:400 509 778 1555
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_612}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 1157 1546
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 1423
Symbol 431 GraphicUsed by:460
Symbol 432 GraphicUsed by:460
Symbol 433 GraphicUsed by:460
Symbol 434 GraphicUsed by:460 1423
Symbol 435 GraphicUsed by:460 1423
Symbol 436 GraphicUsed by:439
Symbol 437 GraphicUsed by:439
Symbol 438 GraphicUsed by:439
Symbol 439 MovieClipUses:436 437 438Used by:460 1423
Symbol 440 GraphicUsed by:441
Symbol 441 MovieClipUses:440Used by:460 1423
Symbol 442 GraphicUsed by:460 1423
Symbol 443 GraphicUsed by:460 1423
Symbol 444 GraphicUsed by:460 1423
Symbol 445 GraphicUsed by:460 1423
Symbol 446 GraphicUsed by:460 1423
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 1329 1449 1467 1469 1514 1526 1538
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 702 847 1246 1385 1403 1426 1447 1449 1476 1501 1503 1504 1505 1509 1510 1512 1514 1517 1522 1526 1527 1534 1538 1543 1551 1552 1553 1554 1557 1569
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 1246 1268 1303 1329 1385 1403 1426 1437 1440 1441 1444 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1504 1505 1506 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1569 1570 1571 1572
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 1246 1268 1303 1385 1403 1426 1463 1467 1510 1513 1516 1518 1519 1522 1529 1551 1552 1553 1554 1569
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 1587
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 1587
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:702
Symbol 615 GraphicUsed by:702
Symbol 616 GraphicUsed by:702
Symbol 617 GraphicUsed by:620
Symbol 618 GraphicUsed by:620
Symbol 619 GraphicUsed by:620
Symbol 620 MovieClipUses:617 618 619Used by:702
Symbol 621 GraphicUsed by:622
Symbol 622 MovieClipUses:621Used by:623
Symbol 623 MovieClipUses:622Used by:702
Symbol 624 GraphicUsed by:625
Symbol 625 MovieClipUses:624Used by:702
Symbol 626 GraphicUsed by:702
Symbol 627 GraphicUsed by:628
Symbol 628 MovieClipUses:627Used by:702
Symbol 629 GraphicUsed by:630
Symbol 630 MovieClipUses:629Used by:702
Symbol 631 GraphicUsed by:651
Symbol 632 GraphicUsed by:651
Symbol 633 GraphicUsed by:651 726 747 749
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 726 747 749
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:702
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:702
Symbol 659 GraphicUsed by:660
Symbol 660 MovieClipUses:659Used by:702
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:702
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:702
Symbol 671 ButtonUses:25Used by:685
Symbol 672 GraphicUsed by:673 677 691 695 867 871
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:702
Symbol 686 MovieClipUses:19Used by:689 690 699 700
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:701
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:701
Symbol 696 GraphicUsed by:697 698 700
Symbol 697 MovieClipUses:696Used by:700
Symbol 698 MovieClipUses:696Used by:699
Symbol 699 MovieClipUses:686 698Used by:700
Symbol 700 ButtonUses:686 697 699 19 696Used by:701
Symbol 701 MovieClip {Gibbets_II_fla.LeftPanel_542}Uses:690 695 700Used by:702
Symbol 702 MovieClip {MainMenuStateView}Uses:615 2 43 28 466 40 616 620 623 625 626 628 630 651 658 660 664 670 685 701 614 140
Symbol 703 GraphicUsed by:704
Symbol 704 MovieClipUses:703Used by:705
Symbol 705 MovieClip {VultureShootingRules}Uses:704
Symbol 706 GraphicUsed by:707
Symbol 707 MovieClip {VultureFeathers}Uses:706
Symbol 708 GraphicUsed by:726
Symbol 709 GraphicUsed by:726
Symbol 710 GraphicUsed by:726
Symbol 711 GraphicUsed by:726
Symbol 712 GraphicUsed by:726
Symbol 713 GraphicUsed by:726
Symbol 714 GraphicUsed by:726
Symbol 715 GraphicUsed by:726
Symbol 716 GraphicUsed by:726
Symbol 717 GraphicUsed by:726
Symbol 718 GraphicUsed by:726
Symbol 719 GraphicUsed by:726
Symbol 720 GraphicUsed by:726
Symbol 721 GraphicUsed by:726
Symbol 722 GraphicUsed by:723
Symbol 723 MovieClipUses:722Used by:726
Symbol 724 GraphicUsed by:725
Symbol 725 MovieClipUses:724Used by:726
Symbol 726 MovieClip {Gibbets_II_fla.vulture_copy3_506}Uses:708 709 633 710 711 712 713 714 715 716 717 718 719 720 721 723 648 725Used by:727
Symbol 727 MovieClip {VultureDie}Uses:726
Symbol 728 GraphicUsed by:747 749
Symbol 729 GraphicUsed by:747 749
Symbol 730 GraphicUsed by:747 749
Symbol 731 GraphicUsed by:747 749
Symbol 732 GraphicUsed by:747 749
Symbol 733 GraphicUsed by:747 749
Symbol 734 GraphicUsed by:747 749
Symbol 735 GraphicUsed by:747 749
Symbol 736 GraphicUsed by:747 749
Symbol 737 GraphicUsed by:747 749
Symbol 738 GraphicUsed by:747 749
Symbol 739 GraphicUsed by:747 749
Symbol 740 GraphicUsed by:747 749
Symbol 741 GraphicUsed by:747 749
Symbol 742 GraphicUsed by:747 749
Symbol 743 GraphicUsed by:744
Symbol 744 MovieClipUses:743Used by:747 749
Symbol 745 GraphicUsed by:746
Symbol 746 MovieClipUses:745Used by:747 749
Symbol 747 MovieClipUses:728 729 730 633 731 732 733 734 735 736 737 738 739 740 741 742 744 648 746Used by:748
Symbol 748 MovieClip {VultureBend}Uses:747
Symbol 749 MovieClipUses:728 729 730 633 731 732 733 734 735 736 737 738 739 740 741 742 744 648 746Used by:750 1402 1448
Symbol 750 MovieClip {VultureJump}Uses:749
Symbol 751 GraphicUsed by:752
Symbol 752 MovieClip {States.GrifShooting.VultureShelf}Uses:751
Symbol 753 GraphicUsed by:754
Symbol 754 MovieClipUses:753Used by:755
Symbol 755 MovieClipUses:754Used by:759 765 768 772 816 819 822 824
Symbol 756 GraphicUsed by:759 772 816 824
Symbol 757 GraphicUsed by:758
Symbol 758 MovieClipUses:757Used by:759 765 768 772
Symbol 759 MovieClipUses:755 756 758Used by:773
Symbol 760 EditableTextUses:15 949Used by:773
Symbol 761 GraphicUsed by:762
Symbol 762 MovieClipUses:761Used by:763
Symbol 763 MovieClipUses:762Used by:773 825
Symbol 764 GraphicUsed by:765
Symbol 765 MovieClipUses:755 764 758Used by:773
Symbol 766 EditableTextUses:15 949Used by:773
Symbol 767 GraphicUsed by:768
Symbol 768 MovieClipUses:755 767 758Used by:773
Symbol 769 EditableTextUses:15 949Used by:773
Symbol 770 GraphicUsed by:771
Symbol 771 MovieClipUses:770Used by:772 824
Symbol 772 MovieClipUses:755 756 771 758Used by:773
Symbol 773 MovieClip {SelectLevelBonusButton}Uses:759 760 763 765 766 768 769 772Used by:826
Symbol 774 GraphicUsed by:775
Symbol 775 MovieClip {Back2}Uses:774Used by:847 1268 1303 1403 1476 1505 1513 1515 1522 1527 1534 1537
Symbol 776 GraphicUsed by:847
Symbol 777 TextUses:15Used by:778 1555
Symbol 778 MovieClipUses:777 399Used by:779
Symbol 779 MovieClipUses:778Used by:847
Symbol 780 EditableTextUses:15 949Used by:783
Symbol 781 GraphicUsed by:782
Symbol 782 MovieClipUses:781Used by:783
Symbol 783 MovieClipUses:780 782Used by:847 1150 1557
Symbol 784 MovieClipUses:19Used by:787 788
Symbol 785 GraphicUsed by:786 788
Symbol 786 MovieClipUses:785Used by:787 788
Symbol 787 MovieClipUses:784 786Used by:788
Symbol 788 ButtonUses:784 786 787 19 785Used by:847 1150 1557
Symbol 789 GraphicUsed by:796
Symbol 790 GraphicUsed by:795
Symbol 791 GraphicUsed by:792
Symbol 792 MovieClipUses:791Used by:795
Symbol 793 GraphicUsed by:795
Symbol 794 GraphicUsed by:795
Symbol 795 MovieClipUses:790 792 793 794Used by:796
Symbol 796 MovieClip {tree_4}Uses:789 795Used by:847 1463 1512 1517 1522 1569
Symbol 797 GraphicUsed by:798
Symbol 798 MovieClip {herb}Uses:797Used by:847 1268 1303 1403 1426 1458 1460 1461 1462 1463 1476 1501 1505 1508 1509 1510 1511 1512 1513 1515 1517 1518 1519 1522 1525 1527 1534 1543 1569 1570
Symbol 799 GraphicUsed by:802
Symbol 800 GraphicUsed by:801
Symbol 801 MovieClipUses:800Used by:802
Symbol 802 MovieClipUses:118 799 801Used by:806
Symbol 803 GraphicUsed by:804
Symbol 804 MovieClipUses:803Used by:805
Symbol 805 MovieClipUses:804Used by:806
Symbol 806 MovieClip {Ground}Uses:802 805Used by:847 1246 1268 1303 1329 1403 1426 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1505 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1522 1525 1526 1527 1534 1537 1538 1543 1569 1570
Symbol 807 GraphicUsed by:808
Symbol 808 MovieClipUses:807Used by:815
Symbol 809 GraphicUsed by:814
Symbol 810 GraphicUsed by:811
Symbol 811 MovieClipUses:810Used by:814 1274
Symbol 812 GraphicUsed by:814
Symbol 813 GraphicUsed by:814
Symbol 814 MovieClipUses:809 811 812 813Used by:815
Symbol 815 MovieClip {tree_6}Uses:808 814Used by:847 1303 1543
Symbol 816 MovieClipUses:755 756Used by:825
Symbol 817 EditableTextUses:15 949Used by:825
Symbol 818 GraphicUsed by:819
Symbol 819 MovieClipUses:755 818Used by:825
Symbol 820 EditableTextUses:15 949Used by:825
Symbol 821 GraphicUsed by:822
Symbol 822 MovieClipUses:755 821Used by:825
Symbol 823 EditableTextUses:15 949Used by:825
Symbol 824 MovieClipUses:755 756 771Used by:825
Symbol 825 MovieClip {SelectLevelButton}Uses:816 817 763 819 820 822 823 824Used by:826 1557
Symbol 826 MovieClipUses:825 773Used by:847
Symbol 827 GraphicUsed by:830 833 835
Symbol 828 GraphicUsed by:829 835
Symbol 829 MovieClipUses:828Used by:830
Symbol 830 MovieClipUses:827 829Used by:835
Symbol 831 GraphicUsed by:832
Symbol 832 MovieClipUses:831Used by:833
Symbol 833 MovieClipUses:827 832Used by:834
Symbol 834 MovieClip {LongShootArrow}Uses:833Used by:835
Symbol 835 Button {GuiArrow}Uses:830 834 827 828Used by:847 1557
Symbol 836 GraphicUsed by:837 846
Symbol 837 MovieClipUses:836Used by:838
Symbol 838 MovieClipUses:837Used by:843 845 846
Symbol 839 GraphicUsed by:840 846
Symbol 840 MovieClipUses:839Used by:843 845 846
Symbol 841 GraphicUsed by:846
Symbol 842 GraphicUsed by:843
Symbol 843 MovieClipUses:838 840 842Used by:846
Symbol 844 GraphicUsed by:845 846
Symbol 845 MovieClipUses:838 840 844Used by:846
Symbol 846 ButtonUses:838 840 841 343 843 845 836 839 844 342Used by:847 1557
Symbol 847 MovieClip {SelectLevelStateView}Uses:2 31 37 8 466 775 776 779 783 788 397 796 798 806 815 826 835 846
Symbol 848 GraphicUsed by:849
Symbol 849 MovieClipUses:848Used by:879 923 932
Symbol 850 GraphicUsed by:879
Symbol 851 GraphicUsed by:879
Symbol 852 MovieClipUses:188Used by:857
Symbol 853 GraphicUsed by:854
Symbol 854 MovieClipUses:853Used by:857
Symbol 855 GraphicUsed by:856
Symbol 856 MovieClipUses:855Used by:857
Symbol 857 MovieClipUses:852 854 856Used by:879 923 932
Symbol 858 GraphicUsed by:879
Symbol 859 MovieClipUses:19Used by:861 862 865 866 885 886
Symbol 860 MovieClipUses:394Used by:861 862
Symbol 861 MovieClipUses:859 860Used by:862
Symbol 862 ButtonUses:859 860 861 19 394Used by:879 923 932
Symbol 863 GraphicUsed by:864 866 960 962
Symbol 864 MovieClipUses:863Used by:865 866
Symbol 865 MovieClipUses:859 864Used by:866
Symbol 866 ButtonUses:859 864 865 19 863Used by:879
Symbol 867 MovieClipUses:672Used by:870 871
Symbol 868 GraphicUsed by:869 871
Symbol 869 MovieClipUses:868Used by:870 871
Symbol 870 MovieClipUses:867 869Used by:871
Symbol 871 ButtonUses:867 869 870 672 868Used by:879 923 932 1150
Symbol 872 TextUses:15Used by:876
Symbol 873 TextUses:15Used by:876
Symbol 874 GraphicUsed by:876
Symbol 875 GraphicUsed by:876
Symbol 876 MovieClipUses:872 873 874 875Used by:879
Symbol 877 GraphicUsed by:879
Symbol 878 GraphicUsed by:879
Symbol 879 MovieClip {LoseStateView}Uses:849 850 851 857 858 862 866 871 876 877 878
Symbol 880 GraphicUsed by:923
Symbol 881 GraphicUsed by:923
Symbol 882 GraphicUsed by:923
Symbol 883 GraphicUsed by:884 886
Symbol 884 MovieClipUses:883Used by:885 886
Symbol 885 MovieClipUses:859 884Used by:886
Symbol 886 ButtonUses:859 884 885 19 883Used by:923 932
Symbol 887 TextUses:15Used by:888
Symbol 888 MovieClipUses:887Used by:890
Symbol 889 GraphicUsed by:890
Symbol 890 MovieClipUses:888 889Used by:923 932
Symbol 891 TextUses:15Used by:892
Symbol 892 MovieClipUses:891Used by:923
Symbol 893 TextUses:15Used by:894
Symbol 894 MovieClipUses:893Used by:923 932
Symbol 895 TextUses:15Used by:896
Symbol 896 MovieClipUses:895Used by:923 932
Symbol 897 EditableTextUses:15 949Used by:898
Symbol 898 MovieClipUses:897Used by:923 932
Symbol 899 EditableTextUses:15 949Used by:900
Symbol 900 MovieClipUses:899Used by:923 932
Symbol 901 EditableTextUses:15 949Used by:902
Symbol 902 MovieClipUses:901Used by:923 932
Symbol 903 GraphicUsed by:923
Symbol 904 GraphicUsed by:923
Symbol 905 GraphicUsed by:906
Symbol 906 MovieClipUses:905Used by:910
Symbol 907 GraphicUsed by:908
Symbol 908 MovieClipUses:907Used by:909
Symbol 909 MovieClipUses:908Used by:910
Symbol 910 MovieClipUses:906 909Used by:923 932
Symbol 911 EditableTextUses:15 949Used by:923
Symbol 912 GraphicUsed by:913 922
Symbol 913 MovieClipUses:912Used by:914
Symbol 914 MovieClipUses:913Used by:919 921 922
Symbol 915 GraphicUsed by:916 922
Symbol 916 MovieClipUses:915Used by:919 921 922
Symbol 917 GraphicUsed by:922
Symbol 918 GraphicUsed by:919
Symbol 919 MovieClipUses:914 916 918Used by:922
Symbol 920 GraphicUsed by:921 922
Symbol 921 MovieClipUses:914 916 920Used by:922
Symbol 922 ButtonUses:914 916 917 343 919 921 912 915 920 342Used by:923 932
Symbol 923 MovieClip {GrifShootingWinStateView}Uses:849 880 881 857 882 862 886 890 892 894 896 898 900 902 903 904 910 871 911 922
Symbol 924 GraphicUsed by:932
Symbol 925 GraphicUsed by:932
Symbol 926 GraphicUsed by:932
Symbol 927 TextUses:15Used by:928
Symbol 928 MovieClipUses:927Used by:932
Symbol 929 GraphicUsed by:932
Symbol 930 GraphicUsed by:932
Symbol 931 EditableTextUses:15 949Used by:932
Symbol 932 MovieClip {WinStateView}Uses:849 924 925 857 890 926 862 886 871 928 894 896 898 900 902 929 930 931 910 922
Symbol 933 GraphicUsed by:934 938
Symbol 934 MovieClipUses:933Used by:937
Symbol 935 GraphicUsed by:936 939
Symbol 936 MovieClipUses:935Used by:937
Symbol 937 MovieClipUses:934 936Used by:942
Symbol 938 MovieClipUses:933Used by:940 943
Symbol 939 MovieClipUses:935Used by:940
Symbol 940 MovieClipUses:938 939Used by:942
Symbol 941 GraphicUsed by:942 943
Symbol 942 Button {SoundOff}Uses:937 940 941
Symbol 943 Button {SoundOn}Uses:938 941
Symbol 944 EditableTextUses:15 949Used by:945
Symbol 945 MovieClipUses:944Used by:963 1563
Symbol 946 GraphicUsed by:947 948
Symbol 947 MovieClipUses:946Used by:948
Symbol 948 ButtonUses:947 946Used by:963
Symbol 949 FontUsed by:16 760 766 769 780 817 820 823 897 899 901 911 931 944 950 955 984 1558
Symbol 950 EditableTextUses:949Used by:951
Symbol 951 MovieClipUses:950Used by:963
Symbol 952 GraphicUsed by:953
Symbol 953 MovieClipUses:952Used by:954
Symbol 954 MovieClipUses:953Used by:963 1563
Symbol 955 EditableTextUses:949Used by:956
Symbol 956 MovieClipUses:955Used by:963 1563
Symbol 957 GraphicUsed by:958
Symbol 958 MovieClipUses:957Used by:959
Symbol 959 MovieClipUses:958Used by:963 1563
Symbol 960 MovieClipUses:863Used by:961 962
Symbol 961 MovieClipUses:393 960Used by:962
Symbol 962 ButtonUses:393 960 961 19 863Used by:963 1563
Symbol 963 MovieClip {PlayStateView}Uses:397 945 948 951 954 956 959 962
Symbol 964 GraphicUsed by:968
Symbol 965 GraphicUsed by:966
Symbol 966 MovieClipUses:965Used by:967
Symbol 967 MovieClipUses:966Used by:968
Symbol 968 MovieClip {TeleportBack}Uses:964 967
Symbol 969 GraphicUsed by:971
Symbol 970 GraphicUsed by:971
Symbol 971 MovieClipUses:969 970Used by:974 977 980 983
Symbol 972 GraphicUsed by:973
Symbol 973 MovieClipUses:972Used by:974
Symbol 974 MovieClip {Soul4}Uses:971 973
Symbol 975 GraphicUsed by:976
Symbol 976 MovieClipUses:975Used by:977
Symbol 977 MovieClip {Soul2}Uses:971 976
Symbol 978 GraphicUsed by:979
Symbol 979 MovieClipUses:978Used by:980
Symbol 980 MovieClip {Soul1}Uses:971 979
Symbol 981 GraphicUsed by:982
Symbol 982 MovieClipUses:981Used by:983
Symbol 983 MovieClip {Soul3}Uses:971 982
Symbol 984 EditableTextUses:15 949Used by:985
Symbol 985 MovieClip {States.PlayState.AddPointsEffect}Uses:984
Symbol 986 GraphicUsed by:987
Symbol 987 MovieClipUses:986Used by:988
Symbol 988 MovieClip {States.PlayState.OutOfArrowsEffect}Uses:987
Symbol 989 GraphicUsed by:990
Symbol 990 MovieClip {States.PlayState.TurtorialFrame}Uses:989
Symbol 991 GraphicUsed by:995
Symbol 992 GraphicUsed by:995
Symbol 993 GraphicUsed by:995
Symbol 994 GraphicUsed by:995
Symbol 995 MovieClip {RightLowerHand_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 {LeftLowerHand_4}Uses:996 997 998 999
Symbol 1001 GraphicUsed by:1005
Symbol 1002 GraphicUsed by:1005
Symbol 1003 GraphicUsed by:1005
Symbol 1004 GraphicUsed by:1005
Symbol 1005 MovieClip {LeftUpperHand_4}Uses:1001 1002 1003 1004
Symbol 1006 GraphicUsed by:1010
Symbol 1007 GraphicUsed by:1010
Symbol 1008 GraphicUsed by:1010
Symbol 1009 GraphicUsed by:1010
Symbol 1010 MovieClip {RightUpperHand_4}Uses:1006 1007 1008 1009
Symbol 1011 GraphicUsed by:1013
Symbol 1012 GraphicUsed by:1013
Symbol 1013 MovieClip {Torso1_4}Uses: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 {Torso3_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 {Torso2_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 {LeftUpperLeg_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 {RightUpperLeg_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 {RightLowerLeg_4}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 {LeftLowerLeg_4}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 {RightUpperHand_2}Uses:1044 1045 1046 1047
Symbol 1049 GraphicUsed by:1053
Symbol 1050 GraphicUsed by:1053
Symbol 1051 GraphicUsed by:1053
Symbol 1052 GraphicUsed by:1053
Symbol 1053 MovieClip {LeftLowerHand_2}Uses:1049 1050 1051 1052
Symbol 1054 GraphicUsed by:1058
Symbol 1055 GraphicUsed by:1058
Symbol 1056 GraphicUsed by:1058
Symbol 1057 GraphicUsed by:1058
Symbol 1058 MovieClip {LeftUpperHand_2}Uses:1054 1055 1056 1057
Symbol 1059 GraphicUsed by:1061
Symbol 1060 GraphicUsed by:1061
Symbol 1061 MovieClip {Torso1_2}Uses: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 {Torso2_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 {Torso3_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 {LeftUpperLeg_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 {RightLowerLeg_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 {RightUpperLeg_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 {LeftLowerLeg_2}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 {RightLowerHand_2}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 {LeftUpperHand_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 {LeftLowerHand_1}Uses:1102 1103 1104 1105
Symbol 1107 GraphicUsed by:1111
Symbol 1108 GraphicUsed by:1111
Symbol 1109 GraphicUsed by:1111
Symbol 1110 GraphicUsed by:1111
Symbol 1111 MovieClip {RightUpperHand_1}Uses:1107 1108 1109 1110
Symbol 1112 GraphicUsed by:1116
Symbol 1113 GraphicUsed by:1116
Symbol 1114 GraphicUsed by:1116
Symbol 1115 GraphicUsed by:1116
Symbol 1116 MovieClip {Torso2_1}Uses:1112 1113 1114 1115
Symbol 1117 GraphicUsed by:1119
Symbol 1118 GraphicUsed by:1119
Symbol 1119 MovieClip {Torso1_1}Uses: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 {Torso3_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 {LeftUpperLeg_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 {RightLowerLeg_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 {RightUpperLeg_1}Uses:1135 1136 1137 1138
Symbol 1140 GraphicUsed by:1144
Symbol 1141 GraphicUsed by:1144
Symbol 1142 GraphicUsed by:1144
Symbol 1143 GraphicUsed by:1144
Symbol 1144 MovieClip {LeftLowerLeg_1}Uses:1140 1141 1142 1143
Symbol 1145 GraphicUsed by:1149
Symbol 1146 GraphicUsed by:1149
Symbol 1147 GraphicUsed by:1149
Symbol 1148 GraphicUsed by:1149
Symbol 1149 MovieClip {RightLowerHand_1}Uses:1145 1146 1147 1148
Symbol 1150 MovieClip {GameCompleteStateView}Uses:2 8 28 31 34 37 113 40 5 43 783 788 397 871 140
Symbol 1151 GraphicUsed by:1152
Symbol 1152 MovieClip {Sight}Uses:1151
Symbol 1153 GraphicUsed by:1166
Symbol 1154 GraphicUsed by:1155
Symbol 1155 MovieClipUses:1154Used by:1166
Symbol 1156 GraphicUsed by:1166
Symbol 1157 MovieClip {black_square}Uses:419Used by:1166 1586
Symbol 1158 ShapeTweeningUsed by:1166
Symbol 1159 ShapeTweeningUsed by:1166
Symbol 1160 ShapeTweeningUsed by:1166
Symbol 1161 GraphicUsed by:1166
Symbol 1162 GraphicUsed by:1166
Symbol 1163 GraphicUsed by:1166
Symbol 1164 GraphicUsed by:1166
Symbol 1165 GraphicUsed by:1166
Symbol 1166 MovieClip {BowClip}Uses:1153 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165
Symbol 1167 GraphicUsed by:1170
Symbol 1168 GraphicUsed by:1170
Symbol 1169 GraphicUsed by:1170
Symbol 1170 MovieClip {HealthBar}Uses:1167 1168 1169
Symbol 1171 GraphicUsed by:1172
Symbol 1172 MovieClip {States.PlayState.Arrow}Uses:1171
Symbol 1173 GraphicUsed by:1177
Symbol 1174 GraphicUsed by:1175
Symbol 1175 MovieClip {AsyncClip}Uses:1174Used by:1177
Symbol 1176 GraphicUsed by:1177
Symbol 1177 MovieClip {Back3}Uses:1173 1175 1176Used by:1246 1426 1463 1510 1512 1517 1519 1570
Symbol 1178 GraphicUsed by:1179
Symbol 1179 MovieClip {BowPoint}Uses:1178Used by:1246 1268 1303 1329 1385 1403 1426 1437 1440 1441 1444 1447 1449 1458 1460 1461 1462 1463 1467 1469 1476 1501 1503 1504 1505 1506 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1522 1525 1526 1527 1529 1534 1537 1538 1543 1551 1552 1553 1554 1569 1570
Symbol 1180 GraphicUsed by:1191
Symbol 1181 GraphicUsed by:1186
Symbol 1182 GraphicUsed by:1183
Symbol 1183 MovieClipUses:1182Used by:1186 1190 1260
Symbol 1184 GraphicUsed by:1186
Symbol 1185 GraphicUsed by:1186
Symbol 1186 MovieClipUses:1181 1183 1184 1185Used by:1191
Symbol 1187 GraphicUsed by:1190
Symbol 1188 GraphicUsed by:1190
Symbol 1189 GraphicUsed by:1190
Symbol 1190 MovieClipUses:1187 1183 1188 1189Used by:1191
Symbol 1191 MovieClip {tree_8}Uses:1180 1186 1190Used by:1246 1511 1519 1525
Symbol 1192 GraphicUsed by:1193
Symbol 1193 MovieClipUses:1192Used by:1200
Symbol 1194 GraphicUsed by:1199
Symbol 1195 GraphicUsed by:1196
Symbol 1196 MovieClipUses:1195Used by:1199
Symbol 1197 GraphicUsed by:1199
Symbol 1198 GraphicUsed by:1199
Symbol 1199 MovieClipUses:1194 1196 1197 1198Used by:1200
Symbol 1200 MovieClip {tree_1}Uses:1193 1199Used by:1246 1509 1511 1517 1534
Symbol 1201 GraphicUsed by:1208
Symbol 1202 GraphicUsed by:1208
Symbol 1203 GraphicUsed by:1204 1208
Symbol 1204 MovieClipUses:1203Used by:1208
Symbol 1205 GraphicUsed by:1208
Symbol 1206 GraphicUsed by:1208
Symbol 1207 GraphicUsed by:1208
Symbol 1208 MovieClip {flower_4}Uses:1201 1202 1204 1205 1206 1207 1203Used by:1246 1458 1460 1461 1462 1516 1527 1569
Symbol 1209 GraphicUsed by:1210
Symbol 1210 MovieClip {Stone0}Uses:1209Used by:1246 1403 1449 1459 1467 1476 1502 1503 1504 1506 1507 1508 1510 1512 1518 1519 1522 1525 1526 1527 1528 1543 1551 1570
Symbol 1211 GraphicUsed by:1212
Symbol 1212 MovieClip {Stone1}Uses:1211Used by:1246 1403 1459 1467 1476 1502 1503 1504 1506 1507 1508 1510 1511 1512 1513 1518 1519 1522 1525 1526 1527 1528 1543 1551 1553 1570
Symbol 1213 GraphicUsed by:1214
Symbol 1214 MovieClip {Stone2}Uses:1213Used by:1246 1403 1459 1467 1502 1504 1506 1507 1508 1510 1512 1513 1518 1519 1525 1526 1527 1528 1537 1543 1551 1570
Symbol 1215 GraphicUsed by:1217
Symbol 1216 GraphicUsed by:1217
Symbol 1217 MovieClipUses:1215 1216Used by:1218
Symbol 1218 MovieClipUses:1217Used by:1236
Symbol 1219 GraphicUsed by:1220
Symbol 1220 MovieClipUses:1219Used by:1221
Symbol 1221 MovieClipUses:1220Used by:1236
Symbol 1222 GraphicUsed by:1223
Symbol 1223 MovieClipUses:1222Used by:1235
Symbol 1224 GraphicUsed by:1225
Symbol 1225 MovieClipUses:1224Used by:1235
Symbol 1226 GraphicUsed by:1235
Symbol 1227 GraphicUsed by:1235
Symbol 1228 GraphicUsed by:1235
Symbol 1229 GraphicUsed by:1235
Symbol 1230 GraphicUsed by:1235
Symbol 1231 GraphicUsed by:1235
Symbol 1232 GraphicUsed by:1235
Symbol 1233 GraphicUsed by:1235
Symbol 1234 GraphicUsed by:1235
Symbol 1235 MovieClipUses:1223 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234Used by:1236
Symbol 1236 MovieClip {States.PlayState.Sun}Uses:1218 1221 1235Used by:1246 1268 1303 1385 1403 1426 1463 1476 1501 1503 1505 1506 1509 1510 1511 1512 1513 1515 1516 1518 1519 1522 1525 1527 1529 1534 1537 1543 1552 1569 1570
Symbol 1237 GraphicUsed by:1238 1276 1282 1286 1312
Symbol 1238 MovieClipUses:1237Used by:1243 1396 1443
Symbol 1239 GraphicUsed by:1240
Symbol 1240 MovieClipUses:1239Used by:1243 1396 1443
Symbol 1241 FontUsed by:1242 1248 1395 1442 1545
Symbol 1242 TextUses:1241Used by:1243
Symbol 1243 MovieClip {AmmoGhost3}Uses:1238 1240 1242Used by:1246 1444 1449 1538
Symbol 1244 GraphicUsed by:1245
Symbol 1245 MovieClip {flower_0}Uses:1244Used by:1246 1268 1458 1460 1461 1462 1476 1501 1513 1543
Symbol 1246 MovieClip {Level39}Uses:2 98 1177 1179 100 108 479 1191 1200 806 1208 112 1210 1212 1214 1236 110 1243 1245 43 466 40 37 507 31
Symbol 1247 FontUsed by:1248 1544 1545
Symbol 1248 EditableTextUses:1241 1247Used by:1249
Symbol 1249 MovieClip {AddArrowClip}Uses:1248
Symbol 1250 GraphicUsed by:1251
Symbol 1251 MovieClip {InvertedGibbetObliquely}Uses:1250Used by:1268 1303 1385 1403 1426 1447 1461 1462 1467 1469 1501 1505 1509 1510 1516 1517 1518 1529 1534 1537 1543 1569
Symbol 1252 FontUsed by:1253 1262 1264 1301 1438 1445 1474 1499 1520 1530 1532 1535 1539 1541 1547 1567
Symbol 1253 TextUses:1252Used by:1254
Symbol 1254 MovieClip {ToPullBowHint}Uses:1253Used by:1268
Symbol 1255 GraphicUsed by:1256
Symbol 1256 MovieClipUses:1255Used by:1261
Symbol 1257 GraphicUsed by:1260
Symbol 1258 GraphicUsed by:1260
Symbol 1259 GraphicUsed by:1260
Symbol 1260 MovieClipUses:1257 1183 1258 1259Used by:1261
Symbol 1261 MovieClip {tree_2}Uses:1256 1260Used by:1268 1426 1515 1516 1525 1537
Symbol 1262 TextUses:1252Used by:1263
Symbol 1263 MovieClip {TryToAimHint}Uses:1262Used by:1268
Symbol 1264 TextUses:1252Used by:1265
Symbol 1265 MovieClip {YouWillGetAStar}Uses:1264Used by:1268
Symbol 1266 GraphicUsed by:1267
Symbol 1267 MovieClip {HintPoint}Uses:1266Used by:1268 1303 1440 1447 1476 1501 1522 1534 1537 1543 1569
Symbol 1268 MovieClip {Level00}Uses:2 1251 5 1254 507 775 1261 806 31 1263 43 1236 8 1245 798 1265 100 108 479 1179 1267 112 110
Symbol 1269 GraphicUsed by:1270
Symbol 1270 MovieClipUses:1269Used by:1275
Symbol 1271 GraphicUsed by:1274
Symbol 1272 GraphicUsed by:1274
Symbol 1273 GraphicUsed by:1274
Symbol 1274 MovieClipUses:1271 811 1272 1273Used by:1275
Symbol 1275 MovieClip {tree_5}Uses:1270 1274Used by:1303 1516 1534
Symbol 1276 MovieClipUses:1237Used by:1277
Symbol 1277 MovieClipUses:1276Used by:1281
Symbol 1278 GraphicUsed by:1279
Symbol 1279 MovieClipUses:1278Used by:1280
Symbol 1280 MovieClipUses:1279Used by:1281
Symbol 1281 MovieClip {ArrowGhost3}Uses:1277 1280Used by:1303 1467 1469 1511 1517
Symbol 1282 MovieClipUses:1237Used by:1285 1524
Symbol 1283 GraphicUsed by:1284
Symbol 1284 MovieClipUses:1283Used by:1285 1523
Symbol 1285 MovieClip {ArrowGhost1}Uses:1282 1284Used by:1303 1385 1444 1469 1503 1505 1508 1509 1513 1514 1515 1518 1537 1570
Symbol 1286 MovieClipUses:1237Used by:1289 1292 1401
Symbol 1287 GraphicUsed by:1288
Symbol 1288 MovieClipUses:1287Used by:1289
Symbol 1289 MovieClip {PointsGhost500}Uses:1286 1288Used by:1303 1385 1403 1441 1501 1504 1505 1506 1510 1514 1515 1518 1537 1543 1569
Symbol 1290 GraphicUsed by:1291
Symbol 1291 MovieClipUses:1290Used by:1292
Symbol 1292 MovieClip {PointsGhost1000}Uses:1286 1291Used by:1303 1440 1441 1444 1467 1505 1508 1512 1515 1519 1522 1570
Symbol 1293 GraphicUsed by:1294
Symbol 1294 MovieClipUses:1293Used by:1300
Symbol 1295 GraphicUsed by:1300
Symbol 1296 GraphicUsed by:1300
Symbol 1297 GraphicUsed by:1300
Symbol 1298 GraphicUsed by:1300
Symbol 1299 GraphicUsed by:1300
Symbol 1300 MovieClip {flower_2}Uses:1294 1295 1296 1297 1298 1299Used by:1303 1525 1534
Symbol 1301 TextUses:1252Used by:1302
Symbol 1302 MovieClip {ThisIsHedhehogHint}Uses:1301Used by:1303
Symbol 1303 MovieClip {Level14}Uses:2 775 815 100 1275 1251 806 479 1179 1281 98 108 8 28 31 1236 5 507 1285 112 110 1289 1292 1300 798 1302 1267
Symbol 1304 GraphicUsed by:1305
Symbol 1305 MovieClip {OvercastSky}Uses:1304Used by:1329 1449 1467 1469 1514 1526 1538
Symbol 1306 GraphicUsed by:1307
Symbol 1307 MovieClipUses:1306Used by:1308
Symbol 1308 MovieClip {tree_9}Uses:1307Used by:1329 1449 1469 1526
Symbol 1309 GraphicUsed by:1310
Symbol 1310 MovieClipUses:1309Used by:1311
Symbol 1311 MovieClip {tree_10}Uses:1310Used by:1329 1467 1514 1538
Symbol 1312 MovieClipUses:1237Used by:1316
Symbol 1313 GraphicUsed by:1314
Symbol 1314 MovieClipUses:1313Used by:1315
Symbol 1315 MovieClipUses:1314Used by:1316
Symbol 1316 MovieClip {States.PlayState.TeleportGhost}Uses:1312 1315Used by:1329 1437 1467 1501 1504 1508 1510 1513 1514 1517 1526
Symbol 1317 GraphicUsed by:1325
Symbol 1318 GraphicUsed by:1319
Symbol 1319 MovieClipUses:1318Used by:1325
Symbol 1320 GraphicUsed by:1321
Symbol 1321 MovieClipUses:1320Used by:1325
Symbol 1322 GraphicUsed by:1323
Symbol 1323 MovieClipUses:1322Used by:1325
Symbol 1324 GraphicUsed by:1325
Symbol 1325 MovieClip {BgStones}Uses:1317 1319 1321 1323 1324Used by:1329 1449 1469 1526 1538
Symbol 1326 GraphicUsed by:1327
Symbol 1327 MovieClipUses:1326Used by:1328
Symbol 1328 MovieClip {flower_6}Uses:1327Used by:1329 1449 1467 1469 1514
Symbol 1329 MovieClip {Level32}Uses:1305 8 462 1308 1311 100 806 479 1179 34 98 108 43 1316 112 110 1325 1328 31 28
Symbol 1330 GraphicUsed by:1331
Symbol 1331 MovieClip {BonusGameBack}Uses:1330Used by:1385 1503 1504 1506 1529 1551 1552 1553 1554
Symbol 1332 GraphicUsed by:1333
Symbol 1333 MovieClipUses:1332Used by:1334
Symbol 1334 MovieClip {Box}Uses:1333Used by:1385 1403 1476 1503 1513 1516 1538
Symbol 1335 GraphicUsed by:1336
Symbol 1336 MovieClipUses:1335Used by:1337
Symbol 1337 MovieClip {Brick}Uses:1336Used by:1385 1440 1441 1444 1506 1517
Symbol 1338 GraphicUsed by:1339
Symbol 1339 MovieClipUses:1338Used by:1384
Symbol 1340 GraphicUsed by:1384
Symbol 1341 GraphicUsed by:1342
Symbol 1342 MovieClipUses:1341Used by:1384
Symbol 1343 BitmapUsed by:1344 1346 1348 1350 1352 1354 1356 1358 1360 1362
Symbol 1344 GraphicUses:1343Used by:1345
Symbol 1345 MovieClipUses:1344Used by:1384
Symbol 1346 GraphicUses:1343Used by:1347
Symbol 1347 MovieClipUses:1346Used by:1384
Symbol 1348 GraphicUses:1343Used by:1349
Symbol 1349 MovieClipUses:1348Used by:1384
Symbol 1350 GraphicUses:1343Used by:1351
Symbol 1351 MovieClipUses:1350Used by:1384
Symbol 1352 GraphicUses:1343Used by:1353
Symbol 1353 MovieClipUses:1352Used by:1384
Symbol 1354 GraphicUses:1343Used by:1355
Symbol 1355 MovieClipUses:1354Used by:1384
Symbol 1356 GraphicUses:1343Used by:1357
Symbol 1357 MovieClipUses:1356Used by:1384
Symbol 1358 GraphicUses:1343Used by:1359
Symbol 1359 MovieClipUses:1358Used by:1384
Symbol 1360 GraphicUses:1343Used by:1361
Symbol 1361 MovieClipUses:1360Used by:1384
Symbol 1362 GraphicUses:1343Used by:1363
Symbol 1363 MovieClipUses:1362Used by:1384
Symbol 1364 GraphicUsed by:1365
Symbol 1365 MovieClipUses:1364Used by:1384
Symbol 1366 GraphicUsed by:1367
Symbol 1367 MovieClipUses:1366Used by:1384
Symbol 1368 GraphicUsed by:1369
Symbol 1369 MovieClipUses:1368Used by:1384
Symbol 1370 GraphicUsed by:1371
Symbol 1371 MovieClipUses:1370Used by:1384
Symbol 1372 GraphicUsed by:1373
Symbol 1373 MovieClipUses:1372Used by:1384
Symbol 1374 GraphicUsed by:1375
Symbol 1375 MovieClipUses:1374Used by:1384
Symbol 1376 GraphicUsed by:1377
Symbol 1377 MovieClipUses:1376Used by:1384
Symbol 1378 GraphicUsed by:1379
Symbol 1379 MovieClipUses:1378Used by:1384
Symbol 1380 GraphicUsed by:1381
Symbol 1381 MovieClipUses:1380Used by:1384
Symbol 1382 GraphicUsed by:1383
Symbol 1383 MovieClipUses:1382Used by:1384
Symbol 1384 MovieClip {States.PlayState.TNTBarrel}Uses:1339 1340 1342 1345 1347 1349 1351 1353 1355 1357 1359 1361 1363 1365 1367 1369 1371 1373 1375 1377 1379 1381 1383Used by:1385 1403 1437 1476 1503 1513 1527
Symbol 1385 MovieClip {Level33}Uses:2 1331 1251 100 479 1179 1334 106 108 110 112 1337 1384 1285 98 1236 1289 28 40 466 31 507 34
Symbol 1386 GraphicUsed by:1387
Symbol 1387 MovieClipUses:1386Used by:1394
Symbol 1388 GraphicUsed by:1393
Symbol 1389 GraphicUsed by:1390
Symbol 1390 MovieClipUses:1389Used by:1393
Symbol 1391 GraphicUsed by:1393
Symbol 1392 GraphicUsed by:1393
Symbol 1393 MovieClipUses:1388 1390 1391 1392Used by:1394
Symbol 1394 MovieClip {tree_3}Uses:1387 1393Used by:1403 1476 1513 1537
Symbol 1395 TextUses:1241Used by:1396
Symbol 1396 MovieClip {AmmoGhost10}Uses:1238 1240 1395Used by:1403 1440 1447 1529 1534
Symbol 1397 GraphicUsed by:1398
Symbol 1398 MovieClip {Stone3}Uses:1397Used by:1403 1459 1467 1468 1502 1503 1504 1506 1507 1508 1510 1511 1512 1515 1519 1522 1526 1528 1543 1551 1570
Symbol 1399 GraphicUsed by:1400
Symbol 1400 MovieClipUses:1399Used by:1401
Symbol 1401 MovieClip {PointsGhost300}Uses:1286 1400Used by:1403 1441 1505 1515 1517 1527 1538
Symbol 1402 MovieClip {InvertedVultureHere}Uses:749Used by:1403 1467 1501 1504 1515
Symbol 1403 MovieClip {Level36}Uses:2 775 1394 806 1179 40 1251 100 108 112 110 466 28 1236 8 5 507 31 479 1396 1384 1334 1210 1212 1398 1214 1401 1289 798 1402
Symbol 1404 GraphicUsed by:1408
Symbol 1405 GraphicUsed by:1406
Symbol 1406 MovieClipUses:1405Used by:1408
Symbol 1407 GraphicUsed by:1408
Symbol 1408 MovieClipUses:1404 1406 1407Used by:1413
Symbol 1409 GraphicUsed by:1410
Symbol 1410 MovieClipUses:1409Used by:1413
Symbol 1411 GraphicUsed by:1412
Symbol 1412 MovieClipUses:1411Used by:1413
Symbol 1413 MovieClip {Mill}Uses:1408 1410 1412Used by:1426 1463 1570
Symbol 1414 GraphicUsed by:1417
Symbol 1415 GraphicUsed by:1416
Symbol 1416 MovieClipUses:1415Used by:1417
Symbol 1417 MovieClip {MillFan}Uses:1414 1416Used by:1426 1463 1570
Symbol 1418 GraphicUsed by:1423
Symbol 1419 GraphicUsed by:1423
Symbol 1420 GraphicUsed by:1423
Symbol 1421 GraphicUsed by:1423
Symbol 1422 GraphicUsed by:1423
Symbol 1423 MovieClip {CowNormal}Uses:1418 430 1419 1420 434 435 439 441 442 443 444 445 446 1421 1422Used by:1424 1572
Symbol 1424 MovieClip {CowHere}Uses:1423Used by:1425 1511 1529 1571
Symbol 1425 MovieClip {InvertedCowHere}Uses:1424Used by:1426 1512 1522 1529
Symbol 1426 MovieClip {Level37}Uses:2 1177 100 806 479 1179 1251 108 40 1413 1417 112 110 1236 798 1261 466 28 8 5 507 31 1425
Symbol 1427 GraphicUsed by:1428
Symbol 1428 MovieClipUses:1427Used by:1429
Symbol 1429 MovieClip {BrickNoRight}Uses:1428Used by:1436 1444 1517
Symbol 1430 GraphicUsed by:1431
Symbol 1431 MovieClipUses:1430Used by:1432
Symbol 1432 MovieClip {BrickNoRightNoLeft}Uses:1431Used by:1436 1444 1517
Symbol 1433 GraphicUsed by:1434
Symbol 1434 MovieClipUses:1433Used by:1435
Symbol 1435 MovieClip {BrickNoLeft}Uses:1434Used by:1436 1444 1517
Symbol 1436 MovieClip {ComposedStone96}Uses:1429 1432 1435Used by:1437
Symbol 1437 MovieClip {Level48}Uses:290 98 479 1179 43 5 37 40 1436 100 1384 1316 108 112 110
Symbol 1438 TextUses:1252Used by:1439
Symbol 1439 MovieClip {NoArrowsHint}Uses:1438Used by:1440
Symbol 1440 MovieClip {Level52}Uses:290 1179 43 5 37 40 479 1337 1396 1292 1267 1439
Symbol 1441 MovieClip {Level49}Uses:290 479 1179 43 5 37 40 1337 1401 1289 1292
Symbol 1442 TextUses:1241Used by:1443
Symbol 1443 MovieClip {AmmoGhost5}Uses:1238 1240 1442Used by:1444 1509 1514 1529 1534
Symbol 1444 MovieClip {Level50}Uses:290 479 1179 1285 1429 1432 1435 1337 43 5 37 40 1243 1443 1292
Symbol 1445 TextUses:1252Used by:1446
Symbol 1446 MovieClip {OnlyOneArrowHint}Uses:1445Used by:1447
Symbol 1447 MovieClip {Level51}Uses:290 479 1179 98 100 108 1251 106 1396 1267 1446 466 37 8 31 40 112 110
Symbol 1448 MovieClip {VultureHere}Uses:749Used by:1449 1504 1510 1514 1525 1526
Symbol 1449 MovieClip {Level45}Uses:1305 462 1308 1179 98 100 479 108 806 1243 1210 1448 1325 1328 466 40 37 8 31 110 112
Symbol 1450 GraphicUsed by:1451
Symbol 1451 MovieClip {GiantSky}Uses:1450Used by:1458 1460 1461 1462
Symbol 1452 GraphicUsed by:1453
Symbol 1453 MovieClip {LongBack}Uses:1452Used by:1458 1460 1461 1462
Symbol 1454 GraphicUsed by:1455
Symbol 1455 MovieClip {LeftEdgeMarker}Uses:1454Used by:1458 1460 1461 1462
Symbol 1456 GraphicUsed by:1457
Symbol 1457 MovieClip {RightEdgeMarker}Uses:1456Used by:1458 1460 1461 1462
Symbol 1458 MovieClip {Level11}Uses:1451 1453 479 806 98 100 1179 798 1245 1208 108 112 110 106 1455 1457
Symbol 1459 MovieClip {ComposedStone2}Uses:1210 1212 1214 1398Used by:1460 1505
Symbol 1460 MovieClip {Level47}Uses:1451 1453 479 100 806 1459 98 1179 798 1245 1208 108 112 110 1455 1457
Symbol 1461 MovieClip {Level35}Uses:1451 1453 479 100 806 1251 1179 798 1245 1208 108 112 110 1455 1457
Symbol 1462 MovieClip {Level23}Uses:1451 1251 1453 479 100 806 1179 798 1245 1208 108 112 110 1455 1457
Symbol 1463 MovieClip {Level18}Uses:2 1177 1413 100 796 806 479 1179 98 108 106 1417 110 112 1236 798 43 31 507 5 8
Symbol 1464 GraphicUsed by:1465
Symbol 1465 MovieClipUses:1464Used by:1466
Symbol 1466 MovieClip {flower_5}Uses:1465Used by:1467 1514 1526
Symbol 1467 MovieClip {Level38}Uses:1305 98 479 462 1311 1179 1281 1210 1212 1214 1398 806 1251 100 106 108 112 1316 110 1292 1466 1328 43 31 507 5 34 1402
Symbol 1468 MovieClip {ComposedStone99}Uses:1398Used by:1469 1514
Symbol 1469 MovieClip {Level43}Uses:1305 479 1251 100 462 1308 1179 108 1325 1328 806 1281 112 34 37 40 1285 110 1468 28 43
Symbol 1470 GraphicUsed by:1473
Symbol 1471 GraphicUsed by:1473
Symbol 1472 GraphicUsed by:1473
Symbol 1473 MovieClip {flower_1}Uses:1470 1471 1472Used by:1476
Symbol 1474 TextUses:1252Used by:1475
Symbol 1475 MovieClip {ThisIsTNTHint}Uses:1474Used by:1476
Symbol 1476 MovieClip {Level12}Uses:2 775 1394 1179 806 1334 98 100 108 479 1384 34 1210 1212 1236 110 798 1473 1245 112 466 40 37 8 1267 1475
Symbol 1477 GraphicUsed by:1478
Symbol 1478 MovieClip {Back1}Uses:1477Used by:1501 1508 1509 1511 1516 1518 1525 1543 1569
Symbol 1479 GraphicUsed by:1480
Symbol 1480 MovieClipUses:1479Used by:1491
Symbol 1481 GraphicUsed by:1486
Symbol 1482 GraphicUsed by:1483
Symbol 1483 MovieClipUses:1482Used by:1486 1490
Symbol 1484 GraphicUsed by:1486
Symbol 1485 GraphicUsed by:1486
Symbol 1486 MovieClipUses:1481 1483 1484 1485Used by:1491
Symbol 1487 GraphicUsed by:1490
Symbol 1488 GraphicUsed by:1490
Symbol 1489 GraphicUsed by:1490
Symbol 1490 MovieClipUses:1487 1483 1488 1489Used by:1491
Symbol 1491 MovieClip {tree_7}Uses:1480 1486 1490Used by:1501 1509 1518 1527
Symbol 1492 GraphicUsed by:1498
Symbol 1493 GraphicUsed by:1498
Symbol 1494 GraphicUsed by:1498
Symbol 1495 GraphicUsed by:1498
Symbol 1496 GraphicUsed by:1498
Symbol 1497 GraphicUsed by:1498
Symbol 1498 MovieClip {flower_3}Uses:1492 1493 1494 1495 1496 1497Used by:1501 1537 1543
Symbol 1499 TextUses:1252Used by:1500
Symbol 1500 MovieClip {TeleportHint}Uses:1499Used by:1501
Symbol 1501 MovieClip {Level06}Uses:2 1478 1491 806 1179 1251 100 479 106 108 98 1316 1267 112 1289 110 1498 1245 798 1236 1402 8 28 37 40 466 1500
Symbol 1502 MovieClip {ComposedStone1}Uses:1212 1214 1398 1210Used by:1503
Symbol 1503 MovieClip {Level15}Uses:2 1331 1179 1384 479 34 1334 1212 98 100 1398 1210 108 1285 1502 1236 110 112 37 28 466
Symbol 1504 MovieClip {Level44}Uses:2 1179 479 1210 1212 1214 1398 1331 1316 1289 1448 1402 43 31 8 28 466
Symbol 1505 MovieClip {Level09}Uses:2 775 1459 1179 1251 100 479 108 112 110 806 1236 1285 1401 1289 1292 798 466 40 37 28 8 34
Symbol 1506 MovieClip {Level30}Uses:2 1331 1179 479 1337 1210 1212 1214 1398 1289 1236 43 31 40 37
Symbol 1507 MovieClip {ComposedStone55}Uses:1210 1212 1214 1398Used by:1508
Symbol 1508 MovieClip {Level31}Uses:2 1478 1507 806 479 1179 1316 1210 1212 1214 1398 1292 1285 798
Symbol 1509 MovieClip {Level13}Uses:2 1251 1478 1491 1200 1179 100 108 479 112 110 806 1285 106 1236 798 28 40 31 43 466 1443
Symbol 1510 MovieClip {Level10}Uses:2 1177 1251 1179 98 100 108 479 112 110 1212 806 1214 1398 1210 1316 1289 798 1236 37 34 507 31 466 1448
Symbol 1511 MovieClip {Level34}Uses:2 1478 1179 1200 1191 806 479 1212 1398 1281 1424 798 40 8 31 43 1236
Symbol 1512 MovieClip {Level24}Uses:2 1177 1179 1210 796 806 1212 479 1398 1214 1425 1292 1236 798 40 37 34 31 466
Symbol 1513 MovieClip {Level28}Uses:2 775 1394 1334 1179 806 479 1384 1212 1214 1316 1285 798 1245 1236 8 28 37 507 31
Symbol 1514 MovieClip {Level27}Uses:1305 462 1179 479 1311 806 1285 98 100 1468 108 1316 1443 1289 1328 1466 1448 466 40 8 5 31 43 112 110
Symbol 1515 MovieClip {Level46}Uses:2 775 1179 479 806 1261 1285 1401 1289 1292 1398 1236 1402 798 37 28 8 34
Symbol 1516 MovieClip {Level26}Uses:2 1478 1275 1179 479 1251 100 108 110 112 1261 806 1334 1208 1236 43 31 507 5 34
Symbol 1517 MovieClip {Level22}Uses:2 1177 796 1179 479 1251 100 108 110 112 1337 1200 806 1316 106 1281 1435 1432 1429 1401 798 466 40 37 28 8 5
Symbol 1518 MovieClip {Level21}Uses:2 1478 1491 1179 1214 806 479 1285 1251 100 108 1212 1210 1236 110 112 1289 798 43 31 507 5 8
Symbol 1519 MovieClip {Level42}Uses:2 1236 1177 1210 1212 1214 1179 1191 806 100 479 507 1398 1292 110 112 798 28 8 34 31
Symbol 1520 TextUses:1252Used by:1521
Symbol 1521 MovieClip {InvertControlHint}Uses:1520Used by:1522
Symbol 1522 MovieClip {Level04}Uses:2 775 796 1210 1212 1398 1179 479 806 1236 100 108 1425 798 466 40 28 8 507 31 1292 112 110 1521 1267
Symbol 1523 MovieClipUses:1284Used by:1524
Symbol 1524 MovieClip {ArrowGhost4}Uses:1282 1523Used by:1525 1526
Symbol 1525 MovieClip {Level19}Uses:2 1478 479 98 100 108 112 1179 1524 106 110 1210 1191 1261 806 1212 1214 1236 798 1300 31 5 8 28 34 1448
Symbol 1526 MovieClip {Level25}Uses:1305 462 1179 479 98 100 1210 1212 1214 1398 1308 806 1524 1316 108 110 112 1325 1448 43 31 34 28 37 466 1466
Symbol 1527 MovieClip {Level16}Uses:2 1236 775 1210 1212 1214 1179 479 98 100 1491 806 108 110 112 1384 798 1208 466 37 28 8 5 1401
Symbol 1528 MovieClip {ComposedStone98}Uses:1210 1212 1214 1398Used by:1529
Symbol 1529 MovieClip {Level20}Uses:2 1528 1331 1179 106 1251 100 479 108 1425 1424 1396 1443 110 112 1236 43 31 507 28
Symbol 1530 TextUses:1252Used by:1531
Symbol 1531 MovieClip {AmmoHint}Uses:1530Used by:1534
Symbol 1532 TextUses:1252Used by:1533
Symbol 1533 MovieClip {TheAmountOfArrows}Uses:1532Used by:1534
Symbol 1534 MovieClip {Level02}Uses:2 775 1200 1275 1179 479 98 100 108 806 112 110 1443 1396 1251 106 1267 1531 798 1300 1236 466 40 28 8 34 1533
Symbol 1535 TextUses:1252Used by:1536
Symbol 1536 MovieClip {ArrowGhostHint}Uses:1535Used by:1537
Symbol 1537 MovieClip {Level07}Uses:2 775 1394 1251 1261 1179 479 100 108 806 112 110 1236 1285 1267 1214 1536 1289 1498 37 28 8 5 31
Symbol 1538 MovieClip {Level08}Uses:1305 462 1334 1179 479 98 100 108 1311 806 112 110 37 28 8 34 466 1401 1325 1243
Symbol 1539 TextUses:1252Used by:1540
Symbol 1540 MovieClip {ComboSave2Hint}Uses:1539Used by:1543
Symbol 1541 TextUses:1252Used by:1542
Symbol 1542 MovieClip {ComboSave3Hint}Uses:1541Used by:1543
Symbol 1543 MovieClip {Level03}Uses:2 1251 1478 1398 1179 479 98 100 108 1210 1212 1214 815 806 112 110 798 1245 1498 1236 37 28 8 34 466 1289 1267 1540 1542
Symbol 1544 TextUses:1247Used by:1546
Symbol 1545 EditableTextUses:1241 1247Used by:1546
Symbol 1546 MovieClip {UrlLockedStateView}Uses:419 1544 1545
Symbol 1547 TextUses:1252Used by:1548
Symbol 1548 MovieClip {ThisIsSingleHedhehogHint}Uses:1547
Symbol 1549 GraphicUsed by:1550
Symbol 1550 MovieClip {States.PlayState.Blood}Uses:1549
Symbol 1551 MovieClip {Level41}Uses:2 1331 1179 507 5 34 8 28 37 40 466 31 43 1210 1212 1214 1398
Symbol 1552 MovieClip {Level29}Uses:2 1331 1179 507 5 34 8 28 37 40 466 31 43 1236
Symbol 1553 MovieClip {Level17}Uses:2 1331 1179 507 5 34 8 28 37 40 466 1212 31 43
Symbol 1554 MovieClip {Level05}Uses:2 1331 1179 43 31 507 5 34 8 28 37 40 466
Symbol 1555 MovieClipUses:777 399Used by:1556
Symbol 1556 MovieClipUses:1555Used by:1557
Symbol 1557 MovieClip {SelectSecretLevelStateView}Uses:290 466 37 8 34 1556 783 788 397 825 835 31 846 115 119
Symbol 1558 EditableTextUses:15 949Used by:1559
Symbol 1559 MovieClipUses:1558Used by:1563
Symbol 1560 GraphicUsed by:1561
Symbol 1561 MovieClipUses:1560Used by:1562
Symbol 1562 MovieClipUses:1561Used by:1563
Symbol 1563 MovieClip {GrifShootingStateView}Uses:397 945 954 956 959 962 1559 1562
Symbol 1564 GraphicUsed by:1565
Symbol 1565 MovieClipUses:1564Used by:1566
Symbol 1566 MovieClip {TimeIsOutEffect}Uses:1565
Symbol 1567 TextUses:1252Used by:1568
Symbol 1568 MovieClip {ThisIsBonusHint}Uses:1567Used by:1569
Symbol 1569 MovieClip {Level01}Uses:2 1251 1478 796 98 100 108 479 112 110 806 1179 1289 1267 1236 43 507 5 28 40 466 798 1568 1208
Symbol 1570 MovieClip {Level40}Uses:2 1413 1177 1212 1214 98 100 806 1179 479 1417 1398 1210 1285 108 110 112 1292 1236 798 43 5 8 37
Symbol 1571 MovieClip {InvertedCowMaket}Uses:1424 479
Symbol 1572 MovieClip {CowMaket}Uses:1423 479
Symbol 1573 GraphicUsed by:1574 1576
Symbol 1574 MovieClipUses:1573Used by:1576
Symbol 1575 GraphicUsed by:1576 1579
Symbol 1576 ButtonUses:1574 1575 1573Used by:1580
Symbol 1577 GraphicUsed by:1578 1579
Symbol 1578 MovieClipUses:1577Used by:1579
Symbol 1579 ButtonUses:1578 1575 1577Used by:1580
Symbol 1580 MovieClip {MoreGamesPanel}Uses:1576 1579
Symbol 1581 FontUsed by:1582 1584
Symbol 1582 TextUses:1581Used by:1583
Symbol 1583 MovieClip {ClickToContinue}Uses:1582Used by:1586
Symbol 1584 TextUses:1581Used by:1585
Symbol 1585 MovieClipUses:1584Used by:1586
Symbol 1586 MovieClip {GamePausedStateView}Uses:1157 1585 1583
Symbol 1587 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 701 MovieClip {Gibbets_II_fla.LeftPanel_542} Frame 1Symbol 690 Button
"m_buttonMoreGames"Symbol 701 MovieClip {Gibbets_II_fla.LeftPanel_542} Frame 1Symbol 695 Button
"m_buttonHighScores"Symbol 701 MovieClip {Gibbets_II_fla.LeftPanel_542} Frame 1Symbol 700 Button
"m_vulture"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 651 MovieClip {Gibbets_II_fla.shirt_39_519}
"m_II"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 670 MovieClip {Gibbets_II_fla.shirt_42_527}
"m_rightButtonsPanel"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 685 MovieClip {Gibbets_II_fla.shirt_44_530}
"m_leftButtonsPanel"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 701 MovieClip {Gibbets_II_fla.LeftPanel_542}
"m_comixCloud"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 614 MovieClip {MainMenuCloud1}
"m_notdoppler"Symbol 702 MovieClip {MainMenuStateView} Frame 1Symbol 140 Button
"clip"Symbol 727 MovieClip {VultureDie} Frame 1Symbol 726 MovieClip {Gibbets_II_fla.vulture_copy3_506}
"clip"Symbol 748 MovieClip {VultureBend} Frame 1Symbol 747 MovieClip
"clip"Symbol 750 MovieClip {VultureJump} Frame 1Symbol 749 MovieClip
"m_up"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 759 MovieClip
"m_textUp"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 760 EditableText
"m_starUp"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 763 MovieClip
"m_over"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 765 MovieClip
"m_textOver"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 766 EditableText
"m_starOver"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 763 MovieClip
"m_down"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 768 MovieClip
"m_starDown"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 763 MovieClip
"m_textDown"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 769 EditableText
"m_unenable"Symbol 773 MovieClip {SelectLevelBonusButton} Frame 1Symbol 772 MovieClip
"m_text"Symbol 783 MovieClip Frame 1Symbol 780 EditableText
"m_up"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 816 MovieClip
"m_textUp"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 817 EditableText
"m_starUp"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 763 MovieClip
"m_over"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 819 MovieClip
"m_textOver"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 820 EditableText
"m_starOver"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 763 MovieClip
"m_down"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 822 MovieClip
"m_textDown"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 823 EditableText
"m_starDown"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 763 MovieClip
"m_unenable"Symbol 825 MovieClip {SelectLevelButton} Frame 1Symbol 824 MovieClip
"m_level0"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level1"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level5"Symbol 826 MovieClip Frame 1Symbol 773 MovieClip {SelectLevelBonusButton}
"m_level2"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level3"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level4"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level6"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level7"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level11"Symbol 826 MovieClip Frame 1Symbol 773 MovieClip {SelectLevelBonusButton}
"m_level8"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level9"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level10"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level12"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level13"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level17"Symbol 826 MovieClip Frame 1Symbol 773 MovieClip {SelectLevelBonusButton}
"m_level14"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level15"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level16"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level18"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level19"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level23"Symbol 826 MovieClip Frame 1Symbol 773 MovieClip {SelectLevelBonusButton}
"m_level20"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level21"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level22"Symbol 826 MovieClip Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_totalScore"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 783 MovieClip
"m_buttonSubmit"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 788 Button
"m_buttonMenu"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 397 Button
"m_buttonsPanel"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 826 MovieClip
"m_arrowRight"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 835 Button {GuiArrow}
"m_arrowUp"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 835 Button {GuiArrow}
"m_buttonAchievements"Symbol 847 MovieClip {SelectLevelStateView} Frame 1Symbol 846 Button
"m_window"Symbol 879 MovieClip {LoseStateView} Frame 1Symbol 857 MovieClip
"m_buttonMenu"Symbol 879 MovieClip {LoseStateView} Frame 1Symbol 862 Button
"m_buttonRestart"Symbol 879 MovieClip {LoseStateView} Frame 1Symbol 866 Button
"m_buttonMoreGames"Symbol 879 MovieClip {LoseStateView} Frame 1Symbol 871 Button
"m_tmpClip"Symbol 890 MovieClip Frame 1Symbol 888 MovieClip
"m_text"Symbol 898 MovieClip Frame 1Symbol 897 EditableText
"m_text"Symbol 900 MovieClip Frame 1Symbol 899 EditableText
"m_text"Symbol 902 MovieClip Frame 1Symbol 901 EditableText
"m_perfectSign"Symbol 910 MovieClip Frame 1Symbol 909 MovieClip
"m_buttonMenu"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 862 Button
"m_buttonNext"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 886 Button
"m_accuracy"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 898 MovieClip
"m_currentScore"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 900 MovieClip
"m_bestScore"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 902 MovieClip
"m_star"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 910 MovieClip
"m_buttonMoreGames"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 871 Button
"m_levelNum"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 911 EditableText
"m_buttonNewAchievement"Symbol 923 MovieClip {GrifShootingWinStateView} Frame 1Symbol 922 Button
"m_buttonMenu"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 862 Button
"m_buttonNext"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 886 Button
"m_buttonMoreGames"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 871 Button
"m_arrowsUsed"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 898 MovieClip
"m_currentScore"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 900 MovieClip
"m_bestScore"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 902 MovieClip
"m_levelNum"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 931 EditableText
"m_star"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 910 MovieClip
"m_buttonNewAchievement"Symbol 932 MovieClip {WinStateView} Frame 1Symbol 922 Button
"m_text"Symbol 945 MovieClip Frame 1Symbol 944 EditableText
"m_text"Symbol 951 MovieClip Frame 1Symbol 950 EditableText
"m_text"Symbol 956 MovieClip Frame 1Symbol 955 EditableText
"m_buttonMenu"Symbol 963 MovieClip {PlayStateView} Frame 1Symbol 397 Button
"m_scoreClip"Symbol 963 MovieClip {PlayStateView} Frame 1Symbol 945 MovieClip
"m_levelClip"Symbol 963 MovieClip {PlayStateView} Frame 1Symbol 951 MovieClip
"m_arrowsLeftClip"Symbol 963 MovieClip {PlayStateView} Frame 1Symbol 956 MovieClip
"m_buttonReplay"Symbol 963 MovieClip {PlayStateView} Frame 1Symbol 962 Button
"m_label"Symbol 985 MovieClip {States.PlayState.AddPointsEffect} Frame 1Symbol 984 EditableText
"m_gibbetFront"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 113 MovieClip
"m_totalScore"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 783 MovieClip
"m_buttonSubmit"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 788 Button
"m_buttonMenu"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 397 Button
"m_buttonMoreGames"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 871 Button
"m_notDoppler"Symbol 1150 MovieClip {GameCompleteStateView} Frame 1Symbol 140 Button
"m_field"Symbol 1166 MovieClip {BowClip} Frame 1Symbol 1157 MovieClip {black_square}
"m_sunCircle"Symbol 1236 MovieClip {States.PlayState.Sun} Frame 1Symbol 1221 MovieClip
"m_face"Symbol 1236 MovieClip {States.PlayState.Sun} Frame 1Symbol 1235 MovieClip
"m_text"Symbol 1249 MovieClip {AddArrowClip} Frame 1Symbol 1248 EditableText
"m_ovalClip"Symbol 1281 MovieClip {ArrowGhost3} Frame 1Symbol 1277 MovieClip
"m_rotatedPath"Symbol 1281 MovieClip {ArrowGhost3} Frame 1Symbol 1280 MovieClip
"m_rotatedPath"Symbol 1285 MovieClip {ArrowGhost1} Frame 1Symbol 1284 MovieClip
"clip"Symbol 1402 MovieClip {InvertedVultureHere} Frame 1Symbol 749 MovieClip
"clip"Symbol 1448 MovieClip {VultureHere} Frame 1Symbol 749 MovieClip
"m_ovalClip"Symbol 1524 MovieClip {ArrowGhost4} Frame 1Symbol 1282 MovieClip
"m_rotatedPath"Symbol 1524 MovieClip {ArrowGhost4} Frame 1Symbol 1523 MovieClip
"m_notDoppler"Symbol 1546 MovieClip {UrlLockedStateView} Frame 1Symbol 1545 EditableText
"m_totalScore"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 783 MovieClip
"m_buttonSubmit"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 788 Button
"m_buttonMenu"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 397 Button
"m_level48"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level49"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level50"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level51"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_level52"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 825 MovieClip {SelectLevelButton}
"m_arrowDown"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 835 Button {GuiArrow}
"m_buttonAchievements"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 846 Button
"m_adBox"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 115 MovieClip
"m_closeButton"Symbol 1557 MovieClip {SelectSecretLevelStateView} Frame 1Symbol 119 Button {CloseCross}
"m_text"Symbol 1559 MovieClip Frame 1Symbol 1558 EditableText
"m_buttonMenu"Symbol 1563 MovieClip {GrifShootingStateView} Frame 1Symbol 397 Button
"m_scoreClip"Symbol 1563 MovieClip {GrifShootingStateView} Frame 1Symbol 945 MovieClip
"m_arrowsLeftClip"Symbol 1563 MovieClip {GrifShootingStateView} Frame 1Symbol 956 MovieClip
"m_buttonReplay"Symbol 1563 MovieClip {GrifShootingStateView} Frame 1Symbol 962 Button
"m_timeLeftClip"Symbol 1563 MovieClip {GrifShootingStateView} Frame 1Symbol 1559 MovieClip
"vertex6"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex2"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex1"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex3"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex4"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex5"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex0"Symbol 1571 MovieClip {InvertedCowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex0"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex4"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex5"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex3"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex2"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex1"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"vertex6"Symbol 1572 MovieClip {CowMaket} Frame 1Symbol 479 MovieClip {HangerPoint}
"m_moreGames"Symbol 1580 MovieClip {MoreGamesPanel} Frame 1Symbol 1576 Button
"m_walkthrough"Symbol 1580 MovieClip {MoreGamesPanel} Frame 1Symbol 1579 Button
"m_clickToContinue"Symbol 1586 MovieClip {GamePausedStateView} Frame 1Symbol 1583 MovieClip {ClickToContinue}
"m_checkBox"Symbol 1587 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$w7$FEkaF4HQ9/k1oxXJ/.K7h/."

Labels

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




http://swfchan.com/17/84693/info.shtml
Created: 31/3 -2019 08:14:31 Last modified: 31/3 -2019 08:14:31 Server time: 02/05 -2024 21:41:16